python-datamodel 0.10.2__tar.gz → 0.10.3__tar.gz

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.
Files changed (99) hide show
  1. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/PKG-INFO +1 -1
  2. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/abstract.py +27 -10
  3. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/base.py +4 -3
  4. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/converters.c +6062 -4591
  5. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/converters.html +4454 -3505
  6. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/converters.pyx +145 -84
  7. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/fields.cpp +559 -519
  8. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/fields.html +529 -523
  9. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/fields.pyx +4 -0
  10. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_parsers/src/lib.rs +31 -1
  11. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/validation.cpp +596 -532
  12. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/validation.html +527 -497
  13. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/validation.pyx +30 -4
  14. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/version.py +1 -1
  15. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/PKG-INFO +1 -1
  16. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/SOURCES.txt +1 -0
  17. python_datamodel-0.10.3/tests/test_dashboards.py +274 -0
  18. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/CHANGELOG.md +0 -0
  19. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/CONTRIBUTING.md +0 -0
  20. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/LICENSE +0 -0
  21. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/MANIFEST.in +0 -0
  22. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/Makefile +0 -0
  23. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/README.md +0 -0
  24. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/SECURITY.md +0 -0
  25. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/__init__.py +0 -0
  26. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/adaptive/__init__.py +0 -0
  27. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/adaptive/models.py +0 -0
  28. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/aliases/__init__.py +0 -0
  29. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/exceptions.c +0 -0
  30. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/exceptions.html +0 -0
  31. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/exceptions.pxd +0 -0
  32. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/exceptions.pyx +0 -0
  33. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/functions.cpp +0 -0
  34. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/functions.html +0 -0
  35. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/functions.pxd +0 -0
  36. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/functions.pyx +0 -0
  37. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/jsonld/__init__.py +0 -0
  38. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/jsonld/models.py +0 -0
  39. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/__init__.py +0 -0
  40. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/mapping.c +0 -0
  41. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/mapping.html +0 -0
  42. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/mapping.pxd +0 -0
  43. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/mapping.pyx +0 -0
  44. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/libs/mutables.py +0 -0
  45. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/models.py +0 -0
  46. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/parsers/__init__.py +0 -0
  47. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/parsers/encoders.py +0 -0
  48. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/parsers/json.cpp +0 -0
  49. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/parsers/json.html +0 -0
  50. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/parsers/json.pyx +0 -0
  51. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/profiler.py +0 -0
  52. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/py.typed +0 -0
  53. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_core/Cargo.toml +0 -0
  54. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_core/src/lib.rs +0 -0
  55. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_parsers/Cargo.toml +0 -0
  56. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_validators/Cargo.toml +0 -0
  57. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/rs_validators/src/lib.rs +0 -0
  58. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/__init__.py +0 -0
  59. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/singleton.c +0 -0
  60. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/singleton.html +0 -0
  61. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/singleton.pxd +0 -0
  62. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/singleton.pyx +0 -0
  63. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/types.c +0 -0
  64. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/types.html +0 -0
  65. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/types.pxd +0 -0
  66. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/typedefs/types.pyx +0 -0
  67. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/types.c +0 -0
  68. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/types.html +0 -0
  69. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/datamodel/types.pyx +0 -0
  70. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/pyproject.toml +0 -0
  71. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/dependency_links.txt +0 -0
  72. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/not-zip-safe +0 -0
  73. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/requires.txt +0 -0
  74. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/python_datamodel.egg-info/top_level.txt +0 -0
  75. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/setup.cfg +0 -0
  76. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/setup.py +0 -0
  77. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/__init__.py +0 -0
  78. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_aliases.py +0 -0
  79. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_classdict.py +0 -0
  80. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_converter.py +0 -0
  81. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_data.py +0 -0
  82. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_descriptors.py +0 -0
  83. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_dict.py +0 -0
  84. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_field.py +0 -0
  85. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_inherit.py +0 -0
  86. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_json.py +0 -0
  87. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_method.py +0 -0
  88. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_model.py +0 -0
  89. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_primitives.py +0 -0
  90. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_qsdriver.py +0 -0
  91. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_qsmodel.py +0 -0
  92. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_qsobject.py +0 -0
  93. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_ticket.py +0 -0
  94. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_tickets.py +0 -0
  95. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_tuples.py +0 -0
  96. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_type_user.py +0 -0
  97. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_types.py +0 -0
  98. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_valid_callables.py +0 -0
  99. {python_datamodel-0.10.2 → python_datamodel-0.10.3}/tests/test_validations.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-datamodel
