omlish 0.0.0.dev6__py3-none-any.whl → 0.0.0.dev8__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.
Files changed (108) hide show
  1. omlish/__about__.py +109 -5
  2. omlish/__init__.py +0 -8
  3. omlish/asyncs/__init__.py +0 -9
  4. omlish/asyncs/anyio.py +40 -0
  5. omlish/bootstrap.py +737 -0
  6. omlish/check.py +1 -1
  7. omlish/collections/__init__.py +4 -0
  8. omlish/collections/exceptions.py +2 -0
  9. omlish/collections/utils.py +38 -9
  10. omlish/configs/strings.py +2 -0
  11. omlish/dataclasses/__init__.py +7 -0
  12. omlish/dataclasses/impl/descriptors.py +95 -0
  13. omlish/dataclasses/impl/reflect.py +1 -1
  14. omlish/dataclasses/utils.py +23 -0
  15. omlish/{lang/datetimes.py → datetimes.py} +8 -4
  16. omlish/diag/procfs.py +1 -1
  17. omlish/diag/threads.py +131 -48
  18. omlish/docker.py +16 -1
  19. omlish/fnpairs.py +0 -4
  20. omlish/{serde → formats}/dotenv.py +3 -0
  21. omlish/{serde → formats}/yaml.py +2 -2
  22. omlish/graphs/trees.py +1 -1
  23. omlish/http/consts.py +6 -0
  24. omlish/http/sessions.py +2 -2
  25. omlish/inject/__init__.py +4 -0
  26. omlish/inject/binder.py +3 -3
  27. omlish/inject/elements.py +1 -1
  28. omlish/inject/impl/injector.py +57 -27
  29. omlish/inject/impl/origins.py +2 -0
  30. omlish/inject/origins.py +3 -0
  31. omlish/inject/utils.py +18 -0
  32. omlish/iterators.py +69 -2
  33. omlish/lang/__init__.py +16 -7
  34. omlish/lang/classes/restrict.py +10 -0
  35. omlish/lang/contextmanagers.py +1 -1
  36. omlish/lang/descriptors.py +3 -3
  37. omlish/lang/imports.py +67 -0
  38. omlish/lang/iterables.py +40 -0
  39. omlish/lang/maybes.py +3 -0
  40. omlish/lang/objects.py +38 -0
  41. omlish/lang/strings.py +25 -0
  42. omlish/lang/sys.py +9 -0
  43. omlish/lang/typing.py +37 -0
  44. omlish/lite/__init__.py +1 -0
  45. omlish/lite/cached.py +18 -0
  46. omlish/lite/check.py +29 -0
  47. omlish/lite/contextmanagers.py +18 -0
  48. omlish/lite/json.py +30 -0
  49. omlish/lite/logs.py +121 -0
  50. omlish/lite/marshal.py +318 -0
  51. omlish/lite/reflect.py +49 -0
  52. omlish/lite/runtime.py +18 -0
  53. omlish/lite/secrets.py +19 -0
  54. omlish/lite/strings.py +25 -0
  55. omlish/lite/subprocesses.py +112 -0
  56. omlish/logs/__init__.py +13 -9
  57. omlish/logs/configs.py +17 -22
  58. omlish/logs/formatters.py +3 -48
  59. omlish/marshal/__init__.py +28 -0
  60. omlish/marshal/any.py +5 -5
  61. omlish/marshal/base.py +27 -11
  62. omlish/marshal/base64.py +24 -9
  63. omlish/marshal/dataclasses.py +34 -28
  64. omlish/marshal/datetimes.py +74 -18
  65. omlish/marshal/enums.py +14 -8
  66. omlish/marshal/exceptions.py +11 -1
  67. omlish/marshal/factories.py +59 -74
  68. omlish/marshal/forbidden.py +35 -0
  69. omlish/marshal/global_.py +11 -4
  70. omlish/marshal/iterables.py +21 -24
  71. omlish/marshal/mappings.py +23 -26
  72. omlish/marshal/numbers.py +51 -0
  73. omlish/marshal/optionals.py +11 -12
  74. omlish/marshal/polymorphism.py +86 -21
  75. omlish/marshal/primitives.py +4 -5
  76. omlish/marshal/standard.py +13 -8
  77. omlish/marshal/uuids.py +4 -5
  78. omlish/matchfns.py +218 -0
  79. omlish/os.py +64 -0
  80. omlish/reflect/__init__.py +39 -0
  81. omlish/reflect/isinstance.py +38 -0
  82. omlish/reflect/ops.py +84 -0
  83. omlish/reflect/subst.py +110 -0
  84. omlish/reflect/types.py +275 -0
  85. omlish/secrets/__init__.py +18 -2
  86. omlish/secrets/crypto.py +132 -0
  87. omlish/secrets/marshal.py +36 -7
  88. omlish/secrets/openssl.py +207 -0
  89. omlish/secrets/secrets.py +260 -8
  90. omlish/secrets/subprocesses.py +42 -0
  91. omlish/sql/dbs.py +6 -5
  92. omlish/sql/exprs.py +12 -0
  93. omlish/sql/secrets.py +10 -0
  94. omlish/term.py +1 -1
  95. omlish/testing/pytest/plugins/switches.py +54 -19
  96. omlish/text/glyphsplit.py +5 -0
  97. omlish-0.0.0.dev8.dist-info/METADATA +50 -0
  98. {omlish-0.0.0.dev6.dist-info → omlish-0.0.0.dev8.dist-info}/RECORD +105 -78
  99. {omlish-0.0.0.dev6.dist-info → omlish-0.0.0.dev8.dist-info}/WHEEL +1 -1
  100. omlish/logs/filters.py +0 -11
  101. omlish/reflect.py +0 -470
  102. omlish-0.0.0.dev6.dist-info/METADATA +0 -34
  103. /omlish/{asyncs/futures.py → concurrent.py} +0 -0
  104. /omlish/{serde → formats}/__init__.py +0 -0
  105. /omlish/{serde → formats}/json.py +0 -0
  106. /omlish/{serde → formats}/props.py +0 -0
  107. {omlish-0.0.0.dev6.dist-info → omlish-0.0.0.dev8.dist-info}/LICENSE +0 -0
  108. {omlish-0.0.0.dev6.dist-info → omlish-0.0.0.dev8.dist-info}/top_level.txt +0 -0
@@ -16,10 +16,21 @@ from ._registry import register
16
16
  Configable = pytest.FixtureRequest | pytest.Config
17
17
 
18
18
 
19
- SWITCHES = col.OrderedSet([
20
- 'online',
21
- 'slow',
22
- ])
19
+ SWITCHES = {
20
+ 'docker': True,
21
+ 'online': True,
22
+ 'integration': True,
23
+ 'slow': False,
24
+ }
25
+
26
+
27
+ SwitchState: ta.TypeAlias = bool | ta.Literal['only']
28
+
29
+ SWITCH_STATE_OPT_PREFIXES: ta.Mapping[SwitchState, str] = {
30
+ True: '--',
31
+ False: '--no-',
32
+ 'only': '--only-',
33
+ }
23
34
 
