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.
- omlish/__about__.py +2 -2
- omlish/dataclasses/__init__.py +1 -0
- omlish/dataclasses/impl/__init__.py +1 -0
- omlish/dataclasses/utils.py +4 -0
- omlish/docker/__init__.py +27 -0
- omlish/docker/cli.py +101 -0
- omlish/docker/compose.py +51 -0
- omlish/docker/helpers.py +48 -0
- omlish/docker/hub.py +75 -0
- omlish/docker/manifests.py +166 -0
- omlish/lang/__init__.py +1 -0
- omlish/lang/strings.py +25 -37
- omlish/marshal/__init__.py +1 -0
- omlish/marshal/dataclasses.py +68 -15
- omlish/marshal/helpers.py +2 -8
- omlish/marshal/objects.py +58 -15
- omlish/specs/openapi/__init__.py +5 -0
- omlish/specs/openapi/marshal.py +63 -0
- omlish/specs/openapi/openapi.py +443 -0
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/RECORD +25 -17
- omlish/docker.py +0 -273
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev40.dist-info → omlish-0.0.0.dev42.dist-info}/top_level.txt +0 -0
@@ -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,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=FPSgLg_3QDVzKlNOuqV3dMqhja2KG_TUfKdGmHE8Eg4,803
|
2
|
-
omlish/__about__.py,sha256=
|
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=
|
69
|
-
omlish/dataclasses/utils.py,sha256=
|
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=
|
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
|
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=
|
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=
|
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=
|
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
|
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=
|
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.
|
324
|
-
omlish-0.0.0.
|
325
|
-
omlish-0.0.0.
|
326
|
-
omlish-0.0.0.
|
327
|
-
omlish-0.0.0.
|
328
|
-
omlish-0.0.0.
|
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,,
|