python-datamodel 0.10.1__cp313-cp313-win32.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 (78) hide show
  1. datamodel/__init__.py +13 -0
  2. datamodel/abstract.py +383 -0
  3. datamodel/adaptive/__init__.py +0 -0
  4. datamodel/adaptive/models.py +598 -0
  5. datamodel/aliases/__init__.py +26 -0
  6. datamodel/base.py +180 -0
  7. datamodel/converters.c +43471 -0
  8. datamodel/converters.cp313-win32.pyd +0 -0
  9. datamodel/converters.html +17387 -0
  10. datamodel/converters.pyx +1489 -0
  11. datamodel/exceptions.c +13455 -0
  12. datamodel/exceptions.cp313-win32.pyd +0 -0
  13. datamodel/exceptions.html +1261 -0
  14. datamodel/exceptions.pxd +13 -0
  15. datamodel/exceptions.pyx +50 -0
  16. datamodel/fields.cp313-win32.pyd +0 -0
  17. datamodel/fields.cpp +17401 -0
  18. datamodel/fields.html +3912 -0
  19. datamodel/fields.pyx +309 -0
  20. datamodel/functions.cp313-win32.pyd +0 -0
  21. datamodel/functions.cpp +9068 -0
  22. datamodel/functions.html +1766 -0
  23. datamodel/functions.pxd +9 -0
  24. datamodel/functions.pyx +82 -0
  25. datamodel/jsonld/__init__.py +45 -0
  26. datamodel/jsonld/models.py +500 -0
  27. datamodel/libs/__init__.py +1 -0
  28. datamodel/libs/mapping.c +15067 -0
  29. datamodel/libs/mapping.cp313-win32.pyd +0 -0
  30. datamodel/libs/mapping.html +2618 -0
  31. datamodel/libs/mapping.pxd +11 -0
  32. datamodel/libs/mapping.pyx +135 -0
  33. datamodel/libs/mutables.py +127 -0
  34. datamodel/models.py +814 -0
  35. datamodel/parsers/__init__.py +0 -0
  36. datamodel/parsers/encoders.py +15 -0
  37. datamodel/parsers/json.cp313-win32.pyd +0 -0
  38. datamodel/parsers/json.cpp +17004 -0
  39. datamodel/parsers/json.html +3365 -0
  40. datamodel/parsers/json.pyx +250 -0
  41. datamodel/profiler.py +21 -0
  42. datamodel/py.typed +0 -0
  43. datamodel/rs_core/Cargo.toml +17 -0
  44. datamodel/rs_core/src/lib.rs +294 -0
  45. datamodel/rs_parsers/Cargo.toml +22 -0
  46. datamodel/rs_parsers/src/lib.rs +571 -0
  47. datamodel/rs_parsers.cp313-win32.pyd +0 -0
  48. datamodel/rs_validators/Cargo.toml +17 -0
  49. datamodel/rs_validators/src/lib.rs +0 -0
  50. datamodel/typedefs/__init__.py +9 -0
  51. datamodel/typedefs/singleton.c +9169 -0
  52. datamodel/typedefs/singleton.cp313-win32.pyd +0 -0
  53. datamodel/typedefs/singleton.html +629 -0
  54. datamodel/typedefs/singleton.pxd +9 -0
  55. datamodel/typedefs/singleton.pyx +24 -0
  56. datamodel/typedefs/types.c +11716 -0
  57. datamodel/typedefs/types.cp313-win32.pyd +0 -0
  58. datamodel/typedefs/types.html +732 -0
  59. datamodel/typedefs/types.pxd +11 -0
  60. datamodel/typedefs/types.pyx +39 -0
  61. datamodel/types.c +7165 -0
  62. datamodel/types.cp313-win32.pyd +0 -0
  63. datamodel/types.html +716 -0
  64. datamodel/types.pyx +100 -0
  65. datamodel/validation.cp313-win32.pyd +0 -0
  66. datamodel/validation.cpp +17085 -0
  67. datamodel/validation.html +4769 -0
  68. datamodel/validation.pyx +315 -0
  69. datamodel/version.py +13 -0
  70. examples/nn/examples.py +311 -0
  71. examples/nn/stores.py +151 -0
  72. examples/tests/sp_types.py +294 -0
  73. examples/tests/speed_dates.py +26 -0
  74. python_datamodel-0.10.1.dist-info/LICENSE +29 -0
  75. python_datamodel-0.10.1.dist-info/METADATA +320 -0
  76. python_datamodel-0.10.1.dist-info/RECORD +78 -0
  77. python_datamodel-0.10.1.dist-info/WHEEL +5 -0
  78. python_datamodel-0.10.1.dist-info/top_level.txt +7 -0