24
35
 
25
36
  def _get_obj_config(obj: Configable) -> pytest.Config:
@@ -42,29 +53,53 @@ def skip_if_disabled(obj: Configable | None, name: str) -> None:
42
53
  pytest.skip(f'{name} disabled')
43
54
 
44
55
 
45
- def get_switches(obj: Configable) -> ta.Mapping[str, bool]:
46
- return {
47
- sw: _get_obj_config(obj).getoption(f'--no-{sw}')
48
- for sw in SWITCHES
49
- }
56
+ def get_switches(obj: Configable) -> ta.Mapping[str, SwitchState]:
57
+ ret: dict[str, SwitchState] = {}
58
+ for sw, d in SWITCHES.items():
59
+ sts = {
60
+ st
61
+ for st, pfx in SWITCH_STATE_OPT_PREFIXES.items()
62
+ if _get_obj_config(obj).getoption(pfx + sw)
63
+ }
64
+ if sts:
65
+ if len(sts) > 1:
66
+ raise Exception(f'Multiple switches specified for {sw}')
67
+ ret[sw] = check.single(sts)
68
+ else:
69
+ ret[sw] = d
70
+ return ret
50
71
 
51
72
 
52
73
  @register
53
74
  class SwitchesPlugin:
54
75
 
76
+ def pytest_configure(self, config):
77
+ for sw in SWITCHES:
78
+ config.addinivalue_line('markers', f'{sw}: mark test as {sw}')
79
+
55
80
  def pytest_addoption(self, parser):
56
81
  for sw in SWITCHES:
57
82
  parser.addoption(f'--no-{sw}', action='store_true', default=False, help=f'disable {sw} tests')
83
+ parser.addoption(f'--{sw}', action='store_true', default=False, help=f'enables {sw} tests')
84
+ parser.addoption(f'--only-{sw}', action='store_true', default=False, help=f'enables only {sw} tests')
58
85
 
59
86
  def pytest_collection_modifyitems(self, config, items):
60
- for sw in SWITCHES:
61
- if not config.getoption(f'--no-{sw}'):
62
- continue
63
- skip = pytest.mark.skip(reason=f'omit --no-{sw} to run')
64
- for item in items:
65
- if sw in item.keywords:
66
- item.add_marker(skip)
87
+ sts = get_switches(config)
88
+ stx = col.multi_map(map(reversed, sts.items())) # type: ignore
89
+ ts, fs, onlys = (stx.get(k, ()) for k in (True, False, 'only'))
67
90
 
68
- def pytest_configure(self, config):
69
- for sw in SWITCHES:
70
- config.addinivalue_line('markers', f'{sw}: mark test as {sw}')
91
+ def process(item):
92
+ sws = {sw for sw in SWITCHES if sw in item.keywords}
93
+
94
+ if onlys:
95
+ if not any(sw in onlys for sw in sws):
96
+ item.add_marker(pytest.mark.skip(reason=f'skipping switches {sws}'))
97
+ return
98
+
99
+ else:
100
+ for sw in sws:
101
+ if sw in fs:
102
+ item.add_marker(pytest.mark.skip(reason=f'skipping switches {sw}'))
103
+
104
+ for item in items:
105
+ process(item)
omlish/text/glyphsplit.py CHANGED
@@ -1,3 +1,8 @@
1
+ """
2
+ Note: string.Formatter (and string.Template) shouldn't be ignored - if they can be used they probably should be.
3
+ - https://docs.python.org/3/library/string.html#custom-string-formatting
4
+ - https://docs.python.org/3/library/string.html#template-strings
5
+ """
1
6
  import dataclasses as dc
2
7
  import re
3
8
 
@@ -0,0 +1,50 @@
1
+ Metadata-Version: 2.1
2
+ Name: omlish
3
+ Version: 0.0.0.dev8
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
+ Classifier: Operating System :: POSIX
13
+ Requires-Python: >=3.12
14
+ License-File: LICENSE
15
+ Provides-Extra: async
16
+ Requires-Dist: anyio >=4.4 ; extra == 'async'
17
+ Requires-Dist: sniffio >=1.3 ; extra == 'async'
18
+ Requires-Dist: trio >=0.26 ; extra == 'async'
19
+ Requires-Dist: greenlet >=3 ; (python_version < "3.13") and extra == 'async'
20
+ Requires-Dist: trio-asyncio >=0.15 ; (python_version < "3.13") and extra == 'async'
21
+ Provides-Extra: compression
22
+ Requires-Dist: lz4 >=4 ; extra == 'compression'
23
+ Requires-Dist: zstd >=1.5 ; extra == 'compression'
24
+ Requires-Dist: python-snappy >=0.7 ; (python_version < "3.13") and extra == 'compression'
25
+ Provides-Extra: formats
26
+ Requires-Dist: orjson >3.10 ; extra == 'formats'
27
+ Requires-Dist: cloudpickle >=3 ; extra == 'formats'
28
+ Requires-Dist: pyyaml >=5 ; extra == 'formats'
29
+ Provides-Extra: http
30
+ Requires-Dist: httpx[http2] >=0.27 ; extra == 'http'
31
+ Provides-Extra: misc
32
+ Requires-Dist: jinja2 >=3.1 ; extra == 'misc'
33
+ Requires-Dist: psutil >=6 ; extra == 'misc'
34
+ Requires-Dist: wrapt >=1.14 ; extra == 'misc'
35
+ Provides-Extra: secrets
36
+ Requires-Dist: cryptography >=43 ; extra == 'secrets'
37
+ Provides-Extra: sql
38
+ Requires-Dist: pg8000 >=1.31 ; extra == 'sql'
39
+ Requires-Dist: pymysql >=1.1 ; extra == 'sql'
40
+ Requires-Dist: aiomysql >=0.2 ; extra == 'sql'
41
+ Requires-Dist: aiosqlite >=0.20 ; extra == 'sql'
42
+ Requires-Dist: sqlalchemy[asyncio] >=2 ; (python_version < "3.13") and extra == 'sql'
43
+ Requires-Dist: asyncpg >=0.29 ; (python_version < "3.13") and extra == 'sql'
44
+ Requires-Dist: sqlalchemy >=2 ; (python_version >= "3.13") and extra == 'sql'
45
+ Provides-Extra: sqlx
46
+ Requires-Dist: duckdb >=1 ; extra == 'sqlx'
47
+ Requires-Dist: sqlean.py >=3.45 ; (python_version < "3.13") and extra == 'sqlx'
48
+ Provides-Extra: testing
49
+ Requires-Dist: pytest >=8 ; extra == 'testing'
50
+
@@ -1,35 +1,38 @@
1
- omlish/__about__.py,sha256=ok0Te9wzfwYtf7-NR58LNlxYA2Vd-jDbB4klfQ3W5JU,153
2
- omlish/__init__.py,sha256=AGJOJExzKB9Ugu7eI6nTRys4D-Kd4fseT2-PCM9-1Rg,196
1
+ omlish/__about__.py,sha256=kOS_wa2wbqZj1jzr4S6oJDbqf_7ODbXbHEEgXAsBXCI,2279
2
+ omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  omlish/argparse.py,sha256=QRQmX9G0-L_nATkFtGHvpd4qrpYzKATdjuFLbBqzJPM,6224
4
+ omlish/bootstrap.py,sha256=3pGNiHlUcQl81q76_Wesd4pblmy82EOKkcdgectF15Q,18820
4
5
  omlish/c3.py,sha256=W5EwYx9Por3rWYLkKUitJ6OoRMLLgVTfLTyroOz41Y0,8047
