omlish 0.0.0.dev40__py3-none-any.whl → 0.0.0.dev42__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.
@@ -0,0 +1,443 @@
1
+ """
2
+ https://swagger.io/specification/
3
+ """
4
+ import typing as ta
5
+
6
+ from ... import check
7
+ from ... import dataclasses as dc
8
+ from ... import marshal as msh
9
+ from ...formats import json
10
+
11
+
12
+ ##
13
+
14
+
15
+ # https://swagger.io/specification/#security-requirement-object
16
+ SecurityRequirement: ta.TypeAlias = ta.Mapping[str, ta.Sequence[str]]
17
+
18
+
19
+ @dc.dataclass(frozen=True)
20
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
21
+ class OauthFlow:
22
+ """https://swagger.io/specification/#oauth-flow-object"""
23
+
24
+ authorization_url: str
25
+ token_url: str
26
+ scopes: ta.Mapping[str, str]
27
+ refresh_ur: str | None = None
28
+
29
+
30
+ @dc.dataclass(frozen=True)
31
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
32
+ class OauthFlows:
33
+ """https://swagger.io/specification/#oauth-flows-object"""
34
+
35
+ implicit: OauthFlow | None = None
36
+ password: OauthFlow | None = None
37
+ client_credentials: OauthFlow | None = None
38
+ authorization_code: OauthFlow | None = None
39
+
40
+
41
+ @dc.dataclass(frozen=True)
42
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
43
+ @msh.update_fields_metadata(['in_'], name='in')
44
+ class SecurityScheme:
45
+ """https://swagger.io/specification/#security-scheme-object"""
46
+
47
+ type: str
48
+ scheme: str
49
+ name: str | None = None
50
+ in_: str | None = None
51
+ description: str | None = None
52
+ bearer_format: str | None = None
53
+ flows: OauthFlows | None = None
54
+ open_id_connect_url: str | None = None
55
+
56
+
57
+ @dc.dataclass(frozen=True)
58
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
59
+ class Xml:
60
+ """https://swagger.io/specification/#xml-object"""
61
+
62
+ name: str | None = None
63
+ namespace: str | None = None
64
+ prefix: str | None = None
65
+ attribute: bool | None = None
66
+ wrapped: bool | None = None
67
+
68
+
69
+ @dc.dataclass(frozen=True)
70
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
71
+ class Discriminator:
72
+ """https://swagger.io/specification/#discriminator-object"""
73
+
74
+ property_name: str
75
+ mapping: ta.Mapping[str, str] | None = None
76
+
77
+
78
+ @dc.dataclass(frozen=True)
79
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL, unknown_field='x')
80
+ class Schema:
81
+ """https://swagger.io/specification/#schema-object"""
82
+
83
+ discriminator: Discriminator | None = None
84
+ xml: Xml | None = None
85
+ external_docs: ta.Optional['ExternalDocumentation'] = None
86
+ example: ta.Any | None = None
87
+
88
+ # FIXME: HACK: this is a jsonschema lol - these are just hacked on
89
+
90
+ type: str | None = None
91
+ format: str | None = None
92
+ one_of: ta.Any = None
93
+ all_of: ta.Any = None
94
+ default: ta.Any = None
95
+ enum: ta.Any = None
96
+ items: ta.Any = None
97
+ required: ta.Any = None
98
+ properties: ta.Any = None
99
+ description: str | None = None
100
+ title: str | None = None
101
+ deprecated: bool | None = None
102
+ nullable: bool | None = None
103
+ additional_properties: ta.Any = None
104
+
105
+ #
106
+
107
+ x: ta.Mapping[str, ta.Any] | None = None
108
+
109
+ @dc.init
110
+ def _check_x(self) -> None:
111
+ for k in self.x or {}:
112
+ check.arg(k.startswith('x-'))
113
+
114
+
115
+ @dc.dataclass(frozen=True)
116
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
117
+ @msh.update_fields_metadata(['ref'], name='$ref')
118
+ class Reference:
119
+ """https://swagger.io/specification/#reference-object"""
120
+
121
+ ref: str
122
+ summary: str | None = None
123
+ description: str | None = None
124
+
125
+
126
+ @dc.dataclass(frozen=True)
127
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
128
+ class Tag:
129
+ """https://swagger.io/specification/#tag-object"""
130
+
131
+ name: str
132
+ description: str | None = None
133
+ external_docs: ta.Optional['ExternalDocumentation'] = None
134
+
135
+
136
+ @dc.dataclass(frozen=True)
137
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
138
+ @msh.update_fields_metadata(['common'], embed=True, name='')
139
+ class Header:
140
+ """https://swagger.io/specification/#header-object"""
141
+
142
+ # TODO: marshal embedding, shared with Parameter
143
+ common: 'ParameterCommon'
144
+
145
+
146
+ @dc.dataclass(frozen=True)
147
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
148
+ class Link:
149
+ """https://swagger.io/specification/#link-object"""
150
+
151
+ operation_ref: str | None = None
152
+ operation_id: str | None = None
153
+ parameters: ta.Mapping[str, ta.Any] | None = None
154
+ request_body: ta.Any = None
155
+ description: str | None = None
156
+ server: ta.Optional['Server'] = None
157
+
158
+
159
+ @dc.dataclass(frozen=True)
160
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
161
+ class Example:
162
+ """https://swagger.io/specification/#example-object"""
163
+
164
+ summary: str | None = None
165
+ description: str | None = None
166
+ value: ta.Any | None = None
167
+ external_value: str | None = None
168
+
169
+
170
+ # https://swagger.io/specification/#callback-object
171
+ Callback: ta.TypeAlias = ta.Mapping[str, ta.Union['PathItem', Reference]]
172
+
173
+
174
+ @dc.dataclass(frozen=True)
175
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
176
+ class Response:
177
+ """https://swagger.io/specification/#response-object"""
178
+
179
+ description: str
180
+ headers: ta.Mapping[str, Header | Reference] | None = None
181
+ content: ta.Mapping[str, 'MediaType'] | None = None
182
+ links: ta.Mapping[str, Link | Reference] | None = None
183
+
184
+
185
+ # https://swagger.io/specification/#responses-object
186
+ Responses: ta.TypeAlias = ta.Mapping[str, Response | Reference]
187
+
188
+
189
+ @dc.dataclass(frozen=True)
190
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
191
+ class Encoding:
192
+ """https://swagger.io/specification/#encoding-object"""
193
+
194
+ content_type: str | None = None
195
+ headers: ta.Mapping[str, Header | Reference] | None = None
196
+ style: str | None = None
197
+ explode: bool | None = None
198
+ allow_reserved: bool | None = None
199
+
200
+
201
+ @dc.dataclass(frozen=True)
202
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
203
+ class MediaType:
204
+ """https://swagger.io/specification/#media-type-object"""
205
+
206
+ schema: Schema | Reference | None = None
207
+ example: ta.Any = None
208
+ examples: ta.Mapping[str, Example | Reference] | None = None
209
+ encoding: ta.Mapping[str, Encoding] | None = None
210
+
211
+
212
+ @dc.dataclass(frozen=True)
213
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
214
+ class RequestBody:
215
+ """https://swagger.io/specification/#request-body-object"""
216
+
217
+ content: ta.Mapping[str, MediaType]
218
+ description: str | None = None
219
+ required: bool | None = None
220
+
221
+
222
+ @dc.dataclass(frozen=True)
223
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
224
+ class ParameterCommon:
225
+ description: str | None = None
226
+ required: bool | None = None
227
+ deprecated: bool | None = None
228
+ allow_empty_value: bool | None = None
229
+
230
+ style: str | None = None
231
+ explode: bool | None = None
232
+ allow_reserved: bool | None = None
233
+ schema: Schema | None = None
234
+ example: ta.Any = None
235
+ examples: ta.Mapping[str, Example | Reference] | None = None
236
+
237
+ content: ta.Mapping[str, MediaType] | None = None
238
+
239
+ # style: ta.Any = None
240
+ matrix: ta.Any = None
241
+ label: ta.Any = None
242
+ form: ta.Any = None
243
+ simple: ta.Any = None
244
+ space_delimited: ta.Any = None
245
+ pipe_delimited: ta.Any = None
246
+ deep_object: ta.Any = None
247
+
248
+
249
+ @dc.dataclass(frozen=True)
250
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
251
+ @msh.update_fields_metadata(['in_'], name='in')
252
+ @msh.update_fields_metadata(['common'], embed=True, name='')
253
+ class Parameter:
254
+ """https://swagger.io/specification/#parameter-object"""
255
+
256
+ name: str
257
+ in_: str
258
+
259
+ common: ParameterCommon
260
+
261
+
262
+ @dc.dataclass(frozen=True)
263
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
264
+ class ExternalDocumentation:
265
+ """https://swagger.io/specification/#external-documentation-object"""
266
+
267
+ url: str
268
+ description: str | None = None
269
+
270
+
271
+ @dc.dataclass(frozen=True)
272
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL, unknown_field='x')
273
+ class Operation:
274
+ """https://swagger.io/specification/#operation-object"""
275
+
276
+ tags: ta.Sequence[str] | None = None
277
+ summary: str | None = None
278
+ description: str | None = None
279
+ external_docs: ExternalDocumentation | None = None
280
+ operation_id: str | None = None
281
+ parameters: ta.Sequence[Parameter | Reference] | None = None
282
+ request_body: RequestBody | Reference | None = None
283
+ responses: Responses | None = None
284
+ callbacks: ta.Mapping[str, Callback | Reference] | None = None
285
+ deprecated: bool | None = None
286
+ security: ta.Sequence[SecurityRequirement] | None = None
287
+ servers: ta.Sequence['Server'] | None = None
288
+
289
+ #
290
+
291
+ x: ta.Mapping[str, ta.Any] | None = None
292
+
293
+ @dc.init
294
+ def _check_x(self) -> None:
295
+ for k in self.x or {}:
296
+ check.arg(k.startswith('x-'))
297
+
298
+
299
+ @dc.dataclass(frozen=True)
300
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
301
+ @msh.update_fields_metadata(['ref'], name='$ref')
302
+ class PathItem:
303
+ """https://swagger.io/specification/#path-item-object"""
304
+
305
+ ref: str | None = None
306
+ summary: str | None = None
307
+ description: str | None = None
308
+ get: Operation | None = None
309
+ put: Operation | None = None
310
+ post: Operation | None = None
311
+ delete: Operation | None = None
312
+ options: Operation | None = None
313
+ head: Operation | None = None
314
+ patch: Operation | None = None
315
+ trace: Operation | None = None
316
+ servers: ta.Sequence['Server'] | None = None
317
+ parameters: ta.Sequence[Parameter | Reference] | None = None
318
+
319
+
320
+ # https://swagger.io/specification/#paths-object
321
+ Paths: ta.TypeAlias = ta.Mapping[str, PathItem]
322
+
323
+
324
+ @dc.dataclass(frozen=True)
325
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
326
+ class Components:
327
+ """https://swagger.io/specification/#components-object"""
328
+
329
+ schemas: ta.Mapping[str, Schema] | None = None
330
+ responses: ta.Mapping[str, Response | Reference] | None = None
331
+ parameters: ta.Mapping[str, Parameter | Reference] | None = None
332
+ examples: ta.Mapping[str, Example | Reference] | None = None
333
+ requestbodies: ta.Mapping[str, RequestBody | Reference] | None = None
334
+ headers: ta.Mapping[str, Header | Reference] | None = None
335
+ security_schemes: ta.Mapping[str, SecurityScheme | Reference] | None = None
336
+ links: ta.Mapping[str, Link | Reference] | None = None
337
+ callbacks: ta.Mapping[str, Callback | Reference] | None = None
338
+ path_items: ta.Mapping[str, PathItem | Reference] | None = None
339
+
340
+
341
+ @dc.dataclass(frozen=True)
342
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
343
+ class ServerVariable:
344
+ """https://swagger.io/specification/#server-variable-object"""
345
+
346
+ default: str
347
+ enum: ta.Sequence[str] | None = None
348
+ description: str | None = None
349
+
350
+
351
+ @dc.dataclass(frozen=True)
352
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
353
+ class Server:
354
+ """https://swagger.io/specification/#server-object"""
355
+
356
+ url: str
357
+ description: str | None = None
358
+ variables: ta.Mapping[str, ServerVariable] | None = None
359
+
360
+
361
+ @dc.dataclass(frozen=True)
362
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
363
+ class License:
364
+ """https://swagger.io/specification/#license-object"""
365
+
366
+ name: str
367
+ identifier: str | None = None
368
+ url: str | None = None
369
+
370
+
371
+ @dc.dataclass(frozen=True)
372
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
373
+ class Contact:
374
+ """https://swagger.io/specification/#contact-object"""
375
+
376
+ name: str | None = None
377
+ url: str | None = None
378
+ email: str | None = None
379
+
380
+
381
+ @dc.dataclass(frozen=True)
382
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL)
383
+ class Info:
384
+ """https://swagger.io/specification/#info-object"""
385
+
386
+ title: str
387
+ version: str
388
+ summary: str | None = None
389
+ description: str | None = None
390
+ terms_of_service: str | None = None
391
+ contact: Contact | None = None
392
+ license: License | None = None
393
+
394
+
395
+ @dc.dataclass(frozen=True)
396
+ @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL, unknown_field='x')
397
+ class Openapi:
398
+ """https://swagger.io/specification/#openapi-object"""
399
+
400
+ openapi: str
401
+ info: Info
402
+ json_schema_dialect: str | None = None
403
+ servers: ta.Sequence[Server] | None = None
404
+ paths: Paths | None = None
405
+ webhooks: ta.Mapping[str, PathItem | Reference] | None = None
406
+ components: Components | None = None
407
+ security: ta.Sequence[SecurityRequirement] | None = None
408
+ tags: ta.Sequence[Tag] | None = None
409
+ external_docs: ExternalDocumentation | None = None
410
+
411
+ #
412
+
413
+ x: ta.Mapping[str, ta.Any] | None = None
414
+
415
+ @dc.init
416
+ def _check_x(self) -> None:
417
+ for k in self.x or {}:
418
+ check.arg(k.startswith('x-'))
419
+
420
+
421
+ ##
422
+
423
+
424
+ def _main():
425
+ import argparse
426
+
427
+ parser = argparse.ArgumentParser()
428
+ parser.add_argument('schema_path')
429
+
430
+ args = parser.parse_args()
431
+
432
+ import yaml
433
+
434
+ with open(args.schema_path) as f:
435
+ doc = yaml.safe_load(f)
436
+
437
+ api = msh.unmarshal(doc, Openapi)
438
+
439
+ print(json.dumps_pretty(msh.marshal(api)))
440
+
441
+
442
+ if __name__ == '__main__':
443
+ _main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev40
3
+ Version: 0.0.0.dev42
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=FPSgLg_3QDVzKlNOuqV3dMqhja2KG_TUfKdGmHE8Eg4,803
2
- omlish/__about__.py,sha256=RFPy3zw7QYcods5DomAlNdYeo4ySug48-5ISyCkIHJg,2925
2
+ omlish/__about__.py,sha256=S3UHQkiEUjKJjDzTX2TmymQCRF1d722ZAqV9yJ6o_GU,2919
3
3
  omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omlish/argparse.py,sha256=QUUS6sv2ftfcmhDj4qU429mEE_lfWa0UN5yYpPG65B0,6265
