python-datamodel 0.10.17__tar.gz → 0.10.19__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.
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/PKG-INFO +1 -1
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/models.py +16 -4
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/parsers/json.cpp +715 -585
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/parsers/json.html +625 -565
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/parsers/json.pyx +5 -2
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/version.py +1 -1
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/PKG-INFO +1 -1
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/CHANGELOG.md +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/CONTRIBUTING.md +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/LICENSE +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/MANIFEST.in +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/Makefile +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/README.md +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/SECURITY.md +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/abstract.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/adaptive/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/adaptive/models.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/aliases/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/base.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/converters.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/converters.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/converters.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/exceptions.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/exceptions.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/exceptions.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/exceptions.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/fields.cpp +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/fields.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/fields.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/functions.cpp +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/functions.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/functions.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/functions.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/jsonld/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/jsonld/models.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/mapping.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/mapping.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/mapping.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/mapping.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/libs/mutables.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/parsers/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/parsers/encoders.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/profiler.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/py.typed +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_core/Cargo.toml +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_core/src/lib.rs +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_parsers/Cargo.toml +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_parsers/src/lib.rs +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_validators/Cargo.toml +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/rs_validators/src/lib.rs +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/singleton.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/singleton.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/singleton.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/singleton.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/types.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/types.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/types.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/typedefs/types.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/types.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/types.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/types.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/validation.c +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/validation.html +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/validation.pxd +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/datamodel/validation.pyx +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/pyproject.toml +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/SOURCES.txt +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/dependency_links.txt +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/not-zip-safe +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/requires.txt +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/python_datamodel.egg-info/top_level.txt +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/setup.cfg +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/setup.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/__init__.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_aliases.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_classdict.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_container.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_converter.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_dashboards.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_data.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_descriptors.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_dict.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_field.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_generic.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_inherit.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_json.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_method.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_model.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_notify.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_primitives.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_qsdriver.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_qsmodel.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_qsobject.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_ticket.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_tickets.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_tuples.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_type_user.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_types.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_unions.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_valid_callables.py +0 -0
- {python_datamodel-0.10.17 → python_datamodel-0.10.19}/tests/test_validations.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
import contextlib
|
|
3
|
-
from typing import Any, Dict, get_args
|
|
3
|
+
from typing import Any, Dict, Optional, get_args
|
|
4
4
|
from enum import Enum, EnumMeta
|
|
5
5
|
# Dataclass
|
|
6
6
|
import inspect
|
|
@@ -210,10 +210,13 @@ class ModelMixin:
|
|
|
210
210
|
self,
|
|
211
211
|
remove_nulls: bool = False,
|
|
212
212
|
convert_enums: bool = False,
|
|
213
|
-
as_values: bool = False
|
|
213
|
+
as_values: bool = False,
|
|
214
|
+
exclude: Optional[set] = None
|
|
214
215
|
) -> dict[str, Any]:
|
|
216
|
+
exclude = exclude or set()
|
|
217
|
+
exclude.add('_pgoutput') # Always exclude _pgoutput
|
|
215
218
|
if as_values:
|
|
216
|
-
return self.__collapse_as_values__(remove_nulls, convert_enums, as_values)
|
|
219
|
+
return self.__collapse_as_values__(remove_nulls, convert_enums, as_values, exclude)
|
|
217
220
|
d = as_dict(self, dict_factory=dict)
|
|
218
221
|
if convert_enums:
|
|
219
222
|
d = self.__convert_enums__(d)
|
|
@@ -226,12 +229,21 @@ class ModelMixin:
|
|
|
226
229
|
self,
|
|
227
230
|
remove_nulls: bool = False,
|
|
228
231
|
convert_enums: bool = False,
|
|
229
|
-
as_values: bool = False
|
|
232
|
+
as_values: bool = False,
|
|
233
|
+
exclude: Optional[set] = None
|
|
230
234
|
) -> dict[str, Any]:
|
|
231
235
|
"""Recursively converts any BaseModel instances to their primary key value."""
|
|
232
236
|
out = {}
|
|
233
237
|
_fields = self.columns()
|
|
234
238
|
for name, field in _fields.items():
|
|
239
|
+
if name in exclude:
|
|
240
|
+
continue
|
|
241
|
+
# Skip internal or error fields
|
|
242
|
+
if name.startswith('__') or name == '__errors__':
|
|
243
|
+
continue
|
|
244
|
+
# Skip fields marked for exclusion
|
|
245
|
+
if field.metadata.get('exclude', False):
|
|
246
|
+
continue
|
|
235
247
|
# datatype = field.type
|
|
236
248
|
value = getattr(self, name)
|
|
237
249
|
if value is None and remove_nulls:
|