5
6
  omlish/cached.py,sha256=UAizxlH4eMWHPzQtmItmyE6FEpFEUFzIkxaO2BHWZ5s,196
6
- omlish/check.py,sha256=h66jWSwaiuaaIKPI6_pIfolWYYK3WTR43X1CBO5-PQA,5538
7
+ omlish/check.py,sha256=aeFjTwZfcZHMY2tJ4RozonuOg_LVvPMgyP94CfuR0Sk,5529
8
+ omlish/concurrent.py,sha256=3KkTj5TOPmvNOcuK9LtOQwmkuLzoEYQfcuaHTXSQ0Ts,5424
9
+ omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
7
10
  omlish/defs.py,sha256=N8O1murtr4mdSE_vjAcWGfnN7GyBXbW8rJM4qPF8na0,4737
8
- omlish/docker.py,sha256=Fm1VGXSGlIpEnJe4wwnC8JY25AHSmvtFlOSplHigWkk,4376
11
+ omlish/docker.py,sha256=5WyXJyFwqIJJ11QWwPIjHjDHnsaOVZszZAjyTvg3xew,4693
9
12
  omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
10
- omlish/fnpairs.py,sha256=tGOw4zkF9r_SATvtnWEABreINvrO0e3OsB7IRqtNtwk,9495
11
- omlish/iterators.py,sha256=Z6oXZwV3aDx4A0z6mvwEahVLqopMQBZ-b2yHr4tUfmQ,5912
13
+ omlish/fnpairs.py,sha256=FgP8lzygrbRo5E1f8wbWy_-opoR6Dy8BKRi776kOrIY,9445
14
+ omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
12
15
  omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
16
+ omlish/matchfns.py,sha256=rW-kEHZvMkRno0Imn8rskAoVjpR5rKtOtUUzQ6wLqdU,5878
13
17
  omlish/math.py,sha256=AVqp5Y8yxKA-wO0BgrzaxA0Ga3PZiCXnYcwivMneC-0,3804
14
- omlish/os.py,sha256=T77P7_U7jShPXsm_byvXwPoumcmtA0a7KPRvE2GAOhw,950
15
- omlish/reflect.py,sha256=Ce70q2GLn6tyNl44bl3HkqF_yZ3ls9L3V-PE8i0R2pM,12740
18
+ omlish/os.py,sha256=cz4nL2ujaxH_-XRq3JUD8af8mSe1JXGPIoXP9XAEd0M,2607
16
19
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
17
20
  omlish/stats.py,sha256=uqjN-focDVssFZMagj22HqmyJ1TBO4Wt-XnHp8-EtVw,9927
18
21
  omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
19
- omlish/term.py,sha256=GFsBnBZHB8StpX5nQ0YWtCR5ZLjF8kwP60coq5DAYpU,6112
20
- omlish/asyncs/__init__.py,sha256=axM-6TN6HDrJ8CP__IE1vfvcsqQDN2TjcTw7CAyycyY,769
21
- omlish/asyncs/anyio.py,sha256=kxMY2ZDV-BuMRasITCcWTEey6DDIYDaf2jIppi5v1lY,6470
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
22
25
  omlish/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
23
26
  omlish/asyncs/asyncs.py,sha256=Tf7ZodTGepkM7HAuFcDNh9lLzzrMw6rELWvopGmFkh4,2035
24
27
  omlish/asyncs/bridge.py,sha256=AabrRVz5k75dTB59M70DWkl6JrLusjhpvsaj5jld9io,8151
25
28
  omlish/asyncs/flavors.py,sha256=kp1RdcsNrvDQZMB4Q_hlHyjrREJqEWjY9BI1lbE1AQ8,4820
26
- omlish/asyncs/futures.py,sha256=3KkTj5TOPmvNOcuK9LtOQwmkuLzoEYQfcuaHTXSQ0Ts,5424
27
29
  omlish/asyncs/trio.py,sha256=GKG3wgelFr7gIKKHZhcflvMyCvxXHNZe862KB0Xw2uA,370
28
30
  omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw,1327
29
- omlish/collections/__init__.py,sha256=dOaaXAZKd-YQC1hItGTfJdhERIC7Io0klUmjajbT4qQ,1598
31
+ omlish/collections/__init__.py,sha256=7b0pjRiTXxh5p49SX9U5HQ4njsQehKik-Qe9A6Gf8qM,1658
30
32
  omlish/collections/_abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
31
33
  omlish/collections/_io_abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
32
34
  omlish/collections/coerce.py,sha256=o11AMrUiyoadd8WkdqeKPIpXf2xd0LyylzNCyJivCLU,7036
35
+ omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
33
36
  omlish/collections/frozen.py,sha256=DGxemj_pVID85tSBm-Wns_x4ov0wOEIT6X5bVgJtmkA,4152
34
37
  omlish/collections/identity.py,sha256=jhEpC8tnfh3Sg-MJff1Fp9eMydt150wits_UeVdctUk,2723
35
38
  omlish/collections/indexed.py,sha256=YHs_q0GALisXPKKMgeDQxZ6hMzYndqDL3m3ag8cnzH0,2143
@@ -41,7 +44,7 @@ omlish/collections/sorted.py,sha256=E5ZOdNn7Jju1EcQ7CX2Ltk9StIXsBOzqvh7EsT3ZA2U,
41
44
  omlish/collections/treap.py,sha256=wq9L5hvxq4QgPvIpHmueZMF8t7UrvX5vmlNN4BOqY4g,7720
42
45
  omlish/collections/treapmap.py,sha256=TxOM-ZRF5PK2xe5wRIhESNt7DGh9b_MeZfE7HLkCOs4,5804
43
46
  omlish/collections/unmodifiable.py,sha256=QmUEi9IBXqiM_KGgH2rqg15VmkHJo1MZ6kwq2twEMho,4750
