value-object-pattern 0.5.0__tar.gz → 0.6.1__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 (75) hide show
  1. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/PKG-INFO +1 -1
  2. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/pyproject.toml +1 -1
  3. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/__init__.py +1 -1
  4. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/__init__.py +4 -0
  5. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/__init__.py +3 -0
  6. value_object_pattern-0.6.1/value_object_pattern/usables/primitives/none/__init__.py +7 -0
  7. value_object_pattern-0.6.1/value_object_pattern/usables/primitives/none/none_value_object.py +50 -0
  8. value_object_pattern-0.6.1/value_object_pattern/usables/primitives/none/not_none_value_object.py +50 -0
  9. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/.gitignore +0 -0
  10. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/LICENSE.md +0 -0
  11. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/README.md +0 -0
  12. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/decorators/__init__.py +0 -0
  13. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/decorators/value_object_process.py +0 -0
  14. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/decorators/value_object_validation.py +0 -0
  15. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/models/__init__.py +0 -0
  16. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/models/enumeration_value_object.py +0 -0
  17. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/models/value_object.py +0 -0
  18. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/py.typed +0 -0
  19. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/__init__.py +0 -0
  20. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  21. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  22. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  23. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  24. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  25. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  26. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  27. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  28. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  29. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  30. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
  31. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/countries/spain/__init__.py +0 -0
  32. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py +0 -0
  33. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +0 -0
  34. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/identifiers/uuid_value_object.py +0 -0
  35. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/__init__.py +0 -0
  36. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  37. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  38. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  39. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  40. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  41. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  42. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  43. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  44. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  45. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  46. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  47. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  48. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  49. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  50. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  51. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  52. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  53. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  54. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  55. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  56. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  57. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  58. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  59. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  60. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  61. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  62. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  63. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  64. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  65. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  66. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  67. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  68. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  69. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  70. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  71. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  72. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  73. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  74. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  75. {value_object_pattern-0.5.0 → value_object_pattern-0.6.1}/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.5.0
3
+ Version: 0.6.1
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>=2.1.0',
66
+ 'object-mother-pattern>=3.0.0',
67
67
  { include-group = 'coverage' },
68
68
  ]
69
69
  types = ['types-python-dateutil>=2.9.0.20241206']
@@ -1,4 +1,4 @@
1
- __version__ = '0.5.0'
1
+ __version__ = '0.6.1'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import EnumerationValueObject, ValueObject
@@ -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,7 @@
1
+ from .none_value_object import NoneValueObject
2
+ from .not_none_value_object import NotNoneValueObject
3
+
4
+ __all__ = (
5
+ 'NoneValueObject',
6
+ 'NotNoneValueObject',
7
+ )
@@ -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
@@ -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.')