5
5
  omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
@@ -7,7 +7,6 @@ omlish/cached.py,sha256=UAizxlH4eMWHPzQtmItmyE6FEpFEUFzIkxaO2BHWZ5s,196
7
7
  omlish/check.py,sha256=fgWiBoHvqZlE8tjaxK7OMW4J8z3_rEGRENTka3EohbI,10378
8
8
  omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
9
9
  omlish/defs.py,sha256=T3bq_7h_tO3nDB5RAFBn7DkdeQgqheXzkFColbOHZko,4890
10
- omlish/docker.py,sha256=vmyQA9HCmBQPnOMGcQVomiyAY3TsMKI-9e7Nt8ptrH8,6523
11
10
  omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
12
11
  omlish/fnpairs.py,sha256=Sl8CMFNyDS-1JYAjSWqnT5FmUm9Lj6o7FxSRo7g4jww,10875
13
12
  omlish/fnpipes.py,sha256=AJkgz9nvRRm7oqw7ZgYyz21klu276LWi54oYCLg-vOg,2196
@@ -65,10 +64,10 @@ omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
65
64
  omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
66
65
  omlish/configs/flattening.py,sha256=AOlRpBHm449MxwMp3CiIRGunStOC1DUNs1f3CLou0wc,4731
67
66
  omlish/configs/strings.py,sha256=0brx1duL85r1GpfbNvbHcSvH4jWzutwuvMFXda9NeI0,2651