44
- omlish/collections/utils.py,sha256=iRVkffZlLRbYPjli8EO62bgN-X1rtORwoUiZTNGLQqA,3754
47
+ omlish/collections/utils.py,sha256=3qe4ncHx1vkI34-AGKsCT-9syLbZweW1SI7EgaNifnI,4245
45
48
  omlish/collections/cache/__init__.py,sha256=Cv8RX-Ehit3um0QLDq7uRDqJUCcdqTKoAB9T0pM_5hg,392
46
49
  omlish/collections/cache/descriptor.py,sha256=t-1Gh4DTABDuNmeDJlpoW4LV3gi_uSlBd9ZfBINfYCM,5023
47
50
  omlish/collections/cache/impl.py,sha256=nQox5kChhns9h2a5gnX-ayQGBQJ5-B1aZkLQ2Aej19g,15137
@@ -49,13 +52,14 @@ omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K
49
52
  omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
50
53
  omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
51
54
  omlish/configs/flattening.py,sha256=AOlRpBHm449MxwMp3CiIRGunStOC1DUNs1f3CLou0wc,4731
52
- omlish/configs/strings.py,sha256=9Bq289VS_UIi4bsW09yHfDJYSWqQHW8XeKhdUw9CANk,2607
53
- omlish/dataclasses/__init__.py,sha256=I1tbWlBa1-nXpVkb7NqjJwTiAVp_5P0WkjXDQ1NGUus,1127
54
- omlish/dataclasses/utils.py,sha256=dVEzdjKwPCSoFxqXZ5zUlHtVYZ6My79e1zctYDCWmvY,1035
55
+ omlish/configs/strings.py,sha256=0brx1duL85r1GpfbNvbHcSvH4jWzutwuvMFXda9NeI0,2651
56
+ omlish/dataclasses/__init__.py,sha256=FMR2hCAsOxRTjT2asnuyEGkA4OXI7J3N8Wy7cyPiogs,1247
57
+ omlish/dataclasses/utils.py,sha256=G1nSlvdwsb9SV1AsJRfXrCO0sAnqMcj7LjGdVSWi2AA,1852
55
58
  omlish/dataclasses/impl/__init__.py,sha256=rQJRcE9fVsGEvRUOZ18r4DE0xiLbSRjspyJRXgbLS3I,348
56
59
  omlish/dataclasses/impl/api.py,sha256=NOuw5dlwztG5AA_gwdF2PJAqvouMdbUf1Si80G26qAY,6244
57
60
  omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
58
61
  omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
62
+ omlish/dataclasses/impl/descriptors.py,sha256=rEYE1Len99agTQCC25hSPMnM19BgPr0ZChABGi58Fdk,2476
59
63
  omlish/dataclasses/impl/exceptions.py,sha256=WD0Tr1TnjUN4OR3f3rs8CgqtP2KBA1tKjPIbZO8Tzm0,178
60
64
  omlish/dataclasses/impl/fields.py,sha256=zBa-XjJJQ7dOP_se-A8Q4Vv3ol2xjpTQXTUBCnr1UVs,4377
61
65
  omlish/dataclasses/impl/frozen.py,sha256=5wKtt8WvPYCkHPrwR024mpvbFzqcbPQfgiFvy3orRJo,1692
@@ -68,18 +72,18 @@ omlish/dataclasses/impl/metadata.py,sha256=HGqAtMcP422X4kPx93btcxE-n4guBFm6-N-S4
68
72
  omlish/dataclasses/impl/order.py,sha256=zWvWDkSTym8cc7vO1cLHqcBhhjOlucHOCUVJcdh4jt0,1369
69
73
  omlish/dataclasses/impl/params.py,sha256=M-xg9IeFftVy795oqlp7Yw8jE-7wG2K4vaFhXHKmL1k,2538
70
74
  omlish/dataclasses/impl/processing.py,sha256=iUvaNwRAt8rQsLIIkvRye5rfk6xhgR35EbcdwZCZec8,366
71
- omlish/dataclasses/impl/reflect.py,sha256=9aVgupzs75wif-5tZ6oAEZ3bFcsJBvLgxJ5fL8raZc4,5292
75
+ omlish/dataclasses/impl/reflect.py,sha256=13af257_sjjM-4wfH84nl7CoHHMV_eFZpkIgUawZ3TE,5307
72
76
  omlish/dataclasses/impl/replace.py,sha256=wS9GHX4fIwaPv1JBJzIewdBfXyK3X3V7_t55Da87dYo,1217
73
77
  omlish/dataclasses/impl/repr.py,sha256=oLXBTxqp88NKmz82HrJeGiTEiwK4l5LlXQT9Q0-tX3c,1605
74
78
  omlish/dataclasses/impl/simple.py,sha256=EovA-GpmQYtB_svItO2byTAWqbKGF4njz0MdQts3QBU,3157
75
79
  omlish/dataclasses/impl/slots.py,sha256=_sm-x9v1tPnXEHBHNUMTHZocgVyhZaPdvamIPPBUVyk,2635
76
80
  omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
77
81
  omlish/diag/__init__.py,sha256=BYQoq12W2qU0O7m2Z-RLCX6YLIYEW9MmfN7_i9--Yk0,132
78
- omlish/diag/procfs.py,sha256=CjMDMtf6ToNu9_MbWAdQ-5cvuUyMs5R3aZOjyRtgHtw,9579
82
+ omlish/diag/procfs.py,sha256=ggIeFoaNZ4j6HvKTiXD6Q3b9apgto7j55pwswCrIHXE,9581
79
83
  omlish/diag/procstats.py,sha256=9uQMvVL7Yzf_1F8dW55pcZeCFtP5yUbK1KuGn9bt2Qg,502
80
84
  omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
81
85
  omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
82
- omlish/diag/threads.py,sha256=Vs05WqH0C6GlTcQo2CiSH5SbT1YlnETRX5slT7YBl9M,2058
86
+ omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
83
87
  omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
84
88
  omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
85
89
  omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
@@ -90,10 +94,15 @@ omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc
90
94
  omlish/dispatch/dispatch.py,sha256=8B66wOat30HckcIsCq4pnutBy20iSPwPQOqJ4msHaGU,3739
91
95
  omlish/dispatch/functions.py,sha256=S8ElsLi6DKxTdtFGigWaF0vAquwy2sK-3f4iRLaYq70,1522
92
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
93
102
  omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
103
  omlish/graphs/dags.py,sha256=JpTGxt5rsK7hy5EUy9rNUlIeDStT9ri86m8xEKiHQLE,3063
95
104
  omlish/graphs/domination.py,sha256=45iTyn7mZWPJ1ANrqD96aPXqzEeyFpybMvvcVxo9XvQ,7592
96
- omlish/graphs/trees.py,sha256=TWWpCiOXak782jWkeJXZsAAZTzUrFpKHTCMufeqkXs8,8143
105
+ omlish/graphs/trees.py,sha256=cfWV4FnXqghhmu301bo1XlukTv3jZnBRkee5b4Q2h28,8158
97
106
  omlish/graphs/dot/__init__.py,sha256=6-LAx7ytHFQvfLrnxVQG1s8xmApgblERJJCTB2knOHk,642
