value-object-pattern 0.7.2__tar.gz → 0.7.3__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 (76) hide show
  1. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/PKG-INFO +1 -1
  2. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/__init__.py +1 -1
  3. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/models/enumeration_value_object.py +52 -12
  4. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/.gitignore +0 -0
  5. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/LICENSE.md +0 -0
  6. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/README.md +0 -0
  7. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/pyproject.toml +0 -0
  8. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/decorators/__init__.py +0 -0
  9. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/decorators/value_object_process.py +0 -0
  10. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/decorators/value_object_validation.py +0 -0
  11. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/models/__init__.py +0 -0
  12. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/models/base_model.py +0 -0
  13. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/models/value_object.py +0 -0
  14. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/py.typed +0 -0
  15. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/__init__.py +0 -0
  16. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/__init__.py +0 -0
  17. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/date/__init__.py +0 -0
  18. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
  19. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
  20. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
  21. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
  22. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
  23. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/timezone/__init__.py +0 -0
  24. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/timezone/string_timezone_value_object.py +0 -0
  25. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/dates/timezone/timezone_value_object.py +0 -0
  26. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/__init__.py +0 -0
  27. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
  28. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/countries/spain/__init__.py +0 -0
  29. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py +0 -0
  30. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +0 -0
  31. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/identifiers/uuid_value_object.py +0 -0
  32. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/__init__.py +0 -0
  33. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
  34. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
  35. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/host_value_object.py +0 -0
  36. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
  37. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
  38. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
  39. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
  40. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
  41. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/port_value_object.py +0 -0
  42. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
  43. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
  44. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
  45. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
  46. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
  47. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/__init__.py +0 -0
  48. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
  49. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +0 -0
  50. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/boolean/false_value_object.py +0 -0
  51. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/boolean/true_value_object.py +0 -0
  52. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
  53. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +0 -0
  54. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
  55. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/float/float_value_object.py +0 -0
  56. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +0 -0
  57. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +0 -0
  58. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
  59. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +0 -0
  60. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/integer_value_object.py +0 -0
  61. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +0 -0
  62. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +0 -0
  63. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +0 -0
  64. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/none/__init__.py +0 -0
  65. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/none/none_value_object.py +0 -0
  66. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/none/not_none_value_object.py +0 -0
  67. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/__init__.py +0 -0
  68. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/alpha_value_object.py +0 -0
  69. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +0 -0
  70. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/digit_value_object.py +0 -0
  71. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +0 -0
  72. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +0 -0
  73. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +0 -0
  74. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/string_value_object.py +0 -0
  75. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +0 -0
  76. {value_object_pattern-0.7.2 → value_object_pattern-0.7.3}/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.7.2
3
+ Version: 0.7.3
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
@@ -1,4 +1,4 @@
1
- __version__ = '0.7.2'
1
+ __version__ = '0.7.3'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import BaseModel, EnumerationValueObject, ValueObject
@@ -19,7 +19,7 @@ from value_object_pattern.models.value_object import ValueObject
19
19
  E = TypeVar('E', bound=Enum)
20
20
 
21
21
 
22
- class EnumerationValueObject(ValueObject[str | E], Generic[E]): # noqa: UP046
22
+ class EnumerationValueObject(ValueObject[Any | E], Generic[E]): # noqa: UP046
23
23
  """
24
24
  EnumerationValueObject is a value object that ensures the provided value is from an enumeration.
25
25
 
@@ -109,31 +109,71 @@ class EnumerationValueObject(ValueObject[str | E], Generic[E]): # noqa: UP046
109
109
  # >>> ColorValueObject(value=ColorEnumeration.RED)
110
110
  ```
111
111
  """
112
- return f'{self.__class__.__name__}(value={self.value.__class__.__name__}.{self.value.name})'
112
+ return f'{self.__class__.__name__}(value={self.value!r})'
113
+
114
+ @override
115
+ def __str__(self) -> str:
116
+ """
117
+ Returns a simple string representation of the value object.
118
+
119
+ Returns:
120
+ str: The string representation of the value object value.
121
+
122
+ Example:
123
+ ```python
124
+ from enum import Enum, unique
125
+
126
+ from value_object_pattern import EnumerationValueObject
127
+
128
+
129
+ @unique
130
+ class ColorEnumeration(Enum):
131
+ RED = 1
132
+ GREEN = 2
133
+ BLUE = 3
134
+
135
+
136
+ class ColorValueObject(EnumerationValueObject[ColorEnumeration]):
137
+ pass
138
+
139
+
140
+ red = ColorValueObject(value=ColorEnumeration.RED)
141
+ print(str(red))
142
+ # >>> 1
143
+ ```
144
+ """
145
+ return str(object=self._value.value)
113
146
 
114
147
  @process(order=0)
115
- def _ensure_value_is_stored_as_enumeration(self, value: str | E) -> E:
148
+ def _ensure_value_is_stored_as_enumeration(self, value: Any | E) -> E:
116
149
  """
117
150
  Ensures the value object `value` is stored as an enumeration.
118
151
 
119
152
  Args:
120
- value (str | E): The provided value. It can be the name of the member or the member itself.
153
+ value (Any | E): The provided value. It can be the name of the member or the member itself.
154
+
155
+ Raises:
156
+ TypeError: If the `value` is not from the enumeration.
121
157
 
122
158
  Returns:
123
159
  E: The processed value.
124
160
  """
125
- if type(value) is str:
126
- return self._enumeration[value.upper()]
161
+ if isinstance(value, self._enumeration):
162
+ return value
163
+
164
+ for member in self._enumeration:
165
+ if member.value == value:
166
+ return member
127
167
 
128
- return value # type: ignore[return-value]
168
+ raise TypeError(f'EnumerationValueObject value <<<{value}>>> must be from the enumeration <<<{self._title}>>>.')
129
169
 
130
170
  @validation(order=0)
131
- def _ensure_value_is_from_enumeration(self, value: str | E) -> None:
171
+ def _ensure_value_is_from_enumeration(self, value: Any | E) -> None:
132
172
  """
133
173
  Ensures the value object `value` is from the enumeration.
134
174
 
135
175
  Args:
136
- value (str | E): The provided value. It can be the name of the member or the member itself.
176
+ value (Any | E): The provided value. It can be the name of the member or the member itself.
137
177
 
138
178
  Raises:
139
179
  TypeError: If the `value` is not from the enumeration.
@@ -141,10 +181,10 @@ class EnumerationValueObject(ValueObject[str | E], Generic[E]): # noqa: UP046
141
181
  if isinstance(value, self._enumeration):
142
182
  return
143
183
 
144
- if isinstance(value, str) and value in self._enumeration.__members__:
184
+ if any(value == member.value for member in self._enumeration):
145
185
  return
146
186
 
147
- raise TypeError(f'EnumerationValueObject value <<<{value}>>> must be from the enumeration <<<{self._title}>>>.') # noqa: E501 # fmt: skip
187
+ raise TypeError(f'EnumerationValueObject value <<<{value}>>> must be from the enumeration <<<{self._title}>>>.')
148
188
 
149
189
  @override
150
190
  @property
@@ -169,4 +209,4 @@ class EnumerationValueObject(ValueObject[str | E], Generic[E]): # noqa: UP046
169
209
  # >>> 10
170
210
  ```
171
211
  """
172
- return self._value # type: ignore[return-value]
212
+ return self._value