68
- omlish/dataclasses/__init__.py,sha256=L2kRMvsWgsennXVw7VgZdczCtdLsQzyPcMFit2rBpbA,1337
69
- omlish/dataclasses/utils.py,sha256=qBKHyW2LSjnJYfPSAExEsVZ5EdmDBfp4napAhfWkZFs,3221
67
+ omlish/dataclasses/__init__.py,sha256=LALx4dXSvBWAKzmZxb3rkNdoR7kOaXeGcVypTnECvcw,1354
68
+ omlish/dataclasses/utils.py,sha256=Ewd6w31uXy1sVUj59sxmXfGuI0CgsAbcfNXx0tsrNco,3347
70
69
  omlish/dataclasses/impl/LICENSE,sha256=Oy-B_iHRgcSZxZolbI4ZaEVdZonSaaqFNzv7avQdo78,13936
71
- omlish/dataclasses/impl/__init__.py,sha256=rQJRcE9fVsGEvRUOZ18r4DE0xiLbSRjspyJRXgbLS3I,348
70
+ omlish/dataclasses/impl/__init__.py,sha256=0hgOm3_u3yimjEkB-9fRMqX9rAW6kQC5t8XL0lpvffQ,410
72
71
  omlish/dataclasses/impl/api.py,sha256=6QtUAbP3DQZw8WEkgpsYfYKTn4CQBV9v0z2B4fTcR80,6405