98
107
  omlish/graphs/dot/items.py,sha256=OWPf0-hjBgS1uyy2QgAEn4IgFHJcEg7sHVWeTx1ghZc,4083
99
108
  omlish/graphs/dot/rendering.py,sha256=hUSJ5HvSvxnTIC9ynSxxP8IJnVH6quEeDbLzNlUnmuk,3626
@@ -101,18 +110,18 @@ omlish/graphs/dot/utils.py,sha256=_FMwn77WfiiAfLsRTOKWm4IYbNv5kQN22YJ5psw6CWg,80
101
110
  omlish/http/__init__.py,sha256=v2f9Hh6bTgcz0MkG9T2JQarzeIgHlDxDT2cbINbpyw8,367
102
111
  omlish/http/asgi.py,sha256=wXhBZ21bEl32Kv9yBrRwUR_7pHEgVtHP8ZZwbasQ6-4,3307
103
112
  omlish/http/collections.py,sha256=s8w5s4Gewgxxhe2Ai0R45PgJYYifrLgTbU3VXVflHj4,260
104
- omlish/http/consts.py,sha256=-Dm_Kcm3BH6kKSkqYnEHKHf-624YW7cjqsNM7mi75Wk,1914
113
+ omlish/http/consts.py,sha256=-O0F6qiVWGGT18j8TMP7UNfHCECg1MmByx05oc7Ae9Q,1985
105
114
  omlish/http/cookies.py,sha256=x56AvYtwNyQKFzVD1zSGIsfg9oiArd6ICTMEdugP008,6356
106
115
  omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
107
116
  omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
108
117
  omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
109
- omlish/http/sessions.py,sha256=LfqVm0NYGN3tEXnX9uTrHIvPiKlg6ZM09AM3aBd-g-E,4781
118
+ omlish/http/sessions.py,sha256=gj_FgDoETAnLh_pISlwrqS78LFc1c3RNAKHSLYBEr5s,4793
110
119
  omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
111
- omlish/inject/__init__.py,sha256=NeW41Kbr0KCDAu1-9IiWf9P-HoO3FXfKhLgbigaT0iU,1841
112
- omlish/inject/binder.py,sha256=Xxk3S3g8f6a0Gr7mi2dXgQwBuqlHgWGz2wNOVpcFmPE,4167
120
+ omlish/inject/__init__.py,sha256=JQ7x8l9MjU-kJ5ap7cPVq7SY7zbbCIrjyJAF0UeE5-s,1886
121
+ omlish/inject/binder.py,sha256=H8AQ4ecmBOtDL8fMgrU1yUJl1gBADLNcdysRbvO8Wso,4167
113
122
  omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
114
123
  omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
115
- omlish/inject/elements.py,sha256=njMqYexCwqXyBifORvV5Y3g7fFG_9QPLU4uAwZhcGbQ,1508
124
+ omlish/inject/elements.py,sha256=BzTnkNS-3iAMI47LMC2543u6A8Tfk3aJXn3CO191ez4,1547
116
125
  omlish/inject/exceptions.py,sha256=_wkN2tF55gQzmMOMKJC_9jYHBZzaBiCDcyqI9Sf2UZs,626
117
126
  omlish/inject/injector.py,sha256=CoCUeMm1Oot4sG4Ti1sKCWrhlvtJ5QAeAI22AFWu2RQ,1066
118
127
  omlish/inject/inspect.py,sha256=tw49r1RJVHrEHmT8WWA3_Bl9Z0L3lEGRqlLhbM5OmAM,592
@@ -120,44 +129,44 @@ omlish/inject/keys.py,sha256=05KePew5_Cn_zWgBpIcXsa5orxm6xn4YL_IWXEvrSr8,651
120
129
  omlish/inject/listeners.py,sha256=AIWUs4OTUPeURU1tS2CXeEbJwC1bZiuya9K6I2ElMns,581
121
130
  omlish/inject/managed.py,sha256=Ls54Ah5KDrLHYWmso64xipvCLWPcgl1sUOn2n1tuWag,2107
122
131
  omlish/inject/multis.py,sha256=PQcIZbKpTJEOca_4pCp__3jLWLb9n90jZLbDe-xx8dQ,3351
123
- omlish/inject/origins.py,sha256=lk7wkPry-2xN5PgEAYsfwMZd94VHr7fEZ-YkKnYsGXA,512
132
+ omlish/inject/origins.py,sha256=OVQkiuRxx6ZtE8ZliufdndtFexcfpj-wZSDkUeGUCYM,534
124
133
  omlish/inject/overrides.py,sha256=hrm243slCw_DDRbn3dK5QK1jfHezVokG-WYO2JaQOV8,535
125
134
  omlish/inject/privates.py,sha256=hZOa_keY3KlXAzyiZ-sfN697UKXpkfXXNUIEmGT5TAA,641
126
135
  omlish/inject/providers.py,sha256=MAla7uDQR63zj9oB9XqN8rK3DGGLSzUKZ4rUU_5dM40,751
127
136
  omlish/inject/scopes.py,sha256=0b8Y0VidkpEk7tyxKSbv_1fE-2LomKTYlhFeoEemkwg,1979
128
137
  omlish/inject/types.py,sha256=11WVEPkZ-_8cv1BeTDRU-soIYxB_6x7dyWtsa2Iej9U,251
138
+ omlish/inject/utils.py,sha256=_UOZqA8IcLWPqf4Mcg9iIusQ5yxP_6Txg6PWtUYl23o,408
129
139
  omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
140
  omlish/inject/impl/bindings.py,sha256=8H586RCgmvwq53XBL9WMbb-1-Tdw_hh9zxIDCwcHA1c,414
131
141
  omlish/inject/impl/elements.py,sha256=bJBbHce_eZyIua2wbcejMwd9Uv-QeYcQ-c5N1qOXSmU,5950
132
- omlish/inject/impl/injector.py,sha256=PO8cpCq5sOhcGEC2rDL4xaQYBNgt__e1NX7wgP_rr_o,6297
142
+ omlish/inject/impl/injector.py,sha256=WxIVOF6zvipb44302_j-xQZt8vnNCY0gdLX6UWzslXI,7550
133
143
  omlish/inject/impl/inspect.py,sha256=erLL1w6GzoPVGwORm56ra9vR-IH5BoMQrr7POwaFDjU,3050
134
144
  omlish/inject/impl/multis.py,sha256=rRIWNCiTGaSWQUz_jxEy8LUmzdJDAlG94sLHYDS-ncg,2048
135
- omlish/inject/impl/origins.py,sha256=vmCLcZgg-j-55y3AwSnMU95qt5C1hzpbLdzNzi-uQ-w,1591
145
+ omlish/inject/impl/origins.py,sha256=-cdcwz3BWb5LuC9Yn5ynYOwyPsKH06-kCc-3U0PxZ5w,1640
136
146
  omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
