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.
- datamodel/__init__.py +13 -0
- datamodel/abstract.py +383 -0
- datamodel/adaptive/__init__.py +0 -0
- datamodel/adaptive/models.py +598 -0
- datamodel/aliases/__init__.py +26 -0
- datamodel/base.py +180 -0
- datamodel/converters.c +43471 -0
- datamodel/converters.cp313-win32.pyd +0 -0
- datamodel/converters.html +17387 -0
- datamodel/converters.pyx +1489 -0
- datamodel/exceptions.c +13455 -0
- datamodel/exceptions.cp313-win32.pyd +0 -0
- datamodel/exceptions.html +1261 -0
- datamodel/exceptions.pxd +13 -0
- datamodel/exceptions.pyx +50 -0
- datamodel/fields.cp313-win32.pyd +0 -0
- datamodel/fields.cpp +17401 -0
- datamodel/fields.html +3912 -0
- datamodel/fields.pyx +309 -0
- datamodel/functions.cp313-win32.pyd +0 -0
- datamodel/functions.cpp +9068 -0
- datamodel/functions.html +1766 -0
- datamodel/functions.pxd +9 -0
- datamodel/functions.pyx +82 -0
- datamodel/jsonld/__init__.py +45 -0
- datamodel/jsonld/models.py +500 -0
- datamodel/libs/__init__.py +1 -0
- datamodel/libs/mapping.c +15067 -0
- datamodel/libs/mapping.cp313-win32.pyd +0 -0
- datamodel/libs/mapping.html +2618 -0
- datamodel/libs/mapping.pxd +11 -0
- datamodel/libs/mapping.pyx +135 -0
- datamodel/libs/mutables.py +127 -0
- datamodel/models.py +814 -0
- datamodel/parsers/__init__.py +0 -0
- datamodel/parsers/encoders.py +15 -0
- datamodel/parsers/json.cp313-win32.pyd +0 -0
- datamodel/parsers/json.cpp +17004 -0
- datamodel/parsers/json.html +3365 -0
- datamodel/parsers/json.pyx +250 -0
- datamodel/profiler.py +21 -0
- datamodel/py.typed +0 -0
- datamodel/rs_core/Cargo.toml +17 -0
- datamodel/rs_core/src/lib.rs +294 -0
- datamodel/rs_parsers/Cargo.toml +22 -0
- datamodel/rs_parsers/src/lib.rs +571 -0
- datamodel/rs_parsers.cp313-win32.pyd +0 -0
- datamodel/rs_validators/Cargo.toml +17 -0
- datamodel/rs_validators/src/lib.rs +0 -0
- datamodel/typedefs/__init__.py +9 -0
- datamodel/typedefs/singleton.c +9169 -0
- datamodel/typedefs/singleton.cp313-win32.pyd +0 -0
- datamodel/typedefs/singleton.html +629 -0
- datamodel/typedefs/singleton.pxd +9 -0
- datamodel/typedefs/singleton.pyx +24 -0
- datamodel/typedefs/types.c +11716 -0
- datamodel/typedefs/types.cp313-win32.pyd +0 -0
- datamodel/typedefs/types.html +732 -0
- datamodel/typedefs/types.pxd +11 -0
- datamodel/typedefs/types.pyx +39 -0
- datamodel/types.c +7165 -0
- datamodel/types.cp313-win32.pyd +0 -0
- datamodel/types.html +716 -0
- datamodel/types.pyx +100 -0
- datamodel/validation.cp313-win32.pyd +0 -0
- datamodel/validation.cpp +17085 -0
- datamodel/validation.html +4769 -0
- datamodel/validation.pyx +315 -0
- datamodel/version.py +13 -0
- examples/nn/examples.py +311 -0
- examples/nn/stores.py +151 -0
- examples/tests/sp_types.py +294 -0
- examples/tests/speed_dates.py +26 -0
- python_datamodel-0.10.1.dist-info/LICENSE +29 -0
- python_datamodel-0.10.1.dist-info/METADATA +320 -0
- python_datamodel-0.10.1.dist-info/RECORD +78 -0
- python_datamodel-0.10.1.dist-info/WHEEL +5 -0
- 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,,
|