73
72
  omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
74
73
  omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
@@ -109,6 +108,12 @@ omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc
109
108
  omlish/dispatch/dispatch.py,sha256=8B66wOat30HckcIsCq4pnutBy20iSPwPQOqJ4msHaGU,3739
110
109
  omlish/dispatch/functions.py,sha256=S8ElsLi6DKxTdtFGigWaF0vAquwy2sK-3f4iRLaYq70,1522
111
110
  omlish/dispatch/methods.py,sha256=XHjwwC9Gn4iDWxbyLAcbdSwRgVaq-8Bnn5cAwf5oZdA,5403
111
+ omlish/docker/__init__.py,sha256=LGL5ByHrd7EaQnIDO6eLQvovDamngUiTfnpThV_4-MA,437
112
+ omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
113
+ omlish/docker/compose.py,sha256=4drmnGQzbkOFJ9B6XSg9rnXkJeZz1ETmdcMe1PE790U,1237
114
+ omlish/docker/helpers.py,sha256=j2eZIqIUpy34ZmoGyIzsYuKx9HeewwYBfrGNC99EFYk,928
115
+ omlish/docker/hub.py,sha256=YcDYOi6t1FA2Sp0RVrmZ9cBXbzFWQ8wTps3wOskA-K0,1955
116
+ omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,7068
112
117
  omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