137
147
  omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
138
148
  omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
139
149
  omlish/inject/impl/scopes.py,sha256=M_RO_pGUr5mX84YyYmkr6CsMhkkV189_gOUsaYmYes4,5768
140
- omlish/lang/__init__.py,sha256=GnAKAPoSjpf-BpURfiWt23JyOuq18MY8Zy6gFi4idFk,2957
150
+ omlish/lang/__init__.py,sha256=DSFUT2mChw4kZjr3lUgVfzUf5BwtXMVzwtFFmmvno-Y,3145
141
151
  omlish/lang/cached.py,sha256=0gjdxVELu69oRQ3kqSV3cGIHg6Nf4pcCIIRTEU52tCc,7607
142
152
  omlish/lang/clsdct.py,sha256=LXwLCULeI_8Np-7-pZkyNAHpUZLcQiBEQiHwKYQ0WRo,1742
143
153
  omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
144
- omlish/lang/contextmanagers.py,sha256=X2p4FSSLCXRb3cMhJPnpk2_sbGcJILA94dcl_NsAoa8,8326
145
- omlish/lang/datetimes.py,sha256=fqpgW5lF1oRYbzmrHvh-rNKKH1gRe5KTdYm0yNNmma0,2088
146
- omlish/lang/descriptors.py,sha256=iXMS8efrClH17y4MvOADdjqal_C_KMVRixsCv4AhiaQ,5885
154
+ omlish/lang/contextmanagers.py,sha256=C6FU_1ftMvp_Zbz9ixf_HsCSYQot_TZ7mpZBJEBc3Xc,8333
155
+ omlish/lang/descriptors.py,sha256=taJzRU-lKszfaIH847UEE9Kb_krhCqPGYdu7CTBXr5Q,5900
147
156
  omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
148
157
  omlish/lang/functions.py,sha256=T4nPl46EHHGjMkz3FTRjsVhS9Y8HKcwM0jROU6_-Rv0,3619
149
- omlish/lang/imports.py,sha256=QjqGP3le0XbptADTfyeT9Rj9d8ssN71yycGpfbHuj6o,4248
150
- omlish/lang/iterables.py,sha256=XyRcCKEAgczqGL7H-68B6DRWP8dJ3MIkAIwL2hqG3Ag,1396
151
- omlish/lang/maybes.py,sha256=J2N3IDOnSSeGbrN342ln2adt0TDpz2SkyCIiZ0pVRDQ,3425
152
- omlish/lang/objects.py,sha256=TAD84PYsD0cGtaQpqo3fQSm99tP4-hckixkQ_K_Iaic,2820
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
153
162
  omlish/lang/resolving.py,sha256=UgrX-vxXtCGGEmnAMUYP4bUZ6-Ok0EcHVEKAZYbAS-o,1597
154
- omlish/lang/strings.py,sha256=wdLo3m9GkV76ZKak3QqtwiR6rWqUd1XlZ-divZppcek,2372
155
- omlish/lang/sys.py,sha256=Q316Bzy9cC6bFwztkgpc8CKnsCaz4ldYvjIGpTXlxf4,145
163
+ omlish/lang/strings.py,sha256=ykeoou4JK7CEZXzrUJfqVOalEDvE--j0uhHt_SrsrUs,2834
164
+ omlish/lang/sys.py,sha256=UoZz_PJYVKLQAKqYxxn-LHz1okK_38I__maZgnXMcxU,406
156
165
  omlish/lang/timeouts.py,sha256=vECdWYhc_IZgcal1Ng1Y42wf2FV3KAx-i8As-MgGHIQ,1186
157
- omlish/lang/typing.py,sha256=ehCIIrt5Jl94ioGFHBw6VrSoh4siTxvcDhz6BVI8xBs,2445
166
+ omlish/lang/typing.py,sha256=pKDBHTYzoQtFCUxtlDDTpnKixZBxeE5Pblvv1nJbRYE,3236
158
167
  omlish/lang/classes/__init__.py,sha256=j1p0_uuMznKrY2EhMoj20uv6vx4LXljMzp7AaKe0mmU,530
159
168
  omlish/lang/classes/abstract.py,sha256=goIV14oY24EOs88eVe6E6NyrSPOOLMOcWTXTMuYKiqc,2304
160
- omlish/lang/classes/restrict.py,sha256=UATWUDh9UOvPN8AtlsxUejhEt4Uuj5TyoKKYMnk2fU0,3152
169
+ omlish/lang/classes/restrict.py,sha256=n_B-XqafVyO1caZzfbsv7tPxDJOBLl1BzQkoDSse0A4,3353
161
170
  omlish/lang/classes/simple.py,sha256=U9WB3S9svudIWF7bitptXzVjLHnlG_Xh72K-jIAekaU,3068
162
171
  omlish/lang/classes/virtual.py,sha256=54D4qOpDWHpP28Oc6bbBjdxquLvdvqMqLXj2XOnAeaQ,3323
163
172
  omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
@@ -168,48 +177,66 @@ omlish/lifecycles/controller.py,sha256=L9U2KQohrOfxJnsu-LYNVBvLyUJnRCZyo1ehH1DjG
168
177
  omlish/lifecycles/manager.py,sha256=Au66KaO-fI-SEJALaPUJsCHYW2GE20xextk1wKn2BEU,5445
169
178
  omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
170
179
  omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
171
- omlish/logs/__init__.py,sha256=V8jEdb5rj9Dli0b9qtR0ZYstRoIlxWqbU38UmEOXbfY,419
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=VrZMlHgUK6o1zHaKNgHLecIozv49cZ8vwY43wJ_6-pE,2646
186
+ omlish/lite/marshal.py,sha256=5uwri-KzPiktnbYORkGXcJ4kulZvp_nS4MxPsU1Y-G0,8608
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=UPMdG3mbUm4PUJw6muXs4dk-uNE0aMDj_XebKCa-Wpk,224
172
193
  omlish/logs/_abc.py,sha256=UgrCUQVUi_PvT3p1CEkb3P74CFrFcZq2AFby3GEUv9M,5974
173
- omlish/logs/configs.py,sha256=vW4QMZKqeEBbtQY0JEi-VKBIt0CuLgcGDgG8aTlgmC0,1762
174
- omlish/logs/filters.py,sha256=dk-_sRQhp_rCGF48qpPj5viHOBEOu78quXe9pHHs78c,187
175
- omlish/logs/formatters.py,sha256=L6aEtjQTmyEK0ivO6F6WW82o7rqxCM3SqburgboTOsY,1910
194
+ omlish/logs/configs.py,sha256=Dnd5nm6OUD_n4YDtP4VuDo8flIofU-xf7xlw-t9FVv8,1285
195
+ omlish/logs/formatters.py,sha256=AFs9C6-qrFkgXZ0nL39wih_LGck1Tc79alvGyibBdQo,720
176
196
  omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
