omlish 0.0.0.dev30__py3-none-any.whl → 0.0.0.dev32__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 +9 -3
- omlish/asyncs/anyio.py +1 -1
- omlish/asyncs/bridge.py +17 -9
- omlish/asyncs/trio.py +1 -1
- omlish/bootstrap/main.py +5 -0
- omlish/concurrent/threadlets.py +2 -2
- omlish/diag/procstats.py +20 -0
- omlish/docker.py +9 -0
- omlish/fnpairs.py +11 -0
- omlish/logs/noisy.py +1 -0
- omlish/matchfns.py +2 -2
- omlish/testing/pytest/plugins/switches.py +29 -9
- {omlish-0.0.0.dev30.dist-info → omlish-0.0.0.dev32.dist-info}/METADATA +5 -3
- {omlish-0.0.0.dev30.dist-info → omlish-0.0.0.dev32.dist-info}/RECORD +18 -17
- omlish-0.0.0.dev32.dist-info/entry_points.txt +2 -0
- {omlish-0.0.0.dev30.dist-info → omlish-0.0.0.dev32.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev30.dist-info → omlish-0.0.0.dev32.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev30.dist-info → omlish-0.0.0.dev32.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
__version__ = '0.0.0.
|
2
|
-
__revision__ = '
|
1
|
+
__version__ = '0.0.0.dev32'
|
2
|
+
__revision__ = 'd23c5a30faed96740a11e3a807e58b23c215f0af'
|
3
3
|
|
4
4
|
|
5
5
|
#
|
@@ -30,7 +30,7 @@ class Project(ProjectBase):
|
|
30
30
|
|
31
31
|
optional_dependencies = {
|
32
32
|
'async': [
|
33
|
-
'anyio ~= 4.
|
33
|
+
'anyio ~= 4.6',
|
34
34
|
'sniffio ~= 1.3',
|
35
35
|
|
36
36
|
'greenlet ~= 3.1',
|
@@ -62,6 +62,8 @@ class Project(ProjectBase):
|
|
62
62
|
|
63
63
|
'pyyaml ~= 5.0',
|
64
64
|
|
65
|
+
'cbor2 ~= 5.6',
|
66
|
+
|
65
67
|
'cloudpickle ~= 3.0',
|
66
68
|
],
|
67
69
|
|
@@ -104,6 +106,10 @@ class Project(ProjectBase):
|
|
104
106
|
],
|
105
107
|
}
|
106
108
|
|
109
|
+
entry_points = {
|
110
|
+
'omlish.manifests': {name: name},
|
111
|
+
}
|
112
|
+
|
107
113
|
|
108
114
|
#
|
109
115
|
|
omlish/asyncs/anyio.py
CHANGED
@@ -4,7 +4,7 @@ TODO:
|
|
4
4
|
- owned lock
|
5
5
|
- async once
|
6
6
|
|
7
|
-
|
7
|
+
See:
|
8
8
|
- https://github.com/davidbrochart/sqlite-anyio/blob/a3ba4c6ef0535b14a5a60071fcd6ed565a514963/sqlite_anyio/sqlite.py
|
9
9
|
- https://github.com/rafalkrupinski/ratelimit-anyio/blob/2910a8a3d6fa54ed17ee6ba457686c9f7a4c4beb/src/ratelimit_anyio/__init__.py
|
10
10
|
- https://github.com/nekitdev/async-extensions/tree/main/async_extensions
|
omlish/asyncs/bridge.py
CHANGED
@@ -12,8 +12,9 @@ TODO:
|
|
12
12
|
See:
|
13
13
|
- https://greenback.readthedocs.io/en/latest/
|
14
14
|
"""
|
15
|
+
import functools # noqa
|
15
16
|
import itertools
|
16
|
-
import sys
|
17
|
+
import sys # noqa
|
17
18
|
import types
|
18
19
|
import typing as ta
|
19
20
|
import weakref
|
@@ -90,7 +91,7 @@ class UnexpectedBridgeNestingError(Exception):
|
|
90
91
|
|
91
92
|
|
92
93
|
_DEBUG_PRINT: ta.Callable[..., None] | None = None
|
93
|
-
# _DEBUG_PRINT = print # noqa
|
94
|
+
# _DEBUG_PRINT = functools.partial(print, file=sys.stderr) # noqa
|
94
95
|
|
95
96
|
_TRACK_TRANSITION_OBJS = False
|
96
97
|
|
@@ -253,8 +254,8 @@ def s_to_a(fn, *, require_await=False):
|
|
253
254
|
switch_occurred = True
|
254
255
|
try:
|
255
256
|
value = yield result
|
256
|
-
except BaseException: # noqa
|
257
|
-
result = g.throw(
|
257
|
+
except BaseException as e: # noqa
|
258
|
+
result = g.throw(e)
|
258
259
|
else:
|
259
260
|
result = g.switch(value)
|
260
261
|
|
@@ -302,15 +303,22 @@ def a_to_s(fn):
|
|
302
303
|
|
303
304
|
cr = gate()
|
304
305
|
sv = None
|
306
|
+
he = False
|
305
307
|
try:
|
306
308
|
while True:
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
309
|
+
if not he:
|
310
|
+
try:
|
311
|
+
sv = cr.send(sv)
|
312
|
+
except StopIteration:
|
313
|
+
break
|
314
|
+
he = False
|
311
315
|
|
312
316
|
if ret is missing or cr.cr_await is not None or cr.cr_running:
|
313
|
-
|
317
|
+
try:
|
318
|
+
sv = s_to_a_await(sv) # type: ignore
|
319
|
+
except BaseException as e: # noqa
|
320
|
+
sv = cr.throw(e)
|
321
|
+
he = True
|
314
322
|
|
315
323
|
finally:
|
316
324
|
cr.close()
|
omlish/asyncs/trio.py
CHANGED
omlish/bootstrap/main.py
CHANGED
omlish/concurrent/threadlets.py
CHANGED
@@ -48,7 +48,7 @@ class Threadlet(abc.ABC):
|
|
48
48
|
raise NotImplementedError
|
49
49
|
|
50
50
|
@abc.abstractmethod
|
51
|
-
def throw(self, ex:
|
51
|
+
def throw(self, ex: BaseException) -> ta.Any:
|
52
52
|
raise NotImplementedError
|
53
53
|
|
54
54
|
|
@@ -84,7 +84,7 @@ class GreenletThreadlet(Threadlet):
|
|
84
84
|
def switch(self, *args: ta.Any, **kwargs: ta.Any) -> ta.Any:
|
85
85
|
return self.g.switch(*args, **kwargs)
|
86
86
|
|
87
|
-
def throw(self, ex:
|
87
|
+
def throw(self, ex: BaseException) -> ta.Any:
|
88
88
|
return self.g.throw(ex)
|
89
89
|
|
90
90
|
|
omlish/diag/procstats.py
CHANGED
@@ -11,6 +11,26 @@ else:
|
|
11
11
|
_psutil = lang.proxy_import('psutil')
|
12
12
|
|
13
13
|
|
14
|
+
##
|
15
|
+
|
16
|
+
|
17
|
+
@dc.dataclass(frozen=True)
|
18
|
+
class Times:
|
19
|
+
user: float
|
20
|
+
system: float
|
21
|
+
children_user: float
|
22
|
+
children_system: float
|
23
|
+
elapsed: float
|
24
|
+
|
25
|
+
|
26
|
+
def times() -> Times:
|
27
|
+
t = os.times()
|
28
|
+
return Times(**{f.name: getattr(t, f.name) for f in dc.fields(Times)})
|
29
|
+
|
30
|
+
|
31
|
+
##
|
32
|
+
|
33
|
+
|
14
34
|
@dc.dataclass(frozen=True, kw_only=True)
|
15
35
|
class ProcStats:
|
16
36
|
pid: int
|
omlish/docker.py
CHANGED
@@ -107,6 +107,15 @@ def cli_inspect(ids: list[str]) -> list[Inspect]:
|
|
107
107
|
return msh.unmarshal(json.loads(o.decode()), list[Inspect])
|
108
108
|
|
109
109
|
|
110
|
+
def has_cli() -> bool:
|
111
|
+
try:
|
112
|
+
proc = subprocess.run(['docker', '--version']) # noqa
|
113
|
+
except (FileNotFoundError, subprocess.CalledProcessError):
|
114
|
+
return False
|
115
|
+
else:
|
116
|
+
return not proc.returncode
|
117
|
+
|
118
|
+
|
110
119
|
##
|
111
120
|
|
112
121
|
|
omlish/fnpairs.py
CHANGED
@@ -33,6 +33,7 @@ if ta.TYPE_CHECKING:
|
|
33
33
|
import struct as _struct
|
34
34
|
import tomllib as _tomllib
|
35
35
|
|
36
|
+
import cbor2 as _cbor2
|
36
37
|
import cloudpickle as _cloudpickle
|
37
38
|
import json5 as _json5
|
38
39
|
import lz4.frame as _lz4_frame
|
@@ -49,6 +50,7 @@ else:
|
|
49
50
|
_struct = lang.proxy_import('struct')
|
50
51
|
_tomllib = lang.proxy_import('tomllib')
|
51
52
|
|
53
|
+
_cbor2 = lang.proxy_import('cbor2')
|
52
54
|
_cloudpickle = lang.proxy_import('cloudpickle')
|
53
55
|
_json5 = lang.proxy_import('json5')
|
54
56
|
_lz4_frame = lang.proxy_import('lz4.frame')
|
@@ -449,6 +451,15 @@ class Toml(ObjectStr_):
|
|
449
451
|
#
|
450
452
|
|
451
453
|
|
454
|
+
@_register_extension('cbor')
|
455
|
+
class Cbor(ObjectBytes_):
|
456
|
+
def forward(self, f: ta.Any) -> bytes:
|
457
|
+
return _cbor2.dumps(f)
|
458
|
+
|
459
|
+
def backward(self, t: bytes) -> ta.Any:
|
460
|
+
return _cbor2.loads(t)
|
461
|
+
|
462
|
+
|
452
463
|
@_register_extension('clpkl')
|
453
464
|
@dc.dataclass(frozen=True)
|
454
465
|
class Cloudpickle(ObjectBytes_):
|
omlish/logs/noisy.py
CHANGED
omlish/matchfns.py
CHANGED
@@ -130,7 +130,7 @@ def multi(*children: MatchFn[P, T], strict: bool = False) -> MultiMatchFn: # Mu
|
|
130
130
|
##
|
131
131
|
|
132
132
|
|
133
|
-
class
|
133
|
+
class CachedMatchFn(MatchFn[P, T]):
|
134
134
|
@staticmethod
|
135
135
|
def _default_key(*args, **kwargs):
|
136
136
|
return (args, tuple(sorted(kwargs.items(), key=lambda t: t[0])))
|
@@ -187,7 +187,7 @@ class CachedMultiFn(MatchFn[P, T]):
|
|
187
187
|
return self.__class__(self._f.__get__(instance, owner), key=self._key) # noqa
|
188
188
|
|
189
189
|
|
190
|
-
cached =
|
190
|
+
cached = CachedMatchFn
|
191
191
|
|
192
192
|
|
193
193
|
##
|
@@ -10,19 +10,24 @@ import pytest
|
|
10
10
|
|
11
11
|
from .... import check
|
12
12
|
from .... import collections as col
|
13
|
+
from .... import docker
|
14
|
+
from .... import lang
|
13
15
|
from ._registry import register
|
14
16
|
|
15
17
|
|
16
18
|
Configable = pytest.FixtureRequest | pytest.Config
|
17
19
|
|
18
20
|
|
19
|
-
SWITCHES = {
|
20
|
-
'docker':
|
21
|
+
SWITCHES: ta.Mapping[str, bool | ta.Callable[[], bool]] = {
|
22
|
+
'docker': docker.has_cli,
|
23
|
+
'docker-guest': docker.is_likely_in_docker,
|
21
24
|
'online': True,
|
22
25
|
'integration': True,
|
23
26
|
'slow': False,
|
24
27
|
}
|
25
28
|
|
29
|
+
SWITCH_ATTRS = {k.replace('-', '_'): k for k in SWITCHES}
|
30
|
+
|
26
31
|
|
27
32
|
SwitchState: ta.TypeAlias = bool | ta.Literal['only']
|
28
33
|
|
@@ -53,9 +58,9 @@ def skip_if_disabled(obj: Configable | None, name: str) -> None:
|
|
53
58
|
pytest.skip(f'{name} disabled')
|
54
59
|
|
55
60
|
|
56
|
-
def
|
61
|
+
def get_specified_switches(obj: Configable) -> ta.Mapping[str, SwitchState]:
|
57
62
|
ret: dict[str, SwitchState] = {}
|
58
|
-
for sw
|
63
|
+
for sw in SWITCHES:
|
59
64
|
sts = {
|
60
65
|
st
|
61
66
|
for st, pfx in SWITCH_STATE_OPT_PREFIXES.items()
|
@@ -65,8 +70,6 @@ def get_switches(obj: Configable) -> ta.Mapping[str, SwitchState]:
|
|
65
70
|
if len(sts) > 1:
|
66
71
|
raise Exception(f'Multiple switches specified for {sw}')
|
67
72
|
ret[sw] = check.single(sts)
|
68
|
-
else:
|
69
|
-
ret[sw] = d
|
70
73
|
return ret
|
71
74
|
|
72
75
|
|
@@ -74,8 +77,9 @@ def get_switches(obj: Configable) -> ta.Mapping[str, SwitchState]:
|
|
74
77
|
class SwitchesPlugin:
|
75
78
|
|
76
79
|
def pytest_configure(self, config):
|
77
|
-
for sw in
|
80
|
+
for sw in SWITCH_ATTRS:
|
78
81
|
config.addinivalue_line('markers', f'{sw}: mark test as {sw}')
|
82
|
+
config.addinivalue_line('markers', f'not_{sw}: mark test as not {sw}')
|
79
83
|
|
80
84
|
def pytest_addoption(self, parser):
|
81
85
|
for sw in SWITCHES:
|
@@ -83,13 +87,25 @@ class SwitchesPlugin:
|
|
83
87
|
parser.addoption(f'--{sw}', action='store_true', default=False, help=f'enables {sw} tests')
|
84
88
|
parser.addoption(f'--only-{sw}', action='store_true', default=False, help=f'enables only {sw} tests')
|
85
89
|
|
90
|
+
@lang.cached_function
|
91
|
+
def get_switches(self) -> ta.Mapping[str, SwitchState]:
|
92
|
+
return {
|
93
|
+
k: v() if callable(v) else v
|
94
|
+
for k, v in SWITCHES.items()
|
95
|
+
}
|
96
|
+
|
86
97
|
def pytest_collection_modifyitems(self, config, items):
|
87
|
-
sts =
|
98
|
+
sts = {
|
99
|
+
**self.get_switches(),
|
100
|
+
**get_specified_switches(config),
|
101
|
+
}
|
102
|
+
|
88
103
|
stx = col.multi_map(map(reversed, sts.items())) # type: ignore
|
89
104
|
ts, fs, onlys = (stx.get(k, ()) for k in (True, False, 'only'))
|
90
105
|
|
91
106
|
def process(item):
|
92
|
-
sws = {sw for sw in
|
107
|
+
sws = {sw for swa, sw in SWITCH_ATTRS.items() if swa in item.keywords}
|
108
|
+
nsws = {sw for swa, sw in SWITCH_ATTRS.items() if ('not_' + swa) in item.keywords}
|
93
109
|
|
94
110
|
if onlys:
|
95
111
|
if not any(sw in onlys for sw in sws):
|
@@ -101,5 +117,9 @@ class SwitchesPlugin:
|
|
101
117
|
if sw in fs:
|
102
118
|
item.add_marker(pytest.mark.skip(reason=f'skipping switches {sw}'))
|
103
119
|
|
120
|
+
for nsw in nsws:
|
121
|
+
if nsw in ts:
|
122
|
+
item.add_marker(pytest.mark.skip(reason=f'skipping switches {nsw}'))
|
123
|
+
|
104
124
|
for item in items:
|
105
125
|
process(item)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev32
|
4
4
|
Summary: omlish
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -13,7 +13,7 @@ Classifier: Operating System :: POSIX
|
|
13
13
|
Requires-Python: ~=3.12
|
14
14
|
License-File: LICENSE
|
15
15
|
Provides-Extra: all
|
16
|
-
Requires-Dist: anyio ~=4.
|
16
|
+
Requires-Dist: anyio ~=4.6 ; extra == 'all'
|
17
17
|
Requires-Dist: sniffio ~=1.3 ; extra == 'all'
|
18
18
|
Requires-Dist: greenlet ~=3.1 ; extra == 'all'
|
19
19
|
Requires-Dist: trio ~=0.26 ; extra == 'all'
|
@@ -27,6 +27,7 @@ Requires-Dist: orjson ~=3.10 ; extra == 'all'
|
|
27
27
|
Requires-Dist: ujson ~=5.10 ; extra == 'all'
|
28
28
|
Requires-Dist: json5 ~=0.9 ; extra == 'all'
|
29
29
|
Requires-Dist: pyyaml ~=5.0 ; extra == 'all'
|
30
|
+
Requires-Dist: cbor2 ~=5.6 ; extra == 'all'
|
30
31
|
Requires-Dist: cloudpickle ~=3.0 ; extra == 'all'
|
31
32
|
Requires-Dist: httpx[http2] ~=0.27 ; extra == 'all'
|
32
33
|
Requires-Dist: wrapt ~=1.14 ; extra == 'all'
|
@@ -42,7 +43,7 @@ Requires-Dist: python-snappy ~=0.7 ; (python_version < "3.13") and extra == 'all
|
|
42
43
|
Requires-Dist: asyncpg ~=0.29 ; (python_version < "3.13") and extra == 'all'
|
43
44
|
Requires-Dist: sqlean.py ~=3.45 ; (python_version < "3.13") and extra == 'all'
|
44
45
|
Provides-Extra: async
|
45
|
-
Requires-Dist: anyio ~=4.
|
46
|
+
Requires-Dist: anyio ~=4.6 ; extra == 'async'
|
46
47
|
Requires-Dist: sniffio ~=1.3 ; extra == 'async'
|
47
48
|
Requires-Dist: greenlet ~=3.1 ; extra == 'async'
|
48
49
|
Requires-Dist: trio ~=0.26 ; extra == 'async'
|
@@ -60,6 +61,7 @@ Requires-Dist: orjson ~=3.10 ; extra == 'formats'
|
|
60
61
|
Requires-Dist: ujson ~=5.10 ; extra == 'formats'
|
61
62
|
Requires-Dist: json5 ~=0.9 ; extra == 'formats'
|
62
63
|
Requires-Dist: pyyaml ~=5.0 ; extra == 'formats'
|
64
|
+
Requires-Dist: cbor2 ~=5.6 ; extra == 'formats'
|
63
65
|
Requires-Dist: cloudpickle ~=3.0 ; extra == 'formats'
|
64
66
|
Provides-Extra: http
|
65
67
|
Requires-Dist: httpx[http2] ~=0.27 ; extra == 'http'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=N1F-Xz3GaBn2H1p7uKzhkhKCQV8QVR0t76XD6wmFtXA,3
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=J6RVhzQjm3ocW2y7lCJfdfxa-YYroag7FgQSahdEaeI,2808
|
3
3
|
omlish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
omlish/argparse.py,sha256=QRQmX9G0-L_nATkFtGHvpd4qrpYzKATdjuFLbBqzJPM,6224
|
5
5
|
omlish/c3.py,sha256=W5EwYx9Por3rWYLkKUitJ6OoRMLLgVTfLTyroOz41Y0,8047
|
@@ -7,33 +7,33 @@ omlish/cached.py,sha256=UAizxlH4eMWHPzQtmItmyE6FEpFEUFzIkxaO2BHWZ5s,196
|
|
7
7
|
omlish/check.py,sha256=3qp1_W8uRp23I26nWvG_c7YFxdTwJAZEFxmY8Bfw50Y,10078
|
8
8
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
9
9
|
omlish/defs.py,sha256=T3bq_7h_tO3nDB5RAFBn7DkdeQgqheXzkFColbOHZko,4890
|
10
|
-
omlish/docker.py,sha256=
|
10
|
+
omlish/docker.py,sha256=uRVJUJwGtTFYhm4XeztrVEYk93f0NI5VpjEKQaN_5uY,6453
|
11
11
|
omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
|
12
|
-
omlish/fnpairs.py,sha256=
|
12
|
+
omlish/fnpairs.py,sha256=Sl8CMFNyDS-1JYAjSWqnT5FmUm9Lj6o7FxSRo7g4jww,10875
|
13
13
|
omlish/fnpipes.py,sha256=AJkgz9nvRRm7oqw7ZgYyz21klu276LWi54oYCLg-vOg,2196
|
14
14
|
omlish/genmachine.py,sha256=LCMiqvK32dAWtrlB6lKw9tXdQFiXC8rRdk4TMQYIroU,1603
|
15
15
|
omlish/iterators.py,sha256=GGLC7RIT86uXMjhIIIqnff_Iu5SI_b9rXYywYGFyzmo,7292
|
16
16
|
omlish/libc.py,sha256=u0481imCiTFqP_e-v9g0pD-0WD249j5vYzhtn-fnNkY,15308
|
17
|
-
omlish/matchfns.py,sha256=
|
17
|
+
omlish/matchfns.py,sha256=I1IlQGfEyk_AcFSy6ulVS3utC-uwyZM2YfUXYHc9Bw0,6152
|
18
18
|
omlish/multiprocessing.py,sha256=QZT4C7I-uThCAjaEY3xgUYb-5GagUlnE4etN01LDyU4,5186
|
19
19
|
omlish/os.py,sha256=vO1sZCzAhVxo46tDFLrD52q2KuMFWQwu5MPJgSsnliI,3107
|
20
20
|
omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
|
21
21
|
omlish/sync.py,sha256=AqwIfIuCMVHLwlJUa7dmaSjfA4sM5AYPCD5-nsz3XVQ,1516
|
22
22
|
omlish/term.py,sha256=NEmxqAhicyInGtmFamZAizI2xdu819MzFYPEp0Fx97M,6111
|
23
23
|
omlish/asyncs/__init__.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
|
24
|
-
omlish/asyncs/anyio.py,sha256=
|
24
|
+
omlish/asyncs/anyio.py,sha256=gfpx-D8QGmUfhnQxHEaHXcAP8zSMQjcGw4COFTGNnHI,8021
|
25
25
|
omlish/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
|
26
26
|
omlish/asyncs/asyncs.py,sha256=Tf7ZodTGepkM7HAuFcDNh9lLzzrMw6rELWvopGmFkh4,2035
|
27
|
-
omlish/asyncs/bridge.py,sha256=
|
27
|
+
omlish/asyncs/bridge.py,sha256=bcTEhsBJOWAMixu_fCxkDedLP3NEitAfwaHYTu26sQE,8980
|
28
28
|
omlish/asyncs/flavors.py,sha256=1mNxGNRVmjUHzA13K5ht8vdJv4CLEmzYTQ6BZXr1520,4866
|
29
|
-
omlish/asyncs/trio.py,sha256=
|
29
|
+
omlish/asyncs/trio.py,sha256=fmZ5b_lKdVV8NQ3euCUutWgnkqTFzSnOjvJSA_jvmrE,367
|
30
30
|
omlish/asyncs/trio_asyncio.py,sha256=oqdOHy0slj9PjVxaDf3gJkq9AAgg7wYZbB469jOftVw,1327
|
31
31
|
omlish/bootstrap/__init__.py,sha256=-Rtsg7uPQNhh1dIT9nqrz96XlqizwoLnWf-FwOEstJI,730
|
32
32
|
omlish/bootstrap/__main__.py,sha256=d23loR_cKfTYZwYiqpt_CmKI7dd5WcYFgIYzqMep75E,68
|
33
33
|
omlish/bootstrap/base.py,sha256=koELbK6UmsZaRj-6Bng5_zPVmEBqDpFCduEdR5BddOs,1077
|
34
34
|
omlish/bootstrap/diag.py,sha256=x_BKS_uhfW8QFk1NeH_VIocHif-A6FVTZ37262qCgZ0,5052
|
35
35
|
omlish/bootstrap/harness.py,sha256=pIeSXKfMsF7-3ZkU0gGpde-PtLAKKcVrWaxcin7Xzy0,2041
|
36
|
-
omlish/bootstrap/main.py,sha256=
|
36
|
+
omlish/bootstrap/main.py,sha256=u-TfxO4GkAK3LbRweQERogtO4kT0z3gqXRjnXvtJzC8,5328
|
37
37
|
omlish/bootstrap/marshal.py,sha256=qKewGVs-3i2p5W9nywkXSo1pcbVxmOAlTvfLjyo0xpo,554
|
38
38
|
omlish/bootstrap/sys.py,sha256=U0MFxO9tLFV3cdN5Y-Zrink6_45sFvzPUYQXyBk7-ns,8741
|
39
39
|
omlish/collections/__init__.py,sha256=tGUzvS_ZjiqALsLRy7JX3h4KZRQX2CmtdAfTRD7UwMk,1677
|
@@ -60,7 +60,7 @@ omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K
|
|
60
60
|
omlish/concurrent/__init__.py,sha256=9p-s8MvBEYDqHIoYU3OYoe-Nni22QdkW7nhZGEukJTM,197
|
61
61
|
omlish/concurrent/executors.py,sha256=FYKCDYYuj-OgMa8quLsA47SfFNX3KDJvRENVk8NDsrA,1292
|
62
62
|
omlish/concurrent/futures.py,sha256=J2s9wYURUskqRJiBbAR0PNEAp1pXbIMYldOVBTQduQY,4239
|
63
|
-
omlish/concurrent/threadlets.py,sha256=
|
63
|
+
omlish/concurrent/threadlets.py,sha256=0fl0_Q_joTLtFYhR2kpKu45BW-win-le0rCuXPBtjko,2382
|
64
64
|
omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
|
65
65
|
omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
|
66
66
|
omlish/configs/flattening.py,sha256=AOlRpBHm449MxwMp3CiIRGunStOC1DUNs1f3CLou0wc,4731
|
@@ -94,7 +94,7 @@ omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jI
|
|
94
94
|
omlish/diag/__init__.py,sha256=BYQoq12W2qU0O7m2Z-RLCX6YLIYEW9MmfN7_i9--Yk0,132
|
95
95
|
omlish/diag/asts.py,sha256=BveUUNUcaAm4Hg55f4ZxGSI313E4L8cCZ5XjHpEkKVI,3325
|
96
96
|
omlish/diag/procfs.py,sha256=ggIeFoaNZ4j6HvKTiXD6Q3b9apgto7j55pwswCrIHXE,9581
|
97
|
-
omlish/diag/procstats.py,sha256=
|
97
|
+
omlish/diag/procstats.py,sha256=UkqxREqfd-38xPYZ9T1SIJISz5ARQCEhTtOZrxtm2dE,777
|
98
98
|
omlish/diag/ps.py,sha256=1JWxZen3fVG-20R6ZZ8BtO_gpzw_5bhHZiKdoHkgxoU,1004
|
99
99
|
omlish/diag/pycharm.py,sha256=V-gPbKUcGqgynCy8N4bYORmXr7Jl92uQyOPtjko-NqY,3066
|
100
100
|
omlish/diag/pydevd.py,sha256=Fsx9rfCOnwLD6RLBqH0uAdtq75rbNeBAQfiDvIBd3e0,7295
|
@@ -212,7 +212,7 @@ omlish/logs/_abc.py,sha256=UgrCUQVUi_PvT3p1CEkb3P74CFrFcZq2AFby3GEUv9M,5974
|
|
212
212
|
omlish/logs/configs.py,sha256=EE0jlNaXJbGnM7V-y4xS5VwyTBSTzFzc0BYaVjg0JmA,1283
|
213
213
|
omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
|
214
214
|
omlish/logs/handlers.py,sha256=nyuFgmO05By_Xwq7es58ClzS51-F53lJL7gD0x5IqAg,228
|
215
|
-
omlish/logs/noisy.py,sha256=
|
215
|
+
omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
|
216
216
|
omlish/logs/utils.py,sha256=MgGovbP0zUrZ3FGD3qYNQWn-l0jy0Y0bStcQvv5BOmQ,391
|
217
217
|
omlish/marshal/__init__.py,sha256=RkZGfdp7x9KU8nEpb8hYBGANK-P_9AXMyjBXCrdYMmc,1757
|
218
218
|
omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
|
@@ -307,7 +307,7 @@ omlish/testing/pytest/plugins/pydevd.py,sha256=u1fxfCgFw4wGKBkMV_H_l9WI8JoUwlRff
|
|
307
307
|
omlish/testing/pytest/plugins/repeat.py,sha256=flSQzE9GFOWksVKz-mUGnpxJpv3yRqn1G4K8pW7JHs0,498
|
308
308
|
omlish/testing/pytest/plugins/skips.py,sha256=EoZDg1uWccgbAegmzqI85c7RliycD1e2J4Y7vfDRhwM,1041
|
309
309
|
omlish/testing/pytest/plugins/spacing.py,sha256=JQQhi9q3c523Ro1a_K_9RGAb7HotiO74N8bYX2VESFE,707
|
310
|
-
omlish/testing/pytest/plugins/switches.py,sha256=
|
310
|
+
omlish/testing/pytest/plugins/switches.py,sha256=hqFYM6tCcr-6fAPg8DBI-TJn762Kq4EUFt6gjXgiAQQ,3802
|
311
311
|
omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0McdhwZWvfMlU,261
|
312
312
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
313
313
|
omlish/text/asdl.py,sha256=3v5UocAfxan_d9drkGNdH3AMfx_FFBpQu3ULGL4M6VM,16865
|
@@ -315,8 +315,9 @@ omlish/text/delimit.py,sha256=ubPXcXQmtbOVrUsNh5gH1mDq5H-n1y2R4cPL5_DQf68,4928
|
|
315
315
|
omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,3296
|
316
316
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
317
317
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
318
|
-
omlish-0.0.0.
|
319
|
-
omlish-0.0.0.
|
320
|
-
omlish-0.0.0.
|
321
|
-
omlish-0.0.0.
|
322
|
-
omlish-0.0.0.
|
318
|
+
omlish-0.0.0.dev32.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
319
|
+
omlish-0.0.0.dev32.dist-info/METADATA,sha256=eCr33BU6SmZqqijL3DtLTY_5DXEQ7630Dz69zWRLcAo,3786
|
320
|
+
omlish-0.0.0.dev32.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
321
|
+
omlish-0.0.0.dev32.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
322
|
+
omlish-0.0.0.dev32.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
323
|
+
omlish-0.0.0.dev32.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|