value-object-pattern 0.4.0__tar.gz → 0.6.0__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.4.0 → value_object_pattern-0.6.0}/PKG-INFO +1 -1
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/pyproject.toml +1 -1
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/__init__.py +1 -1
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/__init__.py +4 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/__init__.py +3 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/dates/timezone/__init__.py +7 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +66 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/dates/timezone/timezone_value_object.py +53 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/__init__.py +3 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/primitives/none/__init__.py +7 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/primitives/none/none_value_object.py +50 -0
- value_object_pattern-0.6.0/value_object_pattern/usables/primitives/none/not_none_value_object.py +50 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/.gitignore +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/LICENSE.md +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/README.md +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/models/enumeration_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/countries/spain/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/identifiers/uuid_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
- {value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/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.0
|
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>=1.0
|
66
|
+
'object-mother-pattern>=2.1.0',
|
67
67
|
{ include-group = 'coverage' },
|
68
68
|
]
|
69
69
|
types = ['types-python-dateutil>=2.9.0.20241206']
|
{value_object_pattern-0.4.0 → value_object_pattern-0.6.0}/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',
|
@@ -1,9 +1,12 @@
|
|
1
1
|
from .date import DateValueObject, StringDateValueObject
|
2
2
|
from .datetime import DatetimeValueObject, StringDatetimeValueObject
|
3
|
+
from .timezone import StringTimezoneValueObject, TimezoneValueObject
|
3
4
|
|
4
5
|
__all__ = (
|
5
6
|
'DateValueObject',
|
6
7
|
'DatetimeValueObject',
|
7
8
|
'StringDateValueObject',
|
8
9
|
'StringDatetimeValueObject',
|
10
|
+
'StringTimezoneValueObject',
|
11
|
+
'TimezoneValueObject',
|
9
12
|
)
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"""
|
2
|
+
StringTimezoneValueObject value object.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from typing import Any, NoReturn
|
6
|
+
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
|
7
|
+
|
8
|
+
from value_object_pattern.decorators import process, validation
|
9
|
+
from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
|
10
|
+
|
11
|
+
|
12
|
+
class StringTimezoneValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
|
13
|
+
"""
|
14
|
+
StringTimezoneValueObject value object ensures the provided value is a string timezone.
|
15
|
+
|
16
|
+
Example:
|
17
|
+
```python
|
18
|
+
from value_object_pattern.usables.dates import StringTimezoneValueObject
|
19
|
+
|
20
|
+
timezone = StringTimezoneValueObject(value='UTC')
|
21
|
+
|
22
|
+
print(repr(timezone))
|
23
|
+
# >>> StringTimezoneValueObject(value='UTC')
|
24
|
+
```
|
25
|
+
"""
|
26
|
+
|
27
|
+
@process(order=0)
|
28
|
+
def _ensure_value_is_normalized(self, value: str) -> str:
|
29
|
+
"""
|
30
|
+
Ensures the value object `value` is normalized timezone string (uppercase).
|
31
|
+
|
32
|
+
Args:
|
33
|
+
value (str): The provided value.
|
34
|
+
|
35
|
+
Returns:
|
36
|
+
str: The normalized timezone string.
|
37
|
+
"""
|
38
|
+
return value.upper()
|
39
|
+
|
40
|
+
@validation(order=0)
|
41
|
+
def _ensure_value_is_timezone(self, value: str) -> None:
|
42
|
+
"""
|
43
|
+
Ensures the value object `value` is a string timezone.
|
44
|
+
|
45
|
+
Args:
|
46
|
+
value (str): The provided value.
|
47
|
+
|
48
|
+
Raises:
|
49
|
+
ValueError: If the `value` is not a timezone.
|
50
|
+
"""
|
51
|
+
try:
|
52
|
+
ZoneInfo(value)
|
53
|
+
except ZoneInfoNotFoundError:
|
54
|
+
self._raise_value_is_not_timezone(value=value)
|
55
|
+
|
56
|
+
def _raise_value_is_not_timezone(self, value: Any) -> NoReturn:
|
57
|
+
"""
|
58
|
+
Raises a ValueError if the value object `value` is not a timezone.
|
59
|
+
|
60
|
+
Args:
|
61
|
+
value (Any): The provided value.
|
62
|
+
|
63
|
+
Raises:
|
64
|
+
ValueError: If the `value` is not a timezone.
|
65
|
+
"""
|
66
|
+
raise ValueError(f'StringTimezoneValueObject value <<<{value}>>> must be a timezone.')
|
value_object_pattern-0.6.0/value_object_pattern/usables/dates/timezone/timezone_value_object.py
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
"""
|
2
|
+
TimezoneValueObject value object.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from datetime import tzinfo
|
6
|
+
from typing import Any, NoReturn
|
7
|
+
|
8
|
+
from value_object_pattern.decorators import validation
|
9
|
+
from value_object_pattern.models import ValueObject
|
10
|
+
|
11
|
+
|
12
|
+
class TimezoneValueObject(ValueObject[tzinfo]):
|
13
|
+
"""
|
14
|
+
TimezoneValueObject value object ensures the provided value is a timezone.
|
15
|
+
|
16
|
+
Example:
|
17
|
+
```python
|
18
|
+
from datetime import UTC
|
19
|
+
|
20
|
+
from value_object_pattern.usables import TimezoneValueObject
|
21
|
+
|
22
|
+
timezone = TimezoneValueObject(value=UTC)
|
23
|
+
|
24
|
+
print(repr(timezone))
|
25
|
+
# >>> TimezoneValueObject(value=UTC)
|
26
|
+
```
|
27
|
+
"""
|
28
|
+
|
29
|
+
@validation(order=0)
|
30
|
+
def _ensure_value_is_timezone(self, value: tzinfo) -> None:
|
31
|
+
"""
|
32
|
+
Ensures the value object `value` is a timezone.
|
33
|
+
|
34
|
+
Args:
|
35
|
+
value (tzinfo): The provided value.
|
36
|
+
|
37
|
+
Raises:
|
38
|
+
TypeError: If the `value` is not a timezone.
|
39
|
+
"""
|
40
|
+
if not isinstance(value, tzinfo):
|
41
|
+
self._raise_value_is_not_timezone(value=value)
|
42
|
+
|
43
|
+
def _raise_value_is_not_timezone(self, value: Any) -> NoReturn:
|
44
|
+
"""
|
45
|
+
Raises a TypeError if the value object `value` is not a timezone.
|
46
|
+
|
47
|
+
Args:
|
48
|
+
value (Any): The provided value.
|
49
|
+
|
50
|
+
Raises:
|
51
|
+
TypeError: If the `value` is not a timezone.
|
52
|
+
"""
|
53
|
+
raise TypeError(f'TimezoneValueObject value <<<{value}>>> must be a timezone. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
|
@@ -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.0/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.4.0 → value_object_pattern-0.6.0}/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
|