value-object-pattern 0.9.0__tar.gz → 0.9.2__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.
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/PKG-INFO +1 -1
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/base_model.py +24 -3
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/.gitignore +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/LICENSE.md +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/README.md +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/pyproject.toml +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/collections/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/collections/collection_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/collections/iterable_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/collections/not_empty_sequence_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/collections/sequence_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/countries/spain/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/identifiers/uuid_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: value-object-pattern
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: The Value Object Pattern is a Python package that streamlines the creation and management of value objects in your projects.
|
|
5
5
|
Project-URL: Homepage, https://github.com/adriamontoto/value-object-pattern
|
|
6
6
|
Project-URL: Repository, https://github.com/adriamontoto/value-object-pattern
|
{value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/base_model.py
RENAMED
|
@@ -11,7 +11,9 @@ else:
|
|
|
11
11
|
|
|
12
12
|
from abc import ABC, abstractmethod
|
|
13
13
|
from enum import Enum
|
|
14
|
-
from typing import Any, Self
|
|
14
|
+
from typing import Any, NoReturn, Self
|
|
15
|
+
|
|
16
|
+
from .value_object import ValueObject
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
class BaseModel(ABC):
|
|
@@ -263,6 +265,9 @@ class BaseModel(ABC):
|
|
|
263
265
|
Args:
|
|
264
266
|
primitives (dict[str, Any]): Dictionary to create the instance from.
|
|
265
267
|
|
|
268
|
+
Raises:
|
|
269
|
+
TypeError: If the `primitives` is not a dictionary of strings.
|
|
270
|
+
|
|
266
271
|
Returns:
|
|
267
272
|
Self: Instance of the class.
|
|
268
273
|
|
|
@@ -289,8 +294,24 @@ class BaseModel(ABC):
|
|
|
289
294
|
# >>> {'name': 'John Doe', 'birthdate': '1900-01-01T00:00:00+00:00'}
|
|
290
295
|
```
|
|
291
296
|
""" # noqa: E501
|
|
297
|
+
if not isinstance(primitives, dict) or not all(isinstance(key, str) for key in primitives): # type: ignore[redundant-expr]
|
|
298
|
+
cls._raise_value_is_not_dict_of_strings(value=primitives)
|
|
299
|
+
|
|
292
300
|
return cls(**primitives)
|
|
293
301
|
|
|
302
|
+
@classmethod
|
|
303
|
+
def _raise_value_is_not_dict_of_strings(cls, value: Any) -> NoReturn:
|
|
304
|
+
"""
|
|
305
|
+
Raises a TypeError if the value object `value` is not a dictionary of strings.
|
|
306
|
+
|
|
307
|
+
Args:
|
|
308
|
+
value (Any): The provided value.
|
|
309
|
+
|
|
310
|
+
Raises:
|
|
311
|
+
TypeError: If the `value` is not a dictionary of strings.
|
|
312
|
+
"""
|
|
313
|
+
raise TypeError(f'{cls.__name__} primitives <<<{value}>>> must be a dictionary of strings. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
|
|
314
|
+
|
|
294
315
|
def to_primitives(self) -> dict[str, Any]:
|
|
295
316
|
"""
|
|
296
317
|
Returns the class as a dictionary of its primitives. Private attributes that start with "__" are not included,
|
|
@@ -327,13 +348,13 @@ class BaseModel(ABC):
|
|
|
327
348
|
|
|
328
349
|
dictionary = self._to_dict(ignore_private=True)
|
|
329
350
|
for key, value in dictionary.items():
|
|
330
|
-
if isinstance(value, BaseModel):
|
|
351
|
+
if isinstance(value, BaseModel) or hasattr(value, 'to_primitives'):
|
|
331
352
|
value = value.to_primitives()
|
|
332
353
|
|
|
333
354
|
elif isinstance(value, Enum):
|
|
334
355
|
value = value.value
|
|
335
356
|
|
|
336
|
-
elif hasattr(value, 'value'):
|
|
357
|
+
elif isinstance(value, ValueObject) or hasattr(value, 'value'):
|
|
337
358
|
value = value.value
|
|
338
359
|
|
|
339
360
|
if isinstance(value, Enum):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{value_object_pattern-0.9.0 → value_object_pattern-0.9.2}/value_object_pattern/usables/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|