118
  omlish/formats/dotenv.py,sha256=UjZl3gac-0U24sDjCCGMcCqO1UCWG2Zs8PZ4JdAg2YE,17348
114
119
  omlish/formats/json.py,sha256=61XG6rveb3SSXmYrKvUmRdaVDyMD6C-7yVqXBBMu8t8,1017
@@ -163,7 +168,7 @@ omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCF
163
168
  omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
164
169
  omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
165
170
  omlish/inject/impl/scopes.py,sha256=ASfULXgP_ETlsAqFJfrZmyEaZt64Zr8tNn5ScA-EoXk,5900
166
- omlish/lang/__init__.py,sha256=jDIv9mr3Y85S3DpUroaLty7q9iwMUjUlKwyUxs-zlXg,3618
171
+ omlish/lang/__init__.py,sha256=-DRmyoSAwSWOh7nJh4UrpR-w_hGQfe-e06S9qLjHZF8,3636
167
172
  omlish/lang/cached.py,sha256=92TvRZQ6sWlm7dNn4hgl7aWKbX0J1XUEo3DRjBpgVQk,7834
168
173
  omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
169
174
  omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
@@ -178,7 +183,7 @@ omlish/lang/maybes.py,sha256=NYHZDjqDtwPMheDrj2VtUVujxRPf8Qpgk4ZlZCTvBZc,3492
178
183
  omlish/lang/objects.py,sha256=1dY8dX5voIZf5FBYUiN0BRsWg2JCdsgRbDl9fLG7OtY,4310
