omlish 0.0.0.dev192__py3-none-any.whl → 0.0.0.dev193__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -8,13 +8,6 @@ T = ta.TypeVar('T')
8
8
  R = ta.TypeVar('R')
9
9
 
10
10
 
11
- BUILTIN_SCALAR_ITERABLE_TYPES: tuple[type, ...] = (
12
- bytearray,
13
- bytes,
14
- str,
15
- )
16
-
17
-
18
11
  ##
19
12
 
20
13
 
omlish/lite/types.py ADDED
@@ -0,0 +1,9 @@
1
+ # ruff: noqa: UP006 UP007
2
+ import typing as ta
3
+
4
+
5
+ BUILTIN_SCALAR_ITERABLE_TYPES: ta.Tuple[type, ...] = (
6
+ bytearray,
7
+ bytes,
8
+ str,
9
+ )
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 GlyphMatch:
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: tuple[str, str],
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) -> list[GlyphMatch | 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(GlyphMatch(self._l_glyph, p[m.start() + 1:m.end() - 1], self._r_glyph))
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
- split_parens = _PAREN_GLYPH_SPLITTER.split
95
- split_braces = _BRACE_GLYPH_SPLITTER.split
96
- split_brackets = _BRACKET_GLYPH_SPLITTER.split
97
- split_angle_brackets = _ANGLE_BRACKET_GLYPH_SPLITTER.split
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev192
3
+ Version: 0.0.0.dev193
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
- omlish/.manifests.json,sha256=lRkBDFxlAbf6lN5upo3WSf-owW8YG1T21dfpbQL-XHM,7598
2
- omlish/__about__.py,sha256=oo7sJmjafPT0cBR9y7sAaWC5KC5PrDsDJ8LZwWkLu34,3409
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=O6MDkBg0LDq3W-bVXpNEZiIkTYQo2cwaHFoUwxgtcOk,2208
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=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
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=rVxoTqgM9te86hUwQsHJ5u94jo2PARNfhk_HkrrDT9Y,4745
155
- omlish/configs/strings.py,sha256=0brx1duL85r1GpfbNvbHcSvH4jWzutwuvMFXda9NeI0,2651
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=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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=wMfsQjBFNsZ_Y4352iEr0DlEnNebf26JmR4ETtDsQow,3948
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=mE-XyhqMe9LztBf5Y36SDSO0Gtu8rIKmE-hcNvhhOX8,2085
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=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
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.dev192.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
583
- omlish-0.0.0.dev192.dist-info/METADATA,sha256=clxVnn-6rG8Lb_XUMK9nXmgj4TFyY5m9_tc_xjyoVoA,4264
584
- omlish-0.0.0.dev192.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
585
- omlish-0.0.0.dev192.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
586
- omlish-0.0.0.dev192.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
587
- omlish-0.0.0.dev192.dist-info/RECORD,,
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,,