@@ -0,0 +1,320 @@
1
+ Metadata-Version: 2.1
2
+ Name: python-datamodel
3
+ Version: 0.10.1
4
+ Summary: simple library based on python +3.8 to use Dataclass-syntaxfor interacting with Data
5
+ Home-page: https://github.com/phenobarbital/python-datamodel
6
+ Author: Jesus Lara
7
+ Author-email: jesuslarag@gmail.com
8
+ License: BSD
9
+ Project-URL: Source, https://github.com/phenobarbital/datamodel
10
+ Project-URL: Funding, https://paypal.me/phenobarbital
11
+ Project-URL: Tracker, https://github.com/phenobarbital/datamodel/issues
12
+ Project-URL: Documentation, https://datamodel.readthedocs.io/en/latest/
13
+ Project-URL: Buy Me A Coffee!, https://www.buymeacoffee.com/phenobarbital
14
+ Project-URL: Say Thanks!, https://saythanks.io/to/phenobarbital
15
+ Keywords: asyncio,dataclass,dataclasses,data models
16
+ Platform: any
17
+ Classifier: Development Status :: 4 - Beta
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Intended Audience :: System Administrators
20
+ Classifier: Topic :: Software Development :: Build Tools
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Programming Language :: Python :: 3.13
28
+ Classifier: Framework :: AsyncIO
29
+ Classifier: License :: OSI Approved :: BSD License
30
+ Classifier: Operating System :: OS Independent
31
+ Classifier: Topic :: System :: Systems Administration
32
+ Classifier: Topic :: Utilities
33
+ Classifier: Environment :: Web Environment
34
+ Requires-Python: >=3.10.0
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: numpy>=1.26.4
38
+ Requires-Dist: uvloop>=0.21.0
39
+ Requires-Dist: asyncio==3.4.3
40
+ Requires-Dist: faust-cchardet==2.1.19
41
+ Requires-Dist: ciso8601==2.3.2
42
+ Requires-Dist: objectpath==0.6.1
43
+ Requires-Dist: orjson>=3.10.11
44
+ Requires-Dist: typing-extensions>=4.9.0
45
+ Requires-Dist: asyncpg>=0.29.0
46
+ Requires-Dist: python-dateutil>=2.8.2
47
+ Requires-Dist: python-slugify==8.0.1
48
+ Requires-Dist: psycopg2-binary==2.9.10
49
+ Requires-Dist: msgspec==0.19.0
50
+
51
+ # DataModel
52
+ DataModel is a simple library based on python +3.8 to use Dataclass-syntax for interacting with
53
+ Data, using the same syntax of Dataclass, users can write Python Objects
54
+ and work with Data in the same way (like ORM's), is a reimplementation of python Dataclasses supporting true inheritance (without decorators), true composition and other good features.
55
+
56
+ The key features are:
57
+ * **Easy to use**: No more using decorators, concerns abour re-ordering attributes or common problems with using dataclasses with inheritance.
58
+ * **Extensibility**: Can use other dataclasses, Data objects or primitives as data-types.
59
+ * **Fast**: DataModel is a replacement 100% full compatible with dataclasses, without any overhead.
60
+
61
+
62
+
63
+ ## Requirements
64
+
65
+ Python 3.8+
66
+
67
+ ## Installation
68
+
69
+ <div class="termy">
70
+
71
+ ```console
72
+ $ pip install python-datamodel
73
+ ---> 100%
74
+ Successfully installed datamodel
75
+ ```
76
+
77
+
78
+ </div>
79
+
80
+ ## Quickstart
81
+
82
+
83
+ ```python
84
+
85
+ from datamodel import Field, BaseModel
86
+ from dataclasses import dataclass, fields, is_dataclass
87
+
88
+
89
+ # This pure Dataclass:
90
+ @dataclass
91
+ class Point:
92
+ x: int = Field(default=0, min=0, max=10)
93
+ y: int = Field(default=0, min=0, max=10)
94
+
95
+ point = Point(x=10, y=10)
96
+ print(point)
97
+ print(fields(point))
98
+ print('IS a Dataclass?: ', is_dataclass(point))
99
+
100
+ # Can be represented by BaseModel
101
+ class newPoint(BaseModel):
102
+ x: int = Field(default=0, min=0, max=10)
103
+ y: int = Field(default=0, min=0, max=10)
104
+
105
+ def get_coordinate(self):
106
+ return (self.x, self.y)
107
+
108
+ point = newPoint(x=10, y=10)
109
+ print(point)
110
+ print(fields(point))
111
+ print('IS a Dataclass?: ', is_dataclass(point))
112
+ print(point.get_coordinate())
113
+ ```
114
+ ## Supported types
115
+
116
+ DataModel support recursive transformation of fields, so you can easily work with nested dataclasses or complex types.
117
+
118
+ DataModel supports automatic conversion of:
119
+
120
+ - [datetime](https://docs.python.org/3/library/datetime.html#available-types)
121
+ objects. `datetime` objects are encoded to str exactly like orjson conversion, any str typed as datetime is decoded to datetime.
122
+ The same behavior is used to decoding time, date and timedelta objects.
123
+
124
+ - [UUID](https://docs.python.org/3/library/uuid.html#uuid.UUID) objects. They
125
+ are encoded as `str` (JSON string) and decoded back to uuid.UUID objects.
126
+
127
+ - [Decimal](https://docs.python.org/3/library/decimal.html) objects. They are
128
+ also encoded as `float` and decoded back to Decimal.
129
+
130
+ Also, "custom" encoders are supported.
131
+
132
+ ```python
133
+
134
+ import uuid
135
+ from typing import (
136
+ List,
137
+ Optional,
138
+ Union
139
+ )
140
+ from dataclasses import dataclass, field
141
+ from datamodel import BaseModel, Field
142
+
143
+ @dataclass
144
+ class Point:
145
+ x: int = Field(default=0, min=0, max=10)
146
+ y: int = Field(default=0, min=0, max=10)
147
+
148
+ class coordinate(BaseModel, intSum):
149
+ latitude: float
150
+ longitude: float
151
+
152
+ def get_location(self) -> tuple:
153
+ return (self.latitude, self.longitude)
154
+
155
+ def auto_uid():
156
+ return uuid.uuid4()
157
+
158
+ def default_rect():
159
+ return [0,0,0,0]
160
+
161
+ def valid_zipcode(field, value):
162
+ return value > 1000
163
+
164
+ class Address(BaseModel):
165
+ id: uuid.UUID = field(default_factory=auto_uid)
166
+ street: str = Field(required=True)
167
+ zipcode: int = Field(required=False, default=1010, validator=valid_zipcode)
168
+ location: Optional[coordinate]
169
+ box: List[Optional[Point]]
170
+ rect: List[int] = Field(factory=default_rect)
171
+
172
+
173
+ addr = Address(street="Calle Mayor", location=(18.1, 22.1), zipcode=3021, box=[(2, 10), (4, 8)], rect=[1, 2, 3, 4])
174
+ print('IS a Dataclass?: ', is_dataclass(addr))
175
+
176
+ print(addr.location.get_location())
177
+ ```
178
+ ```console
179
+ # returns
180
+ Address(id=UUID('24b34dd5-8d35-4cfd-8916-7876b28cdae3'), street='Calle Mayor', zipcode=3021, location=coordinate(latitude=18.1, longitude=22.1), box=[Point(x=2, y=10), Point(x=4, y=8)], rect=[1, 2, 3, 4])
181
+ ```
182
+
183
+ * Fast and convenience conversion from-to JSON (using orjson):
184
+
185
+ ```python
186
+ import orjson
187
+
188
+ b = addr.json()
189
+ print(b)
190
+ ```
191
+ ```console
192
+ {"id":"24b34dd5-8d35-4cfd-8916-7876b28cdae3","street":"Calle Mayor","zipcode":3021,"location":{"latitude":18.1,"longitude":22.1}, "box":[{"x":2,"y":10},{"x":4,"y":8}],"rect":[1,2,3,4]}
193
+ ```
194
+
195
+ ```python
196
+ # and re-imported from json
197
+ new_addr = Address.from_json(b) # load directly from json string
198
+ # or using a dictionary decoded by orjson
199
+ data = orjson.loads(b)
200
+ new_addr = Address(**data)
201
+
202
+ ```
203
+
204
+ ## Inheritance
205
+
206
+ python-datamodel supports inheritance of classes.
207
+
208
+ ```python
209
+ import uuid
210
+ from typing import Union, List
211
+ from dataclasses import dataclass, field
212
+ from datamodel import BaseModel, Column, Field
213
+
214
+
215
+ def auto_uid():
216
+ return uuid.uuid4()
217
+
218
+ class User(BaseModel):
219
+ id: uuid.UUID = field(default_factory=auto_uid)
220
+ name: str
221
+ first_name: str
222
+ last_name: str
223
+
224
+
225
+ @dataclass
226
+ class Address:
227
+ street: str
228
+ city: str
229
+ state: str
230
+ zipcode: str
231
+ country: Optional[str] = 'US'
232
+
233
+ def __str__(self) -> str:
234
+ """Provides pretty response of address"""
235
+ lines = [self.street]
236
+ lines.append(f"{self.city}, {self.zipcode} {self.state}")
237
+ lines.append(f"{self.country}")
238
+ return "\n".join(lines)
239
+
240
+ class Employee(User):
241
+ """
242
+ Base Employee.
243
+ """
244
+ role: str
245
+ address: Address # composition of a dataclass inside of DataModel is possible.
246
+
247
+ # Supporting multiple inheritance and composition
248
+ # Wage Policies
249
+ class MonthlySalary(BaseModel):
250
+ salary: Union[float, int]
251
+
252
+ def calculate_payroll(self) -> Union[float, int]:
253
+ return self.salary
254
+
255
+ class HourlySalary(BaseModel):
256
+ salary: Union[float, int] = Field(default=0)
257
+ hours_worked: Union[float, int] = Field(default=0)
258
+
259
+ def calculate_payroll(self) -> Union[float, int]:
260
+ return (self.hours_worked * self.salary)
261
+
262
+ # employee types
263
+ class Secretary(Employee, MonthlySalary):
264
+ """Secretary.
265
+
266
+ Person with montly salary policy and no commissions.
267
+ """
268
+ role: str = 'Secretary'
269
+
270
+ class FactoryWorker(Employee, HourlySalary):
271
+ """
272
+ FactoryWorker is an employee with hourly salary policy and no commissions.
273
+ """
274
+ role: str = 'Factory Worker'
275
+
276
+ class PayrollSystem:
277
+ def calculate_payroll(self, employees: List[dataclass]) -> None:
278
+ print('=== Calculating Payroll === ')
279
+ for employee in employees:
280
+ print(f"Payroll for employee {employee.id} - {employee.name}")
281
+ print(f"- {employee.role} Amount: {employee.calculate_payroll()}")
282
+ if employee.address:
283
+ print('- Sent to:')
284
+ print(employee.address)
285
+ print("")
286
+
287
+ jane = Secretary(name='Jane Doe', first_name='Jane', last_name='Doe', salary=1500)
288
+ bob = FactoryWorker(name='Bob Doyle', first_name='Bob', last_name='Doyle', salary=15, hours_worked=40)
289
+ mitch = FactoryWorker(name='Mitch Brian', first_name='Mitch', last_name='Brian', salary=20, hours_worked=35)
290
+
291
+ payroll = PayrollSystem()
292
+ payroll.calculate_payroll([jane, bob, mitch])
293
+ ```
294
+ A sample of output:
295
+ ```
296
+ ```console
297
+ === Calculating Payroll ===
298
+ Payroll for employee 745a2623-d4d2-4da6-bf0a-1fa691bafd33 - Jane Doe
299
+ - Secretary Amount: 1500
300
+ - Sent to:
301
+ Rodeo Drive, Rd
302
+ Los Angeles, 31050 CA
303
+ US
304
+ ```
305
+ ## Contributing
306
+
307
+ First of all, thank you for being interested in contributing to this library.
308
+ I really appreciate you taking the time to work on this project.
309
+
310
+ - If you're just interested in getting into the code, a good place to start are
311
+ issues tagged as bugs.
312
+ - If introducing a new feature, especially one that modifies the public API,
313
+ consider submitting an issue for discussion before a PR. Please also take a look
314
+ at existing issues / PRs to see what you're proposing has already been covered
315
+ before / exists.
316
+ - I like to follow the commit conventions documented [here](https://www.conventionalcommits.org/en/v1.0.0/#summary)
317
+
318
+ ## License
319
+
320
+ This project is licensed under the terms of the BSD v3. license.
@@ -0,0 +1,78 @@
1
+ datamodel/__init__.py,sha256=k6FaIeF_ElduM4jAO5DCv6ZAb0nHgD2mKHxIzljvIrI,412
2
+ datamodel/abstract.py,sha256=2JYGm3-ULGZmpl-wEBUznAtlLVRnwxdV0XZQUKVr4bk,15028
3
+ datamodel/base.py,sha256=wmN4bDdreqsNmvg88XtShtyzqdoalzVe6iDoDaHcHfs,6661
4
+ datamodel/converters.c,sha256=wk59sr29Ne183Z7O82WiGdMh7260BLoCPRuTTwAvIcU,1714546
5
+ datamodel/converters.cp313-win32.pyd,sha256=7VoeNJ09fhNmnGb3BpZ-JkppNTASXD4wAnKSdLrCOm4,263680
6
+ datamodel/converters.html,sha256=gjMLrgttL-6cyBRMuHg2LGTgZsoxPkR86ggVMCiQKXo,1284885
7
+ datamodel/converters.pyx,sha256=aov8sVjj4Il0L-KM2mE7pfN71-hRhNtiyyxgZpvxcKQ,48419
8
+ datamodel/exceptions.c,sha256=MbPv56O7yIVE2xgMTAtrpDc0BMfloSLli5C8FQ0YI5k,551384
9
+ datamodel/exceptions.cp313-win32.pyd,sha256=OQpEAgCNQlSTq_uSfeHBRPT7p0w_Ips9I3R2HiDKwaU,71168
10
+ datamodel/exceptions.html,sha256=dbHntZlC_BHTDGustG4DAUKLWdJjHYAnAUpxr7LuTUU,78353
11
+ datamodel/exceptions.pxd,sha256=ihBXBLm-Svdo5gBPBrPfErz7K7rcnrNyvTHcLtKtTmw,392
12
+ datamodel/exceptions.pyx,sha256=UKWBQIe6upa2aykIclPXXpApoS1Et5Sz65Q_MpAdUUE,1649
13
+ datamodel/fields.cp313-win32.pyd,sha256=57r5D3K9rXdsw11eqbDRb2jgVZoAblLvAkj-JcQCh68,108032
14
+ datamodel/fields.cpp,sha256=nGZD_gklCWKYGUx6T1PFWVbXgYpA8xhEtKUmJ-TA3g4,696051
15
+ datamodel/fields.html,sha256=lkSi7qIrs_ofnZYR5mLYrf1ZHvsdf0k0RRC6GLZXG_U,294149
16
+ datamodel/fields.pyx,sha256=Em5Z_ZF9l25jUYhjsJ_VOJ3dDSKT20NndzwJjQgCcR8,9033
17
+ datamodel/functions.cp313-win32.pyd,sha256=Sxq5yTESgxdWwoM82kbVuwtBFYXOzma14OWtrpLBrWY,44032
18
+ datamodel/functions.cpp,sha256=KahSY_SFWYGYqrWo0t-y8mMAyUxD7TdYHGASN5p2i_E,349206
19
+ datamodel/functions.html,sha256=Bf_IqcvaN0iDfSUJFoGJr6BxOaeZNgkBoL5-F69bZF4,111246
20
+ datamodel/functions.pxd,sha256=Bx7dvwyaq7sxKcrXHP2XEtrLyfWzOwfCJT0Bh6JjfMg,291
21
+ datamodel/functions.pyx,sha256=HgeC4IhEJ9e9gA1iwkCwZBOa-zWtfe2RqGd70BPq58A,2467
22
+ datamodel/models.py,sha256=yuZozblW5QIvjgQ9xjI4ohQO12IHsFAVngwn9llYCn8,27513
23
+ datamodel/profiler.py,sha256=Cb7BYFV9886dvCHWL5V_znat1iU9XKAaoQ43olszlL4,520
24
+ datamodel/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ datamodel/rs_parsers.cp313-win32.pyd,sha256=Clpg7L7p5LOUFRjU5aXLHzBCZ42I6aN7zeaLSTLmLLY,359936
26
+ datamodel/types.c,sha256=Guw46CDZgIeoKj_gx8LkYvRPxEEsnVe5P1H6Nip2F0A,278676
27
+ datamodel/types.cp313-win32.pyd,sha256=wGrwp7QAVWYNYCowmJQUk8pxECnAWF-DqHxewY4kAGo,36352
28
+ datamodel/types.html,sha256=dxGXzsRm7hDnNNddIaEov5zNSVUyHD6_N6nuCvHOs0E,66946
29
+ datamodel/types.pyx,sha256=P8W0yycg8vRwoU_-2PrTsA6H-5AXhJZydcPuOXT_blU,2041
30
+ datamodel/validation.cp313-win32.pyd,sha256=DL32naPKixrUWMzASZw8AsWxTU1CwwP4_qy3jCP84TY,110080
31
+ datamodel/validation.cpp,sha256=fVkNy7jlubmOUufhBvmvq2TziBOfpJqKS18N1unOXdY,726993
32
+ datamodel/validation.html,sha256=kc2LaH_O6v9kt9_me_GKk1FDWKu9I6Kvz_-0zyOMvUI,388110
33
+ datamodel/validation.pyx,sha256=NonZ_HXPmSZpo_79wdDMgIKYzvN7pDNKQynCXXnjW5A,13803
34
+ datamodel/version.py,sha256=I3GWaY2RyGNNIR8vhAU1W-iCSN-kUb82m7NNofMiW5A,364
35
+ datamodel/adaptive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ datamodel/adaptive/models.py,sha256=NGftGgznEPSJfe5lHFVLa5xaVr1z0v6XXIAk-vFnWs4,18725
37
+ datamodel/aliases/__init__.py,sha256=-LqJfuqgbFngQg-27tbomLtQYFCXXOwlBdWIU6qyR6o,736
38
+ datamodel/jsonld/__init__.py,sha256=mRo4_tJnrK8B36Omsd6XCee2s9Rjj4RACte83OhNjSg,1041
39
+ datamodel/jsonld/models.py,sha256=nR7b0zUL7Hlu1aPfH6Sa5b-54Hfw709tRjgLMlaBcvI,14911
40
+ datamodel/libs/__init__.py,sha256=axMKtDOtWdjqnXah4AwsqwxV5TBAd2THecoonpAAO98,49
41
+ datamodel/libs/mapping.c,sha256=ktvwNdgNVhEw86t6yCxik67BVZc0Wf5HbdcQZ_sbJAA,588860
42
+ datamodel/libs/mapping.cp313-win32.pyd,sha256=AyT9caXuS8cxrUUX7qisPpUni9q4U2EedgKKN9l2UmY,80896
43
+ datamodel/libs/mapping.html,sha256=UdB5SWzeq9X0h11igkfG5k4woNba05Z-OvnODzd8Ma8,179419
44
+ datamodel/libs/mapping.pxd,sha256=SmSrWkf8nbSrzpljnCkfFFnu6eigBs84Ik6d9Let630,328
45
+ datamodel/libs/mapping.pyx,sha256=5t3FCUBSowYXpmFHRIzUfHhaaEuOUJyAibB_eqq8Qjg,3899
46
+ datamodel/libs/mutables.py,sha256=9o6UT1qcjAwQeMIcobxknVrZ1M9u64ttK4Op2DycVzE,4017
47
+ datamodel/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ datamodel/parsers/encoders.py,sha256=foClP0XMpBvObI7i-Yb0sGL7sU-ldEzd5zsRGMAyDIA,345
49
+ datamodel/parsers/json.cp313-win32.pyd,sha256=4bYoFA_1lsTzyU0mLatqKIpmqcpSyCQwI4_cqjRPaj8,96768
50
+ datamodel/parsers/json.cpp,sha256=wF77LkltyQsFt2iLEj70vHKM6zxyfmjl81AUArKkfFA,685363
51
+ datamodel/parsers/json.html,sha256=q3ADuecKSVkKajiMeqRLmFw6US8Vrc6qx6395IJyRoI,241675
52
+ datamodel/parsers/json.pyx,sha256=ihtihZqWl3M5ksuugYPX3dUGwEX3Pc56GCURqcQeFuE,8205
53
+ datamodel/rs_core/Cargo.toml,sha256=pmD3mRm2bporJwK_YAtDnAKGjbF9dMlaEPIDE9YA4N0,456
54
+ datamodel/rs_core/src/lib.rs,sha256=GuNgLEaFf6Wn31WhxhprhPnu7oqkMPkFRlmM7hEqh1A,10662
55
+ datamodel/rs_parsers/Cargo.toml,sha256=qkBSel8ZLokX6-MGBi8UuvPEREpzE37jXaTIkIp5Piw,576
56
+ datamodel/rs_parsers/src/lib.rs,sha256=6Dd_76AXm-Bkdghpa9I7TUTdKaVpRSmkLDDkZFlFgJc,22234
57
+ datamodel/rs_validators/Cargo.toml,sha256=hQtLEC9YTPXQQ_-CGOUOw6VM1tCVuVGKHxtV02Be3HY,464
58
+ datamodel/rs_validators/src/lib.rs,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ datamodel/typedefs/__init__.py,sha256=w7zm6MZsQGGshwPscl0GT6DyF_h59HgRcfv1o_RWj4g,176
60
+ datamodel/typedefs/singleton.c,sha256=fQrpWFoaS1ljvHgzmP2n101CYC5ceo7yuMCYd5aH0aY,361165
61
+ datamodel/typedefs/singleton.cp313-win32.pyd,sha256=sYOBxuZXr0cl4QDSVQyp1La-2AGmmWAW44aA7xcbOCw,45056
62
+ datamodel/typedefs/singleton.html,sha256=BsrSGVioXgIP_6V_EhsHRvaR-WaXIAi4qfP3n_MrBCg,38235
63
+ datamodel/typedefs/singleton.pxd,sha256=1e3JiVDwFfScyZCcYk1l97JCBeZVTxbLnxSh58jUfn0,179
64
+ datamodel/typedefs/singleton.pyx,sha256=ZwIkr-H9VaJhQ_Vtw0AeAeUlDUQor5_A8FVyfIFIVd8,994
65
+ datamodel/typedefs/types.c,sha256=IxkJ9R4-m2klZOd8EXl5_sxcD1leevEgOla_ThYi2Lg,472909
66
+ datamodel/typedefs/types.cp313-win32.pyd,sha256=fvalw_HbIb8m2_wG506QyclnneByLxQuVNyNfyGNGXw,58880
67
+ datamodel/typedefs/types.html,sha256=Xn7oYO7sKPs4xDEt65UvpMtNZkCV5b-J9U1WC1aHi1A,42536
68
+ datamodel/typedefs/types.pxd,sha256=vgCdYThqN190S6OrdTTTjxQCcSjeqV0LiiNGLkszMe8,255
69
+ datamodel/typedefs/types.pyx,sha256=x2eSJetDHH6QjZT4PHqVZgZeNYtYa_75Bw0Obng5Ug0,918
70
+ examples/nn/examples.py,sha256=PJu2zGOzMHY42ip4FE9czLalzesUtK1Deudw5U8sxto,8434
71
+ examples/nn/stores.py,sha256=2ZTWkrQtq8GJOI3qN_cOE5qPYLnWHs8HIdTMdnnBYVI,5746
72
+ examples/tests/sp_types.py,sha256=kc6aQmPc0TTolZC-7-Uz5_mn60uVpuTJSgUNyBlDacQ,9363
73
+ examples/tests/speed_dates.py,sha256=QJDJ1a8wEv6OJotlWK0IjWYVKNpvSsY1UAWTCwgX2qI,647
74
+ python_datamodel-0.10.1.dist-info/LICENSE,sha256=_EiwMP8q1rs_BSFvxlBQSFwP_edqbBhOu45VBhMRPG0,1550
75
+ python_datamodel-0.10.1.dist-info/METADATA,sha256=1ThNcnIF0ihRGfno-06670eTFz9r9TEBMnyhaeRPFA4,10159
76
+ python_datamodel-0.10.1.dist-info/WHEEL,sha256=THCVKa0AucVYb_k5HFuyY66tqOKV0qBxbZGS-T_VISI,97
77
+ python_datamodel-0.10.1.dist-info/top_level.txt,sha256=Oq3m8AY0Ez8C_SdQTOCz_fMX-lnxNINojNE3FINesiI,48
78
+ python_datamodel-0.10.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (74.0.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp313-cp313-win32
5
+
@@ -0,0 +1,7 @@
1
+ build
2
+ datamodel
3
+ dist
4
+ examples
5
+ locale
6
+ src
7
+ target