omlish 0.0.0.dev60__py3-none-any.whl → 0.0.0.dev62__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/__about__.py +2 -2
- omlish/bootstrap/diag.py +19 -0
- omlish/bootstrap/harness.py +0 -2
- omlish/bootstrap/main.py +22 -2
- omlish/diag/debug.py +26 -0
- omlish/marshal/base.py +6 -3
- omlish/reflect/__init__.py +22 -20
- omlish/reflect/types.py +88 -69
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/RECORD +14 -13
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev60.dist-info → omlish-0.0.0.dev62.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/bootstrap/diag.py
CHANGED
@@ -17,6 +17,7 @@ if ta.TYPE_CHECKING:
|
|
17
17
|
import cProfile # noqa
|
18
18
|
import pstats
|
19
19
|
|
20
|
+
from ..diag import debug as ddbg
|
20
21
|
from ..diag import pycharm as diagpc
|
21
22
|
from ..diag import replserver as diagrs
|
22
23
|
from ..diag import threads as diagt
|
@@ -25,6 +26,7 @@ else:
|
|
25
26
|
cProfile = lang.proxy_import('cProfile') # noqa
|
26
27
|
pstats = lang.proxy_import('pstats')
|
27
28
|
|
29
|
+
ddbg = lang.proxy_import('..diag.debug', __package__)
|
28
30
|
diagpc = lang.proxy_import('..diag.pycharm', __package__)
|
29
31
|
diagrs = lang.proxy_import('..diag.replserver', __package__)
|
30
32
|
diagt = lang.proxy_import('..diag.threads', __package__)
|
@@ -200,3 +202,20 @@ class ReplServerBootstrap(ContextBootstrap['ReplServerBootstrap.Config']):
|
|
200
202
|
thread.start()
|
201
203
|
|
202
204
|
yield
|
205
|
+
|
206
|
+
|
207
|
+
##
|
208
|
+
|
209
|
+
|
210
|
+
class DebugBootstrap(ContextBootstrap['DebugBootstrap.Config']):
|
211
|
+
@dc.dataclass(frozen=True)
|
212
|
+
class Config(Bootstrap.Config):
|
213
|
+
enable: bool = False
|
214
|
+
|
215
|
+
@contextlib.contextmanager
|
216
|
+
def enter(self) -> ta.Iterator[None]:
|
217
|
+
if not self._config.enable:
|
218
|
+
return
|
219
|
+
|
220
|
+
with ddbg.debugging_on_exception():
|
221
|
+
yield
|
omlish/bootstrap/harness.py
CHANGED
omlish/bootstrap/main.py
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
"""
|
2
2
|
TODO:
|
3
3
|
- -x / --exec - os.exec entrypoint
|
4
|
-
|
4
|
+
- refuse to install non-exec-relevant Bootstraps when chosen
|
5
5
|
"""
|
6
6
|
# ruff: noqa: UP006 UP007
|
7
7
|
import argparse
|
8
8
|
import dataclasses as dc
|
9
9
|
import io
|
10
10
|
import itertools
|
11
|
+
import os
|
12
|
+
import shutil
|
11
13
|
import sys
|
12
14
|
import typing as ta
|
13
15
|
|
@@ -152,18 +154,36 @@ def _main() -> int:
|
|
152
154
|
_add_arguments(parser)
|
153
155
|
|
154
156
|
parser.add_argument('-m', '--module', action='store_true')
|
157
|
+
parser.add_argument('-c', '--code', action='store_true')
|
158
|
+
parser.add_argument('-x', '--exec', action='store_true')
|
155
159
|
parser.add_argument('target')
|
156
160
|
parser.add_argument('args', nargs=argparse.REMAINDER)
|
157
161
|
|
158
162
|
args = parser.parse_args()
|
163
|
+
|
164
|
+
if len([a for a in ('module', 'code', 'exec') if getattr(args, a)]) > 1:
|
165
|
+
raise Exception('Multiple exec mode specified')
|
166
|
+
|
159
167
|
cfgs = _process_arguments(args)
|
160
168
|
|
161
169
|
with bootstrap(*cfgs):
|
162
170
|
tgt = args.target
|
163
171
|
|
172
|
+
if args.exec:
|
173
|
+
exe = shutil.which(tgt)
|
174
|
+
if exe is None:
|
175
|
+
raise FileNotFoundError(exe)
|
176
|
+
|
177
|
+
os.execl(exe, exe, *args.args)
|
178
|
+
|
179
|
+
return 0 # type: ignore # noqa
|
180
|
+
|
164
181
|
sys.argv = [tgt, *(args.args or ())]
|
165
182
|
|
166
|
-
if args.
|
183
|
+
if args.code:
|
184
|
+
exec(tgt, {}, {})
|
185
|
+
|
186
|
+
elif args.module:
|
167
187
|
runpy._run_module_as_main(tgt) # type: ignore # noqa
|
168
188
|
|
169
189
|
else:
|
omlish/diag/debug.py
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
"""
|
2
|
+
TODO:
|
3
|
+
- select best debugger: ipdb, pudb,
|
4
|
+
"""
|
5
|
+
import contextlib
|
6
|
+
import sys
|
7
|
+
import traceback
|
8
|
+
import typing as ta
|
9
|
+
|
10
|
+
|
11
|
+
@contextlib.contextmanager
|
12
|
+
def debugging_on_exception(
|
13
|
+
*,
|
14
|
+
silent: bool = False,
|
15
|
+
) -> ta.Iterator[None]:
|
16
|
+
import pdb # noqa
|
17
|
+
|
18
|
+
try:
|
19
|
+
yield
|
20
|
+
except Exception:
|
21
|
+
if not silent:
|
22
|
+
traceback.print_exc()
|
23
|
+
|
24
|
+
pdb.post_mortem(sys.exc_info()[2])
|
25
|
+
|
26
|
+
raise
|
omlish/marshal/base.py
CHANGED
@@ -164,9 +164,12 @@ class BaseContext(lang.Abstract):
|
|
164
164
|
options: col.TypeMap[Option] = col.TypeMap()
|
165
165
|
|
166
166
|
def _reflect(self, o: ta.Any) -> rfl.Type:
|
167
|
-
|
168
|
-
|
169
|
-
|
167
|
+
def override(o):
|
168
|
+
if (ovr := self.registry.get_of(o, ReflectOverride)):
|
169
|
+
return ovr[-1].rty
|
170
|
+
return None
|
171
|
+
|
172
|
+
return rfl.Reflector(override=override).type(o)
|
170
173
|
|
171
174
|
|
172
175
|
@dc.dataclass(frozen=True)
|
omlish/reflect/__init__.py
CHANGED
@@ -1,18 +1,6 @@
|
|
1
|
-
from .
|
2
|
-
|
3
|
-
|
4
|
-
Any,
|
5
|
-
Generic,
|
6
|
-
NewType,
|
7
|
-
TYPES,
|
8
|
-
Type,
|
9
|
-
Union,
|
10
|
-
get_orig_bases,
|
11
|
-
get_orig_class,
|
12
|
-
get_params,
|
13
|
-
is_type,
|
14
|
-
is_union_type,
|
15
|
-
type_,
|
1
|
+
from .isinstance import ( # noqa
|
2
|
+
KNOWN_ISINSTANCE_GENERICS,
|
3
|
+
isinstance_of,
|
16
4
|
)
|
17
5
|
|
18
6
|
from .ops import ( # noqa
|
@@ -24,11 +12,6 @@ from .ops import ( # noqa
|
|
24
12
|
types_equivalent,
|
25
13
|
)
|
26
14
|
|
27
|
-
from .isinstance import ( # noqa
|
28
|
-
KNOWN_ISINSTANCE_GENERICS,
|
29
|
-
isinstance_of,
|
30
|
-
)
|
31
|
-
|
32
15
|
from .subst import ( # noqa
|
33
16
|
ALIAS_UPDATING_GENERIC_SUBSTITUTION,
|
34
17
|
DEFAULT_GENERIC_SUBSTITUTION,
|
@@ -38,3 +21,22 @@ from .subst import ( # noqa
|
|
38
21
|
get_type_var_replacements,
|
39
22
|
replace_type_vars,
|
40
23
|
)
|
24
|
+
|
25
|
+
from .types import ( # noqa
|
26
|
+
ANY,
|
27
|
+
Annotated,
|
28
|
+
Any,
|
29
|
+
DEFAULT_REFLECTOR,
|
30
|
+
Generic,
|
31
|
+
NewType,
|
32
|
+
Reflector,
|
33
|
+
TYPES,
|
34
|
+
Type,
|
35
|
+
Union,
|
36
|
+
get_orig_bases,
|
37
|
+
get_orig_class,
|
38
|
+
get_params,
|
39
|
+
is_type,
|
40
|
+
is_union_type,
|
41
|
+
type_,
|
42
|
+
)
|
omlish/reflect/types.py
CHANGED
@@ -195,92 +195,111 @@ TYPES: tuple[type, ...] = (
|
|
195
195
|
##
|
196
196
|
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
class Reflector:
|
199
|
+
def __init__(
|
200
|
+
self,
|
201
|
+
*,
|
202
|
+
override: ta.Callable[[ta.Any], ta.Any] | None = None,
|
203
|
+
) -> None:
|
204
|
+
super().__init__()
|
201
205
|
|
202
|
-
|
206
|
+
self._override = override
|
203
207
|
|
204
|
-
|
205
|
-
|
208
|
+
def is_type(self, obj: ta.Any) -> bool:
|
209
|
+
if isinstance(obj, (Union, Generic, ta.TypeVar, NewType, Any)): # noqa
|
210
|
+
return True
|
206
211
|
|
207
|
-
|
212
|
+
oty = type(obj)
|
208
213
|
|
209
|
-
|
210
|
-
|
211
|
-
oty is _CallableGenericAlias
|
212
|
-
) or
|
214
|
+
return (
|
215
|
+
oty is _UnionGenericAlias or oty is types.UnionType or # noqa
|
213
216
|
|
214
|
-
|
217
|
+
isinstance(obj, ta.NewType) or # noqa
|
215
218
|
|
216
|
-
|
217
|
-
|
219
|
+
(
|
220
|
+
is_simple_generic_alias_type(oty) or
|
221
|
+
oty is _CallableGenericAlias
|
222
|
+
) or
|
218
223
|
|
224
|
+
isinstance(obj, type) or
|
219
225
|
|
220
|
-
|
221
|
-
|
222
|
-
return ANY
|
226
|
+
isinstance(obj, _SpecialGenericAlias)
|
227
|
+
)
|
223
228
|
|
224
|
-
|
225
|
-
|
229
|
+
def type(self, obj: ta.Any) -> Type:
|
230
|
+
if self._override is not None:
|
231
|
+
if (ovr := self._override(obj)) is not None:
|
232
|
+
return ovr
|
226
233
|
|
227
|
-
|
234
|
+
if obj is ta.Any:
|
235
|
+
return ANY
|
228
236
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
if isinstance(obj, ta.NewType): # noqa
|
233
|
-
return NewType(obj)
|
234
|
-
|
235
|
-
if (
|
236
|
-
is_simple_generic_alias_type(oty) or
|
237
|
-
oty is _CallableGenericAlias
|
238
|
-
):
|
239
|
-
origin = ta.get_origin(obj)
|
240
|
-
args = ta.get_args(obj)
|
241
|
-
if oty is _CallableGenericAlias:
|
242
|
-
p, r = args
|
243
|
-
if p is Ellipsis or isinstance(p, ta.ParamSpec):
|
244
|
-
raise TypeError(f'Callable argument not yet supported for {obj=}')
|
245
|
-
args = (*p, r)
|
246
|
-
params = _KNOWN_SPECIAL_TYPE_VARS[:len(args)]
|
247
|
-
elif origin is ta.Generic:
|
248
|
-
params = args
|
249
|
-
else:
|
250
|
-
params = get_params(origin)
|
251
|
-
if len(args) != len(params):
|
252
|
-
raise TypeError(f'Mismatched {args=} and {params=} for {obj=}')
|
253
|
-
return Generic(
|
254
|
-
origin,
|
255
|
-
tuple(type_(a) for a in args),
|
256
|
-
params,
|
257
|
-
obj,
|
258
|
-
)
|
237
|
+
if isinstance(obj, (Union, Generic, ta.TypeVar, NewType, Any)): # noqa
|
238
|
+
return obj
|
259
239
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
240
|
+
oty = type(obj)
|
241
|
+
|
242
|
+
if oty is _UnionGenericAlias or oty is types.UnionType:
|
243
|
+
return Union(frozenset(self.type(a) for a in ta.get_args(obj)))
|
244
|
+
|
245
|
+
if isinstance(obj, ta.NewType): # noqa
|
246
|
+
return NewType(obj)
|
247
|
+
|
248
|
+
if (
|
249
|
+
is_simple_generic_alias_type(oty) or
|
250
|
+
oty is _CallableGenericAlias
|
251
|
+
):
|
252
|
+
origin = ta.get_origin(obj)
|
253
|
+
args = ta.get_args(obj)
|
254
|
+
if oty is _CallableGenericAlias:
|
255
|
+
p, r = args
|
256
|
+
if p is Ellipsis or isinstance(p, ta.ParamSpec):
|
257
|
+
raise TypeError(f'Callable argument not yet supported for {obj=}')
|
258
|
+
args = (*p, r)
|
259
|
+
params = _KNOWN_SPECIAL_TYPE_VARS[:len(args)]
|
260
|
+
elif origin is ta.Generic:
|
261
|
+
params = args
|
262
|
+
else:
|
263
|
+
params = get_params(origin)
|
264
|
+
if len(args) != len(params):
|
265
|
+
raise TypeError(f'Mismatched {args=} and {params=} for {obj=}')
|
266
|
+
return Generic(
|
267
|
+
origin,
|
268
|
+
tuple(self.type(a) for a in args),
|
269
|
+
params,
|
270
|
+
obj,
|
271
|
+
)
|
272
|
+
|
273
|
+
if isinstance(obj, type):
|
274
|
+
if issubclass(obj, ta.Generic): # type: ignore
|
275
|
+
params = get_params(obj)
|
276
|
+
if params:
|
277
|
+
return Generic(
|
278
|
+
obj,
|
279
|
+
params,
|
280
|
+
params,
|
281
|
+
obj,
|
282
|
+
)
|
283
|
+
return obj
|
284
|
+
|
285
|
+
if isinstance(obj, _SpecialGenericAlias):
|
286
|
+
if (ks := _KNOWN_SPECIALS_BY_ALIAS.get(obj)) is not None:
|
287
|
+
params = _KNOWN_SPECIAL_TYPE_VARS[:ks.nparams]
|
264
288
|
return Generic(
|
265
|
-
|
289
|
+
ks.origin,
|
266
290
|
params,
|
267
291
|
params,
|
268
292
|
obj,
|
269
293
|
)
|
270
|
-
return obj
|
271
294
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
return Generic(
|
276
|
-
ks.origin,
|
277
|
-
params,
|
278
|
-
params,
|
279
|
-
obj,
|
280
|
-
)
|
295
|
+
if isinstance(obj, _AnnotatedAlias):
|
296
|
+
o = ta.get_args(obj)[0]
|
297
|
+
return Annotated(self.type(o), md=obj.__metadata__, obj=obj)
|
281
298
|
|
282
|
-
|
283
|
-
o = ta.get_args(obj)[0]
|
284
|
-
return Annotated(type_(o), md=obj.__metadata__, obj=obj)
|
299
|
+
raise TypeError(obj)
|
285
300
|
|
286
|
-
|
301
|
+
|
302
|
+
DEFAULT_REFLECTOR = Reflector()
|
303
|
+
|
304
|
+
is_type = DEFAULT_REFLECTOR.is_type
|
305
|
+
type_ = DEFAULT_REFLECTOR.type
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=jvyoQ7x8UJ9lpRgkh7eElwJ8qnzyG5aUGameT9Yk8GM,1419
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=u-gRUFmrAMM8C-1-u6UfjGvA_1qc3iVQiZLYnMGHQxg,3420
|
3
3
|
omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omlish/argparse.py,sha256=Vr70_85EVLJLgEkRtwOr264tMRtqtlN7ncFfXRUk5aM,6914
|
5
5
|
omlish/c3.py,sha256=4vogWgwPb8TbNS2KkZxpoWbwjj7MuHG2lQG-hdtkvjI,8062
|
@@ -89,9 +89,9 @@ omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw
|
|
89
89
|
omlish/bootstrap/__init__.py,sha256=-Rtsg7uPQNhh1dIT9nqrz96XlqizwoLnWf-FwOEstJI,730
|
90
90
|
omlish/bootstrap/__main__.py,sha256=4jCwsaogp0FrJjJZ85hzF4-WqluPeheHbfeoKynKvNs,194
|
91
91
|
omlish/bootstrap/base.py,sha256=d8hqn4hp1XMMi5PgcJBQXPKmW47epu8CxBlqDZiRZb4,1073
|
92
|
-
omlish/bootstrap/diag.py,sha256=
|
93
|
-
omlish/bootstrap/harness.py,sha256=
|
94
|
-
omlish/bootstrap/main.py,sha256=
|
92
|
+
omlish/bootstrap/diag.py,sha256=LADLhusbJ1tKxVD8-gmia1HShX1VeszRO1OApIQhSpI,5507
|
93
|
+
omlish/bootstrap/harness.py,sha256=VW8YP-yENGyXIuJ8GL_xintArF13nafwpz-iAghPt34,1967
|
94
|
+
omlish/bootstrap/main.py,sha256=ripSWAlYz3LVyv6S_Js9MWYO3QNKgBSaFQv3gqGjuRM,5885
|
95
95
|
omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
|
96
96
|
omlish/bootstrap/sys.py,sha256=i6veZeE83wO0HTl9b6ykj_pEN05fqu0enoAv4sw5Ayc,8742
|
97
97
|
omlish/collections/__init__.py,sha256=tGUzvS_ZjiqALsLRy7JX3h4KZRQX2CmtdAfTRD7UwMk,1677
|
@@ -151,6 +151,7 @@ omlish/dataclasses/impl/slots.py,sha256=_sm-x9v1tPnXEHBHNUMTHZocgVyhZaPdvamIPPBU
|
|
151
151
|
omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
|
152
152
|
omlish/diag/__init__.py,sha256=BYQoq12W2qU0O7m2Z-RLCX6YLIYEW9MmfN7_i9--Yk0,132
|
153
153
|
omlish/diag/asts.py,sha256=BveUUNUcaAm4Hg55f4ZxGSI313E4L8cCZ5XjHpEkKVI,3325
|
154
|
+
omlish/diag/debug.py,sha256=YPzQXiBAJMYHYpBKzx0QhlLMZokjR5kkAVLodA3yddQ,424
|
154
155
|
omlish/diag/procfs.py,sha256=vBovaMvAUKdl7FbtFq3TNsSmdhs8DaYfhoEsKeWYta8,9704
|
155
156
|
omlish/diag/procstats.py,sha256=UkqxREqfd-38xPYZ9T1SIJISz5ARQCEhTtOZrxtm2dE,777
|
156
157
|
omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
|
@@ -288,7 +289,7 @@ omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
|
|
288
289
|
omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
|
289
290
|
omlish/marshal/__init__.py,sha256=G0MDeBStBjz9Njq-rt5C6WbuCik6c8st7cipwMVw668,2139
|
290
291
|
omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
|
291
|
-
omlish/marshal/base.py,sha256=
|
292
|
+
omlish/marshal/base.py,sha256=_ZKSSuv6p9r86sja_jaxI09WYpjCBFi0KTsOiZCYyk0,6587
|
292
293
|
omlish/marshal/base64.py,sha256=F-3ogJdcFCtWINRgJgWT0rErqgx6f4qahhcg8OrkqhE,1089
|
293
294
|
omlish/marshal/dataclasses.py,sha256=G6Uh8t4vvNBAx2BhzH8ksj8Hq_bo6npFphQhyF298VU,6892
|
294
295
|
omlish/marshal/datetimes.py,sha256=0ffg8cEvx9SMKIXZGD9b7MqpLfmgw0uKKdn6YTfoqok,3714
|
@@ -318,11 +319,11 @@ omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
318
319
|
omlish/math/bits.py,sha256=yip1l8agOYzT7bFyMGc0RR3XlnGCfHMpjw_SECLLh1I,3477
|
319
320
|
omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
|
320
321
|
omlish/math/stats.py,sha256=MegzKVsmv2kra4jDWLOUgV0X7Ee2Tbl5u6ql1v4-dEY,10053
|
321
|
-
omlish/reflect/__init__.py,sha256=
|
322
|
+
omlish/reflect/__init__.py,sha256=eJzSLlCWcjGWn7NGzIR66vANvxiHQym73YJeMwB7mCw,725
|
322
323
|
omlish/reflect/isinstance.py,sha256=x5T9S2634leinBT4hl3CZZkRttvdvvlxChkC_x9Qu2s,1176
|
323
324
|
omlish/reflect/ops.py,sha256=RJ6jzrM4ieFsXzWyNXWV43O_WgzEaUvlHSc5N2ezW2A,2044
|
324
325
|
omlish/reflect/subst.py,sha256=JM2RGv2-Rcex8wCqhmgvRG59zD242P9jM3O2QLjKWWo,3586
|
325
|
-
omlish/reflect/types.py,sha256=
|
326
|
+
omlish/reflect/types.py,sha256=8EhhLU-ko-Uepk3Xa0v22w8LBS7MbjPwJ4HNM_Dtf5g,7779
|
326
327
|
omlish/secrets/__init__.py,sha256=SGB1KrlNrxlNpazEHYy95NTzteLi8ndoEgMhU7luBl8,420
|
327
328
|
omlish/secrets/crypto.py,sha256=6CsLy0UEqCrBK8Xx_3-iFF6SKtu2GlEqUQ8-MliY3tk,3709
|
328
329
|
omlish/secrets/marshal.py,sha256=U9uSRTWzZmumfNZeh_dROwVdGrARsp155TylRbjilP8,2048
|
@@ -407,9 +408,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
|
407
408
|
omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
|
408
409
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
409
410
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
410
|
-
omlish-0.0.0.
|
411
|
-
omlish-0.0.0.
|
412
|
-
omlish-0.0.0.
|
413
|
-
omlish-0.0.0.
|
414
|
-
omlish-0.0.0.
|
415
|
-
omlish-0.0.0.
|
411
|
+
omlish-0.0.0.dev62.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
412
|
+
omlish-0.0.0.dev62.dist-info/METADATA,sha256=mt0fT8Bk_wKy64eUKY_AYPNxHg-yruiGNd2EYcnYUPw,4167
|
413
|
+
omlish-0.0.0.dev62.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
414
|
+
omlish-0.0.0.dev62.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
415
|
+
omlish-0.0.0.dev62.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
416
|
+
omlish-0.0.0.dev62.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|