177
- omlish/marshal/__init__.py,sha256=VM_koh4PG1Moyqs6O2670GF42lWD9Qs8GpcfImjDbf0,865
178
- omlish/marshal/any.py,sha256=uWGEeBWaJvh5hjaGKIBL0ogGCg1jKH0Rq_onECYpHVs,821
179
- omlish/marshal/base.py,sha256=w1zfL-eU5ZvVsoPWOwy_P8qi3VcxgI4I_3NuHNFUeww,5124
180
- omlish/marshal/base64.py,sha256=kdkkFXjYaKx6iHxMM_7vYfaX-KUM3wXN3vzsOmBbou4,863
181
- omlish/marshal/dataclasses.py,sha256=uTjpSxRtVJLWJr5-Bmb_PMGpRhr2gJjaL3oR2pToR1I,3522
182
- omlish/marshal/datetimes.py,sha256=ANTgeUm8AuTKoxW6fLkwvsRPPBoUtAD6mfrOS5f4Xuc,2314
183
- omlish/marshal/enums.py,sha256=xItDDXHoIsCL_wnhRZmTpK1zy6P0dYouOcbfPGFvyxE,1224
184
- omlish/marshal/exceptions.py,sha256=5ub1eA0Wfd3gs8mT8XbPvPdqMVFUoCJfxvgbIjI5Uo0,142
185
- omlish/marshal/factories.py,sha256=4Vt5Vr4r_toZQHGt_fTmcmG-gJoaZcpr6GJMU1P2lhA,2932
186
- omlish/marshal/global_.py,sha256=kbq8gzjsKLlkieboQ-mYibPNrUGdb_kOt4Dzcmk3I4Y,881
187
- omlish/marshal/iterables.py,sha256=ZHmvT79_i2m4bCahcuEE9aeeOukjtZhYnROCnxP53y8,2168
188
- omlish/marshal/mappings.py,sha256=4bh1pdbvUh42Xp3mWQQa4J6da7MADmsuO029uqIYk3w,2469
197
+ omlish/marshal/__init__.py,sha256=52Jl7SgSA0Ei7TBrNmcbXCcICiU6oBS9NhjGg8zvgKI,1383
198
+ omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
199
+ omlish/marshal/base.py,sha256=Oa9FIF4SVDao7QYvPIHPMp_kp4sA6JfLSV4aEcprYTk,5931
200
+ omlish/marshal/base64.py,sha256=Q3ibujdhgFgDaeHahSe7WdcqvOyalWigwUlV-U-2ckQ,1018
201
+ omlish/marshal/dataclasses.py,sha256=PMAwBblcmCNVifDul0Vl09saBZ3BYEOIOJABZ2zc4Bg,3667
202
+ omlish/marshal/datetimes.py,sha256=0ffg8cEvx9SMKIXZGD9b7MqpLfmgw0uKKdn6YTfoqok,3714
203
+ omlish/marshal/enums.py,sha256=-0fKutBbyz8ygEaA0_P_8IOJrI9jMGigmnPbutV9Bg4,1464
204
+ omlish/marshal/exceptions.py,sha256=jwQWn4LcPnadT2KRI_1JJCOSkwWh0yHnYK9BmSkNN4U,302
205
+ omlish/marshal/factories.py,sha256=UV2Svjok-lTWsRqKGh-CeuAhvlohw9uJe7ZLyoKMvTM,2968
206
+ omlish/marshal/forbidden.py,sha256=BNshzm4lN5O8sUZ1YvxrSYq3WPklq9NMQCRZ7RC3DLM,865
207
+ omlish/marshal/global_.py,sha256=8XCjPcIjA65StESshzNfQiSyuckVaEiiWROmC3qk0mo,1117
208
+ omlish/marshal/iterables.py,sha256=y4EZirLrbv_RGG29cq6TsrEbEPjt1GEyuH3BNYkGQFU,2245
209
+ omlish/marshal/mappings.py,sha256=-7n_4j52fGieV_ANF7qlMzk0nkeXWMrBEQI5OTvW2bo,2516
189
210
  omlish/marshal/naming.py,sha256=UCviMAXTTUpW1lyAGymybGP2rFUAW44P1X0zrIVbvi4,464
211
+ omlish/marshal/numbers.py,sha256=oY_yMNJEnJhjfLh89gpPXvKqeUyhQcaTcQB6ecyHiG8,1704
190
212
  omlish/marshal/objects.py,sha256=JD7GBY1hYUyRpCufpxDAwgII98ewzGDct2IF0HxgFN0,2767
191
- omlish/marshal/optionals.py,sha256=zZN34AGXkHobJRzM1g4UcW6jw82La8moPH5tmyxy9rc,1508
192
- omlish/marshal/polymorphism.py,sha256=1WJRzTLyWSCxhsXDzTksQH09TqJXnFRzrHV5jlOkef8,3886
193
- omlish/marshal/primitives.py,sha256=N7kXrdxz5CIrDnPnsYMdo0xLjEfMnVfKXLMANDu-L6Y,1139
213
+ omlish/marshal/optionals.py,sha256=r0XB5rqfasvgZJNrKYd6Unq2U4nHt3JURi26j0dYHlw,1499
214
+ omlish/marshal/polymorphism.py,sha256=KBH4VnMl0SdSfjGNtZumBT7q3jB8wkDT5DKF7SD64C4,5582
215
+ omlish/marshal/primitives.py,sha256=-gLR_RTPTM8YP6t6PL5sNM1lAtwcZDHc9lxkimoQ9jw,1097
194
216
  omlish/marshal/registries.py,sha256=GI2KogcxawMkk02Ky7-TsnijChoe1I7YTOPIbUNwSAI,1665
195
- omlish/marshal/standard.py,sha256=MPmtJH3B_LqeoSwQsxKjUm65-cq6albBc8z-gxyKAj4,2442
217
+ omlish/marshal/standard.py,sha256=747rai9Rq0zTWQMIL2gLmU7p7c2tyHYosfQJipMS1-c,2657
196
218
  omlish/marshal/utils.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
197
- omlish/marshal/uuids.py,sha256=_htkeMt1a6FUNBlstZIy2rrB1-1DiavV5dZrjSQNYVM,952
219
+ omlish/marshal/uuids.py,sha256=H4B7UX_EPNmP2tC8bubcKrPLTS4aQu98huvbXQ3Zv2g,910
198
220
  omlish/marshal/values.py,sha256=ssHiWdg_L6M17kAn8GiGdPW7UeQOm3RDikWkvwblf5I,263
