Coverage for heritrace / utils / datatypes.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-07-02 10:16 +0000

1# SPDX-FileCopyrightText: 2025 Arcangelo Massari <arcangelo.massari@unibo.it> 

2# 

3# SPDX-License-Identifier: ISC 

4 

5from flask_babel import gettext 

6from rdflib import XSD 

7 

8from heritrace.utils.datatypes_validation import ( 

9 validate_base64_binary, 

10 validate_boolean, 

11 validate_byte, 

12 validate_date, 

13 validate_date_time, 

14 validate_date_time_stamp, 

15 validate_day_time_duration, 

16 validate_decimal, 

17 validate_double, 

18 validate_duration, 

19 validate_entities, 

20 validate_entity, 

21 validate_float, 

22 validate_g_year, 

23 validate_g_year_month, 

24 validate_hex_binary, 

25 validate_hour, 

26 validate_id, 

27 validate_idref, 

28 validate_idrefs, 

29 validate_integer, 

30 validate_long, 

31 validate_minute, 

32 validate_name, 

33 validate_ncname, 

34 validate_negative_integer, 

35 validate_nmtoken, 

36 validate_nmtokens, 

37 validate_non_negative_integer, 

38 validate_non_positive_integer, 

39 validate_normalized_string, 

40 validate_notation, 

41 validate_positive_integer, 

42 validate_qname, 

43 validate_second, 

44 validate_short, 

45 validate_string, 

46 validate_time, 

47 validate_timezone_offset, 

48 validate_unsigned_byte, 

49 validate_unsigned_int, 

50 validate_unsigned_long, 

51 validate_unsigned_short, 

52 validate_url, 

53 validate_year_month_duration, 

54) 

55 

56 

57def get_datatype_options() -> list[dict[str, str]]: 

58 return [ 

59 {"label": gettext("Text (string)"), "uri": str(XSD.string)}, 

60 {"label": gettext("Web address (URL)"), "uri": str(XSD.anyURI)}, 

61 {"label": gettext("Whole number (integer)"), "uri": str(XSD.integer)}, 

62 {"label": gettext("True or False (boolean)"), "uri": str(XSD.boolean)}, 

63 {"label": gettext("Date (YYYY-MM-DD)"), "uri": str(XSD.date)}, 

64 {"label": gettext("Decimal number"), "uri": str(XSD.decimal)}, 

65 { 

66 "label": gettext("Date and Time (YYYY-MM-DDThh:mm:ss)"), 

67 "uri": str(XSD.dateTime), 

68 }, 

69 {"label": gettext("Year (YYYY)"), "uri": str(XSD.gYear)}, 

70 {"label": gettext("Floating point number"), "uri": str(XSD.float)}, 

71 {"label": gettext("Time (hh:mm:ss)"), "uri": str(XSD.time)}, 

72 { 

73 "label": gettext("Normalized text (no line breaks)"), 

74 "uri": str(XSD.normalizedString), 

75 }, 

76 {"label": gettext("Language code (e.g., en, it)"), "uri": str(XSD.language)}, 

77 { 

78 "label": gettext("Double precision floating point number"), 

79 "uri": str(XSD.double), 

80 }, 

81 {"label": gettext("Tokenized text (single word)"), "uri": str(XSD.token)}, 

82 { 

83 "label": gettext("Non-negative integer (0 or positive)"), 

84 "uri": str(XSD.nonNegativeInteger), 

85 }, 

86 { 

87 "label": gettext("Positive integer (greater than 0)"), 

88 "uri": str(XSD.positiveInteger), 

89 }, 

90 { 

91 "label": gettext("Non-positive integer (0 or negative)"), 

92 "uri": str(XSD.nonPositiveInteger), 

93 }, 

94 {"label": gettext("Negative integer"), "uri": str(XSD.negativeInteger)}, 

95 {"label": gettext("Long integer"), "uri": str(XSD.long)}, 

96 {"label": gettext("Short integer"), "uri": str(XSD.short)}, 

97 {"label": gettext("Byte-sized integer"), "uri": str(XSD.byte)}, 

98 {"label": gettext("Unsigned integer"), "uri": str(XSD.unsignedInt)}, 

99 {"label": gettext("Unsigned long integer"), "uri": str(XSD.unsignedLong)}, 

100 {"label": gettext("Unsigned short integer"), "uri": str(XSD.unsignedShort)}, 

101 {"label": gettext("Unsigned byte"), "uri": str(XSD.unsignedByte)}, 

102 {"label": gettext("Month (MM)"), "uri": str(XSD.gMonth)}, 

103 {"label": gettext("Day of the month (DD)"), "uri": str(XSD.gDay)}, 

104 { 

105 "label": gettext("Duration (e.g., P1Y2M3DT4H5M6S)"), 

106 "uri": str(XSD.duration), 

107 }, 

108 {"label": gettext("Hexadecimal binary"), "uri": str(XSD.hexBinary)}, 

109 {"label": gettext("Base64 encoded binary"), "uri": str(XSD.base64Binary)}, 

110 ] 

