omlish 0.0.0.dev191__py3-none-any.whl → 0.0.0.dev193__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- omlish/.manifests.json +17 -3
- omlish/__about__.py +2 -2
- omlish/codecs/base.py +2 -0
- omlish/configs/__init__.py +0 -5
- omlish/configs/flattening.py +31 -33
- omlish/configs/strings.py +2 -2
- omlish/formats/__init__.py +5 -0
- omlish/formats/ini/__init__.py +0 -0
- omlish/formats/ini/codec.py +26 -0
- omlish/formats/ini/sections.py +45 -0
- omlish/formats/toml/__init__.py +0 -0
- omlish/formats/{toml.py → toml/codec.py} +2 -2
- omlish/formats/toml/parser.py +827 -0
- omlish/formats/toml/writer.py +115 -0
- omlish/lang/__init__.py +4 -1
- omlish/lang/iterables.py +0 -7
- omlish/lite/types.py +9 -0
- omlish/text/glyphsplit.py +12 -10
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/RECORD +24 -17
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev191.dist-info → omlish-0.0.0.dev193.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
# @omlish-lite
|
2
|
+
import dataclasses as dc
|
3
|
+
import string
|
4
|
+
import typing as ta
|
5
|
+
|
6
|
+
|
7
|
+
class TomlWriter:
|
8
|
+
@dc.dataclass(frozen=True)
|
9
|
+
class Literal:
|
10
|
+
s: str
|
11
|
+
|
12
|
+
def __init__(self, out: ta.TextIO) -> None:
|
13
|
+
super().__init__()
|
14
|
+
self._out = out
|
15
|
+
|
16
|
+
self._indent = 0
|
17
|
+
self._wrote_indent = False
|
18
|
+
|
19
|
+
#
|
20
|
+
|
21
|
+
def _w(self, s: str) -> None:
|
22
|
+
if not self._wrote_indent:
|
23
|
+
self._out.write(' ' * self._indent)
|
24
|
+
self._wrote_indent = True
|
25
|
+
self._out.write(s)
|
26
|
+
|
27
|
+
def _nl(self) -> None:
|
28
|
+
self._out.write('\n')
|
29
|
+
self._wrote_indent = False
|
30
|
+
|
31
|
+
def _needs_quote(self, s: str) -> bool:
|
32
|
+
return (
|
33
|
+
not s or
|
34
|
+
any(c in s for c in '\'"\n') or
|
35
|
+
s[0] not in string.ascii_letters
|
36
|
+
)
|
37
|
+
|
38
|
+
def _maybe_quote(self, s: str) -> str:
|
39
|
+
if self._needs_quote(s):
|
40
|
+
return repr(s)
|
41
|
+
else:
|
42
|
+
return s
|
43
|
+
|
44
|
+
#
|
45
|
+
|
46
|
+
def write_root(self, obj: ta.Mapping) -> None:
|
47
|
+
for i, (k, v) in enumerate(obj.items()):
|
48
|
+
if i:
|
49
|
+
self._nl()
|
50
|
+
self._w('[')
|
51
|
+
self._w(self._maybe_quote(k))
|
52
|
+
self._w(']')
|
53
|
+
self._nl()
|
54
|
+
self.write_table_contents(v)
|
55
|
+
|
56
|
+
def write_table_contents(self, obj: ta.Mapping) -> None:
|
57
|
+
for k, v in obj.items():
|
58
|
+
self.write_key(k)
|
59
|
+
self._w(' = ')
|
60
|
+
self.write_value(v)
|
61
|
+
self._nl()
|
62
|
+
|
63
|
+
def write_array(self, obj: ta.Sequence) -> None:
|
64
|
+
self._w('[')
|
65
|
+
self._nl()
|
66
|
+
self._indent += 1
|
67
|
+
for e in obj:
|
68
|
+
self.write_value(e)
|
69
|
+
self._w(',')
|
70
|
+
self._nl()
|
71
|
+
self._indent -= 1
|
72
|
+
self._w(']')
|
73
|
+
|
74
|
+
def write_inline_table(self, obj: ta.Mapping) -> None:
|
75
|
+
self._w('{')
|
76
|
+
for i, (k, v) in enumerate(obj.items()):
|
77
|
+
if i:
|
78
|
+
self._w(', ')
|
79
|
+
self.write_key(k)
|
80
|
+
self._w(' = ')
|
81
|
+
self.write_value(v)
|
82
|
+
self._w('}')
|
83
|
+
|
84
|
+
def write_inline_array(self, obj: ta.Sequence) -> None:
|
85
|
+
self._w('[')
|
86
|
+
for i, e in enumerate(obj):
|
87
|
+
if i:
|
88
|
+
self._w(', ')
|
89
|
+
self.write_value(e)
|
90
|
+
self._w(']')
|
91
|
+
|
92
|
+
def write_key(self, obj: ta.Any) -> None:
|
93
|
+
if isinstance(obj, TomlWriter.Literal):
|
94
|
+
self._w(obj.s)
|
95
|
+
elif isinstance(obj, str):
|
96
|
+
self._w(self._maybe_quote(obj.replace('_', '-')))
|
97
|
+
elif isinstance(obj, int):
|
98
|
+
self._w(repr(str(obj)))
|
99
|
+
else:
|
100
|
+
raise TypeError(obj)
|
101
|
+
|
102
|
+
def write_value(self, obj: ta.Any) -> None:
|
103
|
+
if isinstance(obj, bool):
|
104
|
+
self._w(str(obj).lower())
|
105
|
+
elif isinstance(obj, (str, int, float)):
|
106
|
+
self._w(repr(obj))
|
107
|
+
elif isinstance(obj, ta.Mapping):
|
108
|
+
self.write_inline_table(obj)
|
109
|
+
elif isinstance(obj, ta.Sequence):
|
110
|
+
if not obj:
|
111
|
+
self.write_inline_array(obj)
|
112
|
+
else:
|
113
|
+
self.write_array(obj)
|
114
|
+
else:
|
115
|
+
raise TypeError(obj)
|
omlish/lang/__init__.py
CHANGED
@@ -147,7 +147,6 @@ from .imports import ( # noqa
|
|
147
147
|
)
|
148
148
|
|
149
149
|
from .iterables import ( # noqa
|
150
|
-
BUILTIN_SCALAR_ITERABLE_TYPES,
|
151
150
|
asrange,
|
152
151
|
exhaust,
|
153
152
|
flatmap,
|
@@ -238,6 +237,10 @@ from .typing import ( # noqa
|
|
238
237
|
|
239
238
|
##
|
240
239
|
|
240
|
+
from ..lite.types import ( # noqa
|
241
|
+
BUILTIN_SCALAR_ITERABLE_TYPES,
|
242
|
+
)
|
243
|
+
|
241
244
|
from ..lite.typing import ( # noqa
|
242
245
|
AnyFunc,
|
243
246
|
Func0,
|
omlish/lang/iterables.py
CHANGED
omlish/lite/types.py
ADDED
omlish/text/glyphsplit.py
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
# @omlish-lite
|
1
3
|
"""
|
2
4
|
Note: string.Formatter (and string.Template) shouldn't be ignored - if they can be used they probably should be.
|
3
5
|
- https://docs.python.org/3/library/string.html#custom-string-formatting
|
@@ -5,22 +7,22 @@ Note: string.Formatter (and string.Template) shouldn't be ignored - if they can
|
|
5
7
|
"""
|
6
8
|
import dataclasses as dc
|
7
9
|
import re
|
10
|
+
import typing as ta
|
8
11
|
|
9
|
-
from .. import check
|
12
|
+
from ..lite.check import check
|
10
13
|
|
11
14
|
|
12
15
|
@dc.dataclass(frozen=True)
|
13
|
-
class
|
16
|
+
class GlyphSplitMatch:
|
14
17
|
l: str
|
15
18
|
s: str
|
16
19
|
r: str
|
17
20
|
|
18
21
|
|
19
22
|
class GlyphSplitter:
|
20
|
-
|
21
23
|
def __init__(
|
22
24
|
self,
|
23
|
-
glyphs:
|
25
|
+
glyphs: ta.Tuple[str, str],
|
24
26
|
*,
|
25
27
|
escape_returned_doubles: bool = False,
|
26
28
|
compact: bool = False,
|
@@ -49,7 +51,7 @@ class GlyphSplitter:
|
|
49
51
|
|
50
52
|
self._single_glyph_pat = re.compile(r'(%s[^%s]*?%s)' % (self._l_escaped_glyph, self._r_escaped_glyph, self._r_escaped_glyph)) # noqa
|
51
53
|
|
52
|
-
def split(self, s: str) ->
|
54
|
+
def split(self, s: str) -> ta.List[ta.Union[GlyphSplitMatch, str]]:
|
53
55
|
ps = self._l_glyph_pat.split(s)
|
54
56
|
ps = [p[::-1] for p in ps for p in reversed(self._r_glyph_pat.split(p[::-1]))]
|
55
57
|
|
@@ -77,7 +79,7 @@ class GlyphSplitter:
|
|
77
79
|
for m in ms:
|
78
80
|
if m.start() != l:
|
79
81
|
append_ret(p[l:m.start()])
|
80
|
-
append_ret(
|
82
|
+
append_ret(GlyphSplitMatch(self._l_glyph, p[m.start() + 1:m.end() - 1], self._r_glyph))
|
81
83
|
l = m.end()
|
82
84
|
|
83
85
|
if l < len(p):
|
@@ -91,7 +93,7 @@ _BRACE_GLYPH_SPLITTER = GlyphSplitter(('{', '}'), escape_returned_doubles=True,
|
|
91
93
|
_BRACKET_GLYPH_SPLITTER = GlyphSplitter(('[', ']'), escape_returned_doubles=True, compact=True)
|
92
94
|
_ANGLE_BRACKET_GLYPH_SPLITTER = GlyphSplitter(('<', '>'), escape_returned_doubles=True, compact=True)
|
93
95
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
96
|
+
glyph_split_parens = _PAREN_GLYPH_SPLITTER.split
|
97
|
+
glyph_split_braces = _BRACE_GLYPH_SPLITTER.split
|
98
|
+
glyph_split_brackets = _BRACKET_GLYPH_SPLITTER.split
|
99
|
+
glyph_split_angle_brackets = _ANGLE_BRACKET_GLYPH_SPLITTER.split
|
@@ -1,5 +1,5 @@
|
|
1
|
-
omlish/.manifests.json,sha256=
|
2
|
-
omlish/__about__.py,sha256=
|
1
|
+
omlish/.manifests.json,sha256=dyIpveH7Z8OnQp2pTn6NVv7LCDXVrozJWAzbk8PBavg,7950
|
2
|
+
omlish/__about__.py,sha256=8ZHxg4DUtn_y7pls_IM3xNDk_hcPGBh1tnkB36CBP5U,3409
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
@@ -117,7 +117,7 @@ omlish/bootstrap/main.py,sha256=yZhOHDDlj4xB5a89dRdT8z58FsqqnpoBg1-tvY2CJe4,5903
|
|
117
117
|
omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
|
118
118
|
omlish/bootstrap/sys.py,sha256=aqMzxZa_lPj78cgz4guYZAkjT6En32e2LptfEo20NIM,8769
|
119
119
|
omlish/codecs/__init__.py,sha256=-FDwRJFGagg-fZyQ8wup4GPuR6gHpmaChzthlykn-kY,876
|
120
|
-
omlish/codecs/base.py,sha256=
|
120
|
+
omlish/codecs/base.py,sha256=JXTFSLnX5qPbi4NSbbI5uB3tYhs2SN0g_eWN2UskPYE,2242
|
121
121
|
omlish/codecs/bytes.py,sha256=jlZ87OmZ52HhQDNyL87R3OIviK2qV5iU2jZYOTOLWjk,2157
|
122
122
|
omlish/codecs/chain.py,sha256=DrBi5vbaFfObfoppo6alwOmyW2XbrH2051cjExwr2Gs,527
|
123
123
|
omlish/codecs/funcs.py,sha256=p4imNt7TobyZVXWC-WhntHVu9KfJrO4QwdtPRh-cVOk,850
|
@@ -149,10 +149,10 @@ omlish/concurrent/__init__.py,sha256=9p-s8MvBEYDqHIoYU3OYoe-Nni22QdkW7nhZGEukJTM
|
|
149
149
|
omlish/concurrent/executors.py,sha256=FYKCDYYuj-OgMa8quLsA47SfFNX3KDJvRENVk8NDsrA,1292
|
150
150
|
omlish/concurrent/futures.py,sha256=J2s9wYURUskqRJiBbAR0PNEAp1pXbIMYldOVBTQduQY,4239
|
151
151
|
omlish/concurrent/threadlets.py,sha256=JfirbTDJgy9Ouokz_VmHeAAPS7cih8qMUJrN-owwXD4,2423
|
152
|
-
omlish/configs/__init__.py,sha256=
|
152
|
+
omlish/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
153
|
omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
|
154
|
-
omlish/configs/flattening.py,sha256=
|
155
|
-
omlish/configs/strings.py,sha256=
|
154
|
+
omlish/configs/flattening.py,sha256=t29dgCTcwrgvOEuxIxLf7FgZhOpH2Z72xIRHglXbxUI,5020
|
155
|
+
omlish/configs/strings.py,sha256=Ho92yy3Ex_-FoUTBuUcRF_tJ-iE9kFFa5oOqnGtCRZg,2662
|
156
156
|
omlish/dataclasses/__init__.py,sha256=AHo-tN5V_b_VYFUF7VFRmuHrjZBXS1WytRAj061MUTA,1423
|
157
157
|
omlish/dataclasses/utils.py,sha256=lcikCPiiX5Giu0Kb1hP18loZjmm_Z9D-XtJ-ZlHq9iM,3793
|
158
158
|
omlish/dataclasses/impl/LICENSE,sha256=Oy-B_iHRgcSZxZolbI4ZaEVdZonSaaqFNzv7avQdo78,13936
|
@@ -209,7 +209,7 @@ omlish/docker/detect.py,sha256=Qrdbosm2wJkxKDuy8gaGmbQoxk4Wnp1HJjAEz58NA8Y,614
|
|
209
209
|
omlish/docker/hub.py,sha256=7LIuJGdA-N1Y1dmo50ynKM1KUTcnQM_5XbtPbdT_QLU,3940
|
210
210
|
omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,7068
|
211
211
|
omlish/docker/timebomb.py,sha256=A_pgIDaXKsQwPiikrCTgIJl91gwYqkPGFY6j-Naq07Q,342
|
212
|
-
omlish/formats/__init__.py,sha256=
|
212
|
+
omlish/formats/__init__.py,sha256=KC-AiWm95O6kXVW4cRUnq8WnybKnE6lR9sf_i2DuV4o,28
|
213
213
|
omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
|
214
214
|
omlish/formats/cloudpickle.py,sha256=16si4yUp_pAdDWGECAWf6HLA2PwSANGGgDoMLGZUem8,579
|
215
215
|
omlish/formats/codecs.py,sha256=6AbKIz_gl_om36-7qsutybYzK8cJP3LzwC9YJlwCPOA,1590
|
@@ -218,9 +218,11 @@ omlish/formats/json5.py,sha256=odpZIShlUpv19aACWe58SoMPcv0AHKIa6zSMjlKgaMI,515
|
|
218
218
|
omlish/formats/pickle.py,sha256=jdp4E9WH9qVPBE3sSqbqDtUo18RbTSIiSpSzJ-IEVZw,529
|
219
219
|
omlish/formats/props.py,sha256=cek3JLFLIrpE76gvs8rs_B8yF4SpY8ooDH8apWsquwE,18953
|
220
220
|
omlish/formats/repr.py,sha256=kYrNs4o-ji8nOdp6u_L3aMgBMWN1ZAZJSAWgQQfStSQ,414
|
221
|
-
omlish/formats/toml.py,sha256=AhpVNAy87eBohBCsvIvwH2ucASWxnWXMEsMH8zB7rpI,340
|
222
221
|
omlish/formats/xml.py,sha256=ggiOwSERt4d9XmZwLZiDIh5qnFJS4jdmow9m9_9USps,1491
|
223
222
|
omlish/formats/yaml.py,sha256=ffOwGnLA6chdiFyaS7X0TBMGmHG9AoGudzKVWfQ1UOs,7389
|
223
|
+
omlish/formats/ini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
224
|
+
omlish/formats/ini/codec.py,sha256=omuFg0kiDksv8rRlWd_v32ebzEcKlgmiPgGID3bRi2M,631
|
225
|
+
omlish/formats/ini/sections.py,sha256=7wYyZdVTQbMPFpjQEACKJfAEPzUBrogINsrvFgxJoZ0,1015
|
224
226
|
omlish/formats/json/__init__.py,sha256=y7T-Jm-7FuQFzb-6uedky0ZhBaKtCKzcu291juXfiWI,669
|
225
227
|
omlish/formats/json/codecs.py,sha256=E5KErfqsgGZq763ixXLT3qysbk5MIsypT92xG5aSaIs,796
|
226
228
|
omlish/formats/json/consts.py,sha256=A0cTAGGLyjo-gcYIQrL4JIaardI0yPMhQoNmh42BaRg,387
|
@@ -243,6 +245,10 @@ omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_
|
|
243
245
|
omlish/formats/json/stream/lex.py,sha256=bfy0fb3_Z6G18UGueX2DR6oPSVUsMoFhlbsvXC3ztzI,6793
|
244
246
|
omlish/formats/json/stream/parse.py,sha256=JuYmXwtTHmQJTFKoJNoEHUpCPxXdl_gvKPykVXgED34,6208
|
245
247
|
omlish/formats/json/stream/render.py,sha256=NtmDsN92xZi5dkgSSuMeMXMAiJblmjz1arB4Ft7vBhc,3715
|
248
|
+
omlish/formats/toml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
249
|
+
omlish/formats/toml/codec.py,sha256=5HFGWEPd9IFxPlRMRheX8FEDlRIzLe1moHEOj2_PFKU,342
|
250
|
+
omlish/formats/toml/parser.py,sha256=3QN3rqdJ_zlHfFtsDn-A9pl-BTwdVMUUpUV5-lGWCKc,29342
|
251
|
+
omlish/formats/toml/writer.py,sha256=KyT1PnAQqx-uVcb0vTPzt-A9N-WfDiiaokg4kUeEXHk,3055
|
246
252
|
omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
247
253
|
omlish/funcs/genmachine.py,sha256=EY2k-IFNKMEmHo9CmGRptFvhEMZVOWzZhn0wdQGeaFM,2476
|
248
254
|
omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
|
@@ -341,7 +347,7 @@ omlish/iterators/iterators.py,sha256=ghI4dO6WPyyFOLTIIMaHQ_IOy2xXaFpGPqveZ5YGIBU
|
|
341
347
|
omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
|
342
348
|
omlish/iterators/tools.py,sha256=SvXyyQJh7aceLYhRl6pQB-rfSaXw5IMIWukeEeOZt-0,2492
|
343
349
|
omlish/iterators/unique.py,sha256=0jAX3kwzVfRNhe0Tmh7kVP_Q2WBIn8POo_O-rgFV0rQ,1390
|
344
|
-
omlish/lang/__init__.py,sha256=
|
350
|
+
omlish/lang/__init__.py,sha256=GqZ3exAAK7iphRf8e4d3CvAz7EptvmEOmCkmN06uYvQ,3986
|
345
351
|
omlish/lang/cached.py,sha256=92TvRZQ6sWlm7dNn4hgl7aWKbX0J1XUEo3DRjBpgVQk,7834
|
346
352
|
omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
|
347
353
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
@@ -352,7 +358,7 @@ omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
|
352
358
|
omlish/lang/functions.py,sha256=t9nsnWwhsibG0w908VMx-_pRM5tZfruE3faPxrCWTbI,4160
|
353
359
|
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
354
360
|
omlish/lang/imports.py,sha256=TXLbj2F53LsmozlM05bQhvow9kEgWJOi9qYKsnm2D18,9258
|
355
|
-
omlish/lang/iterables.py,sha256=
|
361
|
+
omlish/lang/iterables.py,sha256=HOjcxOwyI5bBApDLsxRAGGhTTmw7fdZl2kEckxRVl-0,1994
|
356
362
|
omlish/lang/maybes.py,sha256=1RN7chX_x2XvgUwryZRz0W7hAX-be3eEFcFub5vvf6M,3417
|
357
363
|
omlish/lang/objects.py,sha256=LOC3JvX1g5hPxJ7Sv2TK9kNkAo9c8J-Jw2NmClR_rkA,4576
|
358
364
|
omlish/lang/resolving.py,sha256=OuN2mDTPNyBUbcrswtvFKtj4xgH4H4WglgqSKv3MTy0,1606
|
@@ -390,6 +396,7 @@ omlish/lite/resources.py,sha256=YNSmX1Ohck1aoWRs55a-o5ChVbFJIQhtbqE-XwF55Oc,326
|
|
390
396
|
omlish/lite/runtime.py,sha256=XQo408zxTdJdppUZqOWHyeUR50VlCpNIExNGHz4U6O4,459
|
391
397
|
omlish/lite/secrets.py,sha256=3Mz3V2jf__XU9qNHcH56sBSw95L3U2UPL24bjvobG0c,816
|
392
398
|
omlish/lite/strings.py,sha256=nGWaOi9LzTjkc5kPN2IqsVN8PUw8m_2yllTGRUQU5PI,1983
|
399
|
+
omlish/lite/types.py,sha256=fP5EMyBdEp2LmDxcHjUDtwAMdR06ISr9lKOL7smWfHM,140
|
393
400
|
omlish/lite/typing.py,sha256=U3-JaEnkDSYxK4tsu_MzUn3RP6qALBe5FXQXpD-licE,1090
|
394
401
|
omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
395
402
|
omlish/logs/abc.py,sha256=ho4ABKYMKX-V7g4sp1BByuOLzslYzLlQ0MESmjEpT-o,8005
|
@@ -574,14 +581,14 @@ omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0Mcd
|
|
574
581
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
575
582
|
omlish/text/asdl.py,sha256=AS3irh-sag5pqyH3beJif78PjCbOaFso1NeKq-HXuTs,16867
|
576
583
|
omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
577
|
-
omlish/text/glyphsplit.py,sha256=
|
584
|
+
omlish/text/glyphsplit.py,sha256=vN6TgnMONCTsHL8_lDaOfFmd5j_JVxOV_nRre4SENF8,3420
|
578
585
|
omlish/text/indent.py,sha256=XixaVnk9bvtBlH0n_cwN6yS5IyfrTWpe_alfu3_saLY,1341
|
579
586
|
omlish/text/minja.py,sha256=KAmZ2POcLcxwF4DPKxdWa16uWxXmVz1UnJXLSwt4oZo,5761
|
580
587
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
581
588
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
582
|
-
omlish-0.0.0.
|
583
|
-
omlish-0.0.0.
|
584
|
-
omlish-0.0.0.
|
585
|
-
omlish-0.0.0.
|
586
|
-
omlish-0.0.0.
|
587
|
-
omlish-0.0.0.
|
589
|
+
omlish-0.0.0.dev193.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
590
|
+
omlish-0.0.0.dev193.dist-info/METADATA,sha256=CurOKNHEhxcUbUQtXrRsaxGfunrIIFaJO-ZJiGOmAg4,4264
|
591
|
+
omlish-0.0.0.dev193.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
592
|
+
omlish-0.0.0.dev193.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
593
|
+
omlish-0.0.0.dev193.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
594
|
+
omlish-0.0.0.dev193.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|