199
- omlish/secrets/__init__.py,sha256=4yMFQXAd-Rmb4w0uu-dFkjCnNXeq2SzWE2ckUpI1KbI,114
200
- omlish/secrets/marshal.py,sha256=aAMdib-iudUXG1mx7_q0yb1l_aWJyRr3Dur3ig8GUQE,1206
221
+ omlish/reflect/__init__.py,sha256=iWDCNJNP4afPcv-MxZRJSIRQ4NRw6XYPyRHhBXb5YIA,667
222
+ omlish/reflect/isinstance.py,sha256=x5T9S2634leinBT4hl3CZZkRttvdvvlxChkC_x9Qu2s,1176
223
+ omlish/reflect/ops.py,sha256=RJ6jzrM4ieFsXzWyNXWV43O_WgzEaUvlHSc5N2ezW2A,2044
224
+ omlish/reflect/subst.py,sha256=JM2RGv2-Rcex8wCqhmgvRG59zD242P9jM3O2QLjKWWo,3586
225
+ omlish/reflect/types.py,sha256=_AZeSkqraWkDBrBEq5mT4DiTS98ZHyiWR7TFSVJqJSk,6815
226
+ omlish/secrets/__init__.py,sha256=VKB2IF9vz4h4RXcZxgXj36KXOLcGBzfqVnxPgPDWpmg,408
227
+ omlish/secrets/crypto.py,sha256=6CsLy0UEqCrBK8Xx_3-iFF6SKtu2GlEqUQ8-MliY3tk,3709
228
+ omlish/secrets/marshal.py,sha256=nVzsvQH5w3T2oMP7DCc1SLKxyR5e66psM57VOQoL0QA,2086
229
+ omlish/secrets/openssl.py,sha256=nAA_wxk86G92B7027AoAlAiFliMjxLVs7xlaOAFGayE,6225
201
230
  omlish/secrets/passwords.py,sha256=3r-vEK6Gp6aq4L5Csnd06QnrjO9xfzHJP-g_7I9W_ao,4101
202
- omlish/secrets/secrets.py,sha256=k5nRrZumNDlr9R0XUObpIzxHGqqfrNrVFUd7hpA-tgw,838
203
- omlish/serde/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
- omlish/serde/dotenv.py,sha256=bVWHo8Rr15IpoyEC8xklkccDXzJU5k7Yziyi8KAfOtI,17184
205
- omlish/serde/json.py,sha256=KRfH-MLOrMXUFVy_eX6RagC37Z-KyfOIXlVdxM6nuxc,6787
206
- omlish/serde/props.py,sha256=diYjZDsG1s50ImJhkpeinMwjr8952nIVI-0gYhBIvCY,18897
207
- omlish/serde/yaml.py,sha256=t41GPx8O57_Lu235NVjvwOEY_PAvvefDZMuPxOVTCtM,6640
231
+ omlish/secrets/secrets.py,sha256=hFN82uYiBVx8YSE86leWNxb4IRp3qdwZPOi4w04h8u0,6855
232
+ omlish/secrets/subprocesses.py,sha256=EcnKlHHtnUMHGrBWXDfu8tv28wlgZx4P4GOiuPW9Vo8,1105
208
233
  omlish/sql/__init__.py,sha256=pLv2EQmAwcGXN0Y3AE8K5JjyN_4GaHRMHyExaDFm5yU,181
209
234
  omlish/sql/_abc.py,sha256=HLhnnLZ7l0r_N99I-RCqJe6VHth-9iluU7cR-7-5jfs,1519
210
235
  omlish/sql/asyncs.py,sha256=Wye3dwh7oZEGYz2Y4DZQSHtW4xjI2AH5qjW-BSS2IfU,3688
211
- omlish/sql/dbs.py,sha256=t_tV5aDOqoktddIyLVMOiRtNMTe7S0rQklEkmks2TEc,1775
236
+ omlish/sql/dbs.py,sha256=lpdFmm2vTwLoBiVYGj9yPsVcTEYYNCxlYZZpjfChzkY,1870
212
237
  omlish/sql/duckdb.py,sha256=Z3wiZEn_21Lu1ElFRX0ATzoBMCw0KJxINjTRuTexYGM,3748
238
+ omlish/sql/exprs.py,sha256=gO4Fj4xEY-PuDgV-N8hBMy55glZz7O-4H7v1LWabfZY,323
239
+ omlish/sql/secrets.py,sha256=mDUunIACxHBsPD_ONbHQJVndeMMzJR4vMC2WWX7tGfY,177
213
240
  omlish/sql/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
214
241
  omlish/testing/__init__.py,sha256=l13axR7dyVE9T1e6w1pMYtAkW3vS2J97nBcYQ1FUv18,136
215
242
  omlish/testing/testing.py,sha256=p1bP9fnxmYzOvPJ_7S1wq7PrKMzclK8PgYH5DwaQiHk,2918
@@ -227,14 +254,14 @@ omlish/testing/pytest/plugins/pydevd.py,sha256=u1fxfCgFw4wGKBkMV_H_l9WI8JoUwlRff
227
254
  omlish/testing/pytest/plugins/repeat.py,sha256=flSQzE9GFOWksVKz-mUGnpxJpv3yRqn1G4K8pW7JHs0,498
228
255
  omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4Y7vfDRhwM,1041
229
256
  omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74N8bYX2VESFE,707
230
- omlish/testing/pytest/plugins/switches.py,sha256=qeCp3aDtZjnh6-po1FU4JEKCrR97q0MI9nJmIF_LRkg,1809
257
+ omlish/testing/pytest/plugins/switches.py,sha256=9FtN5qtPBoS-teEp54OHPF6jlZJakRJdq4pnLJpPj_A,3001
231
258
  omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
259
  omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
233
- omlish/text/glyphsplit.py,sha256=6h2mZcEzxbdOE_zspGYfbrcFQsv6T8F8sqV199BuesI,3035
260
+ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
234
261
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
235
262
  omlish/text/parts.py,sha256=KGgo0wHOIMVMZtDso-rhSWKAcAkYAH2IGpg9tULabu8,6505
236
- omlish-0.0.0.dev6.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
237
- omlish-0.0.0.dev6.dist-info/METADATA,sha256=BjJwsI-1K2VNfJ5HR_t9on8XqH2JySFrLY8_Cabx_Wc,1058
238
- omlish-0.0.0.dev6.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
239
- omlish-0.0.0.dev6.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
240
- omlish-0.0.0.dev6.dist-info/RECORD,,
263
+ omlish-0.0.0.dev8.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
264
+ omlish-0.0.0.dev8.dist-info/METADATA,sha256=0U0qkYBESUwpP81Sy37DAXVODIDrZTiEkU97tEQPpxk,2121
265
+ omlish-0.0.0.dev8.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
266
+ omlish-0.0.0.dev8.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
267
+ omlish-0.0.0.dev8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.1.0)
2
+ Generator: setuptools (73.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
omlish/logs/filters.py DELETED
@@ -1,11 +0,0 @@
1
- # ruff: noqa: ANN201
2
-
3
- import logging
4
- import threading
5
-
6
-
7
- class TidFilter(logging.Filter):
8
-
9
- def filter(self, record):
10
- record.tid = threading.get_native_id()
11
- return True