179
184
  omlish/lang/resolving.py,sha256=OuN2mDTPNyBUbcrswtvFKtj4xgH4H4WglgqSKv3MTy0,1606
180
185
  omlish/lang/resources.py,sha256=-NmVTrSMKFZ6smVfOMz46ekZYVGgYh8cPooxQlFpG6s,2135
181
- omlish/lang/strings.py,sha256=LqxR49cF5owHKpbUX8nUIBPsZ-4w7xqHPhlB-HIWqUg,3628
186
+ omlish/lang/strings.py,sha256=LWgUy9WghUyV0zmZ1c3HZjEfekLlNPy7Jl6J1Z5vzp0,3882
182
187
  omlish/lang/sys.py,sha256=UoZz_PJYVKLQAKqYxxn-LHz1okK_38I__maZgnXMcxU,406
183
188
  omlish/lang/timeouts.py,sha256=vECdWYhc_IZgcal1Ng1Y42wf2FV3KAx-i8As-MgGHIQ,1186
184
189
  omlish/lang/typing.py,sha256=lJ2NGe4Pmb61I0Tx4A_rOqXNFTws1XHOzafg2knRUio,4155
@@ -214,24 +219,24 @@ omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
214
219
  omlish/logs/handlers.py,sha256=nyuFgmO05By_Xwq7es58ClzS51-F53lJL7gD0x5IqAg,228
215
220
  omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
216
221
  omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
217
- omlish/marshal/__init__.py,sha256=B2NLwxUuhvD17FfbipXmYo9yZmpBFcHqGPp-r8_Vuvs,1951
222
+ omlish/marshal/__init__.py,sha256=_vx3txFh09j3SoxSfSS4AwwnDa9jgAWzXYjluIitGWA,1969
218
223
  omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
219
224
  omlish/marshal/base.py,sha256=ceNjOFxCwLNuxkmxofk3Sh5rE39JGxnc4giN7NNr9kA,6121
220
225
  omlish/marshal/base64.py,sha256=F-3ogJdcFCtWINRgJgWT0rErqgx6f4qahhcg8OrkqhE,1089
221
- omlish/marshal/dataclasses.py,sha256=TdpTCqAHs9hrTyUG__goSRcm848LZznJcDG4WY5wbgM,4109
226
+ omlish/marshal/dataclasses.py,sha256=B21hFukA9pNhp-PzBWG7rxz_F5BjNzMxU3nFURRrGXo,6037
222
227
  omlish/marshal/datetimes.py,sha256=0ffg8cEvx9SMKIXZGD9b7MqpLfmgw0uKKdn6YTfoqok,3714
223
228
  omlish/marshal/enums.py,sha256=-0fKutBbyz8ygEaA0_P_8IOJrI9jMGigmnPbutV9Bg4,1464
224
229
  omlish/marshal/exceptions.py,sha256=jwQWn4LcPnadT2KRI_1JJCOSkwWh0yHnYK9BmSkNN4U,302
225
230
  omlish/marshal/factories.py,sha256=UV2Svjok-lTWsRqKGh-CeuAhvlohw9uJe7ZLyoKMvTM,2968
226
231
  omlish/marshal/forbidden.py,sha256=BNshzm4lN5O8sUZ1YvxrSYq3WPklq9NMQCRZ7RC3DLM,865
227
232
  omlish/marshal/global_.py,sha256=8XCjPcIjA65StESshzNfQiSyuckVaEiiWROmC3qk0mo,1117
228
- omlish/marshal/helpers.py,sha256=YA0pNo-Fkc-_qKeoRNXUpP36js8oelU7uENkvoGD4hY,1206
233
+ omlish/marshal/helpers.py,sha256=-SOgYJmrURILHpPK6Wu3cCvhj8RJrqfJxuKhh9UMs7o,1102
229
234
  omlish/marshal/iterables.py,sha256=6I_ZdJemLSQtJ4J5NrB9wi-eyxiJZS61HzHXp1yeiX8,2592
