sindripy 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. sindripy-0.1.6/.gitignore +164 -0
  2. sindripy-0.1.6/CHANGELOG.md +292 -0
  3. sindripy-0.1.6/LICENSE +22 -0
  4. sindripy-0.1.6/PKG-INFO +153 -0
  5. sindripy-0.1.6/README.md +106 -0
  6. sindripy-0.1.6/pyproject.toml +135 -0
  7. sindripy-0.1.6/src/sindripy/__init__.py +11 -0
  8. sindripy-0.1.6/src/sindripy/_compat.py +15 -0
  9. sindripy-0.1.6/src/sindripy/mothers/__init__.py +24 -0
  10. sindripy-0.1.6/src/sindripy/mothers/identifiers/__init__.py +0 -0
  11. sindripy-0.1.6/src/sindripy/mothers/identifiers/string_uuid_primitives_mother.py +16 -0
  12. sindripy-0.1.6/src/sindripy/mothers/object_mother.py +10 -0
  13. sindripy-0.1.6/src/sindripy/mothers/primitives/__init__.py +0 -0
  14. sindripy-0.1.6/src/sindripy/mothers/primitives/boolean_primitives_mother.py +20 -0
  15. sindripy-0.1.6/src/sindripy/mothers/primitives/float_primitives_mother.py +30 -0
  16. sindripy-0.1.6/src/sindripy/mothers/primitives/integer_primitives_mother.py +36 -0
  17. sindripy-0.1.6/src/sindripy/mothers/primitives/list_primitives_mother.py +10 -0
  18. sindripy-0.1.6/src/sindripy/mothers/primitives/string_primitives_mother.py +48 -0
  19. sindripy-0.1.6/src/sindripy/py.typed +0 -0
  20. sindripy-0.1.6/src/sindripy/value_objects/__init__.py +29 -0
  21. sindripy-0.1.6/src/sindripy/value_objects/aggregate.py +312 -0
  22. sindripy-0.1.6/src/sindripy/value_objects/decorators/__init__.py +0 -0
  23. sindripy-0.1.6/src/sindripy/value_objects/decorators/validation.py +28 -0
  24. sindripy-0.1.6/src/sindripy/value_objects/errors/__init__.py +0 -0
  25. sindripy-0.1.6/src/sindripy/value_objects/errors/incorrect_value_type_error.py +12 -0
  26. sindripy-0.1.6/src/sindripy/value_objects/errors/invalid_id_format_error.py +8 -0
  27. sindripy-0.1.6/src/sindripy/value_objects/errors/required_value_error.py +8 -0
  28. sindripy-0.1.6/src/sindripy/value_objects/errors/sindri_validation_error.py +10 -0
  29. sindripy-0.1.6/src/sindripy/value_objects/identifiers/__init__.py +0 -0
  30. sindripy-0.1.6/src/sindripy/value_objects/identifiers/string_uuid.py +55 -0
  31. sindripy-0.1.6/src/sindripy/value_objects/primitives/__init__.py +0 -0
  32. sindripy-0.1.6/src/sindripy/value_objects/primitives/boolean.py +44 -0
  33. sindripy-0.1.6/src/sindripy/value_objects/primitives/float.py +44 -0
  34. sindripy-0.1.6/src/sindripy/value_objects/primitives/integer.py +44 -0
  35. sindripy-0.1.6/src/sindripy/value_objects/primitives/list.py +307 -0
  36. sindripy-0.1.6/src/sindripy/value_objects/primitives/string.py +43 -0
  37. sindripy-0.1.6/src/sindripy/value_objects/value_object.py +269 -0