111 

112 

113DATATYPE_MAPPING = [ 

114 [XSD.string, validate_string, "text"], 

115 [XSD.normalizedString, validate_normalized_string, "text"], 

116 [XSD.integer, validate_integer, "number"], 

117 [XSD.int, validate_integer, "number"], 

118 [XSD.positiveInteger, validate_positive_integer, "number"], 

119 [XSD.negativeInteger, validate_negative_integer, "number"], 

120 [XSD.nonNegativeInteger, validate_non_negative_integer, "number"], 

121 [XSD.nonPositiveInteger, validate_non_positive_integer, "number"], 

122 [XSD.byte, validate_byte, "number"], 

123 [XSD.short, validate_short, "number"], 

124 [XSD.long, validate_long, "number"], 

125 [XSD.unsignedByte, validate_unsigned_byte, "number"], 

126 [XSD.unsignedShort, validate_unsigned_short, "number"], 

127 [XSD.unsignedLong, validate_unsigned_long, "number"], 

128 [XSD.unsignedInt, validate_unsigned_int, "number"], 

129 [XSD.float, validate_float, "number"], 

130 [XSD.double, validate_double, "number"], 

131 [XSD.decimal, validate_decimal, "number"], 

132 [XSD.duration, validate_duration, "text"], 

133 [XSD.dayTimeDuration, validate_day_time_duration, "text"], 

134 [XSD.yearMonthDuration, validate_year_month_duration, "text"], 

135 [XSD.dateTime, validate_date_time, "datetime-local"], 

136 [XSD.dateTimeStamp, validate_date_time_stamp, "datetime-local"], 

137 [XSD.gYear, validate_g_year, "number"], 

138 [XSD.gYearMonth, validate_g_year_month, "month"], 

139 [XSD.date, validate_date, "date"], 

140 [XSD.time, validate_time, "time"], 

141 [XSD.hour, validate_hour, "time"], 

142 [XSD.timezoneOffset, validate_timezone_offset, "time"], 

143 [XSD.minute, validate_minute, "time"], 

144 [XSD.second, validate_second, "time"], 

145 [XSD.boolean, validate_boolean, "checkbox"], 

146 [XSD.hexBinary, validate_hex_binary, "password"], 

147 [XSD.base64Binary, validate_base64_binary, "password"], 

148 [XSD.anyURI, validate_url, "url"], 

149 [XSD.QName, validate_qname, "text"], 

150 [XSD.ENTITIES, validate_entities, "text"], 

151 [XSD.ENTITY, validate_entity, "text"], 

152 [XSD.ID, validate_id, "text"], 

153 [XSD.IDREF, validate_idref, "text"], 

154 [XSD.IDREFS, validate_idrefs, "text"], 

155 [XSD.NCName, validate_ncname, "text"], 

156 [XSD.NMTOKEN, validate_nmtoken, "text"], 

157 [XSD.NMTOKENS, validate_nmtokens, "text"], 

158 [XSD.NOTATION, validate_notation, "text"], 

159 [XSD.Name, validate_name, "text"], 

160]