omlish 0.0.0.dev99__py3-none-any.whl → 0.0.0.dev101__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev99'
2
- __revision__ = '68bd172d5acce0086e88d20a01fe294fc1fc390c'
1
+ __version__ = '0.0.0.dev101'
2
+ __revision__ = '44c6ff624e1a09a5024ea5cbc8a6cdcb1f54f013'
3
3
 
4
4
 
5
5
  #
omlish/asyncs/bridge.py CHANGED
@@ -8,10 +8,19 @@ KEEP THE SPACE SHUTTLE FLYING.
8
8
 
9
9
  TODO:
10
10
  - reuse greenlet if nested somehow?
11
+ - test cancel
11
12
 
12
13
  See:
13
- - https://greenback.readthedocs.io/en/latest/
14
- """
14
+ - https://github.com/sqlalchemy/sqlalchemy/blob/21ea01eebe0350ad1185c7288dca61f363ebd2fe/lib/sqlalchemy/util/concurrency.py
15
+ - ( https://gist.github.com/snaury/202bf4f22c41ca34e56297bae5f33fef )
16
+ - Baked into sqlalchemy and hard-bound to asyncio.
17
+ - https://github.com/oremanj/greenback/blob/ca69b023a9b7b58b715f3b1d78fc116e788a2c9f/greenback/_impl.py
18
+ - ( https://gist.github.com/oremanj/f18ef3e55b9487c2e93eee42232583f2 )
19
+ - Similar to this, but does horrible things with ctypes and is hard-bound to greenlet.
20
+ - https://github.com/fastapi/asyncer/blob/2a4b8ef2540ec687af13d3f361c4ed0cf0cb624d/asyncer/_main.py
21
+ - https://github.com/django/asgiref/blob/05ae3eee3fae4005ae4cfb0bb22d281725fabade/asgiref/sync.py
22
+ - Both are much heavier weight and hard-bound to threads.
23
+ """ # noqa
15
24
  import functools # noqa
16
25
  import itertools
17
26
  import sys # noqa