@@ -0,0 +1,164 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+
110
+ # pdm
111
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
112
+ #pdm.lock
113
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
114
+ # in version control.
115
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
116
+ .pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121
+ __pypackages__/
122
+
123
+ # Celery stuff
124
+ celerybeat-schedule
125
+ celerybeat.pid
126
+
127
+ # SageMath parsed files
128
+ *.sage.py
129
+
130
+ # Environments
131
+ .env
132
+ .venv
133
+ env/
134
+ venv/
135
+ ENV/
136
+ env.bak/
137
+ venv.bak/
138
+
139
+ # Spyder project settings
140
+ .spyderproject
141
+ .spyproject
142
+
143
+ # Rope project settings
144
+ .ropeproject
145
+
146
+ # mkdocs documentation
147
+ /site
148
+
149
+ # mypy
150
+ .mypy_cache/
151
+ .dmypy.json
152
+ dmypy.json
153
+
154
+ # Pyre type checker
155
+ .pyre/
156
+
157
+ # pytype static type analyzer
158
+ .pytype/
159
+
160
+ # Cython debug symbols
161
+ cython_debug/
162
+
163
+ # PyPI configuration file
164
+ .pypirc
@@ -0,0 +1,292 @@
1
+ # CHANGELOG
2
+
3
+ <!-- version list -->
4
+
5
+ ## v0.1.6 (2025-11-15)
6
+
7
+ ### Build System
8
+
9
+ - Exclude build commits from changelog and include docs commits
10
+ ([`b5aaebe`](https://github.com/dimanu-py/sindri/commit/b5aaebe4615102190ce1a3ace60515a06121a962))
11
+
12
+ - Update library version in uv.lock file
13
+ ([`add4b02`](https://github.com/dimanu-py/sindri/commit/add4b02df6c40a09b30b068d6f7cef58f9ea09b3))
14
+
15
+ ### Documentation
16
+
17
+ - Reorganize documentation of the library
18
+ ([`8fe7c58`](https://github.com/dimanu-py/sindri/commit/8fe7c5886514a5ce242270d20ad402f5cbac9aab))
19
+
20
+ - Update links in README.md and improve format
21
+ ([`f3fd43f`](https://github.com/dimanu-py/sindri/commit/f3fd43f44cb7156d3932c1443edd55029c855873))
22
+
23
+
24
+ ## v0.1.5 (2025-11-11)
25
+
26
+ ### Bug Fixes
27
+
28
+ - **errors**: Update error message for InvalidIdFormatError
29
+ ([`98b94d3`](https://github.com/dimanu-py/sindri/commit/98b94d3aa9d2dbdef802bbaeb9af57be961fd5b4))
30
+
31
+ ### Build System
32
+
33
+ - Correct errors in mypy by adjusting configuration file
34
+ ([`bb31c60`](https://github.com/dimanu-py/sindri/commit/bb31c60e53d06a3f9699d7d0eef214dda852df96))
35
+
36
+ - Modify build command in semantic release to update uv.lock version too
37
+ ([`a6647bd`](https://github.com/dimanu-py/sindri/commit/a6647bdf0639fbd07fda7b2799591437389c93f1))
38
+
39
+
40
+ ## v0.1.4 (2025-10-14)
41
+
42
+ ### Bug Fixes
43
+
44
+ - Update known-first-party package and change build system to hatchling to be able to configure
45
+ package setup
46
+ ([`13e450b`](https://github.com/dimanu-py/sindri/commit/13e450bee1d01334001c3d75d420d3ee700e068d))
47
+
48
+
49
+ ## v0.1.3 (2025-10-14)
50
+
51
+ ### Bug Fixes
52
+
53
+ - Update import paths to remove 'src' prefix
54
+ ([`3a94d51`](https://github.com/dimanu-py/sindri/commit/3a94d5121c493b7ecb17082fcdff5701643902a4))
55
+
56
+
57
+ ## v0.1.2 (2025-10-14)
58
+
59
+ ### Bug Fixes
60
+
61
+ - Correct urls to contributing guide in readme
62
+ ([`440eb86`](https://github.com/dimanu-py/sindri/commit/440eb86911d386d49b43d5c726454ca3d6686743))
63
+
64
+
65
+ ## v0.1.1 (2025-10-14)
66
+
67
+ ### Bug Fixes
68
+
69
+ - Update project name for pypi
70
+ ([`63d765c`](https://github.com/dimanu-py/sindri/commit/63d765c6b8ec379d7fd6628f35bd1f33e6157593))
71
+
72
+ ### Build System
73
+
74
+ - Update Python version classifiers in pyproject.toml
75
+ ([`8abc14a`](https://github.com/dimanu-py/sindri/commit/8abc14a8d2ba0308e8ad3c52ac7081fe6b3e2e51))
76
+
77
+ ### Refactoring
78
+
79
+ - Rename source folder to sindripy
80
+ ([`83a3dd5`](https://github.com/dimanu-py/sindri/commit/83a3dd5661420d9460e11785780db785b65cedf7))
81
+
82
+
83
+ ## v0.1.0 (2025-10-13)
84
+
85
+ ### Bug Fixes
86
+
87
+ - Update version variables in pyproject.toml
88
+ ([`146fbb3`](https://github.com/dimanu-py/sindri/commit/146fbb35ad2849343fabf5b1689cbf79de1c4366))
89
+
90
+ - Use previous template issues
91
+ ([`bf8de02`](https://github.com/dimanu-py/sindri/commit/bf8de02c0cd2f86313831e40c210aff6be5241e5))
92
+
93
+ - **primitives**: Correct wrong types in list tests
94
+ ([`e09f4c0`](https://github.com/dimanu-py/sindri/commit/e09f4c0cc37b680e6e4ccd2a876146ec01b7d15a))
95
+
96
+ - **primitives**: Remove unreachable branch reported by mypy
97
+ ([`903b05d`](https://github.com/dimanu-py/sindri/commit/903b05da913dc8f2532cb8cceb95e52047e8144c))
98
+
99
+ - **validation**: Improve type checking for validation order
100
+ ([`f040416`](https://github.com/dimanu-py/sindri/commit/f040416874413bbca8ad5527ef447fcf00c13256))
101
+
102
+ - **value-object**: Correct imports after moving 'mother' folder to 'src'
103
+ ([`ca2c4c2`](https://github.com/dimanu-py/sindri/commit/ca2c4c2d63ff27508cbc928f4cc99be7ee44e630))
104
+
105
+ - **value-objects**: Pass expected type to IncorrectValueTypeError to send correct message
106
+ ([`01dbdc1`](https://github.com/dimanu-py/sindri/commit/01dbdc12df56d5e23299eae857697d64317866f5))
107
+
108
+ - **value-objects**: Raise TypeError when comparing two value objects that are not of the same type
109
+ ([`2efa331`](https://github.com/dimanu-py/sindri/commit/2efa3313d41f24bcb590788a71102ff4755865e7))
110
+
111
+ ### Build System
112
+
113
+ - Add build backend using uv default system
114
+ ([`be6166d`](https://github.com/dimanu-py/sindri/commit/be6166df7ab3c0baca642b05700be3bc0fa6f6d8))
115
+
116
+ - Add missing commands in makefile
117
+ ([`b00a081`](https://github.com/dimanu-py/sindri/commit/b00a081957cafc082b2215973dc4432e80efb632))
118
+
119
+ - Add mypy configuration
120
+ ([`57833b4`](https://github.com/dimanu-py/sindri/commit/57833b4e4520e9aa51ad7c2dd180e55b37f37c72))
121
+
122
+ - Add packages for documentation
123
+ ([`8f5ff91`](https://github.com/dimanu-py/sindri/commit/8f5ff914772773e277b26712b16125ea65f446e7))
124
+
125
+ - Add pytest configuration for test markers and paths to pyproject.toml instead of separated
126
+ pytest.ini file
127
+ ([`ba13a2d`](https://github.com/dimanu-py/sindri/commit/ba13a2df885ee39d5ef6875334f36b1a919d587c))
128
+
129
+ - Add version variable for semantic release
130
+ ([`41d48b4`](https://github.com/dimanu-py/sindri/commit/41d48b4a4227f5eeb18df154c39859984e49ad94))
131
+
132
+ - Correct error in 'search' make command
133
+ ([`7f1a47d`](https://github.com/dimanu-py/sindri/commit/7f1a47daf944fa122389d703d8e11e73cc25f6e0))
134
+
135
+ - Fix error in build-system section
136
+ ([`de600e3`](https://github.com/dimanu-py/sindri/commit/de600e3bc63ae2a90a3b3d6db4813cc3c3829bde))
137
+
138
+ - Fix main package name in config file
139
+ ([`ee33f75`](https://github.com/dimanu-py/sindri/commit/ee33f75a294ae00030d4fda9894410981d8d27d2))
140
+
141
+ - Ignore pip audit vulnerability due to pip audit bug
142
+ ([`65d15d6`](https://github.com/dimanu-py/sindri/commit/65d15d64b8fa66f48d808b20a4d3009f73c9cc00))
143
+
144
+ - Ignore rule E501
145
+ ([`8b05274`](https://github.com/dimanu-py/sindri/commit/8b05274f3dd0b563582a9f7d57814662c92faf9f))
146
+
147
+ - Remove unnecessary project.scripts section as the library will not be a cli application
148
+ ([`cb5e9ac`](https://github.com/dimanu-py/sindri/commit/cb5e9ac50b08e1631fb6a31ece49085420daa590))
149
+
150
+ - Update known-first-party to include 'src' and 'test'
151
+ ([`1aca0d3`](https://github.com/dimanu-py/sindri/commit/1aca0d31aedfd5e11014692eb6767b6d6c0d8a68))
152
+
153
+ - Update package name in uv.lock file
154
+ ([`2bf433b`](https://github.com/dimanu-py/sindri/commit/2bf433b8e86069b79d3873a92abb979a7cca5715))
155
+
156
+ - Update project name metadata
157
+ ([`e5f91bf`](https://github.com/dimanu-py/sindri/commit/e5f91bf3b3329a4f72e974af034f6872ddb54ef9))
158
+
159
+ - Update Python version requirement to support 3.10 and 3.13
160
+ ([`4ecf034`](https://github.com/dimanu-py/sindri/commit/4ecf0343b9679c248fa31e424e074857f5980b43))
161
+
162
+ ### Features
163
+
164
+ - Add Buy Me a Coffee funding option
165
+ ([`333c6ce`](https://github.com/dimanu-py/sindri/commit/333c6ce7761a31b5f78c7144d5e60f37b0c16e91))
166
+
167
+ - Add compatibility helpers for typing features across Python versions
168
+ ([`c134554`](https://github.com/dimanu-py/sindri/commit/c134554316dfc274098af8dc4e0805dc02615df5))
169
+
170
+ - **errors**: Remove unused error
171
+ ([`dc8d6ee`](https://github.com/dimanu-py/sindri/commit/dc8d6ee23e909d2157a1238feb8e9d4c2efb5cb8))
172
+
173
+ - **list**: Add validation for list element types
174
+ ([`55049f1`](https://github.com/dimanu-py/sindri/commit/55049f13f1115dbe286fd0942926973d64c3aace))
175
+
176
+ - **mothers**: Remove unused random generator
177
+ ([`bd80dd7`](https://github.com/dimanu-py/sindri/commit/bd80dd782590e8c314e0ae7cf05784d81b790d96))
178
+
179
+ - **primitives**: Add __eq__ method to list value object
180
+ ([`8f820b0`](https://github.com/dimanu-py/sindri/commit/8f820b07d84091d86bc2ee9ca9382ba562e9c551))
181
+
182
+ - **primitives**: Add Boolean value object with validation and testing utilities
183
+ ([`f26a738`](https://github.com/dimanu-py/sindri/commit/f26a738163bb417de2af0a2c6a73e01009d0f98e))
184
+
185
+ - **primitives**: Add FloatValueObject and FloatPrimitivesMother for float value handling
186
+ ([`eaa7d8a`](https://github.com/dimanu-py/sindri/commit/eaa7d8a64b2ce9fd09ef899deff7f5bc7120d76a))
187
+
188
+ - **primitives**: Create List value object class
189
+ ([`6dc97ea`](https://github.com/dimanu-py/sindri/commit/6dc97ea007011fe59391bedbf5aedf79914c9156))
190
+
191
+ - **primitives**: Implement methods to be able to iterate, check containing, length, reversed
192
+ iteration over a List value object and named constructor method to be able to construct the class
193
+ directly from primitives
194
+ ([`ad1c6d3`](https://github.com/dimanu-py/sindri/commit/ad1c6d37c4e3f78df492593ee4f1c11ce4531fa3))
195
+
196
+ - **value-crafter**: Expose public API for value-crafter library
197
+ ([`7ce8357`](https://github.com/dimanu-py/sindri/commit/7ce83570218654754a765f6ec684465db919329e))
198
+
199
+ - **value-objects**: Raise error when comparing value objects of different types
200
+ ([`32f6ffb`](https://github.com/dimanu-py/sindri/commit/32f6ffbb7b1581a3909d1cffda507b4b5c73d34d))
201
+
202
+ - **value-objects**: Return False by default when comparing two different types of value objects
203
+ ([`4965184`](https://github.com/dimanu-py/sindri/commit/4965184890b4f6565c6fa118c255c273693e1711))
204
+
205
+ ### Refactoring
206
+
207
+ - Move back value_crafters folder to src to be able to use uv build system directly
208
+ ([`7e01712`](https://github.com/dimanu-py/sindri/commit/7e01712c162b62f0da98fdd85361184f5d2dbe9c))
209
+
210
+ - Rename main module to src
211
+ ([`826dc57`](https://github.com/dimanu-py/sindri/commit/826dc576938fa7efe6b42bc1e46e6ccaab8fc006))
212
+
213
+ - Rename package from value-crafter to sindri
214
+ ([`4aceb6d`](https://github.com/dimanu-py/sindri/commit/4aceb6ddccd3b353cd022852606dca840ef9ec66))
215
+
216
+ - Rename source folder to 'value_crafter'
217
+ ([`3e6ee81`](https://github.com/dimanu-py/sindri/commit/3e6ee81d6b883d75359bf4140ea1f5285ae093c3))
218
+
219
+ - **errors**: Migrate domain errors to validation errors
220
+ ([`5c217bc`](https://github.com/dimanu-py/sindri/commit/5c217bcb33460764995b0d158a1a5f23bf9519da))
221
+
222
+ - **errors**: Move errors to value_object folder
223
+ ([`2c59bc6`](https://github.com/dimanu-py/sindri/commit/2c59bc632c77d2e0a5a41db029b88213df1ecb75))
224
+
225
+ - **errors**: Remove ValidationError class to be abstract to allow using it directly in custom value
226
+ objects
227
+ ([`2f11cf3`](https://github.com/dimanu-py/sindri/commit/2f11cf34f66e86869d6e6915125d9a9ab9500f88))
228
+
229
+ - **errors**: Rename ValidationError to ValueObjectValidationError to avoid colliding with
230
+ pydantic's ValidationError
231
+ ([`5d33786`](https://github.com/dimanu-py/sindri/commit/5d33786a670be1d601b6dfda4461b84f35030254))
232
+
233
+ - **mothers**: Modify ObjectMother to not be abstract as it does not have any abstractmethod
234
+ ([`0e4efaf`](https://github.com/dimanu-py/sindri/commit/0e4efafba7e43dab1a04ee017ae010ff9a24ef8c))
235
+
236
+ - **mothers**: Move mothers folder to src as it would be part of the public library usage
237
+ ([`9f02acd`](https://github.com/dimanu-py/sindri/commit/9f02acd47de5f4037dca1eddac8831a5b45e376a))
238
+
239
+ - **mothers**: Optimize faker usage with lru_cache in object mother
240
+ ([`1917c75`](https://github.com/dimanu-py/sindri/commit/1917c7511e3c18c624cbe3f9a2cf494da3c7985e))
241
+
242
+ - **mothers**: Organized in modules object mothers
243
+ ([`daa2ac9`](https://github.com/dimanu-py/sindri/commit/daa2ac9a25975e9503d8bc7ceadf43fd4891fbce))
244
+
245
+ - **mothers**: Update object mothers to new base class and implement additional methods
246
+ ([`0d07f74`](https://github.com/dimanu-py/sindri/commit/0d07f74e9546eaeeca408bbd0d088db4845bec20))
247
+
248
+ - **primitives**: Add type hint to __iter__ and __reversed__ methods
249
+ ([`004bffd`](https://github.com/dimanu-py/sindri/commit/004bffd8d509e36392c9d60f39bfcd439a1700e0))
250
+
251
+ - **primitives**: Clean up tests for list value object removing unnecessary classes and tests
252
+ ([`c00f18b`](https://github.com/dimanu-py/sindri/commit/c00f18b58b6d4da595375085c15fe73c392e6cc0))
253
+
254
+ - **primitives**: Extract semantic methods when subclassing List value object to make validation
255
+ more readable
256
+ ([`16d3e9a`](https://github.com/dimanu-py/sindri/commit/16d3e9aad8e2d55caaa696be7531558e890525be))
257
+
258
+ - **primitives**: Remove unreachable bool verification in integer validation
259
+ ([`dc786ac`](https://github.com/dimanu-py/sindri/commit/dc786ac617d1aad1f38d7b0002f4098195ce95c7))
260
+
261
+ - **primitives**: Remove validation for negative values in IntValueObject
262
+ ([`ba1cd6f`](https://github.com/dimanu-py/sindri/commit/ba1cd6f28be725b47ce9ffab57cced96c204542c))
263
+
264
+ - **primitives**: Rename IntValueObject to Integer and update references
265
+ ([`569a81e`](https://github.com/dimanu-py/sindri/commit/569a81ee19b28b07fe1cb07467238fb23704bdca))
266
+
267
+ - **primitives**: Rename StringValueObject to String and update references
268
+ ([`a70e9d5`](https://github.com/dimanu-py/sindri/commit/a70e9d5a9def91d85f9f13ef80cdfc17b9e861cb))
269
+
270
+ - **primitives**: Rename Uuid to StringUuid and update references
271
+ ([`db4ae12`](https://github.com/dimanu-py/sindri/commit/db4ae123560dfbd4eed54c9a0382cd5fc1b7ae3b))
272
+
273
+ - **primitives**: Reorganize string_uuid module and update references
274
+ ([`7bc15fa`](https://github.com/dimanu-py/sindri/commit/7bc15fa80e011d1f2d0f1edcbfa379e4c26df6d3))
275
+
276
+ - **value-objects**: Allow value object class to handle order of validation
277
+ ([`dfbd825`](https://github.com/dimanu-py/sindri/commit/dfbd8258156c34178943c734e2e29869bf7dba6b))
278
+
279
+ - **value-objects**: Modify message error when constructor parameters mismatch
280
+ ([`0bbfccd`](https://github.com/dimanu-py/sindri/commit/0bbfccd5f0cb80175e2c0185c9438a9d95ff4fe8))
281
+
282
+ - **value-objects**: Modify validate decorator to allow order of validation
283
+ ([`be930f6`](https://github.com/dimanu-py/sindri/commit/be930f63a0ddd03b2734ba802de828c79b2087dd))
284
+
285
+ - **value-objects**: Raise InvalidIdFormatError from ValueError on uuid vo
286
+ ([`56f933a`](https://github.com/dimanu-py/sindri/commit/56f933ae12bc2c427cc7f36f0f643f1da445f0b7))
287
+
288
+ - **value-objects**: Remove sorting attributes in Aggregate class
289
+ ([`4d2e430`](https://github.com/dimanu-py/sindri/commit/4d2e4307108a53b5f50404a07ec17c64db054dfa))
290
+
291
+ - **value-objects**: Rename 'usables' module to 'primitives'
292
+ ([`c6e5200`](https://github.com/dimanu-py/sindri/commit/c6e52009717731fe7ecac0e73adb4dc9eb438dec))
sindripy-0.1.6/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 dimanu-py
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.
22
+
@@ -0,0 +1,153 @@
1
+ Metadata-Version: 2.4
2
+ Name: sindripy
3
+ Version: 0.1.6
4
+ Summary: Value Object and Object Mother patterns implementation for Python
5
+ Project-URL: documentation, https://dimanu-py.github.io/sindri/home/
6
+ Project-URL: repository, https://github.com/dimanu-py/sindri/
7
+ Author-email: dimanu-py <dimanu.py@gmail.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 dimanu-py
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+
30
+ License-File: LICENSE
31
+ Classifier: Framework :: FastAPI
32
+ Classifier: Intended Audience :: Developers
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Programming Language :: Python
35
+ Classifier: Programming Language :: Python :: 3
36
+ Classifier: Programming Language :: Python :: 3.10
37
+ Classifier: Programming Language :: Python :: 3.11
38
+ Classifier: Programming Language :: Python :: 3.12
39
+ Classifier: Programming Language :: Python :: 3.13
40
+ Classifier: Topic :: Software Development :: Libraries
41
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
42
+ Classifier: Topic :: Software Development :: Testing :: BDD
43
+ Classifier: Topic :: Software Development :: Testing :: Unit
44
+ Classifier: Typing :: Typed
45
+ Requires-Python: <3.14,>=3.10
46
+ Description-Content-Type: text/markdown
47
+
48
+ <div align="center">
49
+ <h1>🛠️ Sindripy 🛠️</h1>
50
+ <strong>Easy use and customizable implementation for Value Object and Object Mother patterns.</strong>
51
+ </div>
52
+
53
+ <p align="center">
54
+ <a href="https://dimanu-py.github.io/sindri/getting_started/">Getting Started</a>&nbsp;&nbsp;•&nbsp;
55
+ <a href="https://dimanu-py.github.io/sindri/value_objects/">Value Object Pattern</a>&nbsp;&nbsp;•&nbsp;
56
+ <a href="https://dimanu-py.github.io/sindri/object_mothers/">Object Mother Pattern</a>
57
+ </p>
58
+
59
+ <div align="center"><table><tr><td>
60
+ Sindri replaces ad hoc primitives and fragile validators with a consistent Value Object and Aggregate
61
+ toolkit you can adopt quickly.
62
+ Spin up validated value objects, aggregates, and test data with a simple and a small, focused API.
63
+
64
+ Sindripy provides a basic-high-customizable implementation to help you enforce
65
+ domain invariants and improve code quality with minimal effort.
66
+
67
+ <br>
68
+
69
+ <b>Why use sindripy?</b> Building your domain with Sindri lets you:
70
+
71
+ <ul style="list-style-type: none">
72
+ <li>⏱️ Cut domain modeling and validation to seconds</li>
73
+ <li>🛡️ Declare immutable, validated value objects with clear error messages</li>
74
+ <li>🧩 Model aggregates with explicit invariants and composition</li>
75
+ <li>🧪 Generate realistic test data via the Object Mother pattern</li>
76
+ <li>🧰 Start from ready made primitives and identifiers or extend with your own</li>
77
+ <li>🔧 Plug in custom validators, decorators, and typed primitives</li>
78
+ </ul>
79
+
80
+ </td></tr></table></div>
81
+
82
+ <div style="background-color: #1e2d3d; border: 1px solid #00d9ff; border-radius: 8px; padding: 16px; margin: 16px 0; display: flex; align-items: flex-start; gap: 12px;">
83
+ <div style="font-size: 20px; color: #00d9ff; flex-shrink: 0;">💧</div>
84
+ <div>
85
+ <strong style="color: #00d9ff;">Created with Instant Python</strong><br>
86
+ <span style="color: #a0a0a0;">This project was generated using <a href="https://github.com/dimanu-py/instant-python" style="color: #00d9ff; text-decoration: none;">Instant Python</a>, a fast, easy and reliable project generator for Python projects.</span>
87
+ </div>
88
+ </div>
89
+
90
+ ## Navigation Guide
91
+
92
+ This section provides a high-level overview of the `sindripy` documentation so you can find quickly what you need.
93
+
94
+ ### For Users
95
+
96
+ - [Installation]
97
+ - [First Steps]
98
+ - [Value Object Pattern]
99
+ - [Object Mother Pattern]
100
+
101
+ ### For Developers
102
+
103
+ - [Contributing Guide]
104
+ - [Security Policy]
105
+
106
+ ### Need help?
107
+
108
+ - Join a discussion 💬 on [GitHub Discussions]
109
+ - [Raise an issue][GitHub Issues] on GitHub
110
+
111
+ ## Fast Kickstart
112
+
113
+ The latest version of `sindripy` can be installed from PyPI:
114
+
115
+ ```bash
116
+ pip install sindripy
117
+ ```
118
+
119
+ Here is a simple example of how to use `sindri` to create a value object and generate test data using an object mother.
120
+
121
+ ```python
122
+ from sindripy.value_objects import Integer, String
123
+
124
+ age = Integer(30)
125
+ name = String("John Doe")
126
+
127
+ print(f"Name: {name.value}, Age: {age.value}")
128
+ ```
129
+
130
+ ```python
131
+ from sindripy.mothers import IntegerPrimitivesMother, StringPrimitivesMother
132
+
133
+ random_age = IntegerPrimitivesMother.any()
134
+ random_name = StringPrimitivesMother.any()
135
+ ```
136
+
137
+ <div style="background-color: #1e2d3d; border: 1px solid #00d9ff; border-radius: 8px; padding: 16px; margin: 16px 0; display: flex; align-items: flex-start; gap: 12px;">
138
+ <div style="font-size: 20px; color: #00d9ff; flex-shrink: 0;">ℹ️</div>
139
+ <div>
140
+ <strong style="color: #00d9ff;">Learn More</strong><br>
141
+ <span style="color: #a0a0a0;">To learn more about advanced usage of value objects, including validation, custom value objects, complex objects like aggregates, visit the <a href="https://dimanu-py.github.io/sindri/value_objects/" style="color: #00d9ff; text-decoration: none;">Value Object Pattern</a> and <a href="https://dimanu-py.github.io/sindri/object_mothers" style="color: #00d9ff; text-decoration: none;">Object Mother Pattern</a> sections of the documentation.</span>
142
+ </div>
143
+ </div>
144
+
145
+
146
+ [GitHub Discussions]: https://github.com/dimanu-py/sindri/discussions
147
+ [GitHub Issues]: https://github.com/dimanu-py/sindri/issues
148
+ [Installation]: https://github.com/dimanu-py/sindri/getting_started/installation/
149
+ [First Steps]: https://github.com/dimanu-py/sindri/getting_started/first_steps/
150
+ [Value Object Pattern]: https://dimanu-py.github.io/sindri/value_objects/
151
+ [Object Mother Pattern]: https://dimanu-py.github.io/sindri/object_mothers
152
+ [Contributing Guide]: https://github.com/dimanu-py/sindri/contributing/contributing_guide/
153
+ [Security Policy]: https://github.com/dimanu-py/sindri/contributing/security/