omlish 0.0.0.dev5__py3-none-any.whl → 0.0.0.dev6__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.

Files changed (100) hide show
  1. omlish/__about__.py +1 -1
  2. omlish/asyncs/__init__.py +9 -0
  3. omlish/asyncs/anyio.py +83 -19
  4. omlish/asyncs/asyncio.py +23 -0
  5. omlish/asyncs/asyncs.py +9 -6
  6. omlish/asyncs/bridge.py +316 -0
  7. omlish/asyncs/trio_asyncio.py +7 -3
  8. omlish/collections/__init__.py +1 -0
  9. omlish/collections/identity.py +7 -0
  10. omlish/configs/strings.py +94 -0
  11. omlish/dataclasses/__init__.py +9 -0
  12. omlish/dataclasses/impl/copy.py +30 -0
  13. omlish/dataclasses/impl/exceptions.py +6 -0
  14. omlish/dataclasses/impl/fields.py +24 -25
  15. omlish/dataclasses/impl/init.py +4 -2
  16. omlish/dataclasses/impl/main.py +2 -0
  17. omlish/dataclasses/utils.py +44 -0
  18. omlish/diag/__init__.py +4 -0
  19. omlish/diag/procfs.py +2 -2
  20. omlish/{testing → diag}/pydevd.py +35 -0
  21. omlish/dispatch/_dispatch2.py +65 -0
  22. omlish/dispatch/_dispatch3.py +104 -0
  23. omlish/docker.py +1 -1
  24. omlish/fnpairs.py +11 -0
  25. omlish/http/asgi.py +2 -1
  26. omlish/http/collections.py +15 -0
  27. omlish/http/consts.py +16 -1
  28. omlish/http/sessions.py +10 -3
  29. omlish/inject/__init__.py +45 -17
  30. omlish/inject/binder.py +185 -5
  31. omlish/inject/bindings.py +3 -36
  32. omlish/inject/eagers.py +2 -8
  33. omlish/inject/elements.py +30 -9
  34. omlish/inject/exceptions.py +1 -1
  35. omlish/inject/impl/elements.py +37 -12
  36. omlish/inject/impl/injector.py +19 -2
  37. omlish/inject/impl/inspect.py +33 -5
  38. omlish/inject/impl/origins.py +75 -0
  39. omlish/inject/impl/{private.py → privates.py} +2 -2
  40. omlish/inject/impl/scopes.py +6 -2
  41. omlish/inject/injector.py +8 -4
  42. omlish/inject/inspect.py +18 -0
  43. omlish/inject/keys.py +8 -14
  44. omlish/inject/listeners.py +26 -0
  45. omlish/inject/managed.py +76 -10
  46. omlish/inject/multis.py +68 -18
  47. omlish/inject/origins.py +27 -0
  48. omlish/inject/overrides.py +5 -4
  49. omlish/inject/{private.py → privates.py} +6 -10
  50. omlish/inject/providers.py +12 -85
  51. omlish/inject/scopes.py +13 -6
  52. omlish/inject/types.py +3 -1
  53. omlish/lang/__init__.py +8 -2
  54. omlish/lang/cached.py +2 -2
  55. omlish/lang/classes/restrict.py +2 -1
  56. omlish/lang/classes/simple.py +18 -8
  57. omlish/lang/contextmanagers.py +12 -3
  58. omlish/lang/descriptors.py +131 -0
  59. omlish/lang/functions.py +8 -28
  60. omlish/lang/iterables.py +20 -1
  61. omlish/lang/typing.py +5 -0
  62. omlish/lifecycles/__init__.py +34 -0
  63. omlish/lifecycles/abstract.py +43 -0
  64. omlish/lifecycles/base.py +51 -0
  65. omlish/lifecycles/contextmanagers.py +74 -0
  66. omlish/lifecycles/controller.py +116 -0
  67. omlish/lifecycles/manager.py +161 -0
  68. omlish/lifecycles/states.py +43 -0
  69. omlish/lifecycles/transitions.py +64 -0
  70. omlish/logs/formatters.py +1 -1
  71. omlish/marshal/__init__.py +4 -0
  72. omlish/marshal/naming.py +4 -0
  73. omlish/marshal/objects.py +1 -0
  74. omlish/marshal/polymorphism.py +4 -4
  75. omlish/reflect.py +134 -19
  76. omlish/secrets/__init__.py +7 -0
  77. omlish/secrets/marshal.py +41 -0
  78. omlish/secrets/passwords.py +120 -0
  79. omlish/secrets/secrets.py +47 -0
  80. omlish/serde/__init__.py +0 -0
  81. omlish/{configs → serde}/dotenv.py +12 -24
  82. omlish/{json.py → serde/json.py} +2 -1
  83. omlish/serde/yaml.py +223 -0
  84. omlish/sql/dbs.py +1 -1
  85. omlish/sql/duckdb.py +136 -0
  86. omlish/sql/sqlean.py +17 -0
  87. omlish/term.py +1 -1
  88. omlish/testing/pytest/__init__.py +3 -2
  89. omlish/testing/pytest/inject/harness.py +3 -3
  90. omlish/testing/pytest/marks.py +4 -7
  91. omlish/testing/pytest/plugins/__init__.py +1 -0
  92. omlish/testing/pytest/plugins/asyncs.py +136 -0
  93. omlish/testing/pytest/plugins/pydevd.py +1 -1
  94. omlish/text/glyphsplit.py +92 -0
  95. {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev6.dist-info}/METADATA +1 -1
  96. {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev6.dist-info}/RECORD +100 -72
  97. /omlish/{configs → serde}/props.py +0 -0
  98. {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev6.dist-info}/LICENSE +0 -0
  99. {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev6.dist-info}/WHEEL +0 -0
  100. {omlish-0.0.0.dev5.dist-info → omlish-0.0.0.dev6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,92 @@
1
+ import dataclasses as dc
2
+ import re
3
+
4
+ from .. import check
5
+
6
+
7
+ @dc.dataclass(frozen=True)
8
+ class GlyphMatch:
9
+ l: str
10
+ s: str
11
+ r: str
12
+
13
+
14
+ class GlyphSplitter:
15
+
16
+ def __init__(
17
+ self,
18
+ glyphs: tuple[str, str],
19
+ *,
20
+ escape_returned_doubles: bool = False,
21
+ compact: bool = False,
22
+ ) -> None:
23
+ super().__init__()
24
+
25
+ glyphs = tuple(map(check.of_isinstance(str), glyphs)) # type: ignore
26
+ check.state(all(len(s) == 1 for s in glyphs))
27
+ check.state(len(glyphs) == 2)
28
+
29
+ self._glyphs = glyphs
30
+ self._l_glyph, self._r_glyph = glyphs
31
+
32
+ self._escape_returned_doubles = escape_returned_doubles
33
+ self._compact = compact
34
+
35
+ self._l_double_glyph = self._l_glyph * 2
36
+ self._r_double_glyph = self._r_glyph * 2
37
+ self._double_glyphs = (self._l_double_glyph, self._r_double_glyph)
38
+
39
+ self._l_escaped_glyph = re.escape(self._l_glyph)
40
+ self._r_escaped_glyph = re.escape(self._r_glyph)
41
+
42
+ self._l_glyph_pat = re.compile(r'(%s)' % (self._l_escaped_glyph * 2,)) # noqa
43
+ self._r_glyph_pat = re.compile(r'(%s)' % (self._r_escaped_glyph * 2,)) # noqa
44
+
45
+ self._single_glyph_pat = re.compile(r'(%s[^%s]*?%s)' % (self._l_escaped_glyph, self._r_escaped_glyph, self._r_escaped_glyph)) # noqa
46
+
47
+ def split(self, s: str) -> list[GlyphMatch | str]:
48
+ ps = self._l_glyph_pat.split(s)
49
+ ps = [p[::-1] for p in ps for p in reversed(self._r_glyph_pat.split(p[::-1]))]
50
+
51
+ ret = [] # type: ignore
52
+
53
+ def append_ret(o):
54
+ if self._compact and isinstance(o, str) and ret and isinstance(ret[-1], str):
55
+ ret[-1] = ret[-1] + o
56
+ else:
57
+ ret.append(o)
58
+
59
+ for p in ps:
60
+ if p in self._double_glyphs:
61
+ if self._escape_returned_doubles:
62
+ p = self._glyphs[p == self._r_double_glyph]
63
+ append_ret(p)
64
+ continue
65
+
66
+ ms = list(self._single_glyph_pat.finditer(p))
67
+ if not ms:
68
+ append_ret(p)
69
+ continue
70
+
71
+ l = 0
72
+ for m in ms:
73
+ if m.start() != l:
74
+ append_ret(p[l:m.start()])
75
+ append_ret(GlyphMatch(self._l_glyph, p[m.start() + 1:m.end() - 1], self._r_glyph))
76
+ l = m.end()
77
+
78
+ if l < len(p):
79
+ append_ret(p[l:])
80
+
81
+ return ret
82
+
83
+
84
+ _PAREN_GLYPH_SPLITTER = GlyphSplitter(('(', ')'), escape_returned_doubles=True, compact=True)
85
+ _BRACE_GLYPH_SPLITTER = GlyphSplitter(('{', '}'), escape_returned_doubles=True, compact=True)
86
+ _BRACKET_GLYPH_SPLITTER = GlyphSplitter(('[', ']'), escape_returned_doubles=True, compact=True)
87
+ _ANGLE_BRACKET_GLYPH_SPLITTER = GlyphSplitter(('<', '>'), escape_returned_doubles=True, compact=True)
88
+
89
+ split_parens = _PAREN_GLYPH_SPLITTER.split
90
+ split_braces = _BRACE_GLYPH_SPLITTER.split
91
+ split_brackets = _BRACKET_GLYPH_SPLITTER.split
92
+ split_angle_brackets = _ANGLE_BRACKET_GLYPH_SPLITTER.split
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev5
3
+ Version: 0.0.0.dev6
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,37 +1,37 @@
1
- omlish/__about__.py,sha256=DRRTcsdRyiFWy3v2CwRHzPSEQhEan56BOP410TJVaNE,153
1
+ omlish/__about__.py,sha256=ok0Te9wzfwYtf7-NR58LNlxYA2Vd-jDbB4klfQ3W5JU,153
2
2
  omlish/__init__.py,sha256=AGJOJExzKB9Ugu7eI6nTRys4D-Kd4fseT2-PCM9-1Rg,196
3
3
  omlish/argparse.py,sha256=QRQmX9G0-L_nATkFtGHvpd4qrpYzKATdjuFLbBqzJPM,6224
4
4
  omlish/c3.py,sha256=W5EwYx9Por3rWYLkKUitJ6OoRMLLgVTfLTyroOz41Y0,8047
5
5
  omlish/cached.py,sha256=UAizxlH4eMWHPzQtmItmyE6FEpFEUFzIkxaO2BHWZ5s,196
6
6
  omlish/check.py,sha256=h66jWSwaiuaaIKPI6_pIfolWYYK3WTR43X1CBO5-PQA,5538
7
7
  omlish/defs.py,sha256=N8O1murtr4mdSE_vjAcWGfnN7GyBXbW8rJM4qPF8na0,4737
8
- omlish/docker.py,sha256=5UWw0H8kCjKEEE_q2lVaParbdWkgXVtg1t3Bv1YYEt8,4371
8
+ omlish/docker.py,sha256=Fm1VGXSGlIpEnJe4wwnC8JY25AHSmvtFlOSplHigWkk,4376
9
9
  omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
10
- omlish/fnpairs.py,sha256=nVXfpVG4Ntv74P5El0LzuLs_kMQsDBOvcms1RVOxRnQ,9225
10
+ omlish/fnpairs.py,sha256=tGOw4zkF9r_SATvtnWEABreINvrO0e3OsB7IRqtNtwk,9495
11
11
  omlish/iterators.py,sha256=Z6oXZwV3aDx4A0z6mvwEahVLqopMQBZ-b2yHr4tUfmQ,5912
12
- omlish/json.py,sha256=sRpnqiRoaciqdrVqZ9CJCwSsMpvOaYRT5gsKCvW4gGM,6785
13
12
  omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
14
13
  omlish/math.py,sha256=AVqp5Y8yxKA-wO0BgrzaxA0Ga3PZiCXnYcwivMneC-0,3804
15
14
  omlish/os.py,sha256=T77P7_U7jShPXsm_byvXwPoumcmtA0a7KPRvE2GAOhw,950
16
- omlish/reflect.py,sha256=opsshZYQS5hqpBxePA4kwkHMrRpHCcye5-ghVI9BmtE,10014
15
+ omlish/reflect.py,sha256=Ce70q2GLn6tyNl44bl3HkqF_yZ3ls9L3V-PE8i0R2pM,12740
17
16
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
18
17
  omlish/stats.py,sha256=uqjN-focDVssFZMagj22HqmyJ1TBO4Wt-XnHp8-EtVw,9927
19
18
  omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
20
- omlish/term.py,sha256=CZnTrvjSSB5HrMJV7sIk8Eqk010DGk7MYQMtF8l4nds,6100
21
- omlish/asyncs/__init__.py,sha256=V11Jg0NXbbfYwO2gTuTXoHaL0OiPdjnNEZdLedJpRzg,636
22
- omlish/asyncs/anyio.py,sha256=EkjycVPBBwnHgxWg1ZHsTHA1-38E0LKj757Glw5HLPs,4762
23
- omlish/asyncs/asyncio.py,sha256=pSldCmtE9AgVATXb_Vnhjhhz0v2LtqgVXxe7-OFjH0g,414
24
- omlish/asyncs/asyncs.py,sha256=MmIz8Gw4PbZd0LUIro_u5kUjobR8i2qGCo6l2hb4U74,2014
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/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
23
+ omlish/asyncs/asyncs.py,sha256=Tf7ZodTGepkM7HAuFcDNh9lLzzrMw6rELWvopGmFkh4,2035
24
+ omlish/asyncs/bridge.py,sha256=AabrRVz5k75dTB59M70DWkl6JrLusjhpvsaj5jld9io,8151
25
25
  omlish/asyncs/flavors.py,sha256=kp1RdcsNrvDQZMB4Q_hlHyjrREJqEWjY9BI1lbE1AQ8,4820
26
26
  omlish/asyncs/futures.py,sha256=3KkTj5TOPmvNOcuK9LtOQwmkuLzoEYQfcuaHTXSQ0Ts,5424
27
27
  omlish/asyncs/trio.py,sha256=GKG3wgelFr7gIKKHZhcflvMyCvxXHNZe862KB0Xw2uA,370
28
- omlish/asyncs/trio_asyncio.py,sha256=sBcKn4wTjzwd2HKmNm-UkTzBEBZC05ucbMOKCk8zMa0,1216
29
- omlish/collections/__init__.py,sha256=2Eu5Tj_YusZoJlKVFLE9lHQvZEffNIZVimPkkboqMVI,1577
28
+ omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw,1327
29
+ omlish/collections/__init__.py,sha256=dOaaXAZKd-YQC1hItGTfJdhERIC7Io0klUmjajbT4qQ,1598
30
30
  omlish/collections/_abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
31
31
  omlish/collections/_io_abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
32
32
  omlish/collections/coerce.py,sha256=o11AMrUiyoadd8WkdqeKPIpXf2xd0LyylzNCyJivCLU,7036
33
33
  omlish/collections/frozen.py,sha256=DGxemj_pVID85tSBm-Wns_x4ov0wOEIT6X5bVgJtmkA,4152
34
- omlish/collections/identity.py,sha256=3X4J-LqdzM-9QA1bJ_FIxqxsei_ESS3oJHFlD1VX7KQ,2550
34
+ omlish/collections/identity.py,sha256=jhEpC8tnfh3Sg-MJff1Fp9eMydt150wits_UeVdctUk,2723
35
35
  omlish/collections/indexed.py,sha256=YHs_q0GALisXPKKMgeDQxZ6hMzYndqDL3m3ag8cnzH0,2143
36
36
  omlish/collections/mappings.py,sha256=5D7xZabUY6n1nB-BrZlcrPy_AdzLZ6IyihuLeDL48pA,3188
37
37
  omlish/collections/ordered.py,sha256=RzEC3fHvrDeJQSWThVDNYQKke263Vje1II5YwtDwT1Q,2335
@@ -48,20 +48,21 @@ omlish/collections/cache/impl.py,sha256=nQox5kChhns9h2a5gnX-ayQGBQJ5-B1aZkLQ2Aej
48
48
  omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K7p8E,685
49
49
  omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
50
50
  omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
51
- omlish/configs/dotenv.py,sha256=rC0-j6FjoBqHbwhXPFQD-pLxs_9s0NFR_QaGGM_1kPA,17463
52
51
  omlish/configs/flattening.py,sha256=AOlRpBHm449MxwMp3CiIRGunStOC1DUNs1f3CLou0wc,4731
53
- omlish/configs/props.py,sha256=diYjZDsG1s50ImJhkpeinMwjr8952nIVI-0gYhBIvCY,18897
54
- omlish/dataclasses/__init__.py,sha256=xx4l1C6bgo75DMcZZwhIJr9UZpo8LranMqa_1hOkiMk,972
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
55
  omlish/dataclasses/impl/__init__.py,sha256=rQJRcE9fVsGEvRUOZ18r4DE0xiLbSRjspyJRXgbLS3I,348
56
56
  omlish/dataclasses/impl/api.py,sha256=NOuw5dlwztG5AA_gwdF2PJAqvouMdbUf1Si80G26qAY,6244
57
57
  omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
58
- omlish/dataclasses/impl/exceptions.py,sha256=EDuVPeyjBu8jHYUFIASRNupRL-krpytSeuNIkD4N6Ok,38
59
- omlish/dataclasses/impl/fields.py,sha256=pjWwq4xiqXrjrUQrPGaYp24sDqU_v_VobIXX9_98XkQ,4243
58
+ omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
59
+ omlish/dataclasses/impl/exceptions.py,sha256=WD0Tr1TnjUN4OR3f3rs8CgqtP2KBA1tKjPIbZO8Tzm0,178
60
+ omlish/dataclasses/impl/fields.py,sha256=zBa-XjJJQ7dOP_se-A8Q4Vv3ol2xjpTQXTUBCnr1UVs,4377
60
61
  omlish/dataclasses/impl/frozen.py,sha256=5wKtt8WvPYCkHPrwR024mpvbFzqcbPQfgiFvy3orRJo,1692
61
62
  omlish/dataclasses/impl/hashing.py,sha256=FKnHuXCg9ylrzK2TLGqO5yfRN4HX3F415CSLlVYXtYE,3190
62
- omlish/dataclasses/impl/init.py,sha256=G6cJ3Zh04LdNcIapHf9SZdTFgLR3EdqBGk_fADROU4A,5558
63
+ omlish/dataclasses/impl/init.py,sha256=yw9iInFHaR_TFWRzsryr8vgStHMQwqubL-s7pY5k1sA,5652
63
64
  omlish/dataclasses/impl/internals.py,sha256=LTCqGT8AhyGTWwioGrBpTJzDzPvAtizQKb0NBNKcNs0,2989
64
- omlish/dataclasses/impl/main.py,sha256=91aThf9cdWuSJn8pcWsyWasC8LT06Ym6FjbnDM3GeG4,5130
65
+ omlish/dataclasses/impl/main.py,sha256=vAVdqb4cgvyssA7rCFl9i2D0MAffX45YtQbGQ2te5_c,5189
65
66
  omlish/dataclasses/impl/metaclass.py,sha256=dlQEIN9MHBirll7Nx3StpzxYxXjrqxJ-QsorMcCNt7w,2828
66
67
  omlish/dataclasses/impl/metadata.py,sha256=HGqAtMcP422X4kPx93btcxE-n4guBFm6-N-S4nobgk4,1407
67
68
  omlish/dataclasses/impl/order.py,sha256=zWvWDkSTym8cc7vO1cLHqcBhhjOlucHOCUVJcdh4jt0,1369
@@ -73,16 +74,19 @@ omlish/dataclasses/impl/repr.py,sha256=oLXBTxqp88NKmz82HrJeGiTEiwK4l5LlXQT9Q0-tX
73
74
  omlish/dataclasses/impl/simple.py,sha256=EovA-GpmQYtB_svItO2byTAWqbKGF4njz0MdQts3QBU,3157
74
75
  omlish/dataclasses/impl/slots.py,sha256=_sm-x9v1tPnXEHBHNUMTHZocgVyhZaPdvamIPPBUVyk,2635
75
76
  omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
76
- omlish/diag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- omlish/diag/procfs.py,sha256=RudRvwWV42fmxpHLIryRgbT4zSRlPZJ1624lAPbRioY,9562
77
+ omlish/diag/__init__.py,sha256=BYQoq12W2qU0O7m2Z-RLCX6YLIYEW9MmfN7_i9--Yk0,132
78
+ omlish/diag/procfs.py,sha256=CjMDMtf6ToNu9_MbWAdQ-5cvuUyMs5R3aZOjyRtgHtw,9579
78
79
  omlish/diag/procstats.py,sha256=9uQMvVL7Yzf_1F8dW55pcZeCFtP5yUbK1KuGn9bt2Qg,502
79
80
  omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
81
+ omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
80
82
  omlish/diag/threads.py,sha256=Vs05WqH0C6GlTcQo2CiSH5SbT1YlnETRX5slT7YBl9M,2058
81
83
  omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
82
84
  omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
83
85
  omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
84
86
  omlish/diag/replserver/server.py,sha256=MBLMouRuJ7eMXBHVsMQS8KGHwZuDThPoNkiJb32UVI0,4896
85
87
  omlish/dispatch/__init__.py,sha256=GsiGJ91NKiQptSROtnCSkrZExBkvfDwYvdoTu5dBqF0,117
88
+ omlish/dispatch/_dispatch2.py,sha256=v3tCNyxGpOwY8qTwdp54TlM8mG6OVwtQoUZfYJ_griU,1756
89
+ omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc,2608
86
90
  omlish/dispatch/dispatch.py,sha256=8B66wOat30HckcIsCq4pnutBy20iSPwPQOqJ4msHaGU,3739
87
91
  omlish/dispatch/functions.py,sha256=S8ElsLi6DKxTdtFGigWaF0vAquwy2sK-3f4iRLaYq70,1522
88
92
  omlish/dispatch/methods.py,sha256=utLvLioBgEqa0gR0fpfNEtMDZFGPM4G5p3XHnPt-oIw,5865
@@ -95,70 +99,82 @@ omlish/graphs/dot/items.py,sha256=OWPf0-hjBgS1uyy2QgAEn4IgFHJcEg7sHVWeTx1ghZc,40
95
99
  omlish/graphs/dot/rendering.py,sha256=hUSJ5HvSvxnTIC9ynSxxP8IJnVH6quEeDbLzNlUnmuk,3626
96
100
  omlish/graphs/dot/utils.py,sha256=_FMwn77WfiiAfLsRTOKWm4IYbNv5kQN22YJ5psw6CWg,801
97
101
  omlish/http/__init__.py,sha256=v2f9Hh6bTgcz0MkG9T2JQarzeIgHlDxDT2cbINbpyw8,367
98
- omlish/http/asgi.py,sha256=Vi0kG-EmqPOimk8pdMsoXe0qRh1ckIwKjxcNlT8N5z8,3204
99
- omlish/http/consts.py,sha256=Buo8xx1Zo89O2Hgsoqu_uPOQW193K47OufKfXMquZ70,1600
102
+ omlish/http/asgi.py,sha256=wXhBZ21bEl32Kv9yBrRwUR_7pHEgVtHP8ZZwbasQ6-4,3307
103
+ omlish/http/collections.py,sha256=s8w5s4Gewgxxhe2Ai0R45PgJYYifrLgTbU3VXVflHj4,260
104
+ omlish/http/consts.py,sha256=-Dm_Kcm3BH6kKSkqYnEHKHf-624YW7cjqsNM7mi75Wk,1914
100
105
  omlish/http/cookies.py,sha256=x56AvYtwNyQKFzVD1zSGIsfg9oiArd6ICTMEdugP008,6356
101
106
  omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
102
107
  omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
103
108
  omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
104
- omlish/http/sessions.py,sha256=hCah0tXZ7ZiYeThqhYHWv9qvFDQbKGabSIV5sxy9QvY,4574
109
+ omlish/http/sessions.py,sha256=LfqVm0NYGN3tEXnX9uTrHIvPiKlg6ZM09AM3aBd-g-E,4781
105
110
  omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
106
- omlish/inject/__init__.py,sha256=xg4T-n-nOGmSug3Jxx2YCwVRRSvxIyn5s4YDk9OmC4c,1299
107
- omlish/inject/binder.py,sha256=hkT2dw_VSOkYTP4Mn1gvEFKeWPb-O_koFeSSsB8eNx4,278
108
- omlish/inject/bindings.py,sha256=Jl3wXCeVz_K5i6NA0vGMC9kV3kgkI0pNmCFXakaRqps,1101
109
- omlish/inject/eagers.py,sha256=ITpV2FoIzP2xJs4XtzEKTWP0QktLw1aPSWTxmNVJcPA,372
110
- omlish/inject/elements.py,sha256=HXG5rt2IMczK3eJCkEhj73wcCIliJnqFzQv3evPwOGI,957
111
- omlish/inject/exceptions.py,sha256=BcO9fmA0OJmf9V62Wnh_CaxvoEscB9ArwzCcx-0QC9U,624
112
- omlish/inject/injector.py,sha256=CnQNDM_8g2ZyZ4-aXfYsMKgBryJVWHeVR-L6f2kTuf8,928
113
- omlish/inject/inspect.py,sha256=PriB5cqqTYSz_FnLxoxIRAOp9fR9CMSILfvh-V26wxA,206
114
- omlish/inject/keys.py,sha256=MOGv8MaCd6j_v3r6n3rZM02q482GVbRfsgIiA6E9eYw,608
115
- omlish/inject/managed.py,sha256=hXVl8eLMrCaEwPv6glB9Dfr5EM_y1fBQwrZ2eu2XxsQ,627
116
- omlish/inject/multis.py,sha256=PYy60YK-FMhSo6ukppcyFx3WBG6UazhrWY93leJW1xQ,1634
117
- omlish/inject/overrides.py,sha256=k-WjyslF-pZmsYwzrDDsFNgqcl0Ao3CufHCoN0LDCAU,391
118
- omlish/inject/private.py,sha256=brBCsI-lZHPoouAij7_Eja44nkT-HxweG6eSVIhtXMA,592
119
- omlish/inject/providers.py,sha256=XfdwI-puW9kCBuZb4ARmjrMDAprytrgOWcTQ-GSH8hk,2025
120
- omlish/inject/scopes.py,sha256=J57bdqpsfRfkZfwnUZxkKmS4vrdz9qKpzZDQJ3n-6tY,2049
121
- omlish/inject/types.py,sha256=miEDsShQ-5syB53KeR4PbG3X6VOsXll5fjZuRh3ERDw,183
111
+ omlish/inject/__init__.py,sha256=NeW41Kbr0KCDAu1-9IiWf9P-HoO3FXfKhLgbigaT0iU,1841
112
+ omlish/inject/binder.py,sha256=Xxk3S3g8f6a0Gr7mi2dXgQwBuqlHgWGz2wNOVpcFmPE,4167
113
+ omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
114
+ omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
115
+ omlish/inject/elements.py,sha256=njMqYexCwqXyBifORvV5Y3g7fFG_9QPLU4uAwZhcGbQ,1508
116
+ omlish/inject/exceptions.py,sha256=_wkN2tF55gQzmMOMKJC_9jYHBZzaBiCDcyqI9Sf2UZs,626
117
+ omlish/inject/injector.py,sha256=CoCUeMm1Oot4sG4Ti1sKCWrhlvtJ5QAeAI22AFWu2RQ,1066
118
+ omlish/inject/inspect.py,sha256=tw49r1RJVHrEHmT8WWA3_Bl9Z0L3lEGRqlLhbM5OmAM,592
119
+ omlish/inject/keys.py,sha256=05KePew5_Cn_zWgBpIcXsa5orxm6xn4YL_IWXEvrSr8,651
120
+ omlish/inject/listeners.py,sha256=AIWUs4OTUPeURU1tS2CXeEbJwC1bZiuya9K6I2ElMns,581
121
+ omlish/inject/managed.py,sha256=Ls54Ah5KDrLHYWmso64xipvCLWPcgl1sUOn2n1tuWag,2107
122
+ omlish/inject/multis.py,sha256=PQcIZbKpTJEOca_4pCp__3jLWLb9n90jZLbDe-xx8dQ,3351
123
+ omlish/inject/origins.py,sha256=lk7wkPry-2xN5PgEAYsfwMZd94VHr7fEZ-YkKnYsGXA,512
124
+ omlish/inject/overrides.py,sha256=hrm243slCw_DDRbn3dK5QK1jfHezVokG-WYO2JaQOV8,535
125
+ omlish/inject/privates.py,sha256=hZOa_keY3KlXAzyiZ-sfN697UKXpkfXXNUIEmGT5TAA,641
126
+ omlish/inject/providers.py,sha256=MAla7uDQR63zj9oB9XqN8rK3DGGLSzUKZ4rUU_5dM40,751
127
+ omlish/inject/scopes.py,sha256=0b8Y0VidkpEk7tyxKSbv_1fE-2LomKTYlhFeoEemkwg,1979
128
+ omlish/inject/types.py,sha256=11WVEPkZ-_8cv1BeTDRU-soIYxB_6x7dyWtsa2Iej9U,251
122
129
  omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
130
  omlish/inject/impl/bindings.py,sha256=8H586RCgmvwq53XBL9WMbb-1-Tdw_hh9zxIDCwcHA1c,414
124
- omlish/inject/impl/elements.py,sha256=tXtLqutL2KJEzmttNo9MukJAK3F0viNsPEgLj2qd-BQ,5107
125
- omlish/inject/impl/injector.py,sha256=9zePrgMII0NepJrDtDrONI777cMyAhiU0CmE5170b2U,5715
126
- omlish/inject/impl/inspect.py,sha256=ZQScAStbjWi_5InA6M52ll3cdyfPRuLwYo6kc4kFsmM,2525
131
+ omlish/inject/impl/elements.py,sha256=bJBbHce_eZyIua2wbcejMwd9Uv-QeYcQ-c5N1qOXSmU,5950
132
+ omlish/inject/impl/injector.py,sha256=PO8cpCq5sOhcGEC2rDL4xaQYBNgt__e1NX7wgP_rr_o,6297
133
+ omlish/inject/impl/inspect.py,sha256=erLL1w6GzoPVGwORm56ra9vR-IH5BoMQrr7POwaFDjU,3050
127
134
  omlish/inject/impl/multis.py,sha256=rRIWNCiTGaSWQUz_jxEy8LUmzdJDAlG94sLHYDS-ncg,2048
128
- omlish/inject/impl/private.py,sha256=MiYvs-EiFrla4FQnoqmqGpYx784ij33p0obAS57HOCQ,2611
135
+ omlish/inject/impl/origins.py,sha256=vmCLcZgg-j-55y3AwSnMU95qt5C1hzpbLdzNzi-uQ-w,1591
136
+ omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
129
137
  omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
130
138
  omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
131
- omlish/inject/impl/scopes.py,sha256=M9-5RceNCz1bHMqBNf1xO0obxck0mVpJ0R4oy4NgGA0,5712
132
- omlish/lang/__init__.py,sha256=hfJ1tLMZpZfBTq7Wj6d_EOjd-3b3BE3V6ehp1hyD7jY,2843
133
- omlish/lang/cached.py,sha256=MgBHfT83Rrl8tFr98hGBgEeA3ugse077_w6n3S35QYM,7603
139
+ omlish/inject/impl/scopes.py,sha256=M_RO_pGUr5mX84YyYmkr6CsMhkkV189_gOUsaYmYes4,5768
140
+ omlish/lang/__init__.py,sha256=GnAKAPoSjpf-BpURfiWt23JyOuq18MY8Zy6gFi4idFk,2957
141
+ omlish/lang/cached.py,sha256=0gjdxVELu69oRQ3kqSV3cGIHg6Nf4pcCIIRTEU52tCc,7607
134
142
  omlish/lang/clsdct.py,sha256=LXwLCULeI_8Np-7-pZkyNAHpUZLcQiBEQiHwKYQ0WRo,1742
135
143
  omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
136
- omlish/lang/contextmanagers.py,sha256=VuadG_0cDAjPXtC1JiaB2jWlsv-mr2jMT5gkpODvS7c,8298
144
+ omlish/lang/contextmanagers.py,sha256=X2p4FSSLCXRb3cMhJPnpk2_sbGcJILA94dcl_NsAoa8,8326
137
145
  omlish/lang/datetimes.py,sha256=fqpgW5lF1oRYbzmrHvh-rNKKH1gRe5KTdYm0yNNmma0,2088
138
- omlish/lang/descriptors.py,sha256=dJ5wQlKK3H-gyddFnmDO8_IOQ290SR7VxFyF-RdV2FE,2056
146
+ omlish/lang/descriptors.py,sha256=iXMS8efrClH17y4MvOADdjqal_C_KMVRixsCv4AhiaQ,5885
139
147
  omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
140
- omlish/lang/functions.py,sha256=gowqmjGshjToExtmThusVoplU_HVAO8_h243L38ezcE,4052
148
+ omlish/lang/functions.py,sha256=T4nPl46EHHGjMkz3FTRjsVhS9Y8HKcwM0jROU6_-Rv0,3619
141
149
  omlish/lang/imports.py,sha256=QjqGP3le0XbptADTfyeT9Rj9d8ssN71yycGpfbHuj6o,4248
142
- omlish/lang/iterables.py,sha256=_WK-AvXOUUVOk5073uqCKc48vH8uXI_vNV5o5OOgiUU,1034
150
+ omlish/lang/iterables.py,sha256=XyRcCKEAgczqGL7H-68B6DRWP8dJ3MIkAIwL2hqG3Ag,1396
143
151
  omlish/lang/maybes.py,sha256=J2N3IDOnSSeGbrN342ln2adt0TDpz2SkyCIiZ0pVRDQ,3425
144
152
  omlish/lang/objects.py,sha256=TAD84PYsD0cGtaQpqo3fQSm99tP4-hckixkQ_K_Iaic,2820
145
153
  omlish/lang/resolving.py,sha256=UgrX-vxXtCGGEmnAMUYP4bUZ6-Ok0EcHVEKAZYbAS-o,1597
146
154
  omlish/lang/strings.py,sha256=wdLo3m9GkV76ZKak3QqtwiR6rWqUd1XlZ-divZppcek,2372
147
155
  omlish/lang/sys.py,sha256=Q316Bzy9cC6bFwztkgpc8CKnsCaz4ldYvjIGpTXlxf4,145
148
156
  omlish/lang/timeouts.py,sha256=vECdWYhc_IZgcal1Ng1Y42wf2FV3KAx-i8As-MgGHIQ,1186
149
- omlish/lang/typing.py,sha256=m9I4I0jp3wMZWXHXxNQm93NSa2ucfQRZaU96i8ArRBc,2358
157
+ omlish/lang/typing.py,sha256=ehCIIrt5Jl94ioGFHBw6VrSoh4siTxvcDhz6BVI8xBs,2445
150
158
  omlish/lang/classes/__init__.py,sha256=j1p0_uuMznKrY2EhMoj20uv6vx4LXljMzp7AaKe0mmU,530
151
159
  omlish/lang/classes/abstract.py,sha256=goIV14oY24EOs88eVe6E6NyrSPOOLMOcWTXTMuYKiqc,2304
152
- omlish/lang/classes/restrict.py,sha256=XMYHtp3g5NwGAObN03ts_JijyzWXKDCl1dgc1JFKFJk,3116
153
- omlish/lang/classes/simple.py,sha256=p30A4dJxXrtG3ztRF50uBZoBwt84hMqOt_c7cyNx5ec,2672
160
+ omlish/lang/classes/restrict.py,sha256=UATWUDh9UOvPN8AtlsxUejhEt4Uuj5TyoKKYMnk2fU0,3152
161
+ omlish/lang/classes/simple.py,sha256=U9WB3S9svudIWF7bitptXzVjLHnlG_Xh72K-jIAekaU,3068
154
162
  omlish/lang/classes/virtual.py,sha256=54D4qOpDWHpP28Oc6bbBjdxquLvdvqMqLXj2XOnAeaQ,3323
163
+ omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
164
+ omlish/lifecycles/abstract.py,sha256=70CQyZy-c9a2o0ZJxPeUT7eYjWZTBrp2HpUBnrHdAOM,1109
165
+ omlish/lifecycles/base.py,sha256=ceXrNSzuv7iiTlX96UI1fvsQ70OgOmZl-UisDPyA3NA,1394
166
+ omlish/lifecycles/contextmanagers.py,sha256=W0trOo6atbPSCoswmtUVOayAYnJ722qHBgda1oYxUEc,2073
167
+ omlish/lifecycles/controller.py,sha256=L9U2KQohrOfxJnsu-LYNVBvLyUJnRCZyo1ehH1DjG14,3480
168
+ omlish/lifecycles/manager.py,sha256=Au66KaO-fI-SEJALaPUJsCHYW2GE20xextk1wKn2BEU,5445
169
+ omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
170
+ omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
155
171
  omlish/logs/__init__.py,sha256=V8jEdb5rj9Dli0b9qtR0ZYstRoIlxWqbU38UmEOXbfY,419
156
172
  omlish/logs/_abc.py,sha256=UgrCUQVUi_PvT3p1CEkb3P74CFrFcZq2AFby3GEUv9M,5974
157
173
  omlish/logs/configs.py,sha256=vW4QMZKqeEBbtQY0JEi-VKBIt0CuLgcGDgG8aTlgmC0,1762
158
174
  omlish/logs/filters.py,sha256=dk-_sRQhp_rCGF48qpPj5viHOBEOu78quXe9pHHs78c,187
159
- omlish/logs/formatters.py,sha256=sFboMGuDdK-FuLc13KJ0gexvLrPz2nuzlajGiStVRQw,1905
175
+ omlish/logs/formatters.py,sha256=L6aEtjQTmyEK0ivO6F6WW82o7rqxCM3SqburgboTOsY,1910
160
176
  omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
161
- omlish/marshal/__init__.py,sha256=8kNPJUBApx6pt2-M3wiaC0o3JXF-c9nu8MUZ_h_fg4E,821
177
+ omlish/marshal/__init__.py,sha256=VM_koh4PG1Moyqs6O2670GF42lWD9Qs8GpcfImjDbf0,865
162
178
  omlish/marshal/any.py,sha256=uWGEeBWaJvh5hjaGKIBL0ogGCg1jKH0Rq_onECYpHVs,821
163
179
  omlish/marshal/base.py,sha256=w1zfL-eU5ZvVsoPWOwy_P8qi3VcxgI4I_3NuHNFUeww,5124
164
180
  omlish/marshal/base64.py,sha256=kdkkFXjYaKx6iHxMM_7vYfaX-KUM3wXN3vzsOmBbou4,863
@@ -170,43 +186,55 @@ omlish/marshal/factories.py,sha256=4Vt5Vr4r_toZQHGt_fTmcmG-gJoaZcpr6GJMU1P2lhA,2
170
186
  omlish/marshal/global_.py,sha256=kbq8gzjsKLlkieboQ-mYibPNrUGdb_kOt4Dzcmk3I4Y,881
171
187
  omlish/marshal/iterables.py,sha256=ZHmvT79_i2m4bCahcuEE9aeeOukjtZhYnROCnxP53y8,2168
172
188
  omlish/marshal/mappings.py,sha256=4bh1pdbvUh42Xp3mWQQa4J6da7MADmsuO029uqIYk3w,2469
173
- omlish/marshal/naming.py,sha256=QQtw_w_YuJr4Fg-tihonOaQn_XCNixMdtgMHaRkSq6w,325
174
- omlish/marshal/objects.py,sha256=wbcZDDzG1j3nRdHEVWb9cZiRosx06IsUnIxH5YF515w,2739
189
+ omlish/marshal/naming.py,sha256=UCviMAXTTUpW1lyAGymybGP2rFUAW44P1X0zrIVbvi4,464
190
+ omlish/marshal/objects.py,sha256=JD7GBY1hYUyRpCufpxDAwgII98ewzGDct2IF0HxgFN0,2767
175
191
  omlish/marshal/optionals.py,sha256=zZN34AGXkHobJRzM1g4UcW6jw82La8moPH5tmyxy9rc,1508
176
- omlish/marshal/polymorphism.py,sha256=9sFTwrAjqJ4J7lRAXQZgV1jucSkgeQd7IHs4xJnEDLE,3858
192
+ omlish/marshal/polymorphism.py,sha256=1WJRzTLyWSCxhsXDzTksQH09TqJXnFRzrHV5jlOkef8,3886
177
193
  omlish/marshal/primitives.py,sha256=N7kXrdxz5CIrDnPnsYMdo0xLjEfMnVfKXLMANDu-L6Y,1139
178
194
  omlish/marshal/registries.py,sha256=GI2KogcxawMkk02Ky7-TsnijChoe1I7YTOPIbUNwSAI,1665
179
195
  omlish/marshal/standard.py,sha256=MPmtJH3B_LqeoSwQsxKjUm65-cq6albBc8z-gxyKAj4,2442
180
196
  omlish/marshal/utils.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
181
197
  omlish/marshal/uuids.py,sha256=_htkeMt1a6FUNBlstZIy2rrB1-1DiavV5dZrjSQNYVM,952
182
198
  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
201
+ 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
183
208
  omlish/sql/__init__.py,sha256=pLv2EQmAwcGXN0Y3AE8K5JjyN_4GaHRMHyExaDFm5yU,181
184
209
  omlish/sql/_abc.py,sha256=HLhnnLZ7l0r_N99I-RCqJe6VHth-9iluU7cR-7-5jfs,1519
185
210
  omlish/sql/asyncs.py,sha256=Wye3dwh7oZEGYz2Y4DZQSHtW4xjI2AH5qjW-BSS2IfU,3688
186
- omlish/sql/dbs.py,sha256=JxcJm3JIcsb7i-t9L0KU9WhAc26QsKUL6ZL6puy3IXI,1763
211
+ omlish/sql/dbs.py,sha256=t_tV5aDOqoktddIyLVMOiRtNMTe7S0rQklEkmks2TEc,1775
212
+ omlish/sql/duckdb.py,sha256=Z3wiZEn_21Lu1ElFRX0ATzoBMCw0KJxINjTRuTexYGM,3748
213
+ omlish/sql/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
187
214
  omlish/testing/__init__.py,sha256=l13axR7dyVE9T1e6w1pMYtAkW3vS2J97nBcYQ1FUv18,136
188
- omlish/testing/pydevd.py,sha256=xOeAithe-XMiwhc0sqnmVe4FRfr2DOkKVgSH0jp5C0U,6352
189
215
  omlish/testing/testing.py,sha256=p1bP9fnxmYzOvPJ_7S1wq7PrKMzclK8PgYH5DwaQiHk,2918
190
- omlish/testing/pytest/__init__.py,sha256=hTW1rBfdBWP1STliyHPw2-2dT0hKdrkJCIFGU1JGdO8,246
216
+ omlish/testing/pytest/__init__.py,sha256=b6ObMEHTZnvGEI_de6nN1x5FyitV6B2mNYkurA4Q7fo,336
191
217
  omlish/testing/pytest/helpers.py,sha256=TJpD60mBtLi9FtxX4TThfuXvg5FIRPSiZk1aeRwe-D4,197
192
- omlish/testing/pytest/marks.py,sha256=2WJ0Kk4Rs1rntxbIENBjU3MtSkMmyr4ujTtomjdG_1Q,1376
218
+ omlish/testing/pytest/marks.py,sha256=LbI5lO29cbh_FA5-vktwtcZwWjxn9URI0pprzmPRyJo,1260
193
219
  omlish/testing/pytest/inject/__init__.py,sha256=pdRKv1HcDmJ_yArKJbYITPXXZthRSGgBJWqITr0Er38,117
194
- omlish/testing/pytest/inject/harness.py,sha256=E5nayIma7dkHsZAKRtxj_IZXnQ5xBAjYZcRinoV0SjI,5042
195
- omlish/testing/pytest/plugins/__init__.py,sha256=0AeGnffmW7LoUnA6MxTNekOXPKQguH4yXb08YEStiW4,393
220
+ omlish/testing/pytest/inject/harness.py,sha256=IfcqR1rcIYkl_66Mmhy1KEeCWFJ95wr68Vs5687bPlY,5053
221
+ omlish/testing/pytest/plugins/__init__.py,sha256=Kx4OgGY_whB2I-5c7iI41j-dAaerEIlMEnWN2orGHQI,405
196
222
  omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-btalYJkgjLc8Te8,77
223
+ omlish/testing/pytest/plugins/asyncs.py,sha256=Gpj2c6TM33iJUE_bGfdGWTHKMt-nTWw30CHsre2V6pc,4274
197
224
  omlish/testing/pytest/plugins/logging.py,sha256=1zs6Xe54wiaSjabCviaFXwKkoN97CKm3mA5mEoUeJGs,380
198
225
  omlish/testing/pytest/plugins/managermarks.py,sha256=pDEcCNdDAcTS4jjZHSnAfmzqMJDBcJcSsM3QNhbJ6Gs,1485
199
- omlish/testing/pytest/plugins/pydevd.py,sha256=xCBAbBmn-WGwSzLCgUZlAXM6c0fWChydoUf2Lr5SERg,314
226
+ omlish/testing/pytest/plugins/pydevd.py,sha256=u1fxfCgFw4wGKBkMV_H_l9WI8JoUwlRff4iHEr_WYeE,319
200
227
  omlish/testing/pytest/plugins/repeat.py,sha256=flSQzE9GFOWksVKz-mUGnpxJpv3yRqn1G4K8pW7JHs0,498
201
228
  omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4Y7vfDRhwM,1041
202
229
  omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74N8bYX2VESFE,707
203
230
  omlish/testing/pytest/plugins/switches.py,sha256=qeCp3aDtZjnh6-po1FU4JEKCrR97q0MI9nJmIF_LRkg,1809
204
231
  omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
232
  omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
233
+ omlish/text/glyphsplit.py,sha256=6h2mZcEzxbdOE_zspGYfbrcFQsv6T8F8sqV199BuesI,3035
206
234
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
207
235
  omlish/text/parts.py,sha256=KGgo0wHOIMVMZtDso-rhSWKAcAkYAH2IGpg9tULabu8,6505
208
- omlish-0.0.0.dev5.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
209
- omlish-0.0.0.dev5.dist-info/METADATA,sha256=iNsf7d5t_JCAX1U6uE4b2QaWWCIOR1mRdgdTcmwpozc,1058
210
- omlish-0.0.0.dev5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
211
- omlish-0.0.0.dev5.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
212
- omlish-0.0.0.dev5.dist-info/RECORD,,
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,,
File without changes