230
235
  omlish/marshal/mappings.py,sha256=zhLtyot7tzQtBNj7C4RBxjMELxA5r2q2Mth8Br7xkFs,2803
231
236
  omlish/marshal/maybes.py,sha256=mgK3QsWHkXgRqo076KxYKH6elRxzJ_QDTodv93mgHR0,2198
232
237
  omlish/marshal/naming.py,sha256=lIklR_Od4x1ghltAgOzqcKhHs-leeSv2YmFhCHO7GIs,613
233
238
  omlish/marshal/numbers.py,sha256=oY_yMNJEnJhjfLh89gpPXvKqeUyhQcaTcQB6ecyHiG8,1704
234
- omlish/marshal/objects.py,sha256=E5wvH1o0_edsVJ4HoUuTqPfnb21ou08IdL442OQUOUw,5235
239
+ omlish/marshal/objects.py,sha256=fe4dPEF6BqZRWHSn3D7Z5JyLg-Z7JFPhBe2gjUGBefw,6543
235
240
  omlish/marshal/optionals.py,sha256=r0XB5rqfasvgZJNrKYd6Unq2U4nHt3JURi26j0dYHlw,1499
236
241
  omlish/marshal/polymorphism.py,sha256=doA8aLUhna6aco5b2Ok3jsem1V4NsF3rM5RTfJt0a7U,5708
237
242
  omlish/marshal/primitives.py,sha256=wcvcs5GH_TWVmzAszh3dvyKibJgBxnXke-AlAXiwrrI,1107
@@ -284,6 +289,9 @@ omlish/specs/jsonschema/schemas/draft202012/vocabularies/format.json,sha256=UOu_
284
289
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json,sha256=j3bW4U9Bubku-TO3CM3FFEyLUmhlGtEZGEhfsXVPHHY,892
285
290
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json,sha256=Lb-8tzmUtnCwl2SSre4f_7RsIWgnhNL1pMpWH54tDLQ,506
286
291
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json,sha256=cBCjHlQfMtK-ch4t40jfdcmzaHaj7TBId_wKvaHTelg,2834
292
+ omlish/specs/openapi/__init__.py,sha256=zilQhafjvteRDF_TUIRgF293dBC6g-TJChmUb6T9VBQ,77
293
+ omlish/specs/openapi/marshal.py,sha256=ob_qUbT9-de86KhPjFccl_NP0liQcXK7Ao-b5Hn0VQA,2133
294
+ omlish/specs/openapi/openapi.py,sha256=y4h04jeB7ORJSVrcy7apaBdpwLjIyscv1Ub5SderH2c,12682
287
295
  omlish/sql/__init__.py,sha256=TpZLsEJKJzvJ0eMzuV8hwOJJbkxBCV1RZPUMLAVB6io,173
288
296
  omlish/sql/_abc.py,sha256=HLhnnLZ7l0r_N99I-RCqJe6VHth-9iluU7cR-7-5jfs,1519
289
297
  omlish/sql/dbs.py,sha256=lpdFmm2vTwLoBiVYGj9yPsVcTEYYNCxlYZZpjfChzkY,1870
@@ -320,9 +328,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
320
328
  omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
321
329
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
322
330
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
323
- omlish-0.0.0.dev40.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
324
- omlish-0.0.0.dev40.dist-info/METADATA,sha256=cgGflLfobBAX38YnOg4rq76Ep04gAV4o75NXd0QGrd8,3817
325
- omlish-0.0.0.dev40.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
326
- omlish-0.0.0.dev40.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
327
- omlish-0.0.0.dev40.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
328
- omlish-0.0.0.dev40.dist-info/RECORD,,
331
+ omlish-0.0.0.dev42.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
332
+ omlish-0.0.0.dev42.dist-info/METADATA,sha256=D6POba16biuXPIbTw9Scr1y1L2x-sCf0TDK4R3ByhXI,3817
333
+ omlish-0.0.0.dev42.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
334
+ omlish-0.0.0.dev42.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
335
+ omlish-0.0.0.dev42.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
336
+ omlish-0.0.0.dev42.dist-info/RECORD,,