omlish 0.0.0.dev5__py3-none-any.whl → 0.0.0.dev7__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 +109 -5
- omlish/__init__.py +0 -8
- omlish/asyncs/__init__.py +9 -9
- omlish/asyncs/anyio.py +123 -19
- omlish/asyncs/asyncio.py +23 -0
- omlish/asyncs/asyncs.py +9 -6
- omlish/asyncs/bridge.py +316 -0
- omlish/asyncs/trio_asyncio.py +7 -3
- omlish/bootstrap.py +737 -0
- omlish/check.py +1 -1
- omlish/collections/__init__.py +5 -0
- omlish/collections/exceptions.py +2 -0
- omlish/collections/identity.py +7 -0
- omlish/collections/utils.py +38 -9
- omlish/configs/strings.py +96 -0
- omlish/dataclasses/__init__.py +16 -0
- omlish/dataclasses/impl/copy.py +30 -0
- omlish/dataclasses/impl/descriptors.py +95 -0
- omlish/dataclasses/impl/exceptions.py +6 -0
- omlish/dataclasses/impl/fields.py +24 -25
- omlish/dataclasses/impl/init.py +4 -2
- omlish/dataclasses/impl/main.py +2 -0
- omlish/dataclasses/impl/reflect.py +1 -1
- omlish/dataclasses/utils.py +67 -0
- omlish/{lang/datetimes.py → datetimes.py} +8 -4
- omlish/diag/__init__.py +4 -0
- omlish/diag/procfs.py +2 -2
- omlish/{testing → diag}/pydevd.py +35 -0
- omlish/diag/threads.py +131 -48
- omlish/dispatch/_dispatch2.py +65 -0
- omlish/dispatch/_dispatch3.py +104 -0
- omlish/docker.py +16 -1
- omlish/fnpairs.py +11 -4
- omlish/formats/__init__.py +0 -0
- omlish/{configs → formats}/dotenv.py +15 -24
- omlish/{json.py → formats/json.py} +2 -1
- omlish/formats/yaml.py +223 -0
- omlish/graphs/trees.py +1 -1
- omlish/http/asgi.py +2 -1
- omlish/http/collections.py +15 -0
- omlish/http/consts.py +22 -1
- omlish/http/sessions.py +10 -3
- omlish/inject/__init__.py +49 -17
- omlish/inject/binder.py +185 -5
- omlish/inject/bindings.py +3 -36
- omlish/inject/eagers.py +2 -8
- omlish/inject/elements.py +31 -10
- omlish/inject/exceptions.py +1 -1
- omlish/inject/impl/elements.py +37 -12
- omlish/inject/impl/injector.py +72 -25
- omlish/inject/impl/inspect.py +33 -5
- omlish/inject/impl/origins.py +77 -0
- omlish/inject/impl/{private.py → privates.py} +2 -2
- omlish/inject/impl/scopes.py +6 -2
- omlish/inject/injector.py +8 -4
- omlish/inject/inspect.py +18 -0
- omlish/inject/keys.py +8 -14
- omlish/inject/listeners.py +26 -0
- omlish/inject/managed.py +76 -10
- omlish/inject/multis.py +68 -18
- omlish/inject/origins.py +30 -0
- omlish/inject/overrides.py +5 -4
- omlish/inject/{private.py → privates.py} +6 -10
- omlish/inject/providers.py +12 -85
- omlish/inject/scopes.py +13 -6
- omlish/inject/types.py +3 -1
- omlish/inject/utils.py +18 -0
- omlish/iterators.py +69 -2
- omlish/lang/__init__.py +24 -9
- omlish/lang/cached.py +2 -2
- omlish/lang/classes/restrict.py +12 -1
- omlish/lang/classes/simple.py +18 -8
- omlish/lang/contextmanagers.py +13 -4
- omlish/lang/descriptors.py +132 -1
- omlish/lang/functions.py +8 -28
- omlish/lang/imports.py +67 -0
- omlish/lang/iterables.py +60 -1
- omlish/lang/maybes.py +3 -0
- omlish/lang/objects.py +38 -0
- omlish/lang/strings.py +25 -0
- omlish/lang/sys.py +9 -0
- omlish/lang/typing.py +42 -0
- omlish/lifecycles/__init__.py +34 -0
- omlish/lifecycles/abstract.py +43 -0
- omlish/lifecycles/base.py +51 -0
- omlish/lifecycles/contextmanagers.py +74 -0
- omlish/lifecycles/controller.py +116 -0
- omlish/lifecycles/manager.py +161 -0
- omlish/lifecycles/states.py +43 -0
- omlish/lifecycles/transitions.py +64 -0
- omlish/lite/__init__.py +1 -0
- omlish/lite/cached.py +18 -0
- omlish/lite/check.py +29 -0
- omlish/lite/contextmanagers.py +18 -0
- omlish/lite/json.py +30 -0
- omlish/lite/logs.py +52 -0
- omlish/lite/marshal.py +316 -0
- omlish/lite/reflect.py +49 -0
- omlish/lite/runtime.py +18 -0
- omlish/lite/secrets.py +19 -0
- omlish/lite/strings.py +25 -0
- omlish/lite/subprocesses.py +112 -0
- omlish/logs/configs.py +15 -2
- omlish/logs/formatters.py +7 -2
- omlish/marshal/__init__.py +32 -0
- omlish/marshal/any.py +5 -5
- omlish/marshal/base.py +27 -11
- omlish/marshal/base64.py +24 -9
- omlish/marshal/dataclasses.py +34 -28
- omlish/marshal/datetimes.py +74 -18
- omlish/marshal/enums.py +14 -8
- omlish/marshal/exceptions.py +11 -1
- omlish/marshal/factories.py +59 -74
- omlish/marshal/forbidden.py +35 -0
- omlish/marshal/global_.py +11 -4
- omlish/marshal/iterables.py +21 -24
- omlish/marshal/mappings.py +23 -26
- omlish/marshal/naming.py +4 -0
- omlish/marshal/numbers.py +51 -0
- omlish/marshal/objects.py +1 -0
- omlish/marshal/optionals.py +11 -12
- omlish/marshal/polymorphism.py +86 -21
- omlish/marshal/primitives.py +4 -5
- omlish/marshal/standard.py +13 -8
- omlish/marshal/uuids.py +4 -5
- omlish/matchfns.py +218 -0
- omlish/os.py +64 -0
- omlish/reflect/__init__.py +39 -0
- omlish/reflect/isinstance.py +38 -0
- omlish/reflect/ops.py +84 -0
- omlish/reflect/subst.py +110 -0
- omlish/reflect/types.py +275 -0
- omlish/secrets/__init__.py +23 -0
- omlish/secrets/crypto.py +132 -0
- omlish/secrets/marshal.py +70 -0
- omlish/secrets/openssl.py +207 -0
- omlish/secrets/passwords.py +120 -0
- omlish/secrets/secrets.py +299 -0
- omlish/secrets/subprocesses.py +42 -0
- omlish/sql/dbs.py +7 -6
- omlish/sql/duckdb.py +136 -0
- omlish/sql/exprs.py +12 -0
- omlish/sql/secrets.py +10 -0
- omlish/sql/sqlean.py +17 -0
- omlish/term.py +2 -2
- omlish/testing/pytest/__init__.py +3 -2
- omlish/testing/pytest/inject/harness.py +3 -3
- omlish/testing/pytest/marks.py +4 -7
- omlish/testing/pytest/plugins/__init__.py +1 -0
- omlish/testing/pytest/plugins/asyncs.py +136 -0
- omlish/testing/pytest/plugins/pydevd.py +1 -1
- omlish/testing/pytest/plugins/switches.py +54 -19
- omlish/text/glyphsplit.py +97 -0
- omlish-0.0.0.dev7.dist-info/METADATA +50 -0
- omlish-0.0.0.dev7.dist-info/RECORD +268 -0
- {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev7.dist-info}/WHEEL +1 -1
- omlish/reflect.py +0 -355
- omlish-0.0.0.dev5.dist-info/METADATA +0 -34
- omlish-0.0.0.dev5.dist-info/RECORD +0 -212
- /omlish/{asyncs/futures.py → concurrent.py} +0 -0
- /omlish/{configs → formats}/props.py +0 -0
- {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev7.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
omlish/__about__.py,sha256=TwqdcftpXPLJwEH5TJ-OVm9QOL9L13Atq8Ew7Kie3rk,2266
|
|
2
|
+
omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
omlish/argparse.py,sha256=QRQmX9G0-L_nATkFtGHvpd4qrpYzKATdjuFLbBqzJPM,6224
|
|
4
|
+
omlish/bootstrap.py,sha256=3pGNiHlUcQl81q76_Wesd4pblmy82EOKkcdgectF15Q,18820
|
|
5
|
+
omlish/c3.py,sha256=W5EwYx9Por3rWYLkKUitJ6OoRMLLgVTfLTyroOz41Y0,8047
|
|
6
|
+
omlish/cached.py,sha256=UAizxlH4eMWHPzQtmItmyE6FEpFEUFzIkxaO2BHWZ5s,196
|
|
7
|
+
omlish/check.py,sha256=aeFjTwZfcZHMY2tJ4RozonuOg_LVvPMgyP94CfuR0Sk,5529
|
|
8
|
+
omlish/concurrent.py,sha256=3KkTj5TOPmvNOcuK9LtOQwmkuLzoEYQfcuaHTXSQ0Ts,5424
|
|
9
|
+
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
|
10
|
+
omlish/defs.py,sha256=N8O1murtr4mdSE_vjAcWGfnN7GyBXbW8rJM4qPF8na0,4737
|
|
11
|
+
omlish/docker.py,sha256=5WyXJyFwqIJJ11QWwPIjHjDHnsaOVZszZAjyTvg3xew,4693
|
|
12
|
+
omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
|
|
13
|
+
omlish/fnpairs.py,sha256=FgP8lzygrbRo5E1f8wbWy_-opoR6Dy8BKRi776kOrIY,9445
|
|
14
|
+
omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
|
|
15
|
+
omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
|
|
16
|
+
omlish/matchfns.py,sha256=rW-kEHZvMkRno0Imn8rskAoVjpR5rKtOtUUzQ6wLqdU,5878
|
|
17
|
+
omlish/math.py,sha256=AVqp5Y8yxKA-wO0BgrzaxA0Ga3PZiCXnYcwivMneC-0,3804
|
|
18
|
+
omlish/os.py,sha256=cz4nL2ujaxH_-XRq3JUD8af8mSe1JXGPIoXP9XAEd0M,2607
|
|
19
|
+
omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
|
|
20
|
+
omlish/stats.py,sha256=uqjN-focDVssFZMagj22HqmyJ1TBO4Wt-XnHp8-EtVw,9927
|
|
21
|
+
omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
|
|
22
|
+
omlish/term.py,sha256=NEmxqAhicyInGtmFamZAizI2xdu819MzFYPEp0Fx97M,6111
|
|
23
|
+
omlish/asyncs/__init__.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
|
|
24
|
+
omlish/asyncs/anyio.py,sha256=6hqKLM7H-AOOiQtTM9dI4bn0d4mNhN3RLCUYrgJswv4,7540
|
|
25
|
+
omlish/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
|
|
26
|
+
omlish/asyncs/asyncs.py,sha256=Tf7ZodTGepkM7HAuFcDNh9lLzzrMw6rELWvopGmFkh4,2035
|
|
27
|
+
omlish/asyncs/bridge.py,sha256=AabrRVz5k75dTB59M70DWkl6JrLusjhpvsaj5jld9io,8151
|
|
28
|
+
omlish/asyncs/flavors.py,sha256=kp1RdcsNrvDQZMB4Q_hlHyjrREJqEWjY9BI1lbE1AQ8,4820
|
|
29
|
+
omlish/asyncs/trio.py,sha256=GKG3wgelFr7gIKKHZhcflvMyCvxXHNZe862KB0Xw2uA,370
|
|
30
|
+
omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw,1327
|
|
31
|
+
omlish/collections/__init__.py,sha256=7b0pjRiTXxh5p49SX9U5HQ4njsQehKik-Qe9A6Gf8qM,1658
|
|
32
|
+
omlish/collections/_abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
|
|
33
|
+
omlish/collections/_io_abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
|
|
34
|
+
omlish/collections/coerce.py,sha256=o11AMrUiyoadd8WkdqeKPIpXf2xd0LyylzNCyJivCLU,7036
|
|
35
|
+
omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
|
|
36
|
+
omlish/collections/frozen.py,sha256=DGxemj_pVID85tSBm-Wns_x4ov0wOEIT6X5bVgJtmkA,4152
|
|
37
|
+
omlish/collections/identity.py,sha256=jhEpC8tnfh3Sg-MJff1Fp9eMydt150wits_UeVdctUk,2723
|
|
38
|
+
omlish/collections/indexed.py,sha256=YHs_q0GALisXPKKMgeDQxZ6hMzYndqDL3m3ag8cnzH0,2143
|
|
39
|
+
omlish/collections/mappings.py,sha256=5D7xZabUY6n1nB-BrZlcrPy_AdzLZ6IyihuLeDL48pA,3188
|
|
40
|
+
omlish/collections/ordered.py,sha256=RzEC3fHvrDeJQSWThVDNYQKke263Vje1II5YwtDwT1Q,2335
|
|
41
|
+
omlish/collections/persistent.py,sha256=KG471s0bhhReQrjlmX0xaN9HeAIcrtT264ddZCxsExo,875
|
|
42
|
+
omlish/collections/skiplist.py,sha256=xjuKZtSScp1VnOi9lpf7I090vGp1DnjA5ELjFhMeGps,5987
|
|
43
|
+
omlish/collections/sorted.py,sha256=E5ZOdNn7Jju1EcQ7CX2Ltk9StIXsBOzqvh7EsT3ZA2U,3354
|
|
44
|
+
omlish/collections/treap.py,sha256=wq9L5hvxq4QgPvIpHmueZMF8t7UrvX5vmlNN4BOqY4g,7720
|
|
45
|
+
omlish/collections/treapmap.py,sha256=TxOM-ZRF5PK2xe5wRIhESNt7DGh9b_MeZfE7HLkCOs4,5804
|
|
46
|
+
omlish/collections/unmodifiable.py,sha256=QmUEi9IBXqiM_KGgH2rqg15VmkHJo1MZ6kwq2twEMho,4750
|
|
47
|
+
omlish/collections/utils.py,sha256=3qe4ncHx1vkI34-AGKsCT-9syLbZweW1SI7EgaNifnI,4245
|
|
48
|
+
omlish/collections/cache/__init__.py,sha256=Cv8RX-Ehit3um0QLDq7uRDqJUCcdqTKoAB9T0pM_5hg,392
|
|
49
|
+
omlish/collections/cache/descriptor.py,sha256=t-1Gh4DTABDuNmeDJlpoW4LV3gi_uSlBd9ZfBINfYCM,5023
|
|
50
|
+
omlish/collections/cache/impl.py,sha256=nQox5kChhns9h2a5gnX-ayQGBQJ5-B1aZkLQ2Aej19g,15137
|
|
51
|
+
omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K7p8E,685
|
|
52
|
+
omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
|
|
53
|
+
omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
|
|
54
|
+
omlish/configs/flattening.py,sha256=AOlRpBHm449MxwMp3CiIRGunStOC1DUNs1f3CLou0wc,4731
|
|
55
|
+
omlish/configs/strings.py,sha256=0brx1duL85r1GpfbNvbHcSvH4jWzutwuvMFXda9NeI0,2651
|
|
56
|
+
omlish/dataclasses/__init__.py,sha256=FMR2hCAsOxRTjT2asnuyEGkA4OXI7J3N8Wy7cyPiogs,1247
|
|
57
|
+
omlish/dataclasses/utils.py,sha256=G1nSlvdwsb9SV1AsJRfXrCO0sAnqMcj7LjGdVSWi2AA,1852
|
|
58
|
+
omlish/dataclasses/impl/__init__.py,sha256=rQJRcE9fVsGEvRUOZ18r4DE0xiLbSRjspyJRXgbLS3I,348
|
|
59
|
+
omlish/dataclasses/impl/api.py,sha256=NOuw5dlwztG5AA_gwdF2PJAqvouMdbUf1Si80G26qAY,6244
|
|
60
|
+
omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
|
|
61
|
+
omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
|
|
62
|
+
omlish/dataclasses/impl/descriptors.py,sha256=rEYE1Len99agTQCC25hSPMnM19BgPr0ZChABGi58Fdk,2476
|
|
63
|
+
omlish/dataclasses/impl/exceptions.py,sha256=WD0Tr1TnjUN4OR3f3rs8CgqtP2KBA1tKjPIbZO8Tzm0,178
|
|
64
|
+
omlish/dataclasses/impl/fields.py,sha256=zBa-XjJJQ7dOP_se-A8Q4Vv3ol2xjpTQXTUBCnr1UVs,4377
|
|
65
|
+
omlish/dataclasses/impl/frozen.py,sha256=5wKtt8WvPYCkHPrwR024mpvbFzqcbPQfgiFvy3orRJo,1692
|
|
66
|
+
omlish/dataclasses/impl/hashing.py,sha256=FKnHuXCg9ylrzK2TLGqO5yfRN4HX3F415CSLlVYXtYE,3190
|
|
67
|
+
omlish/dataclasses/impl/init.py,sha256=yw9iInFHaR_TFWRzsryr8vgStHMQwqubL-s7pY5k1sA,5652
|
|
68
|
+
omlish/dataclasses/impl/internals.py,sha256=LTCqGT8AhyGTWwioGrBpTJzDzPvAtizQKb0NBNKcNs0,2989
|
|
69
|
+
omlish/dataclasses/impl/main.py,sha256=vAVdqb4cgvyssA7rCFl9i2D0MAffX45YtQbGQ2te5_c,5189
|
|
70
|
+
omlish/dataclasses/impl/metaclass.py,sha256=dlQEIN9MHBirll7Nx3StpzxYxXjrqxJ-QsorMcCNt7w,2828
|
|
71
|
+
omlish/dataclasses/impl/metadata.py,sha256=HGqAtMcP422X4kPx93btcxE-n4guBFm6-N-S4nobgk4,1407
|
|
72
|
+
omlish/dataclasses/impl/order.py,sha256=zWvWDkSTym8cc7vO1cLHqcBhhjOlucHOCUVJcdh4jt0,1369
|
|
73
|
+
omlish/dataclasses/impl/params.py,sha256=M-xg9IeFftVy795oqlp7Yw8jE-7wG2K4vaFhXHKmL1k,2538
|
|
74
|
+
omlish/dataclasses/impl/processing.py,sha256=iUvaNwRAt8rQsLIIkvRye5rfk6xhgR35EbcdwZCZec8,366
|
|
75
|
+
omlish/dataclasses/impl/reflect.py,sha256=13af257_sjjM-4wfH84nl7CoHHMV_eFZpkIgUawZ3TE,5307
|
|
76
|
+
omlish/dataclasses/impl/replace.py,sha256=wS9GHX4fIwaPv1JBJzIewdBfXyK3X3V7_t55Da87dYo,1217
|
|
77
|
+
omlish/dataclasses/impl/repr.py,sha256=oLXBTxqp88NKmz82HrJeGiTEiwK4l5LlXQT9Q0-tX3c,1605
|
|
78
|
+
omlish/dataclasses/impl/simple.py,sha256=EovA-GpmQYtB_svItO2byTAWqbKGF4njz0MdQts3QBU,3157
|
|
79
|
+
omlish/dataclasses/impl/slots.py,sha256=_sm-x9v1tPnXEHBHNUMTHZocgVyhZaPdvamIPPBUVyk,2635
|
|
80
|
+
omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
|
|
81
|
+
omlish/diag/__init__.py,sha256=BYQoq12W2qU0O7m2Z-RLCX6YLIYEW9MmfN7_i9--Yk0,132
|
|
82
|
+
omlish/diag/procfs.py,sha256=ggIeFoaNZ4j6HvKTiXD6Q3b9apgto7j55pwswCrIHXE,9581
|
|
83
|
+
omlish/diag/procstats.py,sha256=9uQMvVL7Yzf_1F8dW55pcZeCFtP5yUbK1KuGn9bt2Qg,502
|
|
84
|
+
omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
|
|
85
|
+
omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
|
|
86
|
+
omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
|
|
87
|
+
omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
|
|
88
|
+
omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
|
|
89
|
+
omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
|
|
90
|
+
omlish/diag/replserver/server.py,sha256=MBLMouRuJ7eMXBHVsMQS8KGHwZuDThPoNkiJb32UVI0,4896
|
|
91
|
+
omlish/dispatch/__init__.py,sha256=GsiGJ91NKiQptSROtnCSkrZExBkvfDwYvdoTu5dBqF0,117
|
|
92
|
+
omlish/dispatch/_dispatch2.py,sha256=v3tCNyxGpOwY8qTwdp54TlM8mG6OVwtQoUZfYJ_griU,1756
|
|
93
|
+
omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc,2608
|
|
94
|
+
omlish/dispatch/dispatch.py,sha256=8B66wOat30HckcIsCq4pnutBy20iSPwPQOqJ4msHaGU,3739
|
|
95
|
+
omlish/dispatch/functions.py,sha256=S8ElsLi6DKxTdtFGigWaF0vAquwy2sK-3f4iRLaYq70,1522
|
|
96
|
+
omlish/dispatch/methods.py,sha256=utLvLioBgEqa0gR0fpfNEtMDZFGPM4G5p3XHnPt-oIw,5865
|
|
97
|
+
omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
|
+
omlish/formats/dotenv.py,sha256=UjZl3gac-0U24sDjCCGMcCqO1UCWG2Zs8PZ4JdAg2YE,17348
|
|
99
|
+
omlish/formats/json.py,sha256=KRfH-MLOrMXUFVy_eX6RagC37Z-KyfOIXlVdxM6nuxc,6787
|
|
100
|
+
omlish/formats/props.py,sha256=diYjZDsG1s50ImJhkpeinMwjr8952nIVI-0gYhBIvCY,18897
|
|
101
|
+
omlish/formats/yaml.py,sha256=5gvH-e9fVn6C-xpcagnrtM0bSLOsuk3sAQT-aaE4PD4,6653
|
|
102
|
+
omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
|
+
omlish/graphs/dags.py,sha256=JpTGxt5rsK7hy5EUy9rNUlIeDStT9ri86m8xEKiHQLE,3063
|
|
104
|
+
omlish/graphs/domination.py,sha256=45iTyn7mZWPJ1ANrqD96aPXqzEeyFpybMvvcVxo9XvQ,7592
|
|
105
|
+
omlish/graphs/trees.py,sha256=cfWV4FnXqghhmu301bo1XlukTv3jZnBRkee5b4Q2h28,8158
|
|
106
|
+
omlish/graphs/dot/__init__.py,sha256=6-LAx7ytHFQvfLrnxVQG1s8xmApgblERJJCTB2knOHk,642
|
|
107
|
+
omlish/graphs/dot/items.py,sha256=OWPf0-hjBgS1uyy2QgAEn4IgFHJcEg7sHVWeTx1ghZc,4083
|
|
108
|
+
omlish/graphs/dot/rendering.py,sha256=hUSJ5HvSvxnTIC9ynSxxP8IJnVH6quEeDbLzNlUnmuk,3626
|
|
109
|
+
omlish/graphs/dot/utils.py,sha256=_FMwn77WfiiAfLsRTOKWm4IYbNv5kQN22YJ5psw6CWg,801
|
|
110
|
+
omlish/http/__init__.py,sha256=v2f9Hh6bTgcz0MkG9T2JQarzeIgHlDxDT2cbINbpyw8,367
|
|
111
|
+
omlish/http/asgi.py,sha256=wXhBZ21bEl32Kv9yBrRwUR_7pHEgVtHP8ZZwbasQ6-4,3307
|
|
112
|
+
omlish/http/collections.py,sha256=s8w5s4Gewgxxhe2Ai0R45PgJYYifrLgTbU3VXVflHj4,260
|
|
113
|
+
omlish/http/consts.py,sha256=-O0F6qiVWGGT18j8TMP7UNfHCECg1MmByx05oc7Ae9Q,1985
|
|
114
|
+
omlish/http/cookies.py,sha256=x56AvYtwNyQKFzVD1zSGIsfg9oiArd6ICTMEdugP008,6356
|
|
115
|
+
omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
|
|
116
|
+
omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
|
|
117
|
+
omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
|
|
118
|
+
omlish/http/sessions.py,sha256=gj_FgDoETAnLh_pISlwrqS78LFc1c3RNAKHSLYBEr5s,4793
|
|
119
|
+
omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
|
|
120
|
+
omlish/inject/__init__.py,sha256=JQ7x8l9MjU-kJ5ap7cPVq7SY7zbbCIrjyJAF0UeE5-s,1886
|
|
121
|
+
omlish/inject/binder.py,sha256=H8AQ4ecmBOtDL8fMgrU1yUJl1gBADLNcdysRbvO8Wso,4167
|
|
122
|
+
omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
|
|
123
|
+
omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
|
|
124
|
+
omlish/inject/elements.py,sha256=BzTnkNS-3iAMI47LMC2543u6A8Tfk3aJXn3CO191ez4,1547
|
|
125
|
+
omlish/inject/exceptions.py,sha256=_wkN2tF55gQzmMOMKJC_9jYHBZzaBiCDcyqI9Sf2UZs,626
|
|
126
|
+
omlish/inject/injector.py,sha256=CoCUeMm1Oot4sG4Ti1sKCWrhlvtJ5QAeAI22AFWu2RQ,1066
|
|
127
|
+
omlish/inject/inspect.py,sha256=tw49r1RJVHrEHmT8WWA3_Bl9Z0L3lEGRqlLhbM5OmAM,592
|
|
128
|
+
omlish/inject/keys.py,sha256=05KePew5_Cn_zWgBpIcXsa5orxm6xn4YL_IWXEvrSr8,651
|
|
129
|
+
omlish/inject/listeners.py,sha256=AIWUs4OTUPeURU1tS2CXeEbJwC1bZiuya9K6I2ElMns,581
|
|
130
|
+
omlish/inject/managed.py,sha256=Ls54Ah5KDrLHYWmso64xipvCLWPcgl1sUOn2n1tuWag,2107
|
|
131
|
+
omlish/inject/multis.py,sha256=PQcIZbKpTJEOca_4pCp__3jLWLb9n90jZLbDe-xx8dQ,3351
|
|
132
|
+
omlish/inject/origins.py,sha256=OVQkiuRxx6ZtE8ZliufdndtFexcfpj-wZSDkUeGUCYM,534
|
|
133
|
+
omlish/inject/overrides.py,sha256=hrm243slCw_DDRbn3dK5QK1jfHezVokG-WYO2JaQOV8,535
|
|
134
|
+
omlish/inject/privates.py,sha256=hZOa_keY3KlXAzyiZ-sfN697UKXpkfXXNUIEmGT5TAA,641
|
|
135
|
+
omlish/inject/providers.py,sha256=MAla7uDQR63zj9oB9XqN8rK3DGGLSzUKZ4rUU_5dM40,751
|
|
136
|
+
omlish/inject/scopes.py,sha256=0b8Y0VidkpEk7tyxKSbv_1fE-2LomKTYlhFeoEemkwg,1979
|
|
137
|
+
omlish/inject/types.py,sha256=11WVEPkZ-_8cv1BeTDRU-soIYxB_6x7dyWtsa2Iej9U,251
|
|
138
|
+
omlish/inject/utils.py,sha256=_UOZqA8IcLWPqf4Mcg9iIusQ5yxP_6Txg6PWtUYl23o,408
|
|
139
|
+
omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
|
+
omlish/inject/impl/bindings.py,sha256=8H586RCgmvwq53XBL9WMbb-1-Tdw_hh9zxIDCwcHA1c,414
|
|
141
|
+
omlish/inject/impl/elements.py,sha256=bJBbHce_eZyIua2wbcejMwd9Uv-QeYcQ-c5N1qOXSmU,5950
|
|
142
|
+
omlish/inject/impl/injector.py,sha256=WxIVOF6zvipb44302_j-xQZt8vnNCY0gdLX6UWzslXI,7550
|
|
143
|
+
omlish/inject/impl/inspect.py,sha256=erLL1w6GzoPVGwORm56ra9vR-IH5BoMQrr7POwaFDjU,3050
|
|
144
|
+
omlish/inject/impl/multis.py,sha256=rRIWNCiTGaSWQUz_jxEy8LUmzdJDAlG94sLHYDS-ncg,2048
|
|
145
|
+
omlish/inject/impl/origins.py,sha256=-cdcwz3BWb5LuC9Yn5ynYOwyPsKH06-kCc-3U0PxZ5w,1640
|
|
146
|
+
omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
|
|
147
|
+
omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
|
|
148
|
+
omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
|
|
149
|
+
omlish/inject/impl/scopes.py,sha256=M_RO_pGUr5mX84YyYmkr6CsMhkkV189_gOUsaYmYes4,5768
|
|
150
|
+
omlish/lang/__init__.py,sha256=DSFUT2mChw4kZjr3lUgVfzUf5BwtXMVzwtFFmmvno-Y,3145
|
|
151
|
+
omlish/lang/cached.py,sha256=0gjdxVELu69oRQ3kqSV3cGIHg6Nf4pcCIIRTEU52tCc,7607
|
|
152
|
+
omlish/lang/clsdct.py,sha256=LXwLCULeI_8Np-7-pZkyNAHpUZLcQiBEQiHwKYQ0WRo,1742
|
|
153
|
+
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
|
154
|
+
omlish/lang/contextmanagers.py,sha256=C6FU_1ftMvp_Zbz9ixf_HsCSYQot_TZ7mpZBJEBc3Xc,8333
|
|
155
|
+
omlish/lang/descriptors.py,sha256=taJzRU-lKszfaIH847UEE9Kb_krhCqPGYdu7CTBXr5Q,5900
|
|
156
|
+
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
|
157
|
+
omlish/lang/functions.py,sha256=T4nPl46EHHGjMkz3FTRjsVhS9Y8HKcwM0jROU6_-Rv0,3619
|
|
158
|
+
omlish/lang/imports.py,sha256=04ugFC8NI5sbL7NH4V0r0q_nFsP_AMkHLz697CVkMtQ,6274
|
|
159
|
+
omlish/lang/iterables.py,sha256=_q6rHbdFfW3VBqez0IV3rUABoNxsA_oBv_sykm5zsbQ,2243
|
|
160
|
+
omlish/lang/maybes.py,sha256=NYHZDjqDtwPMheDrj2VtUVujxRPf8Qpgk4ZlZCTvBZc,3492
|
|
161
|
+
omlish/lang/objects.py,sha256=GTfVRpbPIuJeZggK-Ek7nsrZog8LGjt10YfDJ07pttQ,3536
|
|
162
|
+
omlish/lang/resolving.py,sha256=UgrX-vxXtCGGEmnAMUYP4bUZ6-Ok0EcHVEKAZYbAS-o,1597
|
|
163
|
+
omlish/lang/strings.py,sha256=ykeoou4JK7CEZXzrUJfqVOalEDvE--j0uhHt_SrsrUs,2834
|
|
164
|
+
omlish/lang/sys.py,sha256=UoZz_PJYVKLQAKqYxxn-LHz1okK_38I__maZgnXMcxU,406
|
|
165
|
+
omlish/lang/timeouts.py,sha256=vECdWYhc_IZgcal1Ng1Y42wf2FV3KAx-i8As-MgGHIQ,1186
|
|
166
|
+
omlish/lang/typing.py,sha256=pKDBHTYzoQtFCUxtlDDTpnKixZBxeE5Pblvv1nJbRYE,3236
|
|
167
|
+
omlish/lang/classes/__init__.py,sha256=j1p0_uuMznKrY2EhMoj20uv6vx4LXljMzp7AaKe0mmU,530
|
|
168
|
+
omlish/lang/classes/abstract.py,sha256=goIV14oY24EOs88eVe6E6NyrSPOOLMOcWTXTMuYKiqc,2304
|
|
169
|
+
omlish/lang/classes/restrict.py,sha256=n_B-XqafVyO1caZzfbsv7tPxDJOBLl1BzQkoDSse0A4,3353
|
|
170
|
+
omlish/lang/classes/simple.py,sha256=U9WB3S9svudIWF7bitptXzVjLHnlG_Xh72K-jIAekaU,3068
|
|
171
|
+
omlish/lang/classes/virtual.py,sha256=54D4qOpDWHpP28Oc6bbBjdxquLvdvqMqLXj2XOnAeaQ,3323
|
|
172
|
+
omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
|
|
173
|
+
omlish/lifecycles/abstract.py,sha256=70CQyZy-c9a2o0ZJxPeUT7eYjWZTBrp2HpUBnrHdAOM,1109
|
|
174
|
+
omlish/lifecycles/base.py,sha256=ceXrNSzuv7iiTlX96UI1fvsQ70OgOmZl-UisDPyA3NA,1394
|
|
175
|
+
omlish/lifecycles/contextmanagers.py,sha256=W0trOo6atbPSCoswmtUVOayAYnJ722qHBgda1oYxUEc,2073
|
|
176
|
+
omlish/lifecycles/controller.py,sha256=L9U2KQohrOfxJnsu-LYNVBvLyUJnRCZyo1ehH1DjG14,3480
|
|
177
|
+
omlish/lifecycles/manager.py,sha256=Au66KaO-fI-SEJALaPUJsCHYW2GE20xextk1wKn2BEU,5445
|
|
178
|
+
omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
|
|
179
|
+
omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
|
|
180
|
+
omlish/lite/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
181
|
+
omlish/lite/cached.py,sha256=dUm647FbIsoxWT23XUFM51F7i-C2Buxr5b5zzgbCtQI,546
|
|
182
|
+
omlish/lite/check.py,sha256=DR3Zj-7o4Y7pNheln68nN_BdX9zaotGQ2y8v97GDiWQ,535
|
|
183
|
+
omlish/lite/contextmanagers.py,sha256=HnQJiyrOmSvTL22XRJrFl5CLpCyHD9fsntEUAr9G-60,427
|
|
184
|
+
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
|
185
|
+
omlish/lite/logs.py,sha256=UJURLPKZvPnnF-6B7ySM36KO3auzz9DsSYKug0dF454,1197
|
|
186
|
+
omlish/lite/marshal.py,sha256=MUn5DeuLheMZBiwnWwYXqRWPeSuXYpC7mm32oZ0mQN4,8526
|
|
187
|
+
omlish/lite/reflect.py,sha256=9QYJwdINraq1JNMEgvoqeSlVvRRgOXpxAkpgX8EgRXc,1307
|
|
188
|
+
omlish/lite/runtime.py,sha256=VUhmNQvwf8QzkWSKj4Q0ReieJA_PzHaJNRBivfTseow,452
|
|
189
|
+
omlish/lite/secrets.py,sha256=ToaS10AcH7UOFi7XHKp2mikLErp1Rrne5mtFJ388hF8,462
|
|
190
|
+
omlish/lite/strings.py,sha256=9dO_A6EkhcTZ2xmOUGSOMT-mx9BnoOzYu1-ocSrDJaA,670
|
|
191
|
+
omlish/lite/subprocesses.py,sha256=KuGV3ImehMjCUK0JoV3pUtG_7o5wei1lRDn9HxzByAg,3063
|
|
192
|
+
omlish/logs/__init__.py,sha256=V8jEdb5rj9Dli0b9qtR0ZYstRoIlxWqbU38UmEOXbfY,419
|
|
193
|
+
omlish/logs/_abc.py,sha256=UgrCUQVUi_PvT3p1CEkb3P74CFrFcZq2AFby3GEUv9M,5974
|
|
194
|
+
omlish/logs/configs.py,sha256=yHumOuo5rWsOf2hnF2eyHHz-NKSLd-VBw8IRq-r94EM,1981
|
|
195
|
+
omlish/logs/filters.py,sha256=dk-_sRQhp_rCGF48qpPj5viHOBEOu78quXe9pHHs78c,187
|
|
196
|
+
omlish/logs/formatters.py,sha256=lI2KB8w_PDVX4YkWkImtki0MRKN2dlT6F2KTNEhYRJA,1970
|
|
197
|
+
omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
|
|
198
|
+
omlish/marshal/__init__.py,sha256=52Jl7SgSA0Ei7TBrNmcbXCcICiU6oBS9NhjGg8zvgKI,1383
|
|
199
|
+
omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
|
|
200
|
+
omlish/marshal/base.py,sha256=Oa9FIF4SVDao7QYvPIHPMp_kp4sA6JfLSV4aEcprYTk,5931
|
|
201
|
+
omlish/marshal/base64.py,sha256=Q3ibujdhgFgDaeHahSe7WdcqvOyalWigwUlV-U-2ckQ,1018
|
|
202
|
+
omlish/marshal/dataclasses.py,sha256=PMAwBblcmCNVifDul0Vl09saBZ3BYEOIOJABZ2zc4Bg,3667
|
|
203
|
+
omlish/marshal/datetimes.py,sha256=0ffg8cEvx9SMKIXZGD9b7MqpLfmgw0uKKdn6YTfoqok,3714
|
|
204
|
+
omlish/marshal/enums.py,sha256=-0fKutBbyz8ygEaA0_P_8IOJrI9jMGigmnPbutV9Bg4,1464
|
|
205
|
+
omlish/marshal/exceptions.py,sha256=jwQWn4LcPnadT2KRI_1JJCOSkwWh0yHnYK9BmSkNN4U,302
|
|
206
|
+
omlish/marshal/factories.py,sha256=UV2Svjok-lTWsRqKGh-CeuAhvlohw9uJe7ZLyoKMvTM,2968
|
|
207
|
+
omlish/marshal/forbidden.py,sha256=BNshzm4lN5O8sUZ1YvxrSYq3WPklq9NMQCRZ7RC3DLM,865
|
|
208
|
+
omlish/marshal/global_.py,sha256=8XCjPcIjA65StESshzNfQiSyuckVaEiiWROmC3qk0mo,1117
|
|
209
|
+
omlish/marshal/iterables.py,sha256=y4EZirLrbv_RGG29cq6TsrEbEPjt1GEyuH3BNYkGQFU,2245
|
|
210
|
+
omlish/marshal/mappings.py,sha256=-7n_4j52fGieV_ANF7qlMzk0nkeXWMrBEQI5OTvW2bo,2516
|
|
211
|
+
omlish/marshal/naming.py,sha256=UCviMAXTTUpW1lyAGymybGP2rFUAW44P1X0zrIVbvi4,464
|
|
212
|
+
omlish/marshal/numbers.py,sha256=oY_yMNJEnJhjfLh89gpPXvKqeUyhQcaTcQB6ecyHiG8,1704
|
|
213
|
+
omlish/marshal/objects.py,sha256=JD7GBY1hYUyRpCufpxDAwgII98ewzGDct2IF0HxgFN0,2767
|
|
214
|
+
omlish/marshal/optionals.py,sha256=r0XB5rqfasvgZJNrKYd6Unq2U4nHt3JURi26j0dYHlw,1499
|
|
215
|
+
omlish/marshal/polymorphism.py,sha256=KBH4VnMl0SdSfjGNtZumBT7q3jB8wkDT5DKF7SD64C4,5582
|
|
216
|
+
omlish/marshal/primitives.py,sha256=-gLR_RTPTM8YP6t6PL5sNM1lAtwcZDHc9lxkimoQ9jw,1097
|
|
217
|
+
omlish/marshal/registries.py,sha256=GI2KogcxawMkk02Ky7-TsnijChoe1I7YTOPIbUNwSAI,1665
|
|
218
|
+
omlish/marshal/standard.py,sha256=747rai9Rq0zTWQMIL2gLmU7p7c2tyHYosfQJipMS1-c,2657
|
|
219
|
+
omlish/marshal/utils.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
|
|
220
|
+
omlish/marshal/uuids.py,sha256=H4B7UX_EPNmP2tC8bubcKrPLTS4aQu98huvbXQ3Zv2g,910
|
|
221
|
+
omlish/marshal/values.py,sha256=ssHiWdg_L6M17kAn8GiGdPW7UeQOm3RDikWkvwblf5I,263
|
|
222
|
+
omlish/reflect/__init__.py,sha256=iWDCNJNP4afPcv-MxZRJSIRQ4NRw6XYPyRHhBXb5YIA,667
|
|
223
|
+
omlish/reflect/isinstance.py,sha256=x5T9S2634leinBT4hl3CZZkRttvdvvlxChkC_x9Qu2s,1176
|
|
224
|
+
omlish/reflect/ops.py,sha256=RJ6jzrM4ieFsXzWyNXWV43O_WgzEaUvlHSc5N2ezW2A,2044
|
|
225
|
+
omlish/reflect/subst.py,sha256=JM2RGv2-Rcex8wCqhmgvRG59zD242P9jM3O2QLjKWWo,3586
|
|
226
|
+
omlish/reflect/types.py,sha256=_AZeSkqraWkDBrBEq5mT4DiTS98ZHyiWR7TFSVJqJSk,6815
|
|
227
|
+
omlish/secrets/__init__.py,sha256=VKB2IF9vz4h4RXcZxgXj36KXOLcGBzfqVnxPgPDWpmg,408
|
|
228
|
+
omlish/secrets/crypto.py,sha256=6CsLy0UEqCrBK8Xx_3-iFF6SKtu2GlEqUQ8-MliY3tk,3709
|
|
229
|
+
omlish/secrets/marshal.py,sha256=nVzsvQH5w3T2oMP7DCc1SLKxyR5e66psM57VOQoL0QA,2086
|
|
230
|
+
omlish/secrets/openssl.py,sha256=nAA_wxk86G92B7027AoAlAiFliMjxLVs7xlaOAFGayE,6225
|
|
231
|
+
omlish/secrets/passwords.py,sha256=3r-vEK6Gp6aq4L5Csnd06QnrjO9xfzHJP-g_7I9W_ao,4101
|
|
232
|
+
omlish/secrets/secrets.py,sha256=hFN82uYiBVx8YSE86leWNxb4IRp3qdwZPOi4w04h8u0,6855
|
|
233
|
+
omlish/secrets/subprocesses.py,sha256=EcnKlHHtnUMHGrBWXDfu8tv28wlgZx4P4GOiuPW9Vo8,1105
|
|
234
|
+
omlish/sql/__init__.py,sha256=pLv2EQmAwcGXN0Y3AE8K5JjyN_4GaHRMHyExaDFm5yU,181
|
|
235
|
+
omlish/sql/_abc.py,sha256=HLhnnLZ7l0r_N99I-RCqJe6VHth-9iluU7cR-7-5jfs,1519
|
|
236
|
+
omlish/sql/asyncs.py,sha256=Wye3dwh7oZEGYz2Y4DZQSHtW4xjI2AH5qjW-BSS2IfU,3688
|
|
237
|
+
omlish/sql/dbs.py,sha256=lpdFmm2vTwLoBiVYGj9yPsVcTEYYNCxlYZZpjfChzkY,1870
|
|
238
|
+
omlish/sql/duckdb.py,sha256=Z3wiZEn_21Lu1ElFRX0ATzoBMCw0KJxINjTRuTexYGM,3748
|
|
239
|
+
omlish/sql/exprs.py,sha256=gO4Fj4xEY-PuDgV-N8hBMy55glZz7O-4H7v1LWabfZY,323
|
|
240
|
+
omlish/sql/secrets.py,sha256=mDUunIACxHBsPD_ONbHQJVndeMMzJR4vMC2WWX7tGfY,177
|
|
241
|
+
omlish/sql/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
|
|
242
|
+
omlish/testing/__init__.py,sha256=l13axR7dyVE9T1e6w1pMYtAkW3vS2J97nBcYQ1FUv18,136
|
|
243
|
+
omlish/testing/testing.py,sha256=p1bP9fnxmYzOvPJ_7S1wq7PrKMzclK8PgYH5DwaQiHk,2918
|
|
244
|
+
omlish/testing/pytest/__init__.py,sha256=b6ObMEHTZnvGEI_de6nN1x5FyitV6B2mNYkurA4Q7fo,336
|
|
245
|
+
omlish/testing/pytest/helpers.py,sha256=TJpD60mBtLi9FtxX4TThfuXvg5FIRPSiZk1aeRwe-D4,197
|
|
246
|
+
omlish/testing/pytest/marks.py,sha256=LbI5lO29cbh_FA5-vktwtcZwWjxn9URI0pprzmPRyJo,1260
|
|
247
|
+
omlish/testing/pytest/inject/__init__.py,sha256=pdRKv1HcDmJ_yArKJbYITPXXZthRSGgBJWqITr0Er38,117
|
|
248
|
+
omlish/testing/pytest/inject/harness.py,sha256=IfcqR1rcIYkl_66Mmhy1KEeCWFJ95wr68Vs5687bPlY,5053
|
|
249
|
+
omlish/testing/pytest/plugins/__init__.py,sha256=Kx4OgGY_whB2I-5c7iI41j-dAaerEIlMEnWN2orGHQI,405
|
|
250
|
+
omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-btalYJkgjLc8Te8,77
|
|
251
|
+
omlish/testing/pytest/plugins/asyncs.py,sha256=Gpj2c6TM33iJUE_bGfdGWTHKMt-nTWw30CHsre2V6pc,4274
|
|
252
|
+
omlish/testing/pytest/plugins/logging.py,sha256=1zs6Xe54wiaSjabCviaFXwKkoN97CKm3mA5mEoUeJGs,380
|
|
253
|
+
omlish/testing/pytest/plugins/managermarks.py,sha256=pDEcCNdDAcTS4jjZHSnAfmzqMJDBcJcSsM3QNhbJ6Gs,1485
|
|
254
|
+
omlish/testing/pytest/plugins/pydevd.py,sha256=u1fxfCgFw4wGKBkMV_H_l9WI8JoUwlRff4iHEr_WYeE,319
|
|
255
|
+
omlish/testing/pytest/plugins/repeat.py,sha256=flSQzE9GFOWksVKz-mUGnpxJpv3yRqn1G4K8pW7JHs0,498
|
|
256
|
+
omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4Y7vfDRhwM,1041
|
|
257
|
+
omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74N8bYX2VESFE,707
|
|
258
|
+
omlish/testing/pytest/plugins/switches.py,sha256=9FtN5qtPBoS-teEp54OHPF6jlZJakRJdq4pnLJpPj_A,3001
|
|
259
|
+
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
260
|
+
omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
|
261
|
+
omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
|
|
262
|
+
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
|
263
|
+
omlish/text/parts.py,sha256=KGgo0wHOIMVMZtDso-rhSWKAcAkYAH2IGpg9tULabu8,6505
|
|
264
|
+
omlish-0.0.0.dev7.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
265
|
+
omlish-0.0.0.dev7.dist-info/METADATA,sha256=JWyAEL1oLxlMaL4EHFxm8F1fcMe7EU2QLi-jlYSgGlQ,2121
|
|
266
|
+
omlish-0.0.0.dev7.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
|
|
267
|
+
omlish-0.0.0.dev7.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
268
|
+
omlish-0.0.0.dev7.dist-info/RECORD,,
|
omlish/reflect.py
DELETED
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
TODO:
|
|
3
|
-
- callables..
|
|
4
|
-
- uniform collection isinstance - items() for mappings, iter() for other
|
|
5
|
-
- also check instance type in isinstance not just items lol
|
|
6
|
-
- ta.Generic in mro causing trouble - omit? no longer 1:1
|
|
7
|
-
- cache this shit, esp generic_mro shit
|
|
8
|
-
- cache __hash__ in Generic/Union
|
|
9
|
-
"""
|
|
10
|
-
import collections.abc
|
|
11
|
-
import types
|
|
12
|
-
import typing as ta
|
|
13
|
-
|
|
14
|
-
from . import c3
|
|
15
|
-
from . import lang
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if ta.TYPE_CHECKING:
|
|
19
|
-
from .collections import cache
|
|
20
|
-
else:
|
|
21
|
-
cache = lang.proxy_import('.collections.cache', __package__)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_NoneType = types.NoneType # type: ignore
|
|
25
|
-
|
|
26
|
-
_NONE_TYPE_FROZENSET: frozenset['Type'] = frozenset([_NoneType])
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
_GenericAlias = ta._GenericAlias # type: ignore # noqa
|
|
30
|
-
# _CallableGenericAlias = ta._CallableGenericAlias # type: ignore # noqa
|
|
31
|
-
_SpecialGenericAlias = ta._SpecialGenericAlias # type: ignore # noqa
|
|
32
|
-
_UnionGenericAlias = ta._UnionGenericAlias # type: ignore # noqa
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
##
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class _Special(ta.NamedTuple):
|
|
39
|
-
name: str
|
|
40
|
-
alias: _SpecialGenericAlias # type: ignore
|
|
41
|
-
origin: type
|
|
42
|
-
nparams: int
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
_KNOWN_SPECIALS = [
|
|
46
|
-
_Special(
|
|
47
|
-
v._name, # noqa
|
|
48
|
-
v,
|
|
49
|
-
v.__origin__,
|
|
50
|
-
v._nparams, # noqa
|
|
51
|
-
)
|
|
52
|
-
for v in ta.__dict__.values()
|
|
53
|
-
if isinstance(v, _SpecialGenericAlias)
|
|
54
|
-
]
|
|
55
|
-
|
|
56
|
-
_KNOWN_SPECIALS_BY_NAME = {s.name: s for s in _KNOWN_SPECIALS}
|
|
57
|
-
_KNOWN_SPECIALS_BY_ALIAS = {s.alias: s for s in _KNOWN_SPECIALS}
|
|
58
|
-
_KNOWN_SPECIALS_BY_ORIGIN = {s.origin: s for s in _KNOWN_SPECIALS}
|
|
59
|
-
|
|
60
|
-
_KNOWN_SPECIAL_TYPE_VARS = tuple(
|
|
61
|
-
ta.TypeVar(f'_{i}') # noqa
|
|
62
|
-
for i in range(max(s.nparams for s in _KNOWN_SPECIALS) + 1)
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
##
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def get_params(obj: ta.Any) -> tuple[ta.TypeVar, ...]:
|
|
70
|
-
if isinstance(obj, type):
|
|
71
|
-
if issubclass(obj, ta.Generic): # type: ignore
|
|
72
|
-
return obj.__dict__.get('__parameters__', ()) # noqa
|
|
73
|
-
|
|
74
|
-
if (ks := _KNOWN_SPECIALS_BY_ORIGIN.get(obj)) is not None:
|
|
75
|
-
return _KNOWN_SPECIAL_TYPE_VARS[:ks.nparams]
|
|
76
|
-
|
|
77
|
-
oty = type(obj)
|
|
78
|
-
|
|
79
|
-
if oty is _GenericAlias or oty is ta.GenericAlias: # type: ignore # noqa
|
|
80
|
-
return obj.__dict__.get('__parameters__', ()) # noqa
|
|
81
|
-
|
|
82
|
-
raise TypeError(obj)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def is_union_type(cls: ta.Any) -> bool:
|
|
86
|
-
if hasattr(ta, 'UnionType'):
|
|
87
|
-
return ta.get_origin(cls) in {ta.Union, getattr(ta, 'UnionType')}
|
|
88
|
-
else:
|
|
89
|
-
return ta.get_origin(cls) in {ta.Union}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
##
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
Type = ta.Union[
|
|
96
|
-
type,
|
|
97
|
-
ta.TypeVar,
|
|
98
|
-
'NewType',
|
|
99
|
-
'Union',
|
|
100
|
-
'Generic',
|
|
101
|
-
]
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
class Union(ta.NamedTuple):
|
|
105
|
-
args: frozenset[Type]
|
|
106
|
-
|
|
107
|
-
@property
|
|
108
|
-
def is_optional(self) -> bool:
|
|
109
|
-
return _NoneType in self.args
|
|
110
|
-
|
|
111
|
-
def without_none(self) -> Type:
|
|
112
|
-
if _NoneType not in self.args:
|
|
113
|
-
return self
|
|
114
|
-
rem = self.args - _NONE_TYPE_FROZENSET
|
|
115
|
-
if len(rem) == 1:
|
|
116
|
-
return next(iter(rem))
|
|
117
|
-
return Union(rem)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
class Generic(ta.NamedTuple):
|
|
121
|
-
cls: type
|
|
122
|
-
args: tuple[Type, ...] # map[int, V] = (int, V) | map[T, T] = (T, T)
|
|
123
|
-
params: tuple[ta.TypeVar, ...] # map[int, V] = (_0, _1) | map[T, T] = (_0, _1)
|
|
124
|
-
# params2: tuple[ta.TypeVar, ...] # map[int, V] = (V,) | map[T, T] = (T,)
|
|
125
|
-
obj: ta.Any
|
|
126
|
-
|
|
127
|
-
def __repr__(self) -> str:
|
|
128
|
-
return (
|
|
129
|
-
f'{self.__class__.__name__}('
|
|
130
|
-
f'cls={self.cls.__name__}, '
|
|
131
|
-
f'args={self.args!r}, '
|
|
132
|
-
f'params={self.params!r})'
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
class NewType(ta.NamedTuple):
|
|
137
|
-
obj: ta.Any
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
TYPES: tuple[type, ...] = (
|
|
141
|
-
type,
|
|
142
|
-
ta.TypeVar,
|
|
143
|
-
Union,
|
|
144
|
-
Generic,
|
|
145
|
-
NewType,
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def type_(obj: ta.Any) -> Type:
|
|
150
|
-
if isinstance(obj, (Union, Generic, ta.TypeVar, NewType)): # noqa
|
|
151
|
-
return obj
|
|
152
|
-
|
|
153
|
-
oty = type(obj)
|
|
154
|
-
|
|
155
|
-
if oty is _UnionGenericAlias or oty is types.UnionType:
|
|
156
|
-
return Union(frozenset(type_(a) for a in ta.get_args(obj)))
|
|
157
|
-
|
|
158
|
-
if isinstance(obj, ta.NewType): # noqa
|
|
159
|
-
return NewType(oty)
|
|
160
|
-
|
|
161
|
-
if (
|
|
162
|
-
oty is _GenericAlias or
|
|
163
|
-
oty is ta.GenericAlias # type: ignore # noqa
|
|
164
|
-
):
|
|
165
|
-
origin = ta.get_origin(obj)
|
|
166
|
-
args = ta.get_args(obj)
|
|
167
|
-
if origin is ta.Generic:
|
|
168
|
-
params = args
|
|
169
|
-
else:
|
|
170
|
-
params = get_params(origin)
|
|
171
|
-
if len(args) != len(params):
|
|
172
|
-
raise TypeError(f'Mismatched {args=} and {params=} for {obj=}')
|
|
173
|
-
return Generic(
|
|
174
|
-
origin,
|
|
175
|
-
tuple(type_(a) for a in args),
|
|
176
|
-
params,
|
|
177
|
-
obj,
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
if isinstance(obj, type):
|
|
181
|
-
if issubclass(obj, ta.Generic): # type: ignore
|
|
182
|
-
params = get_params(obj)
|
|
183
|
-
return Generic(
|
|
184
|
-
obj,
|
|
185
|
-
params,
|
|
186
|
-
params,
|
|
187
|
-
obj,
|
|
188
|
-
)
|
|
189
|
-
return obj
|
|
190
|
-
|
|
191
|
-
if isinstance(obj, _SpecialGenericAlias):
|
|
192
|
-
if (ks := _KNOWN_SPECIALS_BY_ALIAS.get(obj)) is not None:
|
|
193
|
-
params = _KNOWN_SPECIAL_TYPE_VARS[:ks.nparams]
|
|
194
|
-
return Generic(
|
|
195
|
-
ks.origin,
|
|
196
|
-
params,
|
|
197
|
-
params,
|
|
198
|
-
obj,
|
|
199
|
-
)
|
|
200
|
-
|
|
201
|
-
raise TypeError(obj)
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
##
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
def types_equivalent(l: Type, r: Type) -> bool:
|
|
208
|
-
if isinstance(l, Generic) and isinstance(r, Generic):
|
|
209
|
-
return l.cls == r.cls and l.args == r.args
|
|
210
|
-
return l == r
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
def get_underlying(nt: NewType) -> Type:
|
|
214
|
-
return type_(nt.obj.__supertype__) # noqa
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
def get_concrete_type(ty: Type) -> type | None:
|
|
218
|
-
if isinstance(ty, type):
|
|
219
|
-
return ty
|
|
220
|
-
if isinstance(ty, Generic):
|
|
221
|
-
return ty.cls
|
|
222
|
-
if isinstance(ty, NewType):
|
|
223
|
-
return get_concrete_type(get_underlying(ty))
|
|
224
|
-
if isinstance(ty, (Union, ta.TypeVar)):
|
|
225
|
-
return None
|
|
226
|
-
raise TypeError(ty)
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
def get_type_var_replacements(ty: Type) -> ta.Mapping[ta.TypeVar, Type]:
|
|
230
|
-
if isinstance(ty, Generic):
|
|
231
|
-
return dict(zip(ty.params, ty.args))
|
|
232
|
-
return {}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
def to_annotation(ty: Type) -> ta.Any:
|
|
236
|
-
if isinstance(ty, Generic):
|
|
237
|
-
return ty.obj if ty.obj is not None else ty.cls
|
|
238
|
-
if isinstance(ty, Union):
|
|
239
|
-
return ta.Union[*tuple(to_annotation(e) for e in ty.args)]
|
|
240
|
-
if isinstance(ty, (type, ta.TypeVar, NewType)):
|
|
241
|
-
return ty
|
|
242
|
-
raise TypeError(ty)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
def replace_type_vars(
|
|
246
|
-
ty: Type,
|
|
247
|
-
rpl: ta.Mapping[ta.TypeVar, Type],
|
|
248
|
-
*,
|
|
249
|
-
update_aliases: bool = False,
|
|
250
|
-
) -> Type:
|
|
251
|
-
def rec(cur):
|
|
252
|
-
if isinstance(cur, type):
|
|
253
|
-
return cur
|
|
254
|
-
if isinstance(cur, NewType):
|
|
255
|
-
return cur
|
|
256
|
-
if isinstance(cur, Generic):
|
|
257
|
-
args = tuple(rec(a) for a in cur.args)
|
|
258
|
-
if update_aliases:
|
|
259
|
-
obj = cur.obj
|
|
260
|
-
if (ops := get_params(obj)):
|
|
261
|
-
nargs = [to_annotation(rpl[p]) for p in ops]
|
|
262
|
-
if ta.get_origin(obj) is ta.Generic:
|
|
263
|
-
# FIXME: None? filter_typing_generic in get_generic_bases?
|
|
264
|
-
pass
|
|
265
|
-
else:
|
|
266
|
-
obj = cur.obj[*nargs]
|
|
267
|
-
else:
|
|
268
|
-
obj = None
|
|
269
|
-
return cur._replace(args=args, obj=obj)
|
|
270
|
-
if isinstance(cur, Union):
|
|
271
|
-
return Union(frozenset(rec(e) for e in cur.args))
|
|
272
|
-
if isinstance(cur, ta.TypeVar):
|
|
273
|
-
return rpl[cur]
|
|
274
|
-
raise TypeError(cur)
|
|
275
|
-
|
|
276
|
-
return rec(ty)
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
class GenericSubstitution:
|
|
280
|
-
def __init__(
|
|
281
|
-
self,
|
|
282
|
-
*,
|
|
283
|
-
update_aliases: bool = False,
|
|
284
|
-
cache_size: int = 0, # FIXME: ta.Generic isn't weakrefable..
|
|
285
|
-
) -> None:
|
|
286
|
-
super().__init__()
|
|
287
|
-
|
|
288
|
-
self._update_aliases = update_aliases
|
|
289
|
-
|
|
290
|
-
if cache_size > 0:
|
|
291
|
-
self.get_generic_bases = cache.cache(weak_keys=True, max_size=cache_size)(self.get_generic_bases) # type: ignore # noqa
|
|
292
|
-
self.generic_mro = cache.cache(weak_keys=True, max_size=cache_size)(self.generic_mro) # type: ignore
|
|
293
|
-
|
|
294
|
-
def get_generic_bases(self, ty: Type) -> tuple[Type, ...]:
|
|
295
|
-
if (cty := get_concrete_type(ty)) is not None:
|
|
296
|
-
rpl = get_type_var_replacements(ty)
|
|
297
|
-
ret: list[Type] = []
|
|
298
|
-
for b in types.get_original_bases(cty):
|
|
299
|
-
bty = type_(b)
|
|
300
|
-
if isinstance(bty, Generic) and isinstance(b, type):
|
|
301
|
-
# FIXME: throws away relative types, but can't use original vars as they're class-contextual
|
|
302
|
-
bty = type_(b[*((ta.Any,) * len(bty.params))]) # type: ignore
|
|
303
|
-
rty = replace_type_vars(bty, rpl, update_aliases=self._update_aliases)
|
|
304
|
-
ret.append(rty)
|
|
305
|
-
return tuple(ret)
|
|
306
|
-
return ()
|
|
307
|
-
|
|
308
|
-
def generic_mro(self, obj: ta.Any) -> list[Type]:
|
|
309
|
-
mro = c3.mro(
|
|
310
|
-
type_(obj),
|
|
311
|
-
get_bases=lambda t: self.get_generic_bases(t),
|
|
312
|
-
is_subclass=lambda l, r: issubclass(get_concrete_type(l), get_concrete_type(r)), # type: ignore
|
|
313
|
-
)
|
|
314
|
-
return [ty for ty in mro if get_concrete_type(ty) is not ta.Generic]
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
DEFAULT_GENERIC_SUBSTITUTION = GenericSubstitution()
|
|
318
|
-
|
|
319
|
-
get_generic_bases = DEFAULT_GENERIC_SUBSTITUTION.get_generic_bases
|
|
320
|
-
generic_mro = DEFAULT_GENERIC_SUBSTITUTION.generic_mro
|
|
321
|
-
|
|
322
|
-
ALIAS_UPDATING_GENERIC_SUBSTITUTION = GenericSubstitution(update_aliases=True)
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
##
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
KNOWN_GENERICS: ta.AbstractSet[type] = frozenset([
|
|
329
|
-
collections.abc.Mapping,
|
|
330
|
-
collections.abc.Sequence,
|
|
331
|
-
collections.abc.Set,
|
|
332
|
-
])
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
def isinstance_of(rfl: Type) -> ta.Callable[[ta.Any], bool]:
|
|
336
|
-
if isinstance(rfl, type):
|
|
337
|
-
return lambda o: isinstance(o, rfl)
|
|
338
|
-
|
|
339
|
-
if isinstance(rfl, NewType):
|
|
340
|
-
return isinstance_of(get_underlying(rfl))
|
|
341
|
-
|
|
342
|
-
if isinstance(rfl, Union):
|
|
343
|
-
fns = [isinstance_of(a) for a in rfl.args]
|
|
344
|
-
return lambda o: any(fn(o) for fn in fns)
|
|
345
|
-
|
|
346
|
-
if isinstance(rfl, Generic):
|
|
347
|
-
if rfl.cls in (collections.abc.Sequence, collections.abc.Set):
|
|
348
|
-
[efn] = map(isinstance_of, rfl.args)
|
|
349
|
-
return lambda o: isinstance(o, rfl.cls) and all(efn(e) for e in o) # type: ignore
|
|
350
|
-
|
|
351
|
-
if rfl.cls == collections.abc.Mapping:
|
|
352
|
-
kfn, vfn = map(isinstance_of, rfl.args)
|
|
353
|
-
return lambda o: isinstance(o, rfl.cls) and all(kfn(k) and vfn(v) for k, v in o.items()) # type: ignore
|
|
354
|
-
|
|
355
|
-
raise TypeError(rfl)
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: omlish
|
|
3
|
-
Version: 0.0.0.dev5
|
|
4
|
-
Summary: omlish
|
|
5
|
-
Author: wrmsr
|
|
6
|
-
License: BSD-3-Clause
|
|
7
|
-
Project-URL: source, https://github.com/wrmsr/omlish
|
|
8
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
9
|
-
Classifier: Development Status :: 2 - Pre-Alpha
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Requires-Python: >=3.12
|
|
13
|
-
License-File: LICENSE
|
|
14
|
-
Provides-Extra: async
|
|
15
|
-
Requires-Dist: anyio ; extra == 'async'
|
|
16
|
-
Provides-Extra: http
|
|
17
|
-
Requires-Dist: httpx ; extra == 'http'
|
|
18
|
-
Provides-Extra: server
|
|
19
|
-
Requires-Dist: h11 ; extra == 'server'
|
|
20
|
-
Requires-Dist: h2 ; extra == 'server'
|
|
21
|
-
Requires-Dist: priority ; extra == 'server'
|
|
22
|
-
Requires-Dist: wsproto ; extra == 'server'
|
|
23
|
-
Provides-Extra: sql
|
|
24
|
-
Requires-Dist: sqlalchemy ; extra == 'sql'
|
|
25
|
-
Provides-Extra: test
|
|
26
|
-
Requires-Dist: pytest ; extra == 'test'
|
|
27
|
-
Provides-Extra: trio
|
|
28
|
-
Requires-Dist: trio ; extra == 'trio'
|
|
29
|
-
Requires-Dist: trio-asyncio ; extra == 'trio'
|
|
30
|
-
Provides-Extra: wrapt
|
|
31
|
-
Requires-Dist: wrapt ; extra == 'wrapt'
|
|
32
|
-
Provides-Extra: yaml
|
|
33
|
-
Requires-Dist: pyyaml ; extra == 'yaml'
|
|
34
|
-
|