value-object-pattern 0.1.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 (73) hide show
  1. value_object_pattern/__init__.py +10 -0
  2. value_object_pattern/decorators/__init__.py +7 -0
  3. value_object_pattern/decorators/value_object_process.py +83 -0
  4. value_object_pattern/decorators/value_object_validation.py +78 -0
  5. value_object_pattern/models/__init__.py +3 -0
  6. value_object_pattern/models/value_object.py +383 -0
  7. value_object_pattern/py.typed +0 -0
  8. value_object_pattern/usables/__init__.py +54 -0
  9. value_object_pattern/usables/dates/__init__.py +9 -0
  10. value_object_pattern/usables/dates/date/__init__.py +7 -0
  11. value_object_pattern/usables/dates/date/date_value_object.py +162 -0
  12. value_object_pattern/usables/dates/date/string_date_value_object.py +201 -0
  13. value_object_pattern/usables/dates/datetime/__init__.py +7 -0
  14. value_object_pattern/usables/dates/datetime/datetime_value_object.py +193 -0
  15. value_object_pattern/usables/dates/datetime/string_datetime_value_object.py +237 -0
  16. value_object_pattern/usables/identifiers/__init__.py +7 -0
  17. value_object_pattern/usables/identifiers/country_ids/__init__.py +3 -0
  18. value_object_pattern/usables/identifiers/country_ids/spain/__init__.py +3 -0
  19. value_object_pattern/usables/identifiers/country_ids/spain/dni_value_object.py +63 -0
  20. value_object_pattern/usables/identifiers/string_uuid_value_object.py +56 -0
  21. value_object_pattern/usables/identifiers/uuid_value_object.py +40 -0
  22. value_object_pattern/usables/internet/__init__.py +38 -0
  23. value_object_pattern/usables/internet/api_keys/__init__.py +13 -0
  24. value_object_pattern/usables/internet/api_keys/aws_access_key_id_value_object.py +40 -0
  25. value_object_pattern/usables/internet/api_keys/aws_secret_access_key_value_object.py +40 -0
  26. value_object_pattern/usables/internet/api_keys/github_personal_access_token_value_object.py +41 -0
  27. value_object_pattern/usables/internet/api_keys/openai_api_key_value_object.py +40 -0
  28. value_object_pattern/usables/internet/api_keys/resend_api_key_value_object.py +40 -0
  29. value_object_pattern/usables/internet/aws_cloud_region_value_object.py +77 -0
  30. value_object_pattern/usables/internet/domain_value_object.py +149 -0
  31. value_object_pattern/usables/internet/host_value_object.py +143 -0
  32. value_object_pattern/usables/internet/ipv4_address_value_object.py +305 -0
  33. value_object_pattern/usables/internet/ipv4_network_value_object.py +165 -0
  34. value_object_pattern/usables/internet/ipv6_address_value_object.py +288 -0
  35. value_object_pattern/usables/internet/ipv6_network_value_object.py +145 -0
  36. value_object_pattern/usables/internet/mac_address_value_object.py +390 -0
  37. value_object_pattern/usables/internet/port_value_object.py +682 -0
  38. value_object_pattern/usables/internet/uri/__init__.py +11 -0
  39. value_object_pattern/usables/internet/uri/http_https_url_value_object.py +39 -0
  40. value_object_pattern/usables/internet/uri/http_url_value_object.py +39 -0
  41. value_object_pattern/usables/internet/uri/https_url_value_object.py +39 -0
  42. value_object_pattern/usables/internet/uri/url_value_object.py +396 -0
  43. value_object_pattern/usables/primitives/__init__.py +45 -0
  44. value_object_pattern/usables/primitives/boolean/__init__.py +9 -0
  45. value_object_pattern/usables/primitives/boolean/boolean_value_object.py +36 -0
  46. value_object_pattern/usables/primitives/boolean/false_value_object.py +37 -0
  47. value_object_pattern/usables/primitives/boolean/true_value_object.py +37 -0
  48. value_object_pattern/usables/primitives/bytes/__init__.py +3 -0
  49. value_object_pattern/usables/primitives/bytes/bytes_value_object.py +36 -0
  50. value_object_pattern/usables/primitives/float/__init__.py +9 -0
  51. value_object_pattern/usables/primitives/float/float_value_object.py +36 -0
  52. value_object_pattern/usables/primitives/float/negative_float_value_object.py +37 -0
  53. value_object_pattern/usables/primitives/float/positive_float_value_object.py +37 -0
  54. value_object_pattern/usables/primitives/integer/__init__.py +13 -0
  55. value_object_pattern/usables/primitives/integer/even_integer_value_object.py +37 -0
  56. value_object_pattern/usables/primitives/integer/integer_value_object.py +36 -0
  57. value_object_pattern/usables/primitives/integer/negative_integer_value_object.py +37 -0
  58. value_object_pattern/usables/primitives/integer/odd_integer_value_object.py +37 -0
  59. value_object_pattern/usables/primitives/integer/positive_integer_value_object.py +37 -0
  60. value_object_pattern/usables/primitives/string/__init__.py +21 -0
  61. value_object_pattern/usables/primitives/string/alpha_value_object.py +37 -0
  62. value_object_pattern/usables/primitives/string/alphanumeric_value_object.py +37 -0
  63. value_object_pattern/usables/primitives/string/digit_value_object.py +37 -0
  64. value_object_pattern/usables/primitives/string/lowercase_string_value_object.py +37 -0
  65. value_object_pattern/usables/primitives/string/non_empty_string_value_object.py +37 -0
  66. value_object_pattern/usables/primitives/string/printable_string_value_object.py +37 -0
  67. value_object_pattern/usables/primitives/string/string_value_object.py +36 -0
  68. value_object_pattern/usables/primitives/string/trimmed_string_value_object.py +37 -0
  69. value_object_pattern/usables/primitives/string/uppercase_string_value_object.py +37 -0
  70. value_object_pattern-0.1.0.dist-info/METADATA +95 -0
  71. value_object_pattern-0.1.0.dist-info/RECORD +73 -0
  72. value_object_pattern-0.1.0.dist-info/WHEEL +4 -0
  73. value_object_pattern-0.1.0.dist-info/licenses/LICENSE.md +21 -0
