datavalue 0.1.11__py3-none-any.whl → 0.1.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datavalue/classes/primitive_data.py +42 -22
- {datavalue-0.1.11.dist-info → datavalue-0.1.13.dist-info}/METADATA +1 -1
- {datavalue-0.1.11.dist-info → datavalue-0.1.13.dist-info}/RECORD +5 -5
- {datavalue-0.1.11.dist-info → datavalue-0.1.13.dist-info}/WHEEL +0 -0
- {datavalue-0.1.11.dist-info → datavalue-0.1.13.dist-info}/top_level.txt +0 -0
|
@@ -59,17 +59,28 @@ class PrimitiveData:
|
|
|
59
59
|
|
|
60
60
|
# Public methods
|
|
61
61
|
def to_dict(self) -> dict:
|
|
62
|
+
normalized_possible = None
|
|
63
|
+
if self.possible_values is not None:
|
|
64
|
+
normalized_possible = []
|
|
65
|
+
for item in self.possible_values:
|
|
66
|
+
if isinstance(item, PrimitiveData):
|
|
67
|
+
normalized_possible.append(item.to_dict())
|
|
68
|
+
elif isinstance(item, type):
|
|
69
|
+
normalized_possible.append({"__class__": item.__name__})
|
|
70
|
+
else:
|
|
71
|
+
normalized_possible.append(item)
|
|
72
|
+
|
|
62
73
|
return {
|
|
63
|
-
"DATA_TYPE":self.data_type.__name__ if hasattr(self.data_type, '__name__') else str(self.data_type),
|
|
64
|
-
"VALUE":self.value,
|
|
65
|
-
"MAXIMUM_LENGTH":self.maximum_length,
|
|
66
|
-
"MINIMUM_LENGTH":self.minimum_length,
|
|
67
|
-
"MAXIMUM_SIZE":self.maximum_size,
|
|
68
|
-
"MINIMUM_SIZE":self.minimum_size,
|
|
69
|
-
"POSSIBLE_VALUES":
|
|
70
|
-
"REGULAR_EXPRESSION":self.regular_expression,
|
|
71
|
-
"DATA_CLASS":self.data_class,
|
|
72
|
-
"__type__":"PrimitiveData"
|
|
74
|
+
"DATA_TYPE": self.data_type.__name__ if hasattr(self.data_type, '__name__') else str(self.data_type),
|
|
75
|
+
"VALUE": self.value,
|
|
76
|
+
"MAXIMUM_LENGTH": self.maximum_length,
|
|
77
|
+
"MINIMUM_LENGTH": self.minimum_length,
|
|
78
|
+
"MAXIMUM_SIZE": self.maximum_size,
|
|
79
|
+
"MINIMUM_SIZE": self.minimum_size,
|
|
80
|
+
"POSSIBLE_VALUES": normalized_possible,
|
|
81
|
+
"REGULAR_EXPRESSION": self.regular_expression,
|
|
82
|
+
"DATA_CLASS": self.data_class,
|
|
83
|
+
"__type__": "PrimitiveData"
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
def to_json(self) -> str:
|
|
@@ -77,36 +88,45 @@ class PrimitiveData:
|
|
|
77
88
|
|
|
78
89
|
@classmethod
|
|
79
90
|
def from_dict(cls, data: dict) -> 'PrimitiveData':
|
|
80
|
-
# Expected keys definition
|
|
81
91
|
expected_keys = {
|
|
82
92
|
"DATA_TYPE", "VALUE", "MAXIMUM_LENGTH", "MINIMUM_LENGTH",
|
|
83
93
|
"MAXIMUM_SIZE", "MINIMUM_SIZE", "POSSIBLE_VALUES",
|
|
84
94
|
"REGULAR_EXPRESSION", "DATA_CLASS", "__type__"
|
|
85
95
|
}
|
|
86
96
|
|
|
87
|
-
# Verify unknown keys on the table
|
|
88
97
|
unknown_keys = set(data.keys()) - expected_keys
|
|
89
98
|
if unknown_keys:
|
|
90
99
|
raise ValueError(f"Unknown keys in data structure: {unknown_keys}")
|
|
91
100
|
|
|
92
101
|
# Secure type mapping
|
|
93
102
|
type_mapping = {
|
|
94
|
-
"str": str,
|
|
95
|
-
"
|
|
96
|
-
"float": float,
|
|
97
|
-
"bool": bool,
|
|
98
|
-
"bytes": bytes,
|
|
99
|
-
"bytearray": bytearray,
|
|
100
|
-
"NoneType": type(None)
|
|
103
|
+
"str": str, "int": int, "float": float, "bool": bool,
|
|
104
|
+
"bytes": bytes, "bytearray": bytearray, "NoneType": type(None)
|
|
101
105
|
}
|
|
102
106
|
|
|
103
107
|
type_str = data.get("DATA_TYPE")
|
|
104
108
|
real_type = type_mapping.get(type_str)
|
|
105
109
|
|
|
106
110
|
if real_type is None and type_str != "None":
|
|
107
|
-
raise TypeError(f"Unsupported or unsafe data type
|
|
111
|
+
raise TypeError(f"Unsupported or unsafe data type: {type_str}")
|
|
112
|
+
|
|
113
|
+
# --- NORMALIZACIÓN DE POSSIBLE_VALUES (DESERIALIZACIÓN) ---
|
|
114
|
+
raw_possible = data.get("POSSIBLE_VALUES")
|
|
115
|
+
possible_values = None
|
|
116
|
+
if raw_possible is not None:
|
|
117
|
+
possible_values = []
|
|
118
|
+
for item in raw_possible:
|
|
119
|
+
if isinstance(item, dict):
|
|
120
|
+
if item.get("__type__") == "PrimitiveData":
|
|
121
|
+
possible_values.append(cls.from_dict(item))
|
|
122
|
+
elif "__class__" in item:
|
|
123
|
+
possible_values.append(type_mapping.get(item["__class__"]))
|
|
124
|
+
else:
|
|
125
|
+
possible_values.append(item)
|
|
126
|
+
else:
|
|
127
|
+
possible_values.append(item)
|
|
128
|
+
# ----------------------------------------------------------
|
|
108
129
|
|
|
109
|
-
# return instance result
|
|
110
130
|
return cls(
|
|
111
131
|
data_type=real_type,
|
|
112
132
|
value=data.get("VALUE"),
|
|
@@ -114,7 +134,7 @@ class PrimitiveData:
|
|
|
114
134
|
minimum_length=data.get("MINIMUM_LENGTH"),
|
|
115
135
|
maximum_size=data.get("MAXIMUM_SIZE"),
|
|
116
136
|
minimum_size=data.get("MINIMUM_SIZE"),
|
|
117
|
-
possible_values=
|
|
137
|
+
possible_values=possible_values,
|
|
118
138
|
regular_expression=data.get("REGULAR_EXPRESSION"),
|
|
119
139
|
data_class=data.get("DATA_CLASS", False)
|
|
120
140
|
)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
datavalue/__init__.py,sha256=-JBKpLEehjnezX3sTbpnB2px3izjHxZ_IEL_40iRHMM,112
|
|
2
2
|
datavalue/classes/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
3
3
|
datavalue/classes/complex_data.py,sha256=fYBl-whK1MUivzoDI0aCXD1yfRPIMK-Pu9jlxQTtxiQ,10951
|
|
4
|
-
datavalue/classes/primitive_data.py,sha256=
|
|
4
|
+
datavalue/classes/primitive_data.py,sha256=Cm5DvIrKWM6LWETl06zK1v4JZWkw5DaXPMow9VTHeZU,9072
|
|
5
5
|
datavalue/exceptions/__init__.py,sha256=T9X1N0kAv6RNTuTNQR7aTAxxvF25ihMsrtZGD-QZrBI,361
|
|
6
|
-
datavalue-0.1.
|
|
7
|
-
datavalue-0.1.
|
|
8
|
-
datavalue-0.1.
|
|
9
|
-
datavalue-0.1.
|
|
6
|
+
datavalue-0.1.13.dist-info/METADATA,sha256=gD38QSnBU94KbSBEFN1QgIEEdrzG6nJzQugy3nSKZEY,1598
|
|
7
|
+
datavalue-0.1.13.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
8
|
+
datavalue-0.1.13.dist-info/top_level.txt,sha256=tVZ_--yYzvlZ2XTCkdORn4KKL7BwXPZUOVpL6PBJaRY,10
|
|
9
|
+
datavalue-0.1.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|