datavalue 0.1.8__py3-none-any.whl → 0.1.10__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.
@@ -2,6 +2,7 @@
2
2
  import re
3
3
  from typing import Type, Optional, Any, Iterable, Union
4
4
  from .. import exceptions
5
+ from .complex_data import ComplexData
5
6
  import json
6
7
 
7
8
  # Classes definition
@@ -29,6 +30,21 @@ class PrimitiveData:
29
30
  self.validate()
30
31
 
31
32
  # Private methods
33
+ def _is_match(self, element: Any, schema: Any) -> bool:
34
+ if isinstance(schema, (PrimitiveData, ComplexData)):
35
+ try:
36
+ # Si el validador hijo no lanza excepción, el match es exitoso
37
+ return schema.validate(element)
38
+ except (exceptions.DataValueException, ValueError, TypeError):
39
+ return False
40
+
41
+ # 2. Caso: El esquema es un tipo de dato (clase como str, int)
42
+ if isinstance(schema, type):
43
+ return isinstance(element, schema)
44
+
45
+ # 3. Caso: El esquema es un valor literal
46
+ return element == schema
47
+
32
48
  def __get_length(self, data: Optional[Any] = None) -> Optional[int]:
33
49
  if data is None:
34
50
  data_objective = self.value
@@ -150,10 +166,12 @@ class PrimitiveData:
150
166
  raise exceptions.PossibleValueException(
151
167
  f"The boolean value has to be True or False: {data_objective} != True/False"
152
168
  )
169
+
153
170
  if self.possible_values is not None:
154
- if data_objective not in self.possible_values:
171
+ # Implementación de any() con _is_match para soportar la composición de tipos
172
+ if not any(self._is_match(data_objective, validator) for validator in self.possible_values):
155
173
  raise exceptions.PossibleValueException(
156
- f"The value is not in the possible values set: {data_objective} not in {self.possible_values}"
174
+ f"Value '{data_objective}' is not allowed by any of the provided validators."
157
175
  )
158
176
 
159
177
  # Validacion de expresion regular
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datavalue
3
- Version: 0.1.8
3
+ Version: 0.1.10
4
4
  Summary: Librería de tipos de datos primitivos y complejos
5
5
  Author: Specter
6
6
  Requires-Python: >=3.10
@@ -0,0 +1,9 @@
1
+ datavalue/__init__.py,sha256=-JBKpLEehjnezX3sTbpnB2px3izjHxZ_IEL_40iRHMM,112
2
+ datavalue/classes/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
3
+ datavalue/classes/complex_data.py,sha256=fYBl-whK1MUivzoDI0aCXD1yfRPIMK-Pu9jlxQTtxiQ,10951
4
+ datavalue/classes/primitive_data.py,sha256=J2HXHNG6ZyKGrrX4P-MWjzhK9_8SFOh7a8Yrp7cPGts,8103
5
+ datavalue/exceptions/__init__.py,sha256=T9X1N0kAv6RNTuTNQR7aTAxxvF25ihMsrtZGD-QZrBI,361
6
+ datavalue-0.1.10.dist-info/METADATA,sha256=9vFokPOq2w53wOFvcK6WJ34ATOvusBXwAtFcs1utX8E,1598
7
+ datavalue-0.1.10.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
8
+ datavalue-0.1.10.dist-info/top_level.txt,sha256=tVZ_--yYzvlZ2XTCkdORn4KKL7BwXPZUOVpL6PBJaRY,10
9
+ datavalue-0.1.10.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- datavalue/__init__.py,sha256=-JBKpLEehjnezX3sTbpnB2px3izjHxZ_IEL_40iRHMM,112
2
- datavalue/classes/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
3
- datavalue/classes/complex_data.py,sha256=fYBl-whK1MUivzoDI0aCXD1yfRPIMK-Pu9jlxQTtxiQ,10951
4
- datavalue/classes/primitive_data.py,sha256=YBr0i2FRonCwK4XQsNmoWtcIjd4VxQErTmzXVIIq_qg,7304
5
- datavalue/exceptions/__init__.py,sha256=T9X1N0kAv6RNTuTNQR7aTAxxvF25ihMsrtZGD-QZrBI,361
6
- datavalue-0.1.8.dist-info/METADATA,sha256=tcjBvTwfFA0Y-3wNGLqDoIo9ja82Qbgg8ecLoAb_-ro,1597
7
- datavalue-0.1.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
8
- datavalue-0.1.8.dist-info/top_level.txt,sha256=tVZ_--yYzvlZ2XTCkdORn4KKL7BwXPZUOVpL6PBJaRY,10
9
- datavalue-0.1.8.dist-info/RECORD,,