@@ -0,0 +1,37 @@
1
+ """
2
+ TrimmedStringValueObject value object.
3
+ """
4
+
5
+ from value_object_pattern.decorators import validation
6
+
7
+ from .string_value_object import StringValueObject
8
+
9
+
10
+ class TrimmedStringValueObject(StringValueObject):
11
+ """
12
+ TrimmedStringValueObject value object ensures the provided value is trimmed.
13
+
14
+ Example:
15
+ ```python
16
+ from value_object_pattern.usables import TrimmedStringValueObject
17
+
18
+ string = TrimmedStringValueObject(value='abcd1234')
19
+
20
+ print(repr(string))
21
+ # >>> TrimmedStringValueObject(value='abcd1234')
22
+ ```
23
+ """
24
+
25
+ @validation(order=0)
26
+ def _ensure_value_is_trimmed(self, value: str) -> None:
27
+ """
28
+ Ensures the value object `value` is trimmed.
29
+
30
+ Args:
31
+ value (str): The provided value.
32
+
33
+ Raises:
34
+ ValueError: If the `value` is not trimmed.
35
+ """
36
+ 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
@@ -0,0 +1,37 @@
1
+ """
2
+ UppercaseStringValueObject value object.
3
+ """
4
+
5
+ from value_object_pattern.decorators import validation
6
+
7
+ from .string_value_object import StringValueObject
8
+
9
+
10
+ class UppercaseStringValueObject(StringValueObject):
11
+ """
12
+ UppercaseStringValueObject value object ensures the provided value is uppercase.
13
+
14
+ Example:
15
+ ```python
16
+ from value_object_pattern.usables import UppercaseStringValueObject
17
+
18
+ string = UppercaseStringValueObject(value='ABCD1234')
19
+
20
+ print(repr(string))
21
+ # >>> UppercaseStringValueObject(value='ABCD1234')
22
+ ```
23
+ """
24
+
25
+ @validation(order=0)
26
+ def _ensure_value_is_uppercase(self, value: str) -> None:
27
+ """
28
+ Ensures the value object `value` is uppercase.
29
+
30
+ Args:
31
+ value (str): The provided value.
32
+
33
+ Raises:
34
+ ValueError: If the `value` is not uppercase.
35
+ """
36
+ if not value.isupper():
37
+ raise ValueError(f'UppercaseStringValueObject value <<<{value}>>> contains lowercase characters. Only uppercase characters are allowed.') # noqa: E501 # fmt: skip
@@ -0,0 +1,95 @@
1
+ Metadata-Version: 2.4
2
+ Name: value-object-pattern
3
+ Version: 0.1.0
4
+ Summary: The Value Object Pattern is a Python package that streamlines the creation and management of value objects in your projects.
5
+ Project-URL: Homepage, https://github.com/adriamontoto/value-object-pattern
6
+ Project-URL: Repository, https://github.com/adriamontoto/value-object-pattern
7
+ Project-URL: Issues, https://github.com/adriamontoto/value-object-pattern/issues
8
+ Author: Adria Montoto
9
+ License-Expression: MIT
10
+ License-File: LICENSE.md
11
+ Keywords: development,domain-driven-design,encapsulation,pattern,python,tools,utilities,validation,value-object
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: python-dateutil>=2.9.0
23
+ Description-Content-Type: text/markdown
24
+
25
+ <a name="readme-top"></a>
26
+
27
+ # 📦 Value Object Pattern
28
+
29
+ <p align="center">
30
+ <a href="https://github.com/adriamontoto/value-object-pattern/actions/workflows/ci.yaml?event=push&branch=master" target="_blank">
31
+ <img src="https://github.com/adriamontoto/value-object-pattern/actions/workflows/ci.yaml/badge.svg?event=push&branch=master" alt="CI Pipeline">
32
+ </a>
33
+ <a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/adriamontoto/value-object-pattern" target="_blank">
34
+ <img src="https://coverage-badge.samuelcolvin.workers.dev/adriamontoto/value-object-pattern.svg" alt="Coverage Pipeline">
35
+ </a>
36
+ <a href="https://pypi.org/project/value-object-pattern" target="_blank">
37
+ <img src="https://img.shields.io/pypi/v/value-object-pattern?color=%2334D058&label=pypi%20package" alt="Package Version">
38
+ </a>
39
+ <a href="https://pypi.org/project/value-object-pattern/" target="_blank">
40
+ <img src="https://img.shields.io/pypi/pyversions/value-object-pattern.svg?color=%2334D058" alt="Supported Python Versions">
41
+ </a>
42
+ </p>
43
+
44
+ The **Value Object Pattern** is a Python 🐍 package that streamlines the creation and management of value objects 📦 in your projects. Value objects are immutable, self-validating objects that represent descriptive aspects of the domain with no conceptual identity. This pattern is essential for maintaining clean 🧹, maintainable, and bug-resistant 🐛 codebases by encapsulating domain-specific logic and ensuring consistency across your application 📱.
45
+ <br><br>
46
+
47
+ ## Table of Contents
48
+
49
+ - [📥 Installation](#installation)
50
+ - [🤝 Contributing](#contributing)
51
+ - [🔑 License](#license)
52
+
53
+ <p align="right">
54
+ <a href="#readme-top">🔼 Back to top</a>
55
+ </p><br><br>
56
+
57
+ <a name="installation"></a>
58
+
59
+ ## 📥 Installation
60
+
61
+ You can install **Value Object Pattern** using `pip`:
62
+
63
+ ```bash
64
+ pip install value-object-pattern
65
+ ```
66
+
67
+ <p align="right">
68
+ <a href="#readme-top">🔼 Back to top</a>
69
+ </p><br><br>
70
+
71
+ <a name="contributing"></a>
72
+
73
+ ## 🤝 Contributing
74
+
75
+ We love community help! Before you open an issue or pull request, please read:
76
+
77
+ - [`🤝 How to Contribute`](https://github.com/adriamontoto/value-object-pattern/blob/master/.github/CONTRIBUTING.md)
78
+ - [`🧭 Code of Conduct`](https://github.com/adriamontoto/value-object-pattern/blob/master/.github/CODE_OF_CONDUCT.md)
79
+ - [`🔐 Security Policy`](https://github.com/adriamontoto/value-object-pattern/blob/master/.github/SECURITY.md)
80
+
81
+ _Thank you for helping make **📦 Value Object Pattern** package awesome! 🌟_
82
+
83
+ <p align="right">
84
+ <a href="#readme-top">🔼 Back to top</a>
85
+ </p><br><br>
86
+
87
+ <a name="license"></a>
88
+
89
+ ## 🔑 License
90
+
91
+ This project is licensed under the terms of the [`MIT license`](https://github.com/adriamontoto/value-object-pattern/blob/master/LICENSE.md).
92
+
93
+ <p align="right">
94
+ <a href="#readme-top">🔼 Back to top</a>
95
+ </p>
@@ -0,0 +1,73 @@
1
+ value_object_pattern/__init__.py,sha256=0sYs7FT_KZf91Pqw1MKimsy-xZ2ltZOb51Cv28Ko-wA,166
2
+ value_object_pattern/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ value_object_pattern/decorators/__init__.py,sha256=Ze0c0z3x5sdmV-KB7nljPsybpoTXAgjJDGfR8FCIxUQ,138
4
+ value_object_pattern/decorators/value_object_process.py,sha256=Q_0w26XolcfZOE6avveA5OGs1yIMNAVC_AxsBV8F5D0,2621
5
+ value_object_pattern/decorators/value_object_validation.py,sha256=ENAQuOLalc-dDzVEpRolbBg8Y0g7--4DRimHTPDD12U,2793
6
+ value_object_pattern/models/__init__.py,sha256=Dx-VEvvCNyKmso8xWM69kz2pfTYuGxgZYD08VQPw1io,66
7
+ value_object_pattern/models/value_object.py,sha256=nnMNv34An6nDMc215oDEAbhtDhkNoerbIJ9WAapwOuQ,11647
8
+ value_object_pattern/usables/__init__.py,sha256=LsHh5uSECizrDXPogZC3zRMzcBIBPyiWXpqSrG2qHrg,1483
9
+ value_object_pattern/usables/dates/__init__.py,sha256=x4MafCtJ1S9WN36cVGOfPdXeKgfptlg4QkcH9fPV4tA,253
10
+ value_object_pattern/usables/dates/date/__init__.py,sha256=rSifr41n8gmqW80e0Ygzoj221dpVsZy7m4TecC_VJus,174
11
+ value_object_pattern/usables/dates/date/date_value_object.py,sha256=f2JuxEJlZaMRMPq53qtDnFLxNC-uJLZJwt31_lVetqo,5054
12
+ value_object_pattern/usables/dates/date/string_date_value_object.py,sha256=yT60yG4dTK8tffkzom05OcLpP7jHTzc0OqhU5fjTbvU,6327
13
+ value_object_pattern/usables/dates/datetime/__init__.py,sha256=5WY9lBtGPf3p7Kb_0v7plLFrq4GzZCj8kw3cU7qHZjk,198
14
+ value_object_pattern/usables/dates/datetime/datetime_value_object.py,sha256=-HvQz1ixAesh9HVafzejSOti88eORJ3aH8502kgqXhY,6759
15
+ value_object_pattern/usables/dates/datetime/string_datetime_value_object.py,sha256=fm9t4N1oxfHPUgmw2RwVWq3W_NaOkpqwvSJapfNgjNM,8334
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
23
+ value_object_pattern/usables/internet/aws_cloud_region_value_object.py,sha256=XcO1upRhRc8X78kDYIggEXIpYgwS7v89Xlq1D7gIsPg,2404
24
+ value_object_pattern/usables/internet/domain_value_object.py,sha256=9b8MyTWcLW1m9rOK2THkJ3oaFYPNB_kEq-feMpnluz4,5728
25
+ value_object_pattern/usables/internet/host_value_object.py,sha256=P5YFSkrwM87WMs_9AhRE997UVg8t5oZCYGFSGwo1JKc,3890
26
+ value_object_pattern/usables/internet/ipv4_address_value_object.py,sha256=OgoEXxDbYxVO25jOxYaWrfPKqCtgjJiu6zF2QSQetZU,8274
27
+ value_object_pattern/usables/internet/ipv4_network_value_object.py,sha256=5VtqDmwUU3fd3GMzT24KMKIdhSxF9Bfj70i7MNdFtdA,4790
28
+ value_object_pattern/usables/internet/ipv6_address_value_object.py,sha256=aeq4apze83ChbmfAUsZctz0gsRnXBPBgOJRovdFGW3s,7846
29
+ value_object_pattern/usables/internet/ipv6_network_value_object.py,sha256=oERZ4Qgx8IhtiOulH_fH8_ce8BmQm5_oUlZvbjzjZvc,4242
30
+ value_object_pattern/usables/internet/mac_address_value_object.py,sha256=ysI5ZdY2SzCJUY2D2ZNv_bzdrRM4zSC8RFoQdikFzCo,11771
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
+ value_object_pattern/usables/internet/uri/__init__.py,sha256=se4zoQXVytMWGgqHRHQ_3XSDQlPPZ9_cPGgUJTMoV9o,341
39
+ value_object_pattern/usables/internet/uri/http_https_url_value_object.py,sha256=0dGfi4pbRnI6DOudgasG9a4paSJb4lNtSTa9uE1Jv_o,1127
40
+ value_object_pattern/usables/internet/uri/http_url_value_object.py,sha256=nU1IjKRmYAV2JWe-Fvji_PGti5qM540OWHf_qtDLiGw,1033
41
+ value_object_pattern/usables/internet/uri/https_url_value_object.py,sha256=SpbIvKHn2kgXVSsxpa7dk5FEr7RwDsgjpSGqPfxl7rU,1048
42
+ value_object_pattern/usables/internet/uri/url_value_object.py,sha256=03jHtGBCPjqhbGkSXtb8qoIv5QUF3ze-cC27-kEIWqA,12419
43
+ value_object_pattern/usables/primitives/__init__.py,sha256=j4AatSdlRIUyQlwZuKMtGhtzgTI4F3lQXw1cC38--2w,1304
44
+ 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
48
+ 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
50
+ 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
54
+ 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
60
+ 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,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) (2024-2025) adriamontoto
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.