@@ -1,3 +1,9 @@
1
+ # ruff: noqa: I001
2
+ import typing as _ta
3
+
4
+ from .. import lang as _lang
5
+
6
+
1
7
  from .coerce import ( # noqa
2
8
  abs_set,
3
9
  abs_set_of,
@@ -74,10 +80,16 @@ from .persistent import ( # noqa
74
80
  PersistentMap,
75
81
  )
76
82
 
77
- from .skiplist import ( # noqa
78
- SkipList,
79
- SkipListDict,
80
- )
83
+ if _ta.TYPE_CHECKING:
84
+ from .skiplist import ( # noqa
85
+ SkipList,
86
+ SkipListDict,
87
+ )
88
+ else:
89
+ _lang.proxy_init(globals(), '.skiplist', [
90
+ 'SkipList',
91
+ 'SkipListDict',
92
+ ])
81
93
 
82
94
  from .sorted import ( # noqa
83
95
  SortedCollection,
@@ -86,9 +98,16 @@ from .sorted import ( # noqa
86
98
  SortedMutableMapping,
87
99
  )
88
100
 
89
- from .treapmap import ( # noqa
90
- new_treap_map,
91
- )
101
+ if _ta.TYPE_CHECKING:
102
+ from .treapmap import ( # noqa
103
+ TreapMap,
104
+ new_treap_map,
105
+ )
106
+ else:
107
+ _lang.proxy_init(globals(), '.treapmap', [
108
+ 'TreapMap',
109
+ 'new_treap_map',
110
+ ])
92
111
 
93
112
  from .unmodifiable import ( # noqa
94
113
  Unmodifiable,
@@ -1,11 +1,19 @@
1
- from .descriptor import Ignore # noqa
2
- from .descriptor import Scope # noqa
3
- from .descriptor import cache # noqa
4
- from .descriptor import ignore # noqa
5
- from .impl import LFU # noqa
6
- from .impl import LRI # noqa
7
- from .impl import LRU # noqa
8
- from .impl import new_cache # noqa
9
- from .types import Cache # noqa
10
- from .types import Eviction # noqa
11
- from .types import OverweightError # noqa
1
+ from .descriptor import ( # noqa
2
+ Ignore,
3
+ Scope,
4
+ cache,
5
+ ignore,
6
+ )
7
+
8
+ from .impl import ( # noqa
9
+ LFU,
10
+ LRI,
11
+ LRU,
12
+ new_cache,
13
+ )
14
+
15
+ from .types import ( # noqa
16
+ Cache,
17
+ Eviction,
18
+ OverweightError,
19
+ )
@@ -60,7 +60,7 @@ class hash_eq(HashEq[K], lang.NotInstantiable, lang.Final): # noqa
60
60
  raise TypeError
61
61
 
62
62
 
63
- class HashEqMap(ta.Mapping[K, V]):
63
+ class HashEqMap(ta.MutableMapping[K, V]):
64
64
  class _Node(ta.NamedTuple, ta.Generic[K2, V2]):
65
65
  k: K2
66
66
  v: V2
@@ -70,6 +70,7 @@ class HashEqMap(ta.Mapping[K, V]):
70
70
  super().__init__()
71
71
 
72
72
  self._hash_eq = hash_eq
73
+
73
74
  self._dct: dict[int, list[HashEqMap._Node[K, V]]] = {}
74
75
  self._len = 0
75
76
 
@@ -79,6 +80,10 @@ class HashEqMap(ta.Mapping[K, V]):
79
80
  def __len__(self) -> int:
80
81
  return self._len
81
82
 
83
+ def clear(self) -> None:
84
+ self._dct.clear()
85
+ self._len = 0
86
+
82
87
  def __contains__(self, k: K) -> bool: # type: ignore[override]
83
88
  h = self._hash_eq.hash(k)
84
89
  try:
omlish/lang/__init__.py CHANGED
@@ -127,6 +127,7 @@ from .imports import ( # noqa
127
127
  import_module_attr,
128
128
  lazy_import,
129
129
  proxy_import,
130
+ proxy_init,
130
131
  resolve_import_name,
131
132
  try_import,
132
133
  yield_import_all,
omlish/lang/imports.py CHANGED
@@ -237,3 +237,87 @@ def _trigger_conditional_imports(package: str) -> None:
237
237
  _REGISTERED_CONDITIONAL_IMPORTS[package] = None
238
238
  for tn in tns:
239
239
  __import__(tn)
240
+
241
+
242
+ ##
243
+
244
+
245
+ class NamePackage(ta.NamedTuple):
246
+ name: str
247
+ package: str
248
+
249
+
250
+ class _ProxyInit:
251
+ def __init__(
252
+ self,
253
+ name_package: NamePackage,
254
+ *,
255
+ globals: ta.MutableMapping[str, ta.Any] | None = None, # noqa
256
+ update_globals: bool = False,
257
+ ) -> None:
258
+ super().__init__()
259
+
260
+ self._name_package = name_package
261
+ self._globals = globals
262
+ self._update_globals = update_globals
263
+
264
+ self._pkgs_by_attr: dict[str, str] = {}
265
+ self._mods_by_pkgs: dict[str, ta.Any] = {}
266
+
267
+ @property
268
+ def name_package(self) -> NamePackage:
269
+ return self._name_package
270
+
271
+ def add(self, package: str, attrs: ta.Iterable[str]) -> None:
272
+ if isinstance(attrs, str):
273
+ raise TypeError(attrs)
274
+ for attr in attrs:
275
+ self._pkgs_by_attr[attr] = package
276
+
277
+ def get(self, attr: str) -> ta.Any:
278
+ try:
279
+ pkg = self._pkgs_by_attr[attr]
280
+ except KeyError:
281
+ raise AttributeError(attr) # noqa
282
+
283
+ try:
284
+ mod = self._mods_by_pkgs[pkg]
285
+ except KeyError:
286
+ mod = importlib.import_module(pkg, package=self.name_package.package)
287
+
288
+ val = getattr(mod, attr)
289
+
290
+ if self._update_globals and self._globals is not None:
291
+ self._globals[attr] = val
292
+
293
+ return val
294
+
295
+
296
+ def proxy_init(
297
+ globals: ta.MutableMapping[str, ta.Any], # noqa
298
+ package: str,
299
+ attrs: ta.Iterable[str],
300
+ ) -> None:
301
+ if isinstance(attrs, str):
302
+ raise TypeError(attrs)
303
+
304
+ init_name_package = NamePackage(
305
+ globals['__name__'],
306
+ globals['__package__'],
307
+ )
308
+
309
+ pi: _ProxyInit
310
+ try:
311
+ pi = globals['__proxy_init__']
312
+ except KeyError:
313
+ pi = _ProxyInit(
314
+ init_name_package,
315
+ globals=globals,
316
+ )
317
+ globals['__proxy_init__'] = pi
318
+ globals['__getattr__'] = pi.get
319
+ else:
320
+ if pi.name_package != init_name_package:
321
+ raise Exception(f'Wrong init name: {pi.name_package=} != {init_name_package=}')
322
+
323
+ pi.add(package, attrs)
@@ -69,7 +69,7 @@ class Renderer(lang.Abstract):
69
69
  return self._params_preparer.prepare()
70
70
 
71
71
  @dispatch.method
72
- def render(self, o: ta.Any) -> str:
72
+ def render(self, o: ta.Any) -> None:
73
73
  raise TypeError(o)
74
74
 
75
75
  @classmethod
omlish/term.py CHANGED
@@ -320,9 +320,13 @@ def progress_bar(
320
320
  *,
321
321
  no_tty_check: bool = False,
322
322
  total: int | None = None,
323
+ out: ta.TextIO | None = None,
323
324
  **kwargs: ta.Any,
324
325
  ) -> ta.Generator[T, None, None]:
325
- if not no_tty_check and not sys.stdout.isatty():
326
+ if out is None:
327
+ out = sys.stdout
328
+
329
+ if not no_tty_check and not out.isatty():
326
330
  yield from seq
327
331
  return
328
332
 
@@ -332,6 +336,7 @@ def progress_bar(
332
336
 
333
337
  pb = ProgressBar(
334
338
  total=total,
339
+ out=out,
335
340
  **kwargs,
336
341
  )
337
342
 
@@ -340,7 +345,7 @@ def progress_bar(
340
345
  yield item
341
346
 
342
347
  pb.print(complete=True)
343
- sys.stdout.write('\n')
348
+ out.write('\n')
344
349
 
345
350
 
346
351
  ##
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev99
3
+ Version: 0.0.0.dev101
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=hTFp9tvE72BxKloIq1s1SS0LRQlIsvMtO69Sbc47rKg,1704
2
- omlish/__about__.py,sha256=6713nqxxPtA38L0r9uYNrMgouxInTcm_aUGG-SmXVbI,3351
2
+ omlish/__about__.py,sha256=ErHDG6f5lFLkJwUUwDUw1PAqOlASMsYP_zEuWJY2hGI,3352
3
3
  omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omlish/argparse.py,sha256=Dc73G8lyoQBLvXhMYUbzQUh4SJu_OTvKUXjSUxq_ang,7499
5
5
  omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
@@ -18,7 +18,7 @@ omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,518
18
18
  omlish/os.py,sha256=5nJ-a9JKSMoaZVZ1eOa5BAbfL7o7CF7ue_PyJwufnwY,1460
19
19
  omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
20
20
  omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
21
- omlish/term.py,sha256=pgzEZ8FigEvaaRK38N4HhPSI-M9GOYIXy3XLu_CSROc,9197
21
+ omlish/term.py,sha256=BXJSE9gfM461bh4z_gysx0oavZSafqcQs5ayZK-kTUo,9284
22
22
  omlish/antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  omlish/antlr/_runtime/BufferedTokenStream.py,sha256=1Rnhm62MZCWSuQeRs7lRUbdtdyo7Gyg8r4gAETjv-cE,10793
24
24
  omlish/antlr/_runtime/CommonTokenFactory.py,sha256=QrSSTH0gYhOpPeOHqrs6-2g1PGcgYvjhR6J6pynKLOc,2147
@@ -82,7 +82,7 @@ omlish/asyncs/__init__.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
82
82
  omlish/asyncs/anyio.py,sha256=gfpx-D8QGmUfhnQxHEaHXcAP8zSMQjcGw4COFTGNnHI,8021
83
83
  omlish/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
84
84
  omlish/asyncs/asyncs.py,sha256=Tf7ZodTGepkM7HAuFcDNh9lLzzrMw6rELWvopGmFkh4,2035
85
- omlish/asyncs/bridge.py,sha256=bcTEhsBJOWAMixu_fCxkDedLP3NEitAfwaHYTu26sQE,8980
85
+ omlish/asyncs/bridge.py,sha256=GJOjXVwZJvpq2q9rCwRI2u7Tg-KLUx-SY92b873-M4c,9738
86
86
  omlish/asyncs/flavors.py,sha256=1mNxGNRVmjUHzA13K5ht8vdJv4CLEmzYTQ6BZXr1520,4866
87
87
  omlish/asyncs/trio.py,sha256=fmZ5b_lKdVV8NQ3euCUutWgnkqTFzSnOjvJSA_jvmrE,367
88
88
  omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw,1327
@@ -94,13 +94,13 @@ omlish/bootstrap/harness.py,sha256=VW8YP-yENGyXIuJ8GL_xintArF13nafwpz-iAghPt34,1
94
94
  omlish/bootstrap/main.py,sha256=yZhOHDDlj4xB5a89dRdT8z58FsqqnpoBg1-tvY2CJe4,5903
95
95
  omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
96
96
  omlish/bootstrap/sys.py,sha256=iLHUNIuIPv-k-Mc6aHj5sSET78olCVt7t0HquFDO4iQ,8762
97
- omlish/collections/__init__.py,sha256=JFphLT_jEe-h_YBKyjrI0RT4KgNvjPXRErebBHwIHfY,1763
97
+ omlish/collections/__init__.py,sha256=qIznS1cnXBxQsZk871DDWOnQfxk_u1PZ_VuIWxqPuxw,2134
98
98
  omlish/collections/_abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
99
99
  omlish/collections/_io_abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
100
100
  omlish/collections/coerce.py,sha256=o11AMrUiyoadd8WkdqeKPIpXf2xd0LyylzNCyJivCLU,7036
101
101
  omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
102
102
  omlish/collections/frozen.py,sha256=DGxemj_pVID85tSBm-Wns_x4ov0wOEIT6X5bVgJtmkA,4152
103
- omlish/collections/hasheq.py,sha256=UXgZQycBTgPLtwt4onBlNzmjy1zuAw32xuUvOwpwM6g,3813
103
+ omlish/collections/hasheq.py,sha256=Q3tmo0f-vVlNNICNvxCfqgOPwVJymKSahdlG1w6TtTU,3899
104
104
  omlish/collections/identity.py,sha256=jhEpC8tnfh3Sg-MJff1Fp9eMydt150wits_UeVdctUk,2723
105
105
  omlish/collections/indexed.py,sha256=tFQsIWH4k9QqsF5VB7DsIVNsRThiQNx-ooRF36X_PnU,2203
106
106
  omlish/collections/mappings.py,sha256=eEifLZez-BWunTuj6974bGxBFfNRODZpu6Oa7_2ME94,3190
@@ -112,7 +112,7 @@ omlish/collections/treap.py,sha256=A09ZPacGyJlyRB-Wi4TNj3tE0w-RpFNliPgpDaa6Vwg,7
112
112
  omlish/collections/treapmap.py,sha256=TxOM-ZRF5PK2xe5wRIhESNt7DGh9b_MeZfE7HLkCOs4,5804
113
113
  omlish/collections/unmodifiable.py,sha256=QmUEi9IBXqiM_KGgH2rqg15VmkHJo1MZ6kwq2twEMho,4750
114
114
  omlish/collections/utils.py,sha256=9o9STwzAn5YjZRZ9ns1kuo7NgLXLaoVPFu6AJd-3JT8,4336
115
- omlish/collections/cache/__init__.py,sha256=Cv8RX-Ehit3um0QLDq7uRDqJUCcdqTKoAB9T0pM_5hg,392
115
+ omlish/collections/cache/__init__.py,sha256=D1gO71VcwxFTZP9gAc9isHfg_TEdalwhsJcgGLvS9hg,233
116
116
  omlish/collections/cache/descriptor.py,sha256=t-1Gh4DTABDuNmeDJlpoW4LV3gi_uSlBd9ZfBINfYCM,5023
117
117
  omlish/collections/cache/impl.py,sha256=nQox5kChhns9h2a5gnX-ayQGBQJ5-B1aZkLQ2Aej19g,15137
118
118
  omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K7p8E,685
@@ -257,7 +257,7 @@ omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCF
257
257
  omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
258
258
  omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
259
259
  omlish/inject/impl/scopes.py,sha256=ASfULXgP_ETlsAqFJfrZmyEaZt64Zr8tNn5ScA-EoXk,5900
260
- omlish/lang/__init__.py,sha256=pKAxhQe2qbN9pDXPOz9_MRxTKJPPWHZyAkWoAaZ9P4M,3688
260
+ omlish/lang/__init__.py,sha256=1BTfyRGPq8ahztMT3xP34EcN2zV3bInCqc1XrUygZh8,3704
261
261
  omlish/lang/cached.py,sha256=92TvRZQ6sWlm7dNn4hgl7aWKbX0J1XUEo3DRjBpgVQk,7834
262
262
  omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
263
263
  omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
@@ -266,7 +266,7 @@ omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
266
266
  omlish/lang/descriptors.py,sha256=RRBbkMgTzg82fFFE4D0muqobpM-ZZaOta6yB1lpX3s8,6617
267
267
  omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
268
268
  omlish/lang/functions.py,sha256=kkPfcdocg-OmyN7skIqrFxNvqAv89Zc_kXKYAN8vw8g,3895
269
- omlish/lang/imports.py,sha256=Oy7iInOTqgZv6nyRbnvGrPv4cKKIAzPbhfDXCajDUcc,6626
269
+ omlish/lang/imports.py,sha256=zxhoDw4d9F0GcKZGFAe1kU8AiTvGoWLVsqU2uggi_Rk,8729
270
270
  omlish/lang/iterables.py,sha256=xRwktm6i2RHSb_ELfAXdjITIfE69qDyMEzgeZqvQXiU,2386
271
271
  omlish/lang/maybes.py,sha256=NYHZDjqDtwPMheDrj2VtUVujxRPf8Qpgk4ZlZCTvBZc,3492
272
272
  omlish/lang/objects.py,sha256=LOC3JvX1g5hPxJ7Sv2TK9kNkAo9c8J-Jw2NmClR_rkA,4576
@@ -421,7 +421,7 @@ omlish/sql/queries/multi.py,sha256=7x6x-4jnPzxA6ZasBjnjFuhHFpWt5rGCua3UvuTMIJ0,8
421
421
  omlish/sql/queries/names.py,sha256=YiIyS6ehYMYrdLlUxMawV_Xf2zdi7RwVO9Qsxr_W4_4,772
422
422
  omlish/sql/queries/ops.py,sha256=B7IDfjr2DW5LJhWoNaY1WW90BJhe5ZtmxIELhWXbW-0,129
423
423
  omlish/sql/queries/relations.py,sha256=-d3n-dN17c3TPMZmzSplhWawllUzdq12XPDAuzoeMEQ,838
424
- omlish/sql/queries/rendering.py,sha256=QegTkbSGlGKen4U4XB2lqjpkt1WGaZUmXmVR2gm8UiU,5944
424
+ omlish/sql/queries/rendering.py,sha256=DUmdsQqChCBxCSXSL0dDUz0H5joTL_qayhdErsWz6dQ,5945
425
425
  omlish/sql/queries/selects.py,sha256=8dqm4KyrJvOsW3KHSO7qLEfPlZa7sJDp8puuGxrfvoA,1369
426
426
  omlish/sql/queries/stmts.py,sha256=pBqwD7dRlqMu6uh6vR3xaWOEgbZCcFWbOQ9ryYd17T4,441
427
427
  omlish/sql/queries/unary.py,sha256=MEYBDZn_H0bexmUrJeONOv5-gIpYowUaXOsEHeQM4ks,1144
@@ -458,9 +458,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
458
458
  omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
459
459
  omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
460
460
  omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
461
- omlish-0.0.0.dev99.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
462
- omlish-0.0.0.dev99.dist-info/METADATA,sha256=dlvMKXrg8JClykUv0QJZisR5FWrEFVDWqr5W07gAKP0,3999
463
- omlish-0.0.0.dev99.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
464
- omlish-0.0.0.dev99.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
465
- omlish-0.0.0.dev99.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
466
- omlish-0.0.0.dev99.dist-info/RECORD,,
461
+ omlish-0.0.0.dev101.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
462
+ omlish-0.0.0.dev101.dist-info/METADATA,sha256=Sug6yZWDsEcx7G0mfxCnrho_nLMA-X_TTRvbl2l2fXs,4000
463
+ omlish-0.0.0.dev101.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
464
+ omlish-0.0.0.dev101.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
465
+ omlish-0.0.0.dev101.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
466
+ omlish-0.0.0.dev101.dist-info/RECORD,,