3
- Version: 0.10.2
3
+ Version: 0.10.3
4
4
  Summary: simple library based on python +3.8 to use Dataclass-syntaxfor interacting with Data
5
5
  Home-page: https://github.com/phenobarbital/python-datamodel
6
6
  Author: Jesus Lara
@@ -1,6 +1,15 @@
1
1
  import contextlib
2
2
  import logging
3
- from typing import Optional, Any, List, Dict, get_args, get_origin, ClassVar
3
+ from typing import (
4
+ Optional,
5
+ Any,
6
+ List,
7
+ Dict,
8
+ Union,
9
+ get_args,
10
+ get_origin,
11
+ ClassVar
12
+ )
4
13
  from types import GenericAlias
5
14
  from collections import OrderedDict
6
15
  from collections.abc import Callable
@@ -59,9 +68,10 @@ def _dc_method_setattr_(self, name: str, value: Any) -> None:
59
68
  This version separates the known-field assignment (with optional validation)
60
69
  from the “extra field” assignment and uses a helper to perform conversion/validation.
61
70
  """
62
- # Ensure that the __values__ dict is present.
63
- if not hasattr(self, '__values__'):
64
- object.__setattr__(self, '__values__', {})
71
+ if (name.startswith('__') and name.endswith('__')):
72
+ # or check explicitly if name in ('__values__', '__valid__', ...)
73
+ object.__setattr__(self, name, value)
74
+ return
65
75
 
66
76
  # Check whether we are assigning to a known field.
67
77
  if name in self.__fields__:
@@ -84,8 +94,6 @@ def _dc_method_setattr_(self, name: str, value: Any) -> None:
84
94
  # For extra attributes, store them as usual.
85
95
  # (Note: here we “neutralize” any callable value to None if needed.)
86
96
  object.__setattr__(self, name, None if callable(value) else value)
87
- if name == '__values__':
88
- return
89
97
 
90
98
  # If the field isn’t known yet:
91
99
  if name not in self.__fields__:
@@ -245,6 +253,7 @@ class ModelMeta(type):
245
253
  _type_category = 'dataclass'
246
254
  elif _is_typing or _is_alias: # noqa
247
255
  if df.origin is not None and (df.origin is list and df.args):
256
+ df._inner_targs = df.args
248
257
  df._inner_type = args[0]
249
258
  df._inner_origin = get_origin(df._inner_type)
250
259
  df._typing_args = get_args(df._inner_type)
@@ -254,11 +263,19 @@ class ModelMeta(type):
254
263
  except (TypeError, KeyError):
255
264
  df._encoder_fn = None
256
265
  if origin is list:
257
- inner_type = args[0]
266
+ df._inner_targs = df.args
267
+ df._inner_type = args[0]
258
268
  try:
259
- df._encoder_fn = encoders[inner_type]
269
+ df._encoder_fn = encoders[df._inner_type]
260
270
  except (TypeError, KeyError):
261
271
  df._encoder_fn = None
272
+ elif origin is Union:
273
+ df._inner_targs = df.args
274
+ df._inner_type = args[0]
275
+ df._inner_is_dc = is_dataclass(df._inner_type)
276
+ df._inner_priv = is_primitive(df._inner_type)
277
+ df._inner_origin = get_origin(df._inner_type)
278
+ df._typing_args = get_args(df._inner_type)
262
279
  _type_category = 'typing'
263
280
  elif isclass(_type):
264
281
  _type_category = 'class'
@@ -341,10 +358,10 @@ class ModelMeta(type):
341
358
  # Set additional attributes:
342
359
  dc.__columns__ = cols
343
360
  dc.__fields__ = list(_columns)
344
- dc.__values__ = {}
345
361
  dc.__encoder__ = JSONContent
346
362
  dc.__valid__ = False
347
- dc.__errors__ = None
363
+ dc.__errors__ = {}
364
+ dc.__values__ = {}
348
365
  dc.__frozen__ = strict
349
366
  dc.__initialised__ = False
350
367
  dc.__field_types__ = _types
@@ -47,10 +47,11 @@ class BaseModel(ModelMixin, metaclass=ModelMeta):
47
47
  Hint: please check the "payload" attribute in the exception.""",
48
48
  payload=errors
49
49
  )
50
- self.__errors__ = errors
51
- object.__setattr__(self, "__valid__", False)
50
+ object.__setattr__(self, '__errors__', errors)
51
+ object.__setattr__(self, '__valid__', False)
52
52
  else:
53
- object.__setattr__(self, "__valid__", True)
53
+ object.__setattr__(self, '__valid__', True)
54
+ return
54
55
 
55
56
  @classmethod
56
57
  def register_parser(