omlish 0.0.0.dev448__py3-none-any.whl → 0.0.0.dev450__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.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/__about__.py +3 -3
- omlish/collections/mappings.py +3 -0
- omlish/dataclasses/tools/modifiers.py +5 -0
- omlish/diag/pydevd.py +1 -1
- omlish/lang/__init__.py +162 -96
- omlish/lang/contextmanagers.py +12 -0
- omlish/lang/functions.py +20 -16
- omlish/lite/maysync.py +1 -5
- omlish/marshal/__init__.py +6 -0
- omlish/marshal/polymorphism/standard.py +3 -5
- omlish/metadata.py +23 -1
- omlish/sql/{tabledefs/alchemy.py → alchemy/tabledefs.py} +2 -2
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/METADATA +5 -5
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/RECORD +18 -18
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev448.dist-info → omlish-0.0.0.dev450.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
__version__ = '0.0.0.
|
|
2
|
-
__revision__ = '
|
|
1
|
+
__version__ = '0.0.0.dev450'
|
|
2
|
+
__revision__ = '06a2dac5a7edcb1d06e2cc83c467c9b78d637e60'
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
#
|
|
@@ -36,7 +36,7 @@ class Project(ProjectBase):
|
|
|
36
36
|
|
|
37
37
|
optional_dependencies = {
|
|
38
38
|
'async': [
|
|
39
|
-
'anyio ~= 4.
|
|
39
|
+
'anyio ~= 4.11',
|
|
40
40
|
'sniffio ~= 1.3',
|
|
41
41
|
|
|
42
42
|
'greenlet ~= 3.2',
|
omlish/collections/mappings.py
CHANGED
|
@@ -3,6 +3,7 @@ import typing as ta
|
|
|
3
3
|
|
|
4
4
|
from ... import check
|
|
5
5
|
from ... import lang
|
|
6
|
+
from ...lite.dataclasses import is_immediate_dataclass
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
if ta.TYPE_CHECKING:
|
|
@@ -40,6 +41,8 @@ def update_fields(
|
|
|
40
41
|
def inner(cls):
|
|
41
42
|
if issubclass(cls, meta.DataMeta):
|
|
42
43
|
raise TypeError('update_fields() cannot be used on DataMeta subclasses')
|
|
44
|
+
if is_immediate_dataclass(cls):
|
|
45
|
+
raise TypeError('update_fields() cannot be used on already processed dataclasses')
|
|
43
46
|
|
|
44
47
|
if fields is None:
|
|
45
48
|
for a, v in list(cls.__dict__.items()):
|
|
@@ -51,6 +54,8 @@ def update_fields(
|
|
|
51
54
|
try:
|
|
52
55
|
v = cls.__dict__[a]
|
|
53
56
|
except KeyError:
|
|
57
|
+
if hasattr(cls, a):
|
|
58
|
+
raise TypeError('update_fields() cannot be used on parent dataclass fields') from None
|
|
54
59
|
v = dc.field()
|
|
55
60
|
else:
|
|
56
61
|
if not isinstance(v, dc.Field):
|
omlish/diag/pydevd.py
CHANGED
omlish/lang/__init__.py
CHANGED
|
@@ -68,10 +68,12 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
from .classes.abstract import ( # noqa
|
|
71
|
-
get_abstracts,
|
|
72
|
-
is_abstract,
|
|
73
|
-
is_abstract_class,
|
|
74
71
|
is_abstract_method,
|
|
72
|
+
|
|
73
|
+
is_abstract_class,
|
|
74
|
+
is_abstract,
|
|
75
|
+
|
|
76
|
+
get_abstracts,
|
|
75
77
|
make_abstract,
|
|
76
78
|
)
|
|
77
79
|
|
|
@@ -81,8 +83,8 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
81
83
|
|
|
82
84
|
from .classes.namespaces import ( # noqa
|
|
83
85
|
GenericNamespaceMeta,
|
|
84
|
-
Namespace,
|
|
85
86
|
NamespaceMeta,
|
|
87
|
+
Namespace,
|
|
86
88
|
)
|
|
87
89
|
|
|
88
90
|
from .classes.protocols import ( # noqa
|
|
@@ -91,54 +93,65 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
91
93
|
)
|
|
92
94
|
|
|
93
95
|
from .classes.restrict import ( # noqa
|
|
94
|
-
AnySensitive,
|
|
95
|
-
Final,
|
|
96
96
|
FinalTypeError,
|
|
97
|
-
|
|
97
|
+
Final,
|
|
98
|
+
|
|
99
|
+
SealedError,
|
|
100
|
+
Sealed,
|
|
101
|
+
PackageSealed,
|
|
102
|
+
|
|
98
103
|
NotInstantiable,
|
|
99
104
|
NotPicklable,
|
|
100
|
-
|
|
105
|
+
|
|
106
|
+
NoBool,
|
|
107
|
+
no_bool,
|
|
108
|
+
|
|
101
109
|
SENSITIVE_ATTR,
|
|
102
|
-
Sealed,
|
|
103
|
-
SealedError,
|
|
104
110
|
Sensitive,
|
|
105
|
-
|
|
111
|
+
AnySensitive,
|
|
106
112
|
)
|
|
107
113
|
|
|
108
114
|
from .classes.simple import ( # noqa
|
|
109
|
-
LazySingleton,
|
|
110
|
-
Marker,
|
|
111
115
|
SimpleMetaDict,
|
|
116
|
+
|
|
117
|
+
Marker,
|
|
118
|
+
|
|
112
119
|
Singleton,
|
|
120
|
+
LazySingleton,
|
|
113
121
|
)
|
|
114
122
|
|
|
115
123
|
from .classes.virtual import ( # noqa
|
|
116
|
-
Callable,
|
|
117
|
-
Descriptor,
|
|
118
|
-
Picklable,
|
|
119
124
|
Virtual,
|
|
120
125
|
virtual_check,
|
|
126
|
+
|
|
127
|
+
Descriptor,
|
|
128
|
+
Picklable,
|
|
129
|
+
|
|
130
|
+
Callable,
|
|
121
131
|
)
|
|
122
132
|
|
|
123
133
|
from .clsdct import ( # noqa
|
|
134
|
+
is_possibly_cls_dct,
|
|
135
|
+
get_caller_cls_dct,
|
|
136
|
+
|
|
124
137
|
ClassDctFn,
|
|
125
138
|
cls_dct_fn,
|
|
126
|
-
get_caller_cls_dct,
|
|
127
|
-
is_possibly_cls_dct,
|
|
128
139
|
)
|
|
129
140
|
|
|
130
141
|
from .collections import ( # noqa
|
|
131
|
-
empty_map,
|
|
132
|
-
merge_dicts,
|
|
133
142
|
yield_dict_init,
|
|
143
|
+
merge_dicts,
|
|
144
|
+
|
|
145
|
+
empty_map,
|
|
134
146
|
)
|
|
135
147
|
|
|
136
148
|
from .comparison import ( # noqa
|
|
137
|
-
|
|
149
|
+
cmp,
|
|
150
|
+
|
|
138
151
|
InfinityType,
|
|
139
|
-
|
|
152
|
+
Infinity,
|
|
140
153
|
NegativeInfinityType,
|
|
141
|
-
|
|
154
|
+
NegativeInfinity,
|
|
142
155
|
)
|
|
143
156
|
|
|
144
157
|
from .contextmanagers import ( # noqa
|
|
@@ -181,6 +194,9 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
181
194
|
|
|
182
195
|
call_with_exit_stack,
|
|
183
196
|
call_with_async_exit_stack,
|
|
197
|
+
|
|
198
|
+
with_exit_stack,
|
|
199
|
+
with_async_exit_stack,
|
|
184
200
|
)
|
|
185
201
|
|
|
186
202
|
from .datetimes import ( # noqa
|
|
@@ -194,19 +210,26 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
194
210
|
)
|
|
195
211
|
|
|
196
212
|
from .descriptors import ( # noqa
|
|
197
|
-
AccessForbiddenError,
|
|
198
|
-
access_forbidden,
|
|
199
213
|
attr_property,
|
|
200
|
-
classonly,
|
|
201
|
-
decorator,
|
|
202
|
-
is_method_descriptor,
|
|
203
214
|
item_property,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
unwrap_func,
|
|
207
|
-
unwrap_func_with_partials,
|
|
215
|
+
|
|
216
|
+
is_method_descriptor,
|
|
208
217
|
unwrap_method_descriptors,
|
|
218
|
+
|
|
219
|
+
unwrap_func_with_partials,
|
|
220
|
+
unwrap_func,
|
|
221
|
+
|
|
222
|
+
unwrap_callable_with_partials,
|
|
223
|
+
unwrap_callable,
|
|
224
|
+
|
|
209
225
|
update_wrapper,
|
|
226
|
+
|
|
227
|
+
decorator,
|
|
228
|
+
|
|
229
|
+
AccessForbiddenError,
|
|
230
|
+
access_forbidden,
|
|
231
|
+
|
|
232
|
+
classonly,
|
|
210
233
|
)
|
|
211
234
|
|
|
212
235
|
from .enums import ( # noqa
|
|
@@ -218,43 +241,57 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
218
241
|
)
|
|
219
242
|
|
|
220
243
|
from .functions import ( # noqa
|
|
221
|
-
|
|
244
|
+
is_lambda,
|
|
245
|
+
|
|
222
246
|
call_with,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
247
|
+
opt_call,
|
|
248
|
+
opt_fn,
|
|
249
|
+
recurse,
|
|
250
|
+
|
|
251
|
+
raise_,
|
|
252
|
+
raising,
|
|
253
|
+
try_,
|
|
226
254
|
finally_,
|
|
255
|
+
|
|
227
256
|
identity,
|
|
228
|
-
|
|
257
|
+
constant,
|
|
258
|
+
nullary_constant,
|
|
259
|
+
|
|
229
260
|
is_none,
|
|
230
261
|
is_not_none,
|
|
231
262
|
isinstance_of,
|
|
232
263
|
issubclass_of,
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
264
|
+
strict_eq,
|
|
265
|
+
|
|
266
|
+
VoidError,
|
|
267
|
+
Void,
|
|
268
|
+
void,
|
|
269
|
+
|
|
270
|
+
periodically,
|
|
271
|
+
|
|
272
|
+
opt_getattr,
|
|
273
|
+
coalesce,
|
|
237
274
|
opt_coalesce,
|
|
238
|
-
|
|
275
|
+
|
|
276
|
+
cond_kw,
|
|
239
277
|
opt_kw,
|
|
240
|
-
periodically,
|
|
241
|
-
raise_,
|
|
242
|
-
raising,
|
|
243
|
-
recurse,
|
|
244
|
-
strict_eq,
|
|
245
278
|
truthy_kw,
|
|
246
|
-
|
|
247
|
-
|
|
279
|
+
|
|
280
|
+
new_function,
|
|
281
|
+
new_function_kwargs,
|
|
248
282
|
)
|
|
249
283
|
|
|
250
284
|
from .generators import ( # noqa
|
|
251
|
-
|
|
252
|
-
GeneratorMappedIterator,
|
|
285
|
+
nextgen,
|
|
253
286
|
autostart,
|
|
254
|
-
|
|
287
|
+
|
|
288
|
+
GeneratorLike,
|
|
289
|
+
|
|
255
290
|
capture_generator,
|
|
291
|
+
capture_coroutine,
|
|
292
|
+
|
|
293
|
+
GeneratorMappedIterator,
|
|
256
294
|
genmap,
|
|
257
|
-
nextgen,
|
|
258
295
|
)
|
|
259
296
|
|
|
260
297
|
from .imports.capture import ( # noqa
|
|
@@ -294,21 +331,26 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
294
331
|
)
|
|
295
332
|
|
|
296
333
|
from .iterables import ( # noqa
|
|
297
|
-
IteratorWithReturn,
|
|
298
|
-
asrange,
|
|
299
|
-
chunk,
|
|
300
|
-
common_prefix_len,
|
|
301
|
-
consume,
|
|
302
|
-
flatmap,
|
|
303
|
-
flatten,
|
|
304
334
|
ilen,
|
|
335
|
+
take,
|
|
336
|
+
consume,
|
|
337
|
+
peek,
|
|
338
|
+
chunk,
|
|
305
339
|
interleave,
|
|
340
|
+
renumerate,
|
|
341
|
+
common_prefix_len,
|
|
342
|
+
|
|
343
|
+
readiter,
|
|
344
|
+
|
|
306
345
|
itergen,
|
|
307
|
-
|
|
346
|
+
|
|
347
|
+
flatten,
|
|
348
|
+
flatmap,
|
|
349
|
+
|
|
350
|
+
asrange,
|
|
308
351
|
prodrange,
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
take,
|
|
352
|
+
|
|
353
|
+
IteratorWithReturn,
|
|
312
354
|
)
|
|
313
355
|
|
|
314
356
|
from .lazyglobals import ( # noqa
|
|
@@ -330,27 +372,38 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
330
372
|
)
|
|
331
373
|
|
|
332
374
|
from .objects import ( # noqa
|
|
333
|
-
Identity,
|
|
334
|
-
SimpleProxy,
|
|
335
|
-
anon_object,
|
|
336
375
|
arg_repr,
|
|
376
|
+
opt_repr,
|
|
377
|
+
|
|
337
378
|
can_weakref,
|
|
338
|
-
|
|
379
|
+
|
|
339
380
|
new_type,
|
|
340
|
-
opt_repr,
|
|
341
381
|
super_meta,
|
|
382
|
+
|
|
383
|
+
deep_subclasses,
|
|
384
|
+
|
|
385
|
+
SimpleProxy,
|
|
386
|
+
|
|
387
|
+
anon_object,
|
|
388
|
+
|
|
389
|
+
Identity,
|
|
342
390
|
)
|
|
343
391
|
|
|
344
392
|
from .outcomes import ( # noqa
|
|
345
|
-
Either,
|
|
346
|
-
Error,
|
|
347
|
-
Outcome,
|
|
348
393
|
OutcomeAlreadyUnwrappedError,
|
|
349
|
-
|
|
350
|
-
acapture,
|
|
394
|
+
|
|
351
395
|
capture,
|
|
352
|
-
|
|
396
|
+
acapture,
|
|
397
|
+
|
|
398
|
+
Outcome,
|
|
399
|
+
|
|
400
|
+
Value,
|
|
353
401
|
value,
|
|
402
|
+
|
|
403
|
+
Error,
|
|
404
|
+
error,
|
|
405
|
+
|
|
406
|
+
Either,
|
|
354
407
|
)
|
|
355
408
|
|
|
356
409
|
from .overrides import ( # noqa
|
|
@@ -363,29 +416,35 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
363
416
|
)
|
|
364
417
|
|
|
365
418
|
from .params import ( # noqa
|
|
419
|
+
Param,
|
|
420
|
+
|
|
421
|
+
VarParam,
|
|
366
422
|
ArgsParam,
|
|
367
|
-
KwOnlyParam,
|
|
368
423
|
KwargsParam,
|
|
369
|
-
|
|
424
|
+
|
|
425
|
+
ValParam,
|
|
426
|
+
PosOnlyParam,
|
|
427
|
+
KwOnlyParam,
|
|
428
|
+
|
|
370
429
|
ParamSeparator,
|
|
430
|
+
|
|
371
431
|
ParamSpec,
|
|
372
|
-
|
|
373
|
-
ValParam,
|
|
374
|
-
VarParam,
|
|
432
|
+
|
|
375
433
|
param_render,
|
|
376
434
|
)
|
|
377
435
|
|
|
378
436
|
from .recursion import ( # noqa
|
|
379
437
|
LimitedRecursionError,
|
|
380
|
-
recursion_limiting,
|
|
381
438
|
recursion_limiting_context,
|
|
439
|
+
|
|
440
|
+
recursion_limiting,
|
|
382
441
|
)
|
|
383
442
|
|
|
384
443
|
from .resolving import ( # noqa
|
|
385
|
-
Resolvable,
|
|
386
444
|
ResolvableClassNameError,
|
|
387
445
|
get_cls_fqcn,
|
|
388
446
|
get_fqcn_cls,
|
|
447
|
+
Resolvable,
|
|
389
448
|
)
|
|
390
449
|
|
|
391
450
|
from .resources import ( # noqa
|
|
@@ -395,24 +454,31 @@ with _auto_proxy_init(globals(), update_exports=True):
|
|
|
395
454
|
)
|
|
396
455
|
|
|
397
456
|
from .strings import ( # noqa
|
|
398
|
-
BOOL_FALSE_STRINGS,
|
|
399
|
-
BOOL_STRINGS,
|
|
400
|
-
BOOL_TRUE_STRINGS,
|
|
401
|
-
STRING_BOOL_VALUES,
|
|
402
|
-
find_any,
|
|
403
|
-
indent_lines,
|
|
404
|
-
is_dunder,
|
|
405
|
-
is_ident,
|
|
406
|
-
is_ident_cont,
|
|
407
|
-
is_ident_start,
|
|
408
|
-
is_sunder,
|
|
409
|
-
iter_pat,
|
|
410
457
|
prefix_delimited,
|
|
411
458
|
prefix_lines,
|
|
412
|
-
|
|
413
|
-
|
|
459
|
+
indent_lines,
|
|
460
|
+
|
|
414
461
|
strip_prefix,
|
|
415
462
|
strip_suffix,
|
|
463
|
+
|
|
464
|
+
replace_many,
|
|
465
|
+
|
|
466
|
+
find_any,
|
|
467
|
+
rfind_any,
|
|
468
|
+
|
|
469
|
+
is_dunder,
|
|
470
|
+
is_sunder,
|
|
471
|
+
|
|
472
|
+
is_ident_start,
|
|
473
|
+
is_ident_cont,
|
|
474
|
+
is_ident,
|
|
475
|
+
|
|
476
|
+
BOOL_STRINGS,
|
|
477
|
+
BOOL_FALSE_STRINGS,
|
|
478
|
+
BOOL_TRUE_STRINGS,
|
|
479
|
+
STRING_BOOL_VALUES,
|
|
480
|
+
|
|
481
|
+
iter_pat,
|
|
416
482
|
)
|
|
417
483
|
|
|
418
484
|
from .sys import ( # noqa
|
omlish/lang/contextmanagers.py
CHANGED
|
@@ -408,3 +408,15 @@ async def call_with_async_exit_stack(
|
|
|
408
408
|
) -> T:
|
|
409
409
|
async with contextlib.AsyncExitStack() as aes:
|
|
410
410
|
return await fn(aes, *args, **kwargs)
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
def with_exit_stack(
|
|
414
|
+
fn: ta.Callable[ta.Concatenate[contextlib.ExitStack, P], T],
|
|
415
|
+
) -> ta.Callable[P, T]:
|
|
416
|
+
return functools.partial(call_with_exit_stack, fn)
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
def with_async_exit_stack(
|
|
420
|
+
fn: ta.Callable[ta.Concatenate[contextlib.AsyncExitStack, P], ta.Awaitable[T]],
|
|
421
|
+
) -> ta.Callable[P, ta.Awaitable[T]]:
|
|
422
|
+
return functools.partial(call_with_async_exit_stack, fn)
|
omlish/lang/functions.py
CHANGED
|
@@ -29,7 +29,18 @@ def call_with(fn: ta.Any, *args: ta.Any, **kwargs: ta.Any) -> ta.Callable[[T], T
|
|
|
29
29
|
return inner
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
def
|
|
32
|
+
def opt_fn(fn: ta.Callable[[F], T]) -> ta.Callable[[F | None], T | None]:
|
|
33
|
+
@functools.wraps(fn)
|
|
34
|
+
def inner(v: F | None) -> T | None:
|
|
35
|
+
if v is not None:
|
|
36
|
+
return fn(v)
|
|
37
|
+
else:
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
return inner
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def opt_call(obj: ta.Any, att: str, *args, default: ta.Any = None, **kwargs: ta.Any) -> ta.Any:
|
|
33
44
|
try:
|
|
34
45
|
fn = getattr(obj, att)
|
|
35
46
|
except AttributeError:
|
|
@@ -39,7 +50,7 @@ def maybe_call(obj: ta.Any, att: str, *args, default: ta.Any = None, **kwargs: t
|
|
|
39
50
|
|
|
40
51
|
|
|
41
52
|
def recurse(fn: ta.Callable[..., T], *args, **kwargs) -> T:
|
|
42
|
-
def rec(*args, **kwargs) -> T:
|
|
53
|
+
def rec(*args, **kwargs) -> T: # noqa
|
|
43
54
|
return fn(rec, *args, **kwargs)
|
|
44
55
|
|
|
45
56
|
return rec(*args, **kwargs)
|
|
@@ -91,20 +102,6 @@ def identity(obj: T) -> T:
|
|
|
91
102
|
return obj
|
|
92
103
|
|
|
93
104
|
|
|
94
|
-
def opt_fn(fn: ta.Callable[[F], T]) -> ta.Callable[[F | None], T | None]:
|
|
95
|
-
@functools.wraps(fn)
|
|
96
|
-
def inner(v: F | None) -> T | None:
|
|
97
|
-
if v is not None:
|
|
98
|
-
return fn(v)
|
|
99
|
-
else:
|
|
100
|
-
return None
|
|
101
|
-
|
|
102
|
-
return inner
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
|
|
108
105
|
class _constant(ta.Generic[T]): # noqa
|
|
109
106
|
def __init__(self, obj: T) -> None:
|
|
110
107
|
super().__init__()
|
|
@@ -198,6 +195,13 @@ def periodically(
|
|
|
198
195
|
##
|
|
199
196
|
|
|
200
197
|
|
|
198
|
+
def opt_getattr(obj: ta.Any, att: str, default: ta.Any = None) -> ta.Any:
|
|
199
|
+
try:
|
|
200
|
+
return getattr(obj, att)
|
|
201
|
+
except AttributeError:
|
|
202
|
+
return default
|
|
203
|
+
|
|
204
|
+
|
|
201
205
|
def coalesce(*vs: T | None) -> T:
|
|
202
206
|
for v in vs:
|
|
203
207
|
if v is not None:
|
omlish/lite/maysync.py
CHANGED
|
@@ -25,6 +25,7 @@ Internally, it's not really correct to say that there is 'no event loop' in the
|
|
|
25
25
|
===
|
|
26
26
|
|
|
27
27
|
TODO:
|
|
28
|
+
- ! impl iterators not just generators !
|
|
28
29
|
- __del__
|
|
29
30
|
- (test) maysync context managers
|
|
30
31
|
- CancelledError
|
|
@@ -33,11 +34,6 @@ TODO:
|
|
|
33
34
|
- works down to 3.8
|
|
34
35
|
- make_maysync_from_sync can run with asyncio.run_in_thread
|
|
35
36
|
- make_maysync_from_async can run with asyncio.run_soon
|
|
36
|
-
|
|
37
|
-
TODO OVERHAUL:
|
|
38
|
-
- no more sync/async context, just one Context, and it means sync
|
|
39
|
-
- make FpMaywaitable *not reusable*
|
|
40
|
-
- `cannot reuse already awaited coroutine`
|
|
41
37
|
"""
|
|
42
38
|
import abc
|
|
43
39
|
import inspect
|
omlish/marshal/__init__.py
CHANGED
|
@@ -108,6 +108,11 @@ with _lang.auto_proxy_init(globals()):
|
|
|
108
108
|
IterableUnmarshaler,
|
|
109
109
|
)
|
|
110
110
|
|
|
111
|
+
from .composite.optionals import ( # noqa
|
|
112
|
+
OptionalMarshaler,
|
|
113
|
+
OptionalUnmarshaler,
|
|
114
|
+
)
|
|
115
|
+
|
|
111
116
|
from .composite.wrapped import ( # noqa
|
|
112
117
|
WrappedMarshaler,
|
|
113
118
|
WrappedUnmarshaler,
|
|
@@ -225,6 +230,7 @@ with _lang.auto_proxy_init(globals()):
|
|
|
225
230
|
from .singular.base64 import ( # noqa
|
|
226
231
|
BASE64_MARSHALER_FACTORY,
|
|
227
232
|
BASE64_UNMARSHALER_FACTORY,
|
|
233
|
+
Base64MarshalerUnmarshaler,
|
|
228
234
|
)
|
|
229
235
|
|
|
230
236
|
from .singular.primitives import ( # noqa
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import typing as ta
|
|
2
|
-
|
|
3
1
|
from ..base.types import MarshalerFactory
|
|
4
2
|
from ..base.types import UnmarshalerFactory
|
|
5
3
|
from .marshal import PolymorphismMarshalerFactory
|
|
@@ -15,8 +13,8 @@ from .unmarshal import PolymorphismUnmarshalerFactory
|
|
|
15
13
|
def standard_polymorphism_factories(
|
|
16
14
|
poly: Polymorphism,
|
|
17
15
|
tt: TypeTagging = WrapperTypeTagging(),
|
|
18
|
-
) ->
|
|
19
|
-
return
|
|
16
|
+
) -> tuple[MarshalerFactory, UnmarshalerFactory]:
|
|
17
|
+
return (
|
|
20
18
|
PolymorphismMarshalerFactory(poly, tt),
|
|
21
19
|
PolymorphismUnmarshalerFactory(poly, tt),
|
|
22
|
-
|
|
20
|
+
)
|
omlish/metadata.py
CHANGED
|
@@ -19,6 +19,8 @@ from . import lang
|
|
|
19
19
|
|
|
20
20
|
T = ta.TypeVar('T')
|
|
21
21
|
|
|
22
|
+
ObjectMetadataT = ta.TypeVar('ObjectMetadataT', bound='ObjectMetadata')
|
|
23
|
+
|
|
22
24
|
|
|
23
25
|
##
|
|
24
26
|
|
|
@@ -94,12 +96,32 @@ def append_object_metadata(obj: T, *mds: ObjectMetadata) -> T:
|
|
|
94
96
|
_type = type
|
|
95
97
|
|
|
96
98
|
|
|
99
|
+
@ta.overload
|
|
100
|
+
def get_object_metadata(
|
|
101
|
+
obj: ta.Any,
|
|
102
|
+
*,
|
|
103
|
+
strict: bool = False,
|
|
104
|
+
type: ta.Type[ObjectMetadataT], # noqa
|
|
105
|
+
) -> ta.Sequence[ObjectMetadataT]:
|
|
106
|
+
...
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@ta.overload
|
|
97
110
|
def get_object_metadata(
|
|
98
111
|
obj: ta.Any,
|
|
99
112
|
*,
|
|
100
113
|
strict: bool = False,
|
|
101
114
|
type: ta.Type | tuple[ta.Type, ...] | None = None, # noqa
|
|
102
|
-
) -> ta.Sequence[
|
|
115
|
+
) -> ta.Sequence[ta.Any]:
|
|
116
|
+
...
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def get_object_metadata(
|
|
120
|
+
obj,
|
|
121
|
+
*,
|
|
122
|
+
strict=False,
|
|
123
|
+
type=None, # noqa
|
|
124
|
+
):
|
|
103
125
|
try:
|
|
104
126
|
tgt = _unwrap_object_metadata_target(obj)
|
|
105
127
|
except ObjectMetadataTargetTypeError:
|
|
@@ -7,13 +7,13 @@ import typing as ta
|
|
|
7
7
|
import sqlalchemy as sa
|
|
8
8
|
import sqlalchemy.sql.schema
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from ..tabledefs import TableDef
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
##
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
def
|
|
16
|
+
def build_td_table(
|
|
17
17
|
td: TableDef,
|
|
18
18
|
*,
|
|
19
19
|
metadata: sa.MetaData | None = None,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omlish
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev450
|
|
4
4
|
Summary: omlish
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -15,7 +15,7 @@ Requires-Python: >=3.13
|
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
Provides-Extra: all
|
|
18
|
-
Requires-Dist: anyio~=4.
|
|
18
|
+
Requires-Dist: anyio~=4.11; extra == "all"
|
|
19
19
|
Requires-Dist: sniffio~=1.3; extra == "all"
|
|
20
20
|
Requires-Dist: greenlet~=3.2; extra == "all"
|
|
21
21
|
Requires-Dist: trio~=0.31; extra == "all"
|
|
@@ -47,7 +47,7 @@ Requires-Dist: duckdb~=1.4; extra == "all"
|
|
|
47
47
|
Requires-Dist: markupsafe~=3.0; extra == "all"
|
|
48
48
|
Requires-Dist: jinja2~=3.1; extra == "all"
|
|
49
49
|
Requires-Dist: pytest~=8.4; extra == "all"
|
|
50
|
-
Requires-Dist: anyio~=4.
|
|
50
|
+
Requires-Dist: anyio~=4.11; extra == "all"
|
|
51
51
|
Requires-Dist: sniffio~=1.3; extra == "all"
|
|
52
52
|
Requires-Dist: asttokens~=3.0; extra == "all"
|
|
53
53
|
Requires-Dist: executing~=2.2; extra == "all"
|
|
@@ -55,7 +55,7 @@ Requires-Dist: orjson~=3.11; extra == "all"
|
|
|
55
55
|
Requires-Dist: pyyaml~=6.0; extra == "all"
|
|
56
56
|
Requires-Dist: wrapt~=1.17; extra == "all"
|
|
57
57
|
Provides-Extra: async
|
|
58
|
-
Requires-Dist: anyio~=4.
|
|
58
|
+
Requires-Dist: anyio~=4.11; extra == "async"
|
|
59
59
|
Requires-Dist: sniffio~=1.3; extra == "async"
|
|
60
60
|
Requires-Dist: greenlet~=3.2; extra == "async"
|
|
61
61
|
Requires-Dist: trio~=0.31; extra == "async"
|
|
@@ -98,7 +98,7 @@ Requires-Dist: jinja2~=3.1; extra == "templates"
|
|
|
98
98
|
Provides-Extra: testing
|
|
99
99
|
Requires-Dist: pytest~=8.4; extra == "testing"
|
|
100
100
|
Provides-Extra: plus
|
|
101
|
-
Requires-Dist: anyio~=4.
|
|
101
|
+
Requires-Dist: anyio~=4.11; extra == "plus"
|
|
102
102
|
Requires-Dist: sniffio~=1.3; extra == "plus"
|
|
103
103
|
Requires-Dist: asttokens~=3.0; extra == "plus"
|
|
104
104
|
Requires-Dist: executing~=2.2; extra == "plus"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
|
2
|
-
omlish/__about__.py,sha256=
|
|
2
|
+
omlish/__about__.py,sha256=pAgRECTFzk0v1aWP_EMCioDMp_FL4IXyuUAF95ZEw0Q,3613
|
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
|
4
4
|
omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
|
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
|
6
6
|
omlish/check.py,sha256=DDNZnLxNoY2Y7N0Hz7nMR1q912ZzRLoBgOJVLcsXVws,6575
|
|
7
7
|
omlish/datetimes.py,sha256=7dh4aiVRWXWECH3JLF8kkRbgJ1qyGlAlQVp1vCXdTBE,2168
|
|
8
8
|
omlish/libc.py,sha256=mNY2FWZ2BjSucOx5TEW8IP_B5n84tVZWuVPL3Z3sUH8,15644
|
|
9
|
-
omlish/metadata.py,sha256=
|
|
9
|
+
omlish/metadata.py,sha256=lTh3NYVyjHtLTyAGiZxXJMjZrSPQ1E8zXvnJCgKSESA,4179
|
|
10
10
|
omlish/runmodule.py,sha256=vQ9VZN_c3sQX9rj036dW9lXuMWTjGOfWnwDcWTSWnn0,705
|
|
11
11
|
omlish/shlex.py,sha256=rlbgHWxjwpkCBRphOPqSIN_KD6qWJMLldNJUILulKT0,253
|
|
12
12
|
omlish/sync.py,sha256=bmhoaapdt1WhbL8_BWP9WhCy-u6VeZKnv2k9fzRZDds,3551
|
|
@@ -71,7 +71,7 @@ omlish/collections/coerce.py,sha256=tAls15v_7p5bUN33R7Zbko87KW5toWHl9fRialCqyNY,
|
|
|
71
71
|
omlish/collections/frozen.py,sha256=drarjcMFpwKhBM01b1Gh6XDcaRaUgpyuxEiqppaKRkU,4220
|
|
72
72
|
omlish/collections/hasheq.py,sha256=uHypfZlHhicQPvx9OOlpT9MSLwfc_mFil-WaxF9dTOo,3732
|
|
73
73
|
omlish/collections/identity.py,sha256=00UAYIjCRhyj73Es0jVNvOloXjRxHcjRxGQeWo75OEo,4834
|
|
74
|
-
omlish/collections/mappings.py,sha256=
|
|
74
|
+
omlish/collections/mappings.py,sha256=FWDErWR63y3xcjBfxXH58M1yOAqCdMyFWwzBjGAE7UQ,3346
|
|
75
75
|
omlish/collections/multimaps.py,sha256=azuif-PeLGvLpCE9_XX5zYx7XtVbsulWq0owvEKNy_g,3897
|
|
76
76
|
omlish/collections/ordered.py,sha256=jBSj5CamdKJAezXM8GlRd7jjaRDk6BHIeOhlxcC9lJI,2468
|
|
77
77
|
omlish/collections/ranked.py,sha256=McB8C2UQfUvrbmxGTpBz1-EZuyCLkBFtktzncMdt8_Y,2287
|
|
@@ -190,7 +190,7 @@ omlish/dataclasses/metaclass/specs.py,sha256=ZFt7A5S2UQi5ecFGhd9ubnRD0maswQGERMC
|
|
|
190
190
|
omlish/dataclasses/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
191
|
omlish/dataclasses/tools/as_.py,sha256=FLUOtvFf1H3isDQsJcskSVIJeJ3iTtrjug7kp3zbHtI,2639
|
|
192
192
|
omlish/dataclasses/tools/iter.py,sha256=JQUFG4Gn-xthhJ3OEqXLOWkq2KhRMuIqvEow0HcFPZg,540
|
|
193
|
-
omlish/dataclasses/tools/modifiers.py,sha256=
|
|
193
|
+
omlish/dataclasses/tools/modifiers.py,sha256=Ocai2InDqq7dgY_sMI9m2ugPLE4h4Kp5VLeSmalh8s8,1828
|
|
194
194
|
omlish/dataclasses/tools/only_.py,sha256=hPpqzr9YW09YmlX_QJNU2aePHYJEIrbGCPwmnvVS_to,849
|
|
195
195
|
omlish/dataclasses/tools/replace.py,sha256=izM9lPT6AhEtjqn22auqaofa0j69KO7iootF-2Uj4cY,396
|
|
196
196
|
omlish/dataclasses/tools/repr.py,sha256=KFvF6uv2YYIKq8O3ZNbEAS1tqRQALsJ-SUlBNPd5_GI,190
|
|
@@ -204,7 +204,7 @@ omlish/diag/procfs.py,sha256=eeB3L9UpNBpAfsax3U6OczayYboPlFzOGplqlQ4gBNY,9700
|
|
|
204
204
|
omlish/diag/procstats.py,sha256=EJEe2Zc58ykBoTfqMXro7H52aQa_pd6uC2hsIPFceso,825
|
|
205
205
|
omlish/diag/ps.py,sha256=MEpMU6fbkh0bSWrOHh_okOa0JDTUSUQUVSYBdh1TGvE,1672
|
|
206
206
|
omlish/diag/pycharm.py,sha256=9Mgn5T2ZdlEUL3VV-GzVmCBs_ZtIpLwaUzP6pgHEUEo,4712
|
|
207
|
-
omlish/diag/pydevd.py,sha256=
|
|
207
|
+
omlish/diag/pydevd.py,sha256=4_tKEwjj2tUL3DMNdB1IXZ-zKZjTJd6o75kL0JKEZAk,7593
|
|
208
208
|
omlish/diag/threads.py,sha256=sjtlTl41wxssoVCDkBB6xeLF-9kJEK3eA6hmSFWJSQA,3643
|
|
209
209
|
omlish/diag/timers.py,sha256=cxX3GgjTIjBx9DI4pzCCO5Hfqb1TM3uo22yim7kjfRU,3831
|
|
210
210
|
omlish/diag/_pycharm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -409,19 +409,19 @@ omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,4
|
|
|
409
409
|
omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
|
|
410
410
|
omlish/iterators/transforms.py,sha256=YHVdD9nBkS1k4kogi4Ba0UOTU_pKkuX9jGw1Tqj3UMw,3598
|
|
411
411
|
omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
|
|
412
|
-
omlish/lang/__init__.py,sha256=
|
|
412
|
+
omlish/lang/__init__.py,sha256=O-W0CaUsWeFjCuIdED2wiLhfVicEpPbS_DQQB-t0DpE,10702
|
|
413
413
|
omlish/lang/asyncs.py,sha256=iIHJp7nvgJVj7zS0Ji7NsVSzz54vkzrj0Snc83dxe9g,1965
|
|
414
414
|
omlish/lang/attrstorage.py,sha256=UUnoENCMQF3twBfxBcIKa5mpXsAxWnNYDayhU8xgmpU,5224
|
|
415
415
|
omlish/lang/casing.py,sha256=3_c7cxQOc4z_YezaU2B4NCTAsPh_kDL4wUTK5kZU6kg,4675
|
|
416
416
|
omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
|
|
417
417
|
omlish/lang/collections.py,sha256=kVMp1JJ6ycvKzuiOmf2ZF5Eg2mm3vJGPjkUcV_IACMk,2528
|
|
418
418
|
omlish/lang/comparison.py,sha256=MOwEG0Yny-jBPHO9kQto9FSRyeNpQW24UABsghkrHxY,1356
|
|
419
|
-
omlish/lang/contextmanagers.py,sha256=
|
|
419
|
+
omlish/lang/contextmanagers.py,sha256=JhldLt3avWXYR9WgqgeWbOgGTv4ptP-wQZUlAK28P3k,10032
|
|
420
420
|
omlish/lang/datetimes.py,sha256=01tg21QOx-PWDlm-CSFTalym3vpqF0EKzeinmtcVNoU,379
|
|
421
421
|
omlish/lang/descriptors.py,sha256=sVJ1Pr4ihp26Tu9UCvDSyfSf-DhBnFGnbpYIFF32c7g,6877
|
|
422
422
|
omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
|
|
423
423
|
omlish/lang/errors.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
|
|
424
|
-
omlish/lang/functions.py,sha256=
|
|
424
|
+
omlish/lang/functions.py,sha256=f7K2SC-09veno_lsUGu0DkZks2gL8VpsmyQMB4Q_i6Q,5663
|
|
425
425
|
omlish/lang/generators.py,sha256=nJiSmDpsfPiypGzJ8qlOO7-BUnCsrAeDow9mhtGgBio,5196
|
|
426
426
|
omlish/lang/iterables.py,sha256=o_s8ouaJrdUqEVl2_bzJk5CVdabmrywXY0gPn7xss3w,3371
|
|
427
427
|
omlish/lang/lazyglobals.py,sha256=YfPtWgNEa0ULtbIiQIQ12pbafUwd6INQRw_PFcAabjo,2282
|
|
@@ -479,7 +479,7 @@ omlish/lite/inject.py,sha256=BQgjBj2mzJgMimLam-loSpQzcb31-8NYPVRQgHVv3cQ,29159
|
|
|
479
479
|
omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
|
|
480
480
|
omlish/lite/marshal.py,sha256=oVqVwqTArFUj9lYhmKg_MVgnqlCAUvOnYgtU3bBu_bk,23020
|
|
481
481
|
omlish/lite/maybes.py,sha256=sJ4dawgBxlZ4oB9dZ3bhBb_8AOJlIW0nVIFgFZ1huXE,4384
|
|
482
|
-
omlish/lite/maysync.py,sha256=
|
|
482
|
+
omlish/lite/maysync.py,sha256=Otd-xqWaMzY9xBF5SiLKxu4kG_GaWGk8qTGFDAHXDm4,14803
|
|
483
483
|
omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
|
|
484
484
|
omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
|
|
485
485
|
omlish/lite/reflect.py,sha256=aTRQJ-hgnyRxr0dFxivUTScmUgP7zcw_iDQZIsarG24,2119
|
|
@@ -526,7 +526,7 @@ omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2
|
|
|
526
526
|
omlish/manifests/loading.py,sha256=s6KnhdFQCsI2i0Rus1sMU0so2v8dUBnk59BJkSnxGt8,17514
|
|
527
527
|
omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
|
|
528
528
|
omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
|
|
529
|
-
omlish/marshal/__init__.py,sha256=
|
|
529
|
+
omlish/marshal/__init__.py,sha256=uzPPSRIamgMa0syMbY1I_2YJApaABNeDczBmrgm8j7I,6203
|
|
530
530
|
omlish/marshal/globals.py,sha256=Q6G18hcUwUDDNnpyRPnR5Tn_XZpZCSIEXo09nYSOaNU,2236
|
|
531
531
|
omlish/marshal/naming.py,sha256=Mk5YrbES836_KflNNRoc5Ajd96iMYLQIMERKx1KpT4g,865
|
|
532
532
|
omlish/marshal/standard.py,sha256=6L4FK7QVgVFAf2jkTQlCvN-15DWK49VCNlNwCBea3-8,6674
|
|
@@ -570,7 +570,7 @@ omlish/marshal/objects/unmarshal.py,sha256=izhtSwqSrlWSOL5uZS3naPxnfq3rhv25uUPN7
|
|
|
570
570
|
omlish/marshal/polymorphism/__init__.py,sha256=e2UTrSL0qp7w_1vkdxDWd7sXlWhep2KPV49-BB64ma8,130
|
|
571
571
|
omlish/marshal/polymorphism/marshal.py,sha256=ZnayCbRj3451U4py1-9dU99PHvjQuQk-ZQDGgzQjF4U,2292
|
|
572
572
|
omlish/marshal/polymorphism/metadata.py,sha256=c-sOVGvV96OqMfdXUVcVXK8u4xtxHjdHJFXmUx7Km40,3327
|
|
573
|
-
omlish/marshal/polymorphism/standard.py,sha256=
|
|
573
|
+
omlish/marshal/polymorphism/standard.py,sha256=6wwFFwL9fTwIDqhynZr05naL8gVNC_RnPux-8vmja8o,587
|
|
574
574
|
omlish/marshal/polymorphism/unions.py,sha256=AWNyzETvgADOjPmXsHloXgbvjZ4GX9b_iNmD6ZdXsT0,4445
|
|
575
575
|
omlish/marshal/polymorphism/unmarshal.py,sha256=8bLeI9UxUluoIqkRJSJIbdCsKkXjx3myYe9uWs16QjY,2483
|
|
576
576
|
omlish/marshal/singular/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -705,6 +705,7 @@ omlish/sql/alchemy/duckdb.py,sha256=BM9Z-YK7dI5UZtJbmmIKbocoV-a5X9_5GnSlAEqYEOM,
|
|
|
705
705
|
omlish/sql/alchemy/exprs.py,sha256=-GhV9b_atIJlpn-aXmOMb2zDqRoML6NoqbU8cDvsWUs,328
|
|
706
706
|
omlish/sql/alchemy/secrets.py,sha256=0_T9djpO7ScmmyjdUBrZ6QGFAvsG6NyHXA88O0Apasg,186
|
|
707
707
|
omlish/sql/alchemy/sqlean.py,sha256=w6x2_mDOPWVLkgwHiOEUOJ217nakLwlI015gP670PSs,408
|
|
708
|
+
omlish/sql/alchemy/tabledefs.py,sha256=q5kVTPVoVArOXbpIv78eX0DcT2aY-V3uKoMvHiFSp2w,491
|
|
708
709
|
omlish/sql/api/__init__.py,sha256=Lqia7OvW2CEMFXoyRyKZIYZneYv_vjnZVAvsvv08HV0,1036
|
|
709
710
|
omlish/sql/api/_queries.py,sha256=FqIrtU6JdzQD4S4zv9tdDuzCLHSgJjK8WSfT7Ag4umI,530
|
|
710
711
|
omlish/sql/api/asquery.py,sha256=8eBoJyyu0kHW3k3yytEcT-B6UAI_slKB0QtSK_WQS7g,1203
|
|
@@ -736,7 +737,6 @@ omlish/sql/queries/unary.py,sha256=MEYBDZn_H0bexmUrJeONOv5-gIpYowUaXOsEHeQM4ks,1
|
|
|
736
737
|
omlish/sql/queries/unions.py,sha256=w9lKrQ38nMme_gyDPciZNqyCBhwFkLusc9fjmBDu48U,438
|
|
737
738
|
omlish/sql/tabledefs/__init__.py,sha256=eFaO_QQaEv4Z9CLxFSzZgmXqxPI7xKTpDI6outo1VPk,150
|
|
738
739
|
omlish/sql/tabledefs/_marshal.py,sha256=5Z7K433SzfN7-z8Yd7FJRzOV9tJv-ErRMA6inZ2iBCE,475
|
|
739
|
-
omlish/sql/tabledefs/alchemy.py,sha256=fK00S_AdqadH2sG8SEATaFd7UnQS-vp1ECTYCnTSDuE,490
|
|
740
740
|
omlish/sql/tabledefs/dtypes.py,sha256=X0N6Y1c2bQ4HC0WA-Yv_jZPvGlSqO7hMIV-towDw3MU,367
|
|
741
741
|
omlish/sql/tabledefs/elements.py,sha256=lP_Ch19hKmiGYPQVeC8HpFaKdTYnXi2FfpfwKMxZOck,1674
|
|
742
742
|
omlish/sql/tabledefs/lower.py,sha256=i4_QkVlVH5U99O6pqokrB661AudNVJ9Q-OwtkKOBleU,1410
|
|
@@ -822,9 +822,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
|
822
822
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
|
823
823
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
|
824
824
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
|
825
|
-
omlish-0.0.0.
|
|
826
|
-
omlish-0.0.0.
|
|
827
|
-
omlish-0.0.0.
|
|
828
|
-
omlish-0.0.0.
|
|
829
|
-
omlish-0.0.0.
|
|
830
|
-
omlish-0.0.0.
|
|
825
|
+
omlish-0.0.0.dev450.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
826
|
+
omlish-0.0.0.dev450.dist-info/METADATA,sha256=DwUHc-Z09a7IkYIMSrhnyjgwyNUGM9xvFiLSCEQsIXs,19003
|
|
827
|
+
omlish-0.0.0.dev450.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
828
|
+
omlish-0.0.0.dev450.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
|
829
|
+
omlish-0.0.0.dev450.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
830
|
+
omlish-0.0.0.dev450.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|