value-object-pattern 0.1.0__tar.gz → 0.2.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.1.0 → value_object_pattern-0.2.0}/PKG-INFO +1 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/__init__.py +1 -1
- value_object_pattern-0.2.0/value_object_pattern/usables/identifiers/countries/__init__.py +0 -0
- {value_object_pattern-0.1.0/value_object_pattern/usables/identifiers/country_ids → value_object_pattern-0.2.0/value_object_pattern/usables/identifiers/countries}/spain/dni_value_object.py +16 -3
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/identifiers/string_uuid_value_object.py +15 -4
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/identifiers/uuid_value_object.py +14 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/__init__.py +0 -12
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/boolean/boolean_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/boolean/false_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/boolean/true_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/bytes/bytes_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/float/float_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/float/negative_float_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/float/positive_float_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/even_integer_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/integer_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/alpha_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/digit_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/printable_string_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/string_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +15 -1
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +15 -1
- value_object_pattern-0.1.0/value_object_pattern/usables/identifiers/country_ids/__init__.py +0 -3
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/__init__.py +0 -13
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/aws_access_key_id_value_object.py +0 -40
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/aws_secret_access_key_value_object.py +0 -40
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/github_personal_access_token_value_object.py +0 -41
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/openai_api_key_value_object.py +0 -40
- value_object_pattern-0.1.0/value_object_pattern/usables/internet/api_keys/resend_api_key_value_object.py +0 -40
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/.gitignore +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/LICENSE.md +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/README.md +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/pyproject.toml +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/decorators/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/decorators/value_object_process.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/decorators/value_object_validation.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/models/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/models/value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/py.typed +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/date/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/date/date_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/date/string_date_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/datetime/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/datetime/datetime_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/identifiers/__init__.py +0 -0
- {value_object_pattern-0.1.0/value_object_pattern/usables/identifiers/country_ids → value_object_pattern-0.2.0/value_object_pattern/usables/identifiers/countries}/spain/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/aws_cloud_region_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/domain_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/host_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/ipv4_address_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/ipv4_network_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/ipv6_address_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/ipv6_network_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/mac_address_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/port_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/uri/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/uri/http_https_url_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/uri/http_url_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/uri/https_url_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/internet/uri/url_value_object.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/boolean/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/bytes/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/float/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/integer/__init__.py +0 -0
- {value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/primitives/string/__init__.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.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
|
File without changes
|
@@ -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.
|
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
|
-
|
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
|
-
|
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
|
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
|
56
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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,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.')
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/models/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{value_object_pattern-0.1.0 → value_object_pattern-0.2.0}/value_object_pattern/usables/__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
|