value-object-pattern 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl

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 (39) hide show
  1. value_object_pattern/__init__.py +1 -1
  2. value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
  3. value_object_pattern/usables/identifiers/{country_ids → countries}/spain/dni_value_object.py +16 -3
  4. value_object_pattern/usables/identifiers/string_uuid_value_object.py +15 -4
  5. value_object_pattern/usables/identifiers/uuid_value_object.py +14 -1
  6. value_object_pattern/usables/internet/__init__.py +0 -12
  7. value_object_pattern/usables/primitives/boolean/boolean_value_object.py +15 -1
  8. value_object_pattern/usables/primitives/boolean/false_value_object.py +15 -1
  9. value_object_pattern/usables/primitives/boolean/true_value_object.py +15 -1
  10. value_object_pattern/usables/primitives/bytes/bytes_value_object.py +15 -1
  11. value_object_pattern/usables/primitives/float/float_value_object.py +15 -1
  12. value_object_pattern/usables/primitives/float/negative_float_value_object.py +15 -1
  13. value_object_pattern/usables/primitives/float/positive_float_value_object.py +15 -1
  14. value_object_pattern/usables/primitives/integer/even_integer_value_object.py +15 -1
  15. value_object_pattern/usables/primitives/integer/integer_value_object.py +15 -1
  16. value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +15 -1
  17. value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +15 -1
  18. value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +15 -1
  19. value_object_pattern/usables/primitives/string/alpha_value_object.py +15 -1
  20. value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +15 -1
  21. value_object_pattern/usables/primitives/string/digit_value_object.py +15 -1
  22. value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +15 -1
  23. value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +15 -1
  24. value_object_pattern/usables/primitives/string/printable_string_value_object.py +15 -1
  25. value_object_pattern/usables/primitives/string/string_value_object.py +15 -1
  26. value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +15 -1
  27. value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +15 -1
  28. {value_object_pattern-0.1.0.dist-info → value_object_pattern-0.2.0.dist-info}/METADATA +1 -1
  29. {value_object_pattern-0.1.0.dist-info → value_object_pattern-0.2.0.dist-info}/RECORD +32 -38
  30. value_object_pattern/usables/identifiers/country_ids/__init__.py +0 -3
  31. value_object_pattern/usables/internet/api_keys/__init__.py +0 -13
  32. value_object_pattern/usables/internet/api_keys/aws_access_key_id_value_object.py +0 -40
  33. value_object_pattern/usables/internet/api_keys/aws_secret_access_key_value_object.py +0 -40
  34. value_object_pattern/usables/internet/api_keys/github_personal_access_token_value_object.py +0 -41
  35. value_object_pattern/usables/internet/api_keys/openai_api_key_value_object.py +0 -40
  36. value_object_pattern/usables/internet/api_keys/resend_api_key_value_object.py +0 -40
  37. /value_object_pattern/usables/identifiers/{country_ids → countries}/spain/__init__.py +0 -0
  38. {value_object_pattern-0.1.0.dist-info → value_object_pattern-0.2.0.dist-info}/WHEEL +0 -0
  39. {value_object_pattern-0.1.0.dist-info → value_object_pattern-0.2.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,4 +1,4 @@
1
- __version__ = '0.1.0'
1
+ __version__ = '0.2.0'
2
2
 
3
3
  from .decorators import process, validation
4
4
  from .models import ValueObject
@@ -3,6 +3,7 @@ DniValueObject value object.
3
3
  """
4
4
 
5
5
  from re import Pattern, compile as re_compile
6
+ from typing import NoReturn
6
7
 
7
8
  from value_object_pattern.decorators import process, validation
8
9
  from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
@@ -16,7 +17,7 @@ class DniValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
16
17
 
17
18
  Example:
18
19
  ```python
19
- from value_object_pattern.usables.identifiers.country_ids import DniValueObject
20
+ from value_object_pattern.usables.identifiers.countries.spain import DniValueObject
20
21
 
21
22
  dni = DniValueObject(value='87654321X')
22
23
 
@@ -54,10 +55,22 @@ class DniValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
54
55
  """
55
56
  match = self.__DNI_VALUE_OBJECT_REGEX.fullmatch(string=value)
56
57
  if not match:
57
- raise ValueError(f'DniValueObject value <<<{value}>>> is not a valid Spanish DNI.')
58
+ self._raise_value_is_not_dni(value=value)
58
59
 
59
60
  number, letter = match.groups()
60
61
 
61
62
  expected_letter = self.__DNI_VALUE_OBJECT_LETTERS[int(number) % 23]
62
63
  if letter.upper() != expected_letter:
63
- raise ValueError(f'DniValueObject value <<<{value}>>> is not a valid Spanish DNI.')
64
+ self._raise_value_is_not_dni(value=value)
65
+
66
+ def _raise_value_is_not_dni(self, value: str) -> NoReturn:
67
+ """
68
+ Raises a ValueError if the value object `value` is not a Spanish DNI.
69
+
70
+ Args:
71
+ value (str): The provided value.
72
+
73
+ Raises:
74
+ ValueError: If the `value` is not a Spanish DNI.
75
+ """
76
+ raise ValueError(f'DniValueObject value <<<{value}>>> is not a valid Spanish DNI.')
@@ -2,8 +2,7 @@
2
2
  StringUuidValueObject value object.
3
3
  """
4
4
 
5
- from __future__ import annotations
6
-
5
+ from typing import NoReturn
7
6
  from uuid import UUID
8
7
 
9
8
  from value_object_pattern.decorators import process, validation
@@ -52,5 +51,17 @@ class StringUuidValueObject(NotEmptyStringValueObject, TrimmedStringValueObject)
52
51
  try:
53
52
  UUID(hex=value)
54
53
 
55
- except ValueError as error:
56
- raise ValueError(f'StringUuidValueObject value <<<{value}>>> is not a valid UUID.') from error
54
+ except ValueError:
55
+ self._raise_value_is_not_uuid(value=value)
56
+
57
+ def _raise_value_is_not_uuid(self, value: str) -> NoReturn:
58
+ """
59
+ Raises a ValueError if the value object `value` is not a UUID.
60
+
61
+ Args:
62
+ value (str): The provided value.
63
+
64
+ Raises:
65
+ ValueError: If the `value` is not a UUID.
66
+ """
67
+ raise ValueError(f'StringUuidValueObject value <<<{value}>>> is not a valid UUID.')
@@ -2,6 +2,7 @@
2
2
  UuidValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
5
6
  from uuid import UUID
6
7
 
7
8
  from value_object_pattern.decorators import validation
@@ -37,4 +38,16 @@ class UuidValueObject(ValueObject[UUID]):
37
38
  TypeError: If the `value` is not a UUID.
38
39
  """
39
40
  if type(value) is not UUID:
40
- raise TypeError(f'UuidValueObject value <<<{value}>>> must be a UUID. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
41
+ self._raise_value_is_not_uuid(value=value)
42
+
43
+ def _raise_value_is_not_uuid(self, value: Any) -> NoReturn:
44
+ """
45
+ Raises a TypeError if the value object `value` is not a UUID.
46
+
47
+ Args:
48
+ value (Any): The provided value.
49
+
50
+ Raises:
51
+ TypeError: If the `value` is not a UUID.
52
+ """
53
+ raise TypeError(f'UuidValueObject value <<<{value}>>> must be a UUID. Got <<<{type(value).__name__}>>> type.')
@@ -1,10 +1,3 @@
1
- from .api_keys import (
2
- AwsAccessKeyValueObject,
3
- AwsSecretAccessKeyValueObject,
4
- GitHubPersonalAccessTokenValueObject,
5
- OpenaiApiKeyValueObject,
6
- ResendApiKeyValueObject,
7
- )
8
1
  from .aws_cloud_region_value_object import AwsCloudRegionValueObject
9
2
  from .domain_value_object import DomainValueObject
10
3
  from .host_value_object import HostValueObject
@@ -17,11 +10,8 @@ from .port_value_object import PortValueObject
17
10
  from .uri import HttpHttpsUrlValueObject, HttpUrlValueObject, HttpsUrlValueObject, UrlValueObject
18
11
 
19
12
  __all__ = (
20
- 'AwsAccessKeyValueObject',
21
13
  'AwsCloudRegionValueObject',
22
- 'AwsSecretAccessKeyValueObject',
23
14
  'DomainValueObject',
24
- 'GitHubPersonalAccessTokenValueObject',
25
15
  'HostValueObject',
26
16
  'HttpHttpsUrlValueObject',
27
17
  'HttpUrlValueObject',
@@ -31,8 +21,6 @@ __all__ = (
31
21
  'Ipv6AddressValueObject',
32
22
  'Ipv6NetworkValueObject',
33
23
  'MacAddressValueObject',
34
- 'OpenaiApiKeyValueObject',
35
24
  'PortValueObject',
36
- 'ResendApiKeyValueObject',
37
25
  'UrlValueObject',
38
26
  )
@@ -2,6 +2,8 @@
2
2
  BooleanValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
  from value_object_pattern.models import ValueObject
7
9
 
@@ -33,4 +35,16 @@ class BooleanValueObject(ValueObject[bool]):
33
35
  TypeError: If the `value` is not a boolean.
34
36
  """
35
37
  if type(value) is not bool:
36
- raise TypeError(f'BooleanValueObject value <<<{value}>>> must be a boolean. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
38
+ self._raise_value_is_not_boolean(value=value)
39
+
40
+ def _raise_value_is_not_boolean(self, value: Any) -> NoReturn:
41
+ """
42
+ Raises a TypeError if the value object `value` is not a boolean.
43
+
44
+ Args:
45
+ value (Any): The provided value.
46
+
47
+ Raises:
48
+ TypeError: If the `value` is not a boolean.
49
+ """
50
+ raise TypeError(f'BooleanValueObject value <<<{value}>>> must be a boolean. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  FalseValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .boolean_value_object import BooleanValueObject
@@ -34,4 +36,16 @@ class FalseValueObject(BooleanValueObject):
34
36
  ValueError: If the `value` is not false.
35
37
  """
36
38
  if value:
37
- raise ValueError(f'FalseValueObject value <<<{value}>>> must be false.')
39
+ self._raise_value_is_not_false(value=value)
40
+
41
+ def _raise_value_is_not_false(self, value: bool) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not false.
44
+
45
+ Args:
46
+ value (bool): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not false.
50
+ """
51
+ raise ValueError(f'FalseValueObject value <<<{value}>>> must be false.')
@@ -2,6 +2,8 @@
2
2
  TrueValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .boolean_value_object import BooleanValueObject
@@ -34,4 +36,16 @@ class TrueValueObject(BooleanValueObject):
34
36
  ValueError: If the `value` is not true.
35
37
  """
36
38
  if not value:
37
- raise ValueError(f'TrueValueObject value <<<{value}>>> must be true.')
39
+ self._raise_value_is_not_true(value=value)
40
+
41
+ def _raise_value_is_not_true(self, value: bool) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not true.
44
+
45
+ Args:
46
+ value (bool): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not true.
50
+ """
51
+ raise ValueError(f'TrueValueObject value <<<{value}>>> must be true.')
@@ -2,6 +2,8 @@
2
2
  BytesValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
  from value_object_pattern.models import ValueObject
7
9
 
@@ -33,4 +35,16 @@ class BytesValueObject(ValueObject[bytes]):
33
35
  TypeError: If the `value` is not bytes.
34
36
  """
35
37
  if type(value) is not bytes:
36
- raise TypeError(f'BytesValueObject value <<<{str(object=value)}>>> must be bytes. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
38
+ self._raise_value_is_not_bytes(value=value)
39
+
40
+ def _raise_value_is_not_bytes(self, value: Any) -> NoReturn:
41
+ """
42
+ Raises a TypeError if the value object `value` is not bytes.
43
+
44
+ Args:
45
+ value (Any): The provided value.
46
+
47
+ Raises:
48
+ TypeError: If the `value` is not bytes.
49
+ """
50
+ raise TypeError(f'BytesValueObject value <<<{str(object=value)}>>> must be bytes. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  FloatValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
  from value_object_pattern.models import ValueObject
7
9
 
@@ -33,4 +35,16 @@ class FloatValueObject(ValueObject[float]):
33
35
  TypeError: If the `value` is not a float.
34
36
  """
35
37
  if type(value) is not float:
36
- raise TypeError(f'FloatValueObject value <<<{value}>>> must be a float. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
38
+ self._raise_value_is_not_float(value=value)
39
+
40
+ def _raise_value_is_not_float(self, value: Any) -> NoReturn:
41
+ """
42
+ Raises a TypeError if the value object `value` is not a float.
43
+
44
+ Args:
45
+ value (Any): The provided value.
46
+
47
+ Raises:
48
+ TypeError: If the `value` is not a float.
49
+ """
50
+ raise TypeError(f'FloatValueObject value <<<{value}>>> must be a float. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  NegativeFloatValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .float_value_object import FloatValueObject
@@ -34,4 +36,16 @@ class NegativeFloatValueObject(FloatValueObject):
34
36
  ValueError: If the `value` is not a negative float.
35
37
  """
36
38
  if value >= 0:
37
- raise ValueError(f'NegativeFloatValueObject value <<<{value}>>> must be a negative float.')
39
+ self._raise_value_is_not_negative_float(value=value)
40
+
41
+ def _raise_value_is_not_negative_float(self, value: float) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not a negative float.
44
+
45
+ Args:
46
+ value (float): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not a negative float.
50
+ """
51
+ raise ValueError(f'NegativeFloatValueObject value <<<{value}>>> must be a negative float.')
@@ -2,6 +2,8 @@
2
2
  PositiveFloatValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .float_value_object import FloatValueObject
@@ -34,4 +36,16 @@ class PositiveFloatValueObject(FloatValueObject):
34
36
  ValueError: If the `value` is not a positive float.
35
37
  """
36
38
  if value <= 0:
37
- raise ValueError(f'PositiveFloatValueObject value <<<{value}>>> must be a positive float.')
39
+ self._raise_value_is_not_positive_float(value=value)
40
+
41
+ def _raise_value_is_not_positive_float(self, value: float) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not a positive float.
44
+
45
+ Args:
46
+ value (float): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not a positive float.
50
+ """
51
+ raise ValueError(f'PositiveFloatValueObject value <<<{value}>>> must be a positive float.')
@@ -2,6 +2,8 @@
2
2
  EvenIntegerValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .integer_value_object import IntegerValueObject
@@ -34,4 +36,16 @@ class EvenIntegerValueObject(IntegerValueObject):
34
36
  ValueError: If the `value` is not an even number.
35
37
  """
36
38
  if value % 2 != 0:
37
- raise ValueError(f'EvenIntegerValueObject value <<<{value}>>> must be an even number.')
39
+ self._raise_value_is_not_even_number(value=value)
40
+
41
+ def _raise_value_is_not_even_number(self, value: int) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not an even number.
44
+
45
+ Args:
46
+ value (int): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not an even number.
50
+ """
51
+ raise ValueError(f'EvenIntegerValueObject value <<<{value}>>> must be an even number.')
@@ -2,6 +2,8 @@
2
2
  IntegerValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
  from value_object_pattern.models import ValueObject
7
9
 
@@ -33,4 +35,16 @@ class IntegerValueObject(ValueObject[int]):
33
35
  TypeError: If the `value` is not an integer.
34
36
  """
35
37
  if type(value) is not int:
36
- raise TypeError(f'IntegerValueObject value <<<{value}>>> must be an integer. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
38
+ self._raise_value_is_not_integer(value=value)
39
+
40
+ def _raise_value_is_not_integer(self, value: Any) -> NoReturn:
41
+ """
42
+ Raises a TypeError if the value object `value` is not an integer.
43
+
44
+ Args:
45
+ value (Any): The provided value.
46
+
47
+ Raises:
48
+ TypeError: If the `value` is not an integer.
49
+ """
50
+ raise TypeError(f'IntegerValueObject value <<<{value}>>> must be an integer. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  NegativeIntegerValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .integer_value_object import IntegerValueObject
@@ -34,4 +36,16 @@ class NegativeIntegerValueObject(IntegerValueObject):
34
36
  ValueError: If the `value` is not a negative integer.
35
37
  """
36
38
  if value >= 0:
37
- raise ValueError(f'NegativeIntegerValueObject value <<<{value}>>> must be a negative integer.')
39
+ self._raise_value_is_not_negative_integer(value=value)
40
+
41
+ def _raise_value_is_not_negative_integer(self, value: int) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not a negative integer.
44
+
45
+ Args:
46
+ value (int): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not a negative integer.
50
+ """
51
+ raise ValueError(f'NegativeIntegerValueObject value <<<{value}>>> must be a negative integer.')
@@ -2,6 +2,8 @@
2
2
  OddIntegerValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .integer_value_object import IntegerValueObject
@@ -34,4 +36,16 @@ class OddIntegerValueObject(IntegerValueObject):
34
36
  ValueError: If the `value` is not an odd number.
35
37
  """
36
38
  if value % 2 == 0:
37
- raise ValueError(f'OddIntegerValueObject value <<<{value}>>> must be an odd number.')
39
+ self._raise_value_is_not_odd_number(value=value)
40
+
41
+ def _raise_value_is_not_odd_number(self, value: int) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not an odd number.
44
+
45
+ Args:
46
+ value (int): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not an odd number.
50
+ """
51
+ raise ValueError(f'OddIntegerValueObject value <<<{value}>>> must be an odd number.')
@@ -2,6 +2,8 @@
2
2
  PositiveIntegerValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .integer_value_object import IntegerValueObject
@@ -34,4 +36,16 @@ class PositiveIntegerValueObject(IntegerValueObject):
34
36
  ValueError: If the `value` is not a positive integer.
35
37
  """
36
38
  if value <= 0:
37
- raise ValueError(f'PositiveIntegerValueObject value <<<{value}>>> must be a positive integer.')
39
+ self._raise_value_is_not_positive_integer(value=value)
40
+
41
+ def _raise_value_is_not_positive_integer(self, value: int) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not a positive integer.
44
+
45
+ Args:
46
+ value (int): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not a positive integer.
50
+ """
51
+ raise ValueError(f'PositiveIntegerValueObject value <<<{value}>>> must be a positive integer.')
@@ -2,6 +2,8 @@
2
2
  AlphaStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class AlphaStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not alpha.
35
37
  """
36
38
  if not value.isalpha():
37
- raise ValueError(f'AlphaStringValueObject value <<<{value}>>> contains invalid characters. Only alpha characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_alpha(value=value)
40
+
41
+ def _raise_value_is_not_alpha(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not alpha.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not alpha.
50
+ """
51
+ raise ValueError(f'AlphaStringValueObject value <<<{value}>>> contains invalid characters. Only alpha characters are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  AlphanumericStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class AlphanumericStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not alphanumeric.
35
37
  """
36
38
  if not value.isalnum():
37
- raise ValueError(f'AlphanumericStringValueObject value <<<{value}>>> contains invalid characters. Only alphanumeric characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_alphanumeric(value=value)
40
+
41
+ def _raise_value_is_not_alphanumeric(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not alphanumeric.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not alphanumeric.
50
+ """
51
+ raise ValueError(f'AlphanumericStringValueObject value <<<{value}>>> contains invalid characters. Only alphanumeric characters are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  DigitStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class DigitStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not digit.
35
37
  """
36
38
  if not value.isdigit():
37
- raise ValueError(f'DigitStringValueObject value <<<{value}>>> contains invalid characters. Only digit characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_digit(value=value)
40
+
41
+ def _raise_value_is_not_digit(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not digit.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not digit.
50
+ """
51
+ raise ValueError(f'DigitStringValueObject value <<<{value}>>> contains invalid characters. Only digit characters are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  LowercaseStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class LowercaseStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not lowercase.
35
37
  """
36
38
  if not value.islower():
37
- raise ValueError(f'LowercaseStringValueObject value <<<{value}>>> contains uppercase characters. Only lowercase characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_lowercase(value=value)
40
+
41
+ def _raise_value_is_not_lowercase(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not lowercase.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not lowercase.
50
+ """
51
+ raise ValueError(f'LowercaseStringValueObject value <<<{value}>>> contains uppercase characters. Only lowercase characters are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  NotEmptyStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class NotEmptyStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is an empty string.
35
37
  """
36
38
  if not value:
37
- raise ValueError(f'NotEmptyStringValueObject value <<<{value}>>> is an empty string. Only non-empty strings are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_empty_string(value=value)
40
+
41
+ def _raise_value_is_empty_string(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is an empty string.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is an empty string.
50
+ """
51
+ raise ValueError(f'NotEmptyStringValueObject value <<<{value}>>> is an empty string. Only non-empty strings are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  PrintableStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class PrintableStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not printable.
35
37
  """
36
38
  if not value.isprintable():
37
- raise ValueError(f'PrintableStringValueObject value <<<{value}>>> contains invalid characters. Only printable characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_printable(value=value)
40
+
41
+ def _raise_value_is_not_printable(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not printable.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not printable.
50
+ """
51
+ raise ValueError(f'PrintableStringValueObject value <<<{value}>>> contains invalid characters. Only printable characters are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  StringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import Any, NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
  from value_object_pattern.models import ValueObject
7
9
 
@@ -33,4 +35,16 @@ class StringValueObject(ValueObject[str]):
33
35
  TypeError: If the `value` is not a string.
34
36
  """
35
37
  if type(value) is not str:
36
- raise TypeError(f'StringValueObject value <<<{value}>>> must be a string. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
38
+ self._raise_value_is_not_string(value=value)
39
+
40
+ def _raise_value_is_not_string(self, value: Any) -> NoReturn:
41
+ """
42
+ Raises a TypeError if the value object `value` is not a string.
43
+
44
+ Args:
45
+ value (Any): The provided value.
46
+
47
+ Raises:
48
+ TypeError: If the `value` is not a string.
49
+ """
50
+ raise TypeError(f'StringValueObject value <<<{value}>>> must be a string. Got <<<{type(value).__name__}>>> type.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  TrimmedStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class TrimmedStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not trimmed.
35
37
  """
36
38
  if value != value.strip():
37
- raise ValueError(f'TrimmedStringValueObject value <<<{value}>>> contains leading or trailing whitespaces. Only trimmed values are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_trimmed(value=value)
40
+
41
+ def _raise_value_is_not_trimmed(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not trimmed.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not trimmed.
50
+ """
51
+ raise ValueError(f'TrimmedStringValueObject value <<<{value}>>> contains leading or trailing whitespaces. Only trimmed values are allowed.') # noqa: E501 # fmt: skip
@@ -2,6 +2,8 @@
2
2
  UppercaseStringValueObject value object.
3
3
  """
4
4
 
5
+ from typing import NoReturn
6
+
5
7
  from value_object_pattern.decorators import validation
6
8
 
7
9
  from .string_value_object import StringValueObject
@@ -34,4 +36,16 @@ class UppercaseStringValueObject(StringValueObject):
34
36
  ValueError: If the `value` is not uppercase.
35
37
  """
36
38
  if not value.isupper():
37
- raise ValueError(f'UppercaseStringValueObject value <<<{value}>>> contains lowercase characters. Only uppercase characters are allowed.') # noqa: E501 # fmt: skip
39
+ self._raise_value_is_not_uppercase(value=value)
40
+
41
+ def _raise_value_is_not_uppercase(self, value: str) -> NoReturn:
42
+ """
43
+ Raises a ValueError if the value object `value` is not uppercase.
44
+
45
+ Args:
46
+ value (str): The provided value.
47
+
48
+ Raises:
49
+ ValueError: If the `value` is not uppercase.
50
+ """
51
+ raise ValueError(f'UppercaseStringValueObject value <<<{value}>>> contains lowercase characters. Only uppercase characters are allowed.') # noqa: E501 # fmt: skip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: value-object-pattern
3
- Version: 0.1.0
3
+ Version: 0.2.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
@@ -1,4 +1,4 @@
1
- value_object_pattern/__init__.py,sha256=0sYs7FT_KZf91Pqw1MKimsy-xZ2ltZOb51Cv28Ko-wA,166
1
+ value_object_pattern/__init__.py,sha256=FkXjACU6R9F9vyZv_sMVMi3nK4uYNbSGaFormGodXFw,166
2
2
  value_object_pattern/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  value_object_pattern/decorators/__init__.py,sha256=Ze0c0z3x5sdmV-KB7nljPsybpoTXAgjJDGfR8FCIxUQ,138
4
4
  value_object_pattern/decorators/value_object_process.py,sha256=Q_0w26XolcfZOE6avveA5OGs1yIMNAVC_AxsBV8F5D0,2621
@@ -14,12 +14,12 @@ value_object_pattern/usables/dates/datetime/__init__.py,sha256=5WY9lBtGPf3p7Kb_0
14
14
  value_object_pattern/usables/dates/datetime/datetime_value_object.py,sha256=-HvQz1ixAesh9HVafzejSOti88eORJ3aH8502kgqXhY,6759
15
15
  value_object_pattern/usables/dates/datetime/string_datetime_value_object.py,sha256=fm9t4N1oxfHPUgmw2RwVWq3W_NaOkpqwvSJapfNgjNM,8334
16
16
  value_object_pattern/usables/identifiers/__init__.py,sha256=0-JdvoXEqs_Y-XwVc-Jl2ak5wF4fp3XJXjUp0Z0qOxs,174
17
- value_object_pattern/usables/identifiers/string_uuid_value_object.py,sha256=Ph5gOFgFwr8T3zrgPT2oM1UVydcsLlTOidjzaCBWA-0,1538
18
- value_object_pattern/usables/identifiers/uuid_value_object.py,sha256=wL4yBVQSUvPb1cNy51_jswOgyQNJpDOTERUG0sSJS0E,1056
19
- value_object_pattern/usables/identifiers/country_ids/__init__.py,sha256=LppR-lkhPbYjK72x2cclB8fStBKQ7t8ZapSatISvBhk,65
20
- value_object_pattern/usables/identifiers/country_ids/spain/__init__.py,sha256=yye30yz-WsKCQyHd-mevxhMhLRPD5VBiZK8WjfCb8a4,76
21
- value_object_pattern/usables/identifiers/country_ids/spain/dni_value_object.py,sha256=gl3lhgJmmVKG1PdoTdsnjd12p0IqYdloM9oef9CaToY,2097
22
- value_object_pattern/usables/internet/__init__.py,sha256=rXh8kyX622qbOw_c8niU4SVW0mvV72e_hNrEIxnQxyQ,1358
17
+ value_object_pattern/usables/identifiers/string_uuid_value_object.py,sha256=l5itu12JycSS8qQKg-Fou6Sj0mKxKFZEQx3Zq4iAZtE,1852
18
+ value_object_pattern/usables/identifiers/uuid_value_object.py,sha256=BxvvSQXrHngExB8opsxZC8bgcYGLlpNeCug7iOg2IoQ,1402
19
+ value_object_pattern/usables/identifiers/countries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ value_object_pattern/usables/identifiers/countries/spain/__init__.py,sha256=yye30yz-WsKCQyHd-mevxhMhLRPD5VBiZK8WjfCb8a4,76
21
+ value_object_pattern/usables/identifiers/countries/spain/dni_value_object.py,sha256=UHZrVnQuI-DGwRTFr99tt0SaAlij1kqZx9OEobTcqDk,2441
22
+ value_object_pattern/usables/internet/__init__.py,sha256=w3gK6Eiz3MTRUmFeA97UwAEIjGsz9CZ1B2JRzUWpfx0,994
23
23
  value_object_pattern/usables/internet/aws_cloud_region_value_object.py,sha256=XcO1upRhRc8X78kDYIggEXIpYgwS7v89Xlq1D7gIsPg,2404
24
24
  value_object_pattern/usables/internet/domain_value_object.py,sha256=9b8MyTWcLW1m9rOK2THkJ3oaFYPNB_kEq-feMpnluz4,5728
25
25
  value_object_pattern/usables/internet/host_value_object.py,sha256=P5YFSkrwM87WMs_9AhRE997UVg8t5oZCYGFSGwo1JKc,3890
@@ -29,12 +29,6 @@ value_object_pattern/usables/internet/ipv6_address_value_object.py,sha256=aeq4ap
29
29
  value_object_pattern/usables/internet/ipv6_network_value_object.py,sha256=oERZ4Qgx8IhtiOulH_fH8_ce8BmQm5_oUlZvbjzjZvc,4242
30
30
  value_object_pattern/usables/internet/mac_address_value_object.py,sha256=ysI5ZdY2SzCJUY2D2ZNv_bzdrRM4zSC8RFoQdikFzCo,11771
31
31
  value_object_pattern/usables/internet/port_value_object.py,sha256=qQMX1fJC7ij60T41aV40VXu6AhqUARpzMy4ZoiSMiqI,15959
32
- value_object_pattern/usables/internet/api_keys/__init__.py,sha256=2wR-9WqSlJlF_AEMac5jt8fhqQqz0io2TFY8qABC6tY,557
33
- value_object_pattern/usables/internet/api_keys/aws_access_key_id_value_object.py,sha256=WVKAVa4Q7X14CsLrAnZWbqess8Ao85u1S93L3F8owd4,1366
34
- value_object_pattern/usables/internet/api_keys/aws_secret_access_key_value_object.py,sha256=JqX05Idd7kRHH8slIf_xXYJ_kIXyOoG_YYIWFUaj9Fs,1480
35
- value_object_pattern/usables/internet/api_keys/github_personal_access_token_value_object.py,sha256=YuNucb2XwUgDy6cLwn6evkfKB_jBv-z4G4oYY0AY9KQ,1591
36
- value_object_pattern/usables/internet/api_keys/openai_api_key_value_object.py,sha256=d70JRTeauV5hTRVOprszkR8ZeqZ_ixbV8UwNZEoyBxQ,1461
37
- value_object_pattern/usables/internet/api_keys/resend_api_key_value_object.py,sha256=qLyRtNwHPC1rKqFdWRdWVy-wRIKOm3j2x2CFEZ8ZNFQ,1384
38
32
  value_object_pattern/usables/internet/uri/__init__.py,sha256=se4zoQXVytMWGgqHRHQ_3XSDQlPPZ9_cPGgUJTMoV9o,341
39
33
  value_object_pattern/usables/internet/uri/http_https_url_value_object.py,sha256=0dGfi4pbRnI6DOudgasG9a4paSJb4lNtSTa9uE1Jv_o,1127
40
34
  value_object_pattern/usables/internet/uri/http_url_value_object.py,sha256=nU1IjKRmYAV2JWe-Fvji_PGti5qM540OWHf_qtDLiGw,1033
@@ -42,32 +36,32 @@ value_object_pattern/usables/internet/uri/https_url_value_object.py,sha256=SpbIv
42
36
  value_object_pattern/usables/internet/uri/url_value_object.py,sha256=03jHtGBCPjqhbGkSXtb8qoIv5QUF3ze-cC27-kEIWqA,12419
43
37
  value_object_pattern/usables/primitives/__init__.py,sha256=j4AatSdlRIUyQlwZuKMtGhtzgTI4F3lQXw1cC38--2w,1304
44
38
  value_object_pattern/usables/primitives/boolean/__init__.py,sha256=WhOVH2JAoQnhevx9pW1OsJh-nUF9qKpB4ZGybfSI0U4,237
45
- value_object_pattern/usables/primitives/boolean/boolean_value_object.py,sha256=-u6-C5JCPzik6KfrlpJRxMdWeeOCrcalhSf9wtcva20,994
46
- value_object_pattern/usables/primitives/boolean/false_value_object.py,sha256=fPnQLhCYtEOHVzrEm0yNyYwq-wH5Xiv5MYJyMwx_J5w,891
47
- value_object_pattern/usables/primitives/boolean/true_value_object.py,sha256=UmIcpgumLsjq5jeUPtTSG3g4z2MF4EY28YmPefU9QKM,884
39
+ value_object_pattern/usables/primitives/boolean/boolean_value_object.py,sha256=CV8UWwQwxcMXOPfuWouePA2ce17_t0S6YxE3gH8mVj8,1380
40
+ value_object_pattern/usables/primitives/boolean/false_value_object.py,sha256=bQRyyjYrjcAXTlStiJSC2aKpTUFWG3foASOfkMk3Kwo,1264
41
+ value_object_pattern/usables/primitives/boolean/true_value_object.py,sha256=PymHByY4fBrD6yl6yzvhpbZNN-gRyldnU3Pnq0oSUNU,1253
48
42
  value_object_pattern/usables/primitives/bytes/__init__.py,sha256=QRqBTEXxNaKWDgusLCyW5OG_uFCfueV0WMm9pB7V8bk,82
49
- value_object_pattern/usables/primitives/bytes/bytes_value_object.py,sha256=sUmxZjTdDKjCKAV7p80xfSe9N4a5ZVIwvGmzM809Deo,1014
43
+ value_object_pattern/usables/primitives/bytes/bytes_value_object.py,sha256=Si02aP2I62ZrArec9yGOY4Ui9923Hr8E5DZ9lHhlwIk,1388
50
44
  value_object_pattern/usables/primitives/float/__init__.py,sha256=N28h_ApJgiqZKSHl-_57CZ1zj4b8y1UoHpolblv5dOI,284
51
- value_object_pattern/usables/primitives/float/float_value_object.py,sha256=6qFyCLZnQ0NBolVkYCW_9HAdIwj4VvwkKvcLpL8QJZY,970
52
- value_object_pattern/usables/primitives/float/negative_float_value_object.py,sha256=gfJD_LW2-iVh249S1cS84P5Xmk1ACVZCVNDm0UV_Wxk,967
53
- value_object_pattern/usables/primitives/float/positive_float_value_object.py,sha256=_gPQLGh3MxZ2DEf7t8RyWHZowLUu832xP9DbOS1RM6A,965
45
+ value_object_pattern/usables/primitives/float/float_value_object.py,sha256=erRGRUsgaZ6PKt9xYC-G6jPTk3vkMtKw7ezpUAKAv7M,1348
46
+ value_object_pattern/usables/primitives/float/negative_float_value_object.py,sha256=DVZnWoIURpisUyBVaTNwDnlSIULJ4eAMbO9pzTnzytY,1382
47
+ value_object_pattern/usables/primitives/float/positive_float_value_object.py,sha256=RH2TVmoPOT40LUYHRh9oBSO6Acw7WqbmOai8TeQSJYQ,1380
54
48
  value_object_pattern/usables/primitives/integer/__init__.py,sha256=IUtVH9mof3SSBH8v9KYJlgCcw85cOljBgsnRcoiE33s,483
55
- value_object_pattern/usables/primitives/integer/even_integer_value_object.py,sha256=c9DsRAIA2hnuoWyuFfZOHb8a0cBJVgZ12x_UhP5NExc,969
56
- value_object_pattern/usables/primitives/integer/integer_value_object.py,sha256=gR6Ua94tud92zaX2EblDdHOQIIqlQrPNPa_b9v2WBwQ,988
57
- value_object_pattern/usables/primitives/integer/negative_integer_value_object.py,sha256=uSUz-wOcKemwdcAwrpQUZc-vYeKIYCWM7lgbUZ4EEjw,991
58
- value_object_pattern/usables/primitives/integer/odd_integer_value_object.py,sha256=pE41h-FtXSe7rFQhFJeCd40yptNJHlbmNyEEW41Brvk,948
59
- value_object_pattern/usables/primitives/integer/positive_integer_value_object.py,sha256=e1OHlzaKkaFAJ_LVxdtxA1AqL4MF1pwZUL22s6vWyi0,1013
49
+ value_object_pattern/usables/primitives/integer/even_integer_value_object.py,sha256=tmyaPpCEF05sWUc39dhTU-mrnxvY9lZhpuOnDhu0F1o,1370
50
+ value_object_pattern/usables/primitives/integer/integer_value_object.py,sha256=JUUqhStUEYNTmIYWHmKKVQmMIzqquXPQ_l8SUNSI_WM,1376
51
+ value_object_pattern/usables/primitives/integer/negative_integer_value_object.py,sha256=2dYhMs421Oxmt73Hmd8wa2_Er9fNTlGdiuLtf3JasNM,1410
52
+ value_object_pattern/usables/primitives/integer/odd_integer_value_object.py,sha256=fiFJlPJf4aG9CDfyUpxkGqsBPMQuRQuKA7bAZUDz8Fo,1345
53
+ value_object_pattern/usables/primitives/integer/positive_integer_value_object.py,sha256=PDaGwCnGWnARbrYfCIHcLFKJAqSQ90A_8q-6HG91L0I,1432
60
54
  value_object_pattern/usables/primitives/string/__init__.py,sha256=exdLDLKtfF4QNl5XdA916JqJd-5whAVDQfQcrRrDTzc,879
61
- value_object_pattern/usables/primitives/string/alpha_value_object.py,sha256=c26o-wTeTAEaEIoqkpAVOW5FZybb7Cft-IjtEvf2cew,1012
62
- value_object_pattern/usables/primitives/string/alphanumeric_value_object.py,sha256=_tSwQn1k7aCHPsiuS7w8qb8K4IxmC9PQRLs_RAj18S8,1104
63
- value_object_pattern/usables/primitives/string/digit_value_object.py,sha256=cFlEtXnA3tFGgIlz-6RJPnPcCP1Lme1xwVv2hNdVFs0,1012
64
- value_object_pattern/usables/primitives/string/lowercase_string_value_object.py,sha256=SD0ImkxALDDxLMTysy3rgM_jVqDEtNse8lSfEW3oDWg,1070
65
- value_object_pattern/usables/primitives/string/non_empty_string_value_object.py,sha256=F_nckagHDO17bnHvtks8Plso7mEjEtg9YasKB_BUfUY,1068
66
- value_object_pattern/usables/primitives/string/printable_string_value_object.py,sha256=pu5JoLUrxxELr_-r2b_uj-PRCeQQF7DfQSGmZevUdSs,1072
67
- value_object_pattern/usables/primitives/string/string_value_object.py,sha256=rHoKV4wAJheJuB2PG6jU56SPKq81fBhH_kvo8WaR0Os,988
68
- value_object_pattern/usables/primitives/string/trimmed_string_value_object.py,sha256=6mwcRz3zb0S48Q_6URtdKJy3-tPVOrujmOFSITO8iTs,1056
69
- value_object_pattern/usables/primitives/string/uppercase_string_value_object.py,sha256=SlLY1WMacc65fc7qgvLmAgL_FZKYDXCMogmPYYDis-k,1070
70
- value_object_pattern-0.1.0.dist-info/METADATA,sha256=Iwf18G4cZo9TM0Fs_2CBu03Xxagoa0e2kFF0Nx0KwU4,4018
71
- value_object_pattern-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
72
- value_object_pattern-0.1.0.dist-info/licenses/LICENSE.md,sha256=6E0wpVdiB-k3oJ9cvVG9BPZ07yIevD3IuOECHKveFkM,1076
73
- value_object_pattern-0.1.0.dist-info/RECORD,,
55
+ value_object_pattern/usables/primitives/string/alpha_value_object.py,sha256=-wB24ZG3LlZjKmlVZt3tfkTeDeFqdlV9cGmYpVkYgKc,1383
56
+ value_object_pattern/usables/primitives/string/alphanumeric_value_object.py,sha256=rXDAgezOC57hPcIcZWmsleIuWPh5XNvjjr7vi02kwUw,1503
57
+ value_object_pattern/usables/primitives/string/digit_value_object.py,sha256=xD2gr1cwSvl9Luj7E6H1bWM-2n7fWR82PHQghcFVBgs,1383
58
+ value_object_pattern/usables/primitives/string/lowercase_string_value_object.py,sha256=wL4gyvJnjn7qGOhDqgXAR4N3J389TtMD6dPH5QmOfrI,1457
59
+ value_object_pattern/usables/primitives/string/non_empty_string_value_object.py,sha256=X58BLFTdscN07YOqiGnA7G2MgfiyLD6p7z0TSr2yMEY,1457
60
+ value_object_pattern/usables/primitives/string/printable_string_value_object.py,sha256=HwqymoAW1tW1rB75LcjsEehbm5Rb3bXpghNbhh8uoJI,1459
61
+ value_object_pattern/usables/primitives/string/string_value_object.py,sha256=6u98oMzz5qsVNEWna-UpziDmzFhaLFW7J5NBoJnbKWk,1370
62
+ value_object_pattern/usables/primitives/string/trimmed_string_value_object.py,sha256=WMp4IBA74cEli-N_9Q7qU_oMszHtk5tgCr6o2y99HMs,1435
63
+ value_object_pattern/usables/primitives/string/uppercase_string_value_object.py,sha256=yZajkdq09zb56_UHs4nc0sIeTV4K74ek26JcoHYhM64,1457
64
+ value_object_pattern-0.2.0.dist-info/METADATA,sha256=KmRPYmvh3yDemfj1L2fykaJIwHHCwF8TYt1Bo7UfmPM,4018
65
+ value_object_pattern-0.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
66
+ value_object_pattern-0.2.0.dist-info/licenses/LICENSE.md,sha256=6E0wpVdiB-k3oJ9cvVG9BPZ07yIevD3IuOECHKveFkM,1076
67
+ value_object_pattern-0.2.0.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- from .spain import DniValueObject
2
-
3
- __all__ = ('DniValueObject',)
@@ -1,13 +0,0 @@
1
- from .aws_access_key_id_value_object import AwsAccessKeyValueObject
2
- from .aws_secret_access_key_value_object import AwsSecretAccessKeyValueObject
3
- from .github_personal_access_token_value_object import GitHubPersonalAccessTokenValueObject
4
- from .openai_api_key_value_object import OpenaiApiKeyValueObject
5
- from .resend_api_key_value_object import ResendApiKeyValueObject
6
-
7
- __all__ = (
8
- 'AwsAccessKeyValueObject',
9
- 'AwsSecretAccessKeyValueObject',
10
- 'GitHubPersonalAccessTokenValueObject',
11
- 'OpenaiApiKeyValueObject',
12
- 'ResendApiKeyValueObject',
13
- )
@@ -1,40 +0,0 @@
1
- """
2
- AwsAccessKeyValueObject value object.
3
- """
4
-
5
- from re import Pattern, compile as re_compile
6
-
7
- from value_object_pattern.decorators import validation
8
- from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
-
10
-
11
- class AwsAccessKeyValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
12
- """
13
- AwsAccessKeyValueObject value object ensures the provided value is a valid AWS Access Key ID.
14
-
15
- Example:
16
- ```python
17
- from value_object_pattern.usables.internet import AwsAccessKeyValueObject
18
-
19
- key = AwsAccessKeyValueObject(value='AKIAIOSFODNN7EXAMPLE') # gitleaks:allow
20
-
21
- print(repr(key))
22
- # >>> AwsAccessKeyValueObject(value=AKIAIOSFODNN7EXAMPLE) # gitleaks:allow
23
- ```
24
- """
25
-
26
- __AWS_ACCESS_KEY_VALUE_OBJECT_REGEX: Pattern[str] = re_compile(pattern=r'^(AKIA|ASIA)[A-Z0-9]{16}$')
27
-
28
- @validation(order=0)
29
- def _ensure_value_is_valid_aws_access_key(self, value: str) -> None:
30
- """
31
- Ensures the value object value is a valid AWS Access Key ID.
32
-
33
- Args:
34
- value (str): Value.
35
-
36
- Raises:
37
- ValueError: If the value is not a valid AWS Access Key ID.
38
- """
39
- if not self.__AWS_ACCESS_KEY_VALUE_OBJECT_REGEX.fullmatch(string=value):
40
- raise ValueError(f'AwsAccessKeyValueObject value <<<{value}>>> is not a valid AWS Access Key ID.')
@@ -1,40 +0,0 @@
1
- """
2
- AwsSecretAccessKeyValueObject value object.
3
- """
4
-
5
- from re import Pattern, compile as re_compile
6
-
7
- from value_object_pattern.decorators import validation
8
- from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
-
10
-
11
- class AwsSecretAccessKeyValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
12
- """
13
- AwsSecretAccessKeyValueObject value object ensures the provided value is a valid AWS Secret Access Key.
14
-
15
- Example:
16
- ```python
17
- from value_object_pattern.usables.internet import AwsSecretAccessKeyValueObject
18
-
19
- key = AwsSecretAccessKeyValueObject(value='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY') # gitleaks:allow
20
-
21
- print(repr(key))
22
- # >>> AwsSecretAccessKeyValueObject(value=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY) # gitleaks:allow
23
- ```
24
- """
25
-
26
- __AWS_SECRET_ACCESS_KEY_VALUE_OBJECT_REGEX: Pattern[str] = re_compile(pattern=r'^[a-zA-Z0-9/+=]{40}$')
27
-
28
- @validation(order=0)
29
- def _ensure_value_is_valid_aws_secret_access_key(self, value: str) -> None:
30
- """
31
- Ensures the value object value is a valid AWS Secret Access Key.
32
-
33
- Args:
34
- value (str): Value.
35
-
36
- Raises:
37
- ValueError: If the value is not a valid AWS Secret Access Key.
38
- """
39
- if not self.__AWS_SECRET_ACCESS_KEY_VALUE_OBJECT_REGEX.fullmatch(string=value):
40
- raise ValueError(f'AwsSecretAccessKeyValueObject value <<<{value}>>> is not a valid AWS Secret Access Key.')
@@ -1,41 +0,0 @@
1
- """
2
- GitHubPersonalAccessTokenValueObject value object.
3
- """
4
-
5
- from re import Pattern, compile as re_compile
6
-
7
- from value_object_pattern.decorators import validation
8
- from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
-
10
-
11
- class GitHubPersonalAccessTokenValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
12
- """
13
- GitHubPersonalAccessTokenValueObject value object ensures the provided value is a valid GitHub Personal Access
14
- Token.
15
-
16
- Example:
17
- ```python
18
- from value_object_pattern.usables.internet import GitHubPersonalAccessTokenValueObject
19
-
20
- key = GitHubPersonalAccessTokenValueObject(value='ghp_cgq4ZrHmFu0lLPl7ajKAwgMPnT5zhF000000') # gitleaks:allow
21
-
22
- print(repr(key))
23
- # >>> GitHubPersonalAccessTokenValueObject(value=ghp_cgq4ZrHmFu0lLPl7ajKAwgMPnT5zhF000000) # gitleaks:allow
24
- ```
25
- """
26
-
27
- __GITHUB_PERSONAL_ACCESS_TOKEN_VALUE_OBJECT_REGEX: Pattern[str] = re_compile(pattern=r'^ghp_[a-zA-Z0-9]{36}$')
28
-
29
- @validation(order=0)
30
- def _ensure_value_is_valid_github_pat(self, value: str) -> None:
31
- """
32
- Ensures the value object value is a valid GitHub Personal Access Token.
33
-
34
- Args:
35
- value (str): Value.
36
-
37
- Raises:
38
- ValueError: If the value is not a valid GitHub Personal Access Token
39
- """
40
- if not self.__GITHUB_PERSONAL_ACCESS_TOKEN_VALUE_OBJECT_REGEX.fullmatch(string=value):
41
- raise ValueError(f'GitHubPersonalAccessTokenValueObject value <<<{value}>>> is not a valid GitHub Personal Access Token.') # noqa: E501 # fmt: skip
@@ -1,40 +0,0 @@
1
- """
2
- OpenaiApiKeyValueObject value object.
3
- """
4
-
5
- from re import Pattern, compile as re_compile
6
-
7
- from value_object_pattern.decorators import validation
8
- from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
-
10
-
11
- class OpenaiApiKeyValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
12
- """
13
- OpenaiApiKeyValueObject value object ensures the provided value is a valid OpenAI API Key.
14
-
15
- Example:
16
- ```python
17
- from value_object_pattern.usables.internet import OpenaiApiKeyValueObject
18
-
19
- key = OpenaiApiKeyValueObject(value='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') # gitleaks:allow
20
-
21
- print(repr(key))
22
- # >>> OpenaiApiKeyValueObject(value=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) # gitleaks:allow
23
- ```
24
- """
25
-
26
- __OPENAI_API_KEY_VALUE_OBJECT_REGEX: Pattern[str] = re_compile(pattern=r'^sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20}$') # noqa: E501 # fmt: skip
27
-
28
- @validation(order=0)
29
- def _ensure_value_is_valid_openai_api_key(self, value: str) -> None:
30
- """
31
- Ensures the value object value is a valid OpenAI API Key.
32
-
33
- Args:
34
- value (str): Value.
35
-
36
- Raises:
37
- ValueError: If the value is not a valid OpenAI API Key.
38
- """
39
- if not self.__OPENAI_API_KEY_VALUE_OBJECT_REGEX.fullmatch(string=value):
40
- raise ValueError(f'OpenaiApiKeyValueObject value <<<{value}>>> is not a valid OpenAI API Key.')
@@ -1,40 +0,0 @@
1
- """
2
- ResendApiKeyValueObject value object.
3
- """
4
-
5
- from re import Pattern, compile as re_compile
6
-
7
- from value_object_pattern.decorators import validation
8
- from value_object_pattern.usables import NotEmptyStringValueObject, TrimmedStringValueObject
9
-
10
-
11
- class ResendApiKeyValueObject(NotEmptyStringValueObject, TrimmedStringValueObject):
12
- """
13
- ResendApiKeyValueObject value object ensures the provided value is a valid Resend API Key.
14
-
15
- Example:
16
- ```python
17
- from value_object_pattern.usables.internet import ResendApiKeyValueObject
18
-
19
- key = ResendApiKeyValueObject(value='re_c1tpEyD8_NKFusih9vKVQknRAQfmFcWCv') # gitleaks:allow
20
-
21
- print(repr(key))
22
- # >>> ResendApiKeyValueObject(value=re_c1tpEyD8_NKFusih9vKVQknRAQfmFcWCv) # gitleaks:allow
23
- ```
24
- """
25
-
26
- __RESEND_API_KEY_VALUE_OBJECT_REGEX: Pattern[str] = re_compile(pattern=r'^re_[a-zA-Z0-9-_]{30,}$')
27
-
28
- @validation(order=0)
29
- def _ensure_value_is_valid_resend_api_key(self, value: str) -> None:
30
- """
31
- Ensures the value object value is a valid Resend API Key.
32
-
33
- Args:
34
- value (str): Value.
35
-
36
- Raises:
37
- ValueError: If the value is not a valid Resend API Key.
38
- """
39
- if not self.__RESEND_API_KEY_VALUE_OBJECT_REGEX.fullmatch(string=value):
40
- raise ValueError(f'ResendApiKeyValueObject value <<<{value}>>> is not a valid Resend API Key.')