value-object-pattern 0.5.0__tar.gz → 0.6.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.5.0 → value_object_pattern-0.6.2}/PKG-INFO +1 -1
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/pyproject.toml +1 -1
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/models/enumeration_value_object.py +2 -2
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/__init__.py +4 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/__init__.py +3 -0
- value_object_pattern-0.6.2/value_object_pattern/usables/primitives/none/__init__.py +7 -0
- value_object_pattern-0.6.2/value_object_pattern/usables/primitives/none/none_value_object.py +50 -0
- value_object_pattern-0.6.2/value_object_pattern/usables/primitives/none/not_none_value_object.py +50 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/.gitignore +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/LICENSE.md +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/README.md +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/countries/spain/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/identifiers/uuid_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-0.5.0 → value_object_pattern-0.6.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.
|
3
|
+
Version: 0.6.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
|
@@ -63,7 +63,7 @@ release = ['build>=1.2.2', 'python-semantic-release>=10.0.2']
|
|
63
63
|
test = [
|
64
64
|
'pytest>=8.0.0',
|
65
65
|
'pytest-randomly>=3.0.0',
|
66
|
-
'object-mother-pattern>=
|
66
|
+
'object-mother-pattern>=3.0.0',
|
67
67
|
{ include-group = 'coverage' },
|
68
68
|
]
|
69
69
|
types = ['types-python-dateutil>=2.9.0.20241206']
|
@@ -119,10 +119,10 @@ class EnumerationValueObject(ValueObject[str | E], Generic[E]): # noqa: UP046
|
|
119
119
|
Returns:
|
120
120
|
E: The processed value.
|
121
121
|
"""
|
122
|
-
if
|
122
|
+
if type(value) is str:
|
123
123
|
return self._enumeration[value.upper()]
|
124
124
|
|
125
|
-
return value
|
125
|
+
return value # type: ignore[return-value]
|
126
126
|
|
127
127
|
@validation(order=0)
|
128
128
|
def _ensure_value_is_from_enumeration(self, value: str | E) -> None:
|
{value_object_pattern-0.5.0 → value_object_pattern-0.6.2}/value_object_pattern/usables/__init__.py
RENAMED
@@ -11,7 +11,9 @@ from .primitives import (
|
|
11
11
|
LowercaseStringValueObject,
|
12
12
|
NegativeFloatValueObject,
|
13
13
|
NegativeIntegerValueObject,
|
14
|
+
NoneValueObject,
|
14
15
|
NotEmptyStringValueObject,
|
16
|
+
NotNoneValueObject,
|
15
17
|
OddIntegerValueObject,
|
16
18
|
PositiveFloatValueObject,
|
17
19
|
PositiveIntegerValueObject,
|
@@ -37,8 +39,10 @@ __all__ = (
|
|
37
39
|
'LowercaseStringValueObject',
|
38
40
|
'NegativeFloatValueObject',
|
39
41
|
'NegativeIntegerValueObject',
|
42
|
+
'NoneValueObject',
|
40
43
|
'NotEmptyStringValueObject',
|
41
44
|
'NotEmptyStringValueObject',
|
45
|
+
'NotNoneValueObject',
|
42
46
|
'OddIntegerValueObject',
|
43
47
|
'PositiveFloatValueObject',
|
44
48
|
'PositiveIntegerValueObject',
|
@@ -8,6 +8,7 @@ from .integer import (
|
|
8
8
|
OddIntegerValueObject,
|
9
9
|
PositiveIntegerValueObject,
|
10
10
|
)
|
11
|
+
from .none import NoneValueObject, NotNoneValueObject
|
11
12
|
from .string import (
|
12
13
|
AlphaStringValueObject,
|
13
14
|
AlphanumericStringValueObject,
|
@@ -33,7 +34,9 @@ __all__ = (
|
|
33
34
|
'LowercaseStringValueObject',
|
34
35
|
'NegativeFloatValueObject',
|
35
36
|
'NegativeIntegerValueObject',
|
37
|
+
'NoneValueObject',
|
36
38
|
'NotEmptyStringValueObject',
|
39
|
+
'NotNoneValueObject',
|
37
40
|
'OddIntegerValueObject',
|
38
41
|
'PositiveFloatValueObject',
|
39
42
|
'PositiveIntegerValueObject',
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"""
|
2
|
+
NoneValueObject value object.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from typing import Any, NoReturn
|
6
|
+
|
7
|
+
from value_object_pattern.decorators import validation
|
8
|
+
from value_object_pattern.models import ValueObject
|
9
|
+
|
10
|
+
|
11
|
+
class NoneValueObject(ValueObject[None]):
|
12
|
+
"""
|
13
|
+
NoneValueObject value object ensures the provided value is None.
|
14
|
+
|
15
|
+
Example:
|
16
|
+
```python
|
17
|
+
from value_object_pattern.usables import NoneValueObject
|
18
|
+
|
19
|
+
none = NoneValueObject(value=None)
|
20
|
+
|
21
|
+
print(repr(none))
|
22
|
+
# >>> NoneValueObject(value=None)
|
23
|
+
```
|
24
|
+
"""
|
25
|
+
|
26
|
+
@validation(order=0)
|
27
|
+
def _ensure_value_is_none(self, value: None) -> None:
|
28
|
+
"""
|
29
|
+
Ensures the value object `value` is None.
|
30
|
+
|
31
|
+
Args:
|
32
|
+
value (None): The provided value.
|
33
|
+
|
34
|
+
Raises:
|
35
|
+
TypeError: If the `value` is not None.
|
36
|
+
"""
|
37
|
+
if value is not None:
|
38
|
+
self._raise_value_is_not_none(value=value)
|
39
|
+
|
40
|
+
def _raise_value_is_not_none(self, value: Any) -> NoReturn:
|
41
|
+
"""
|
42
|
+
Raises a TypeError if the value object `value` is not None.
|
43
|
+
|
44
|
+
Args:
|
45
|
+
value (Any): The provided value.
|
46
|
+
|
47
|
+
Raises:
|
48
|
+
TypeError: If the `value` is not None.
|
49
|
+
"""
|
50
|
+
raise TypeError(f'NoneValueObject value <<<{value}>>> must be None. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
|
value_object_pattern-0.6.2/value_object_pattern/usables/primitives/none/not_none_value_object.py
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
"""
|
2
|
+
NotNoneValueObject value object.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from typing import Any, NoReturn
|
6
|
+
|
7
|
+
from value_object_pattern.decorators import validation
|
8
|
+
from value_object_pattern.models import ValueObject
|
9
|
+
|
10
|
+
|
11
|
+
class NotNoneValueObject(ValueObject[Any]):
|
12
|
+
"""
|
13
|
+
NotNoneValueObject value object ensures the provided value is not None.
|
14
|
+
|
15
|
+
Example:
|
16
|
+
```python
|
17
|
+
from value_object_pattern.usables import NotNoneValueObject
|
18
|
+
|
19
|
+
none = NotNoneValueObject(value='test')
|
20
|
+
|
21
|
+
print(repr(none))
|
22
|
+
# >>> NotNoneValueObject(value=test)
|
23
|
+
```
|
24
|
+
"""
|
25
|
+
|
26
|
+
@validation(order=0)
|
27
|
+
def _ensure_value_is_not_none(self, value: Any) -> None:
|
28
|
+
"""
|
29
|
+
Ensures the value object `value` is not None.
|
30
|
+
|
31
|
+
Args:
|
32
|
+
value (Any): The provided value.
|
33
|
+
|
34
|
+
Raises:
|
35
|
+
TypeError: If the `value` is None.
|
36
|
+
"""
|
37
|
+
if value is None:
|
38
|
+
self._raise_value_is_not_none(value=value)
|
39
|
+
|
40
|
+
def _raise_value_is_not_none(self, value: Any) -> NoReturn:
|
41
|
+
"""
|
42
|
+
Raises a TypeError if the value object `value` is None.
|
43
|
+
|
44
|
+
Args:
|
45
|
+
value (Any): The provided value.
|
46
|
+
|
47
|
+
Raises:
|
48
|
+
TypeError: If the `value` is None.
|
49
|
+
"""
|
50
|
+
raise TypeError(f'NotNoneValueObject value <<<{value}>>> must be not None.')
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{value_object_pattern-0.5.0 → value_object_pattern-0.6.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
|
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
|