omlish 0.0.0.dev247__py3-none-any.whl → 0.0.0.dev248__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 +2 -2
- omlish/__about__.py +2 -2
- omlish/collections/cache/descriptor.py +0 -2
- omlish/concurrent/executors.py +0 -1
- omlish/concurrent/futures.py +0 -1
- omlish/dataclasses/impl/descriptors.py +0 -2
- omlish/diag/replserver/server.py +0 -1
- omlish/dispatch/_dispatch2.py +7 -3
- omlish/dispatch/_dispatch3.py +7 -3
- omlish/dispatch/dispatch.py +29 -63
- omlish/dispatch/functions.py +1 -1
- omlish/dispatch/impls.py +69 -0
- omlish/dispatch/methods.py +1 -1
- omlish/dynamic.py +0 -3
- omlish/formats/json/stream/build.py +2 -0
- omlish/formats/yaml.py +0 -3
- omlish/graphs/dags.py +0 -2
- omlish/graphs/domination.py +0 -5
- omlish/graphs/dot/items.py +0 -1
- omlish/graphs/dot/rendering.py +0 -1
- omlish/graphs/trees.py +0 -1
- omlish/inject/binder.py +0 -10
- omlish/iterators/iterators.py +0 -4
- omlish/lang/__init__.py +1 -0
- omlish/lang/collections.py +36 -0
- omlish/lang/descriptors.py +0 -1
- omlish/lifecycles/base.py +0 -1
- omlish/lifecycles/contextmanagers.py +0 -1
- omlish/lifecycles/controller.py +0 -2
- omlish/lifecycles/manager.py +0 -1
- omlish/marshal/trivial/any.py +0 -1
- omlish/math/bits.py +0 -1
- omlish/math/stats.py +0 -1
- omlish/term/codes.py +0 -1
- omlish/testing/pytest/plugins/logging.py +0 -1
- omlish/testing/pytest/plugins/pydevd.py +0 -1
- omlish/testing/pytest/plugins/repeat.py +0 -1
- omlish/testing/pytest/plugins/skips.py +0 -1
- omlish/testing/pytest/plugins/spacing.py +0 -1
- omlish/testing/pytest/plugins/switches.py +0 -1
- omlish/text/delimit.py +0 -1
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/RECORD +47 -46
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev247.dist-info → omlish-0.0.0.dev248.dist-info}/top_level.txt +0 -0
omlish/.manifests.json
CHANGED
@@ -167,7 +167,7 @@
|
|
167
167
|
"module": ".formats.yaml",
|
168
168
|
"attr": "_YAML_LAZY_CODEC",
|
169
169
|
"file": "omlish/formats/yaml.py",
|
170
|
-
"line":
|
170
|
+
"line": 255,
|
171
171
|
"value": {
|
172
172
|
"$.codecs.base.LazyLoadedCodec": {
|
173
173
|
"mod_name": "omlish.formats.yaml",
|
@@ -183,7 +183,7 @@
|
|
183
183
|
"module": ".formats.yaml",
|
184
184
|
"attr": "_YAML_UNSAFE_LAZY_CODEC",
|
185
185
|
"file": "omlish/formats/yaml.py",
|
186
|
-
"line":
|
186
|
+
"line": 262,
|
187
187
|
"value": {
|
188
188
|
"$.codecs.base.LazyLoadedCodec": {
|
189
189
|
"mod_name": "omlish.formats.yaml",
|
omlish/__about__.py
CHANGED
@@ -63,7 +63,6 @@ def _make_key(
|
|
63
63
|
|
64
64
|
|
65
65
|
class Ignore:
|
66
|
-
|
67
66
|
def __init__(self, value: ta.Any) -> None:
|
68
67
|
super().__init__()
|
69
68
|
|
@@ -75,7 +74,6 @@ def ignore(value: ta.Any) -> ta.Any:
|
|
75
74
|
|
76
75
|
|
77
76
|
class _CacheDescriptor:
|
78
|
-
|
79
77
|
def __init__(
|
80
78
|
self,
|
81
79
|
fn: ta.Callable,
|
omlish/concurrent/executors.py
CHANGED
omlish/concurrent/futures.py
CHANGED
@@ -6,7 +6,6 @@ from ... import defs
|
|
6
6
|
|
7
7
|
|
8
8
|
class AbstractFieldDescriptor(abc.ABC):
|
9
|
-
|
10
9
|
def __init__(
|
11
10
|
self,
|
12
11
|
*,
|
@@ -69,7 +68,6 @@ class AbstractFieldDescriptor(abc.ABC):
|
|
69
68
|
|
70
69
|
|
71
70
|
class PyFieldDescriptor(AbstractFieldDescriptor):
|
72
|
-
|
73
71
|
def __init__(
|
74
72
|
self,
|
75
73
|
attr: str,
|
omlish/diag/replserver/server.py
CHANGED
omlish/dispatch/_dispatch2.py
CHANGED
@@ -2,7 +2,7 @@ import abc
|
|
2
2
|
import typing as ta
|
3
3
|
import weakref
|
4
4
|
|
5
|
-
from .
|
5
|
+
from .impls import find_impl as default_find_impl
|
6
6
|
|
7
7
|
|
8
8
|
T = ta.TypeVar('T')
|
@@ -12,9 +12,13 @@ T = ta.TypeVar('T')
|
|
12
12
|
|
13
13
|
|
14
14
|
class Dispatcher(ta.Generic[T]):
|
15
|
-
def __init__(self) -> None:
|
15
|
+
def __init__(self, find_impl: ta.Callable[[type, ta.Mapping[type, T]], T | None] | None = None) -> None:
|
16
16
|
super().__init__()
|
17
17
|
|
18
|
+
if find_impl is None:
|
19
|
+
find_impl = default_find_impl
|
20
|
+
self._find_impl = find_impl
|
21
|
+
|
18
22
|
self._impls_by_arg_cls: dict[type, T] = {}
|
19
23
|
self._dispatch_cache: dict[ta.Any, T | None] = {}
|
20
24
|
|
@@ -59,7 +63,7 @@ class Dispatcher(ta.Generic[T]):
|
|
59
63
|
try:
|
60
64
|
impl = self._impls_by_arg_cls[cls]
|
61
65
|
except KeyError:
|
62
|
-
impl =
|
66
|
+
impl = self._find_impl(cls, self._impls_by_arg_cls)
|
63
67
|
|
64
68
|
self._dispatch_cache[weakref.ref(cls, self._cache_remove)] = impl
|
65
69
|
return impl
|
omlish/dispatch/_dispatch3.py
CHANGED
@@ -2,7 +2,7 @@ import abc
|
|
2
2
|
import typing as ta
|
3
3
|
import weakref
|
4
4
|
|
5
|
-
from .
|
5
|
+
from .impls import find_impl as default_find_impl
|
6
6
|
|
7
7
|
|
8
8
|
T = ta.TypeVar('T')
|
@@ -72,9 +72,13 @@ class DispatchCache(DispatchCacheProtocol[T]):
|
|
72
72
|
|
73
73
|
|
74
74
|
class Dispatcher(DispatcherProtocol[T]):
|
75
|
-
def __init__(self) -> None:
|
75
|
+
def __init__(self, find_impl: ta.Callable[[type, ta.Mapping[type, T]], T | None] | None = None) -> None:
|
76
76
|
super().__init__()
|
77
77
|
|
78
|
+
if find_impl is None:
|
79
|
+
find_impl = default_find_impl
|
80
|
+
self._find_impl = find_impl
|
81
|
+
|
78
82
|
self._impls_by_arg_cls: dict[type, T] = {}
|
79
83
|
self._cache: DispatchCache[T | None] = DispatchCache()
|
80
84
|
|
@@ -98,7 +102,7 @@ class Dispatcher(DispatcherProtocol[T]):
|
|
98
102
|
try:
|
99
103
|
impl = self._impls_by_arg_cls[cls]
|
100
104
|
except KeyError:
|
101
|
-
impl =
|
105
|
+
impl = self._find_impl(cls, self._impls_by_arg_cls)
|
102
106
|
|
103
107
|
self._cache.put(cls, impl)
|
104
108
|
return impl
|
omlish/dispatch/dispatch.py
CHANGED
@@ -3,9 +3,7 @@ import contextlib
|
|
3
3
|
import typing as ta
|
4
4
|
import weakref
|
5
5
|
|
6
|
-
from
|
7
|
-
from .. import check
|
8
|
-
from .. import reflect as rfl
|
6
|
+
from .impls import find_impl as default_find_impl
|
9
7
|
|
10
8
|
|
11
9
|
T = ta.TypeVar('T')
|
@@ -14,69 +12,13 @@ T = ta.TypeVar('T')
|
|
14
12
|
##
|
15
13
|
|
16
14
|
|
17
|
-
_IMPL_FUNC_CLS_SET_CACHE: ta.MutableMapping[ta.Callable, frozenset[type]] = weakref.WeakKeyDictionary()
|
18
|
-
|
19
|
-
|
20
|
-
def get_impl_func_cls_set(func: ta.Callable) -> frozenset[type]:
|
21
|
-
with contextlib.suppress(KeyError):
|
22
|
-
return _IMPL_FUNC_CLS_SET_CACHE[func]
|
23
|
-
|
24
|
-
ann = getattr(func, '__annotations__', {})
|
25
|
-
if not ann:
|
26
|
-
raise TypeError(f'Invalid impl func: {func!r}')
|
27
|
-
|
28
|
-
def erase(a):
|
29
|
-
if isinstance(a, rfl.Generic):
|
30
|
-
return a.cls
|
31
|
-
else:
|
32
|
-
return check.isinstance(a, type)
|
33
|
-
|
34
|
-
# Exclude 'return' to support difficult to handle return types - they are unimportant.
|
35
|
-
# TODO: only get hints for first arg - requires inspection, which requires chopping off `self`, which can be tricky.
|
36
|
-
_, cls = next(iter(rfl.get_filtered_type_hints(func, exclude=['return']).items()))
|
37
|
-
|
38
|
-
rty = rfl.type_(cls)
|
39
|
-
if isinstance(rty, rfl.Union):
|
40
|
-
ret = frozenset(erase(arg) for arg in rty.args)
|
41
|
-
else:
|
42
|
-
ret = frozenset([erase(rty)])
|
43
|
-
|
44
|
-
_IMPL_FUNC_CLS_SET_CACHE[func] = ret
|
45
|
-
return ret
|
46
|
-
|
47
|
-
|
48
|
-
def find_impl(cls: type, registry: ta.Mapping[type, T]) -> T | None:
|
49
|
-
mro = c3.compose_mro(cls, registry.keys())
|
50
|
-
|
51
|
-
match: type | None = None
|
52
|
-
for t in mro:
|
53
|
-
if match is not None:
|
54
|
-
# If *match* is an implicit ABC but there is another unrelated, equally matching implicit ABC, refuse the
|
55
|
-
# temptation to guess.
|
56
|
-
if (
|
57
|
-
t in registry
|
58
|
-
and t not in cls.__mro__
|
59
|
-
and match not in cls.__mro__
|
60
|
-
and not issubclass(match, t)
|
61
|
-
):
|
62
|
-
raise RuntimeError(f'Ambiguous dispatch: {match} or {t}')
|
63
|
-
break
|
64
|
-
|
65
|
-
if t in registry:
|
66
|
-
match = t
|
67
|
-
|
68
|
-
if match is None:
|
69
|
-
return None
|
70
|
-
return registry.get(match)
|
71
|
-
|
72
|
-
|
73
|
-
##
|
74
|
-
|
75
|
-
|
76
15
|
class Dispatcher(ta.Generic[T]):
|
77
|
-
def __init__(self) -> None:
|
16
|
+
def __init__(self, find_impl: ta.Callable[[type, ta.Mapping[type, T]], T | None] | None = None) -> None:
|
78
17
|
super().__init__()
|
79
18
|
|
19
|
+
if find_impl is None:
|
20
|
+
find_impl = default_find_impl
|
21
|
+
|
80
22
|
impls_by_arg_cls: dict[type, T] = {}
|
81
23
|
self._impls_by_arg_cls = impls_by_arg_cls
|
82
24
|
|
@@ -142,3 +84,27 @@ class Dispatcher(ta.Generic[T]):
|
|
142
84
|
dispatch: ta.Callable[[type], T | None]
|
143
85
|
|
144
86
|
register: ta.Callable[[T, ta.Iterable[type]], T]
|
87
|
+
|
88
|
+
|
89
|
+
##
|
90
|
+
|
91
|
+
|
92
|
+
# from x.dispatch import _gpto1_2 as _dispatch # noqa
|
93
|
+
#
|
94
|
+
#
|
95
|
+
# class Dispatcher(ta.Generic[T]): # noqa
|
96
|
+
# def __init__(self, find_impl: ta.Callable[[type, ta.Mapping[type, T]], T | None] | None = None) -> None:
|
97
|
+
# super().__init__()
|
98
|
+
#
|
99
|
+
# if find_impl is None:
|
100
|
+
# find_impl = default_find_impl
|
101
|
+
# self._x = _dispatch.Dispatcher(find_impl)
|
102
|
+
#
|
103
|
+
# def cache_size(self) -> int:
|
104
|
+
# return self._x.cache_size()
|
105
|
+
#
|
106
|
+
# def dispatch(self, cls: type) -> T | None:
|
107
|
+
# return self._x.dispatch(cls)
|
108
|
+
#
|
109
|
+
# def register(self, impl: T, cls_col: ta.Iterable[type]) -> T:
|
110
|
+
# return self._x.register(impl, cls_col)
|
omlish/dispatch/functions.py
CHANGED
omlish/dispatch/impls.py
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
import contextlib
|
2
|
+
import typing as ta
|
3
|
+
import weakref
|
4
|
+
|
5
|
+
from .. import c3
|
6
|
+
from .. import check
|
7
|
+
from .. import reflect as rfl
|
8
|
+
|
9
|
+
|
10
|
+
T = ta.TypeVar('T')
|
11
|
+
|
12
|
+
|
13
|
+
##
|
14
|
+
|
15
|
+
|
16
|
+
_IMPL_FUNC_CLS_SET_CACHE: ta.MutableMapping[ta.Callable, frozenset[type]] = weakref.WeakKeyDictionary()
|
17
|
+
|
18
|
+
|
19
|
+
def get_impl_func_cls_set(func: ta.Callable) -> frozenset[type]:
|
20
|
+
with contextlib.suppress(KeyError):
|
21
|
+
return _IMPL_FUNC_CLS_SET_CACHE[func]
|
22
|
+
|
23
|
+
ann = getattr(func, '__annotations__', {})
|
24
|
+
if not ann:
|
25
|
+
raise TypeError(f'Invalid impl func: {func!r}')
|
26
|
+
|
27
|
+
def erase(a):
|
28
|
+
if isinstance(a, rfl.Generic):
|
29
|
+
return a.cls
|
30
|
+
else:
|
31
|
+
return check.isinstance(a, type)
|
32
|
+
|
33
|
+
# Exclude 'return' to support difficult to handle return types - they are unimportant.
|
34
|
+
# TODO: only get hints for first arg - requires inspection, which requires chopping off `self`, which can be tricky.
|
35
|
+
_, cls = next(iter(rfl.get_filtered_type_hints(func, exclude=['return']).items()))
|
36
|
+
|
37
|
+
rty = rfl.type_(cls)
|
38
|
+
if isinstance(rty, rfl.Union):
|
39
|
+
ret = frozenset(erase(arg) for arg in rty.args)
|
40
|
+
else:
|
41
|
+
ret = frozenset([erase(rty)])
|
42
|
+
|
43
|
+
_IMPL_FUNC_CLS_SET_CACHE[func] = ret
|
44
|
+
return ret
|
45
|
+
|
46
|
+
|
47
|
+
def find_impl(cls: type, registry: ta.Mapping[type, T]) -> T | None:
|
48
|
+
mro = c3.compose_mro(cls, registry.keys())
|
49
|
+
|
50
|
+
match: type | None = None
|
51
|
+
for t in mro:
|
52
|
+
if match is not None:
|
53
|
+
# If *match* is an implicit ABC but there is another unrelated, equally matching implicit ABC, refuse the
|
54
|
+
# temptation to guess.
|
55
|
+
if (
|
56
|
+
t in registry
|
57
|
+
and t not in cls.__mro__
|
58
|
+
and match not in cls.__mro__
|
59
|
+
and not issubclass(match, t)
|
60
|
+
):
|
61
|
+
raise RuntimeError(f'Ambiguous dispatch: {match} or {t}')
|
62
|
+
break
|
63
|
+
|
64
|
+
if t in registry:
|
65
|
+
match = t
|
66
|
+
|
67
|
+
if match is None:
|
68
|
+
return None
|
69
|
+
return registry.get(match)
|
omlish/dispatch/methods.py
CHANGED
omlish/dynamic.py
CHANGED
@@ -46,7 +46,6 @@ class UnboundVarError(ValueError):
|
|
46
46
|
|
47
47
|
|
48
48
|
class Var(ta.Generic[T]):
|
49
|
-
|
50
49
|
def __init__(
|
51
50
|
self,
|
52
51
|
default: type[MISSING] | T = MISSING,
|
@@ -152,7 +151,6 @@ class Var(ta.Generic[T]):
|
|
152
151
|
|
153
152
|
|
154
153
|
class Binding(ta.Generic[T]):
|
155
|
-
|
156
154
|
_frame: types.FrameType
|
157
155
|
_frame_bindings: ta.MutableMapping[int, 'Binding']
|
158
156
|
_level: int
|
@@ -207,7 +205,6 @@ class Binding(ta.Generic[T]):
|
|
207
205
|
|
208
206
|
|
209
207
|
class _GeneratorContextManager(contextlib._GeneratorContextManager): # noqa
|
210
|
-
|
211
208
|
@hoist(2)
|
212
209
|
def __enter__(self):
|
213
210
|
return super().__enter__()
|
omlish/formats/yaml.py
CHANGED
@@ -45,7 +45,6 @@ class NodeWrapped(lang.Final, ta.Generic[T]):
|
|
45
45
|
|
46
46
|
|
47
47
|
class NodeUnwrapper:
|
48
|
-
|
49
48
|
seq_types: tuple[type, ...] = (
|
50
49
|
list,
|
51
50
|
set,
|
@@ -95,7 +94,6 @@ def unwrap(nw: NodeWrapped[T]) -> T:
|
|
95
94
|
|
96
95
|
|
97
96
|
class NodeWrappingConstructorMixin:
|
98
|
-
|
99
97
|
def __init__(self, *args, **kwargs):
|
100
98
|
super().__init__(*args, **kwargs)
|
101
99
|
|
@@ -159,7 +157,6 @@ class _cached_class_property: # noqa
|
|
159
157
|
|
160
158
|
|
161
159
|
class WrappedLoaders(lang.Namespace):
|
162
|
-
|
163
160
|
@staticmethod
|
164
161
|
def _wrap(cls): # noqa
|
165
162
|
return type('NodeWrapping$' + cls.__name__, (NodeWrappingConstructorMixin, cls), {})
|
omlish/graphs/dags.py
CHANGED
@@ -51,7 +51,6 @@ def invert_symmetric_set_map(src: ta.Mapping[T, ta.Iterable[T]]) -> dict[T, set[
|
|
51
51
|
|
52
52
|
|
53
53
|
class Dag(ta.Generic[T]):
|
54
|
-
|
55
54
|
def __init__(self, input_its_by_outputs: ta.Mapping[T, ta.Iterable[T]]) -> None:
|
56
55
|
super().__init__()
|
57
56
|
|
@@ -70,7 +69,6 @@ class Dag(ta.Generic[T]):
|
|
70
69
|
|
71
70
|
|
72
71
|
class Subdag(ta.Generic[U]):
|
73
|
-
|
74
72
|
def __init__(
|
75
73
|
self,
|
76
74
|
dag: 'Dag[U]',
|
omlish/graphs/domination.py
CHANGED
@@ -13,7 +13,6 @@ SetMap = ta.Mapping[MK, ta.AbstractSet[MV]]
|
|
13
13
|
|
14
14
|
|
15
15
|
class DirectedGraph(ta.Generic[V], lang.Abstract):
|
16
|
-
|
17
16
|
@abc.abstractmethod
|
18
17
|
def get_successors(self, vertex: V) -> ta.Collection[V]:
|
19
18
|
raise NotImplementedError
|
@@ -24,7 +23,6 @@ class DirectedGraph(ta.Generic[V], lang.Abstract):
|
|
24
23
|
|
25
24
|
|
26
25
|
class ListDictDirectedGraph(DirectedGraph[V]):
|
27
|
-
|
28
26
|
def __init__(self, items: ta.Iterable[tuple[V, ta.Iterable[V]]]) -> None:
|
29
27
|
super().__init__()
|
30
28
|
|
@@ -59,7 +57,6 @@ class ListDictDirectedGraph(DirectedGraph[V]):
|
|
59
57
|
|
60
58
|
|
61
59
|
class DominatorTree(ta.Generic[V]):
|
62
|
-
|
63
60
|
def __init__(self, graph: DirectedGraph[V], root: V) -> None:
|
64
61
|
super().__init__()
|
65
62
|
|
@@ -138,7 +135,6 @@ class DominatorTree(ta.Generic[V]):
|
|
138
135
|
|
139
136
|
|
140
137
|
class _Dfs(ta.Generic[V]):
|
141
|
-
|
142
138
|
def __init__(self, graph: DirectedGraph[V], root: V) -> None:
|
143
139
|
super().__init__()
|
144
140
|
|
@@ -191,7 +187,6 @@ class _Dfs(ta.Generic[V]):
|
|
191
187
|
|
192
188
|
|
193
189
|
class _ImmediateDominanceComputer(ta.Generic[V]):
|
194
|
-
|
195
190
|
def __init__(self, dfs: _Dfs[V]) -> None:
|
196
191
|
super().__init__()
|
197
192
|
|
omlish/graphs/dot/items.py
CHANGED
omlish/graphs/dot/rendering.py
CHANGED
omlish/graphs/trees.py
CHANGED
omlish/inject/binder.py
CHANGED
omlish/iterators/iterators.py
CHANGED
@@ -9,7 +9,6 @@ _MISSING = object()
|
|
9
9
|
|
10
10
|
|
11
11
|
class PeekIterator(ta.Iterator[T]):
|
12
|
-
|
13
12
|
def __init__(self, it: ta.Iterable[T]) -> None:
|
14
13
|
super().__init__()
|
15
14
|
|
@@ -78,7 +77,6 @@ class PeekIterator(ta.Iterator[T]):
|
|
78
77
|
|
79
78
|
|
80
79
|
class ProxyIterator(ta.Iterator[T]):
|
81
|
-
|
82
80
|
def __init__(self, fn: ta.Callable[[], T]) -> None:
|
83
81
|
self._fn = fn
|
84
82
|
|
@@ -90,7 +88,6 @@ class ProxyIterator(ta.Iterator[T]):
|
|
90
88
|
|
91
89
|
|
92
90
|
class PrefetchIterator(ta.Iterator[T]):
|
93
|
-
|
94
91
|
def __init__(self, fn: ta.Callable[[], T] | None = None) -> None:
|
95
92
|
super().__init__()
|
96
93
|
|
@@ -113,7 +110,6 @@ class PrefetchIterator(ta.Iterator[T]):
|
|
113
110
|
|
114
111
|
|
115
112
|
class RetainIterator(ta.Iterator[T]):
|
116
|
-
|
117
113
|
def __init__(self, fn: ta.Callable[[], T]) -> None:
|
118
114
|
super().__init__()
|
119
115
|
|
omlish/lang/__init__.py
CHANGED
omlish/lang/collections.py
CHANGED
@@ -48,3 +48,39 @@ def merge_dicts(
|
|
48
48
|
out[k] = v
|
49
49
|
|
50
50
|
return out
|
51
|
+
|
52
|
+
|
53
|
+
##
|
54
|
+
|
55
|
+
|
56
|
+
class _EmptyMap(ta.Mapping[K, V]):
|
57
|
+
def __init_subclass__(cls, **kwargs):
|
58
|
+
raise TypeError
|
59
|
+
|
60
|
+
def __new__(cls, *args, **kwargs):
|
61
|
+
if args or kwargs:
|
62
|
+
raise TypeError
|
63
|
+
return _EMPTY_MAP
|
64
|
+
|
65
|
+
def __repr__(self) -> str:
|
66
|
+
return f'{self.__class__.__name__}()'
|
67
|
+
|
68
|
+
def __init__(self) -> None:
|
69
|
+
super().__init__()
|
70
|
+
|
71
|
+
def __getitem__(self, k: K) -> V:
|
72
|
+
raise KeyError
|
73
|
+
|
74
|
+
def __len__(self) -> int:
|
75
|
+
return 0
|
76
|
+
|
77
|
+
def __iter__(self) -> ta.Iterator[K]:
|
78
|
+
return
|
79
|
+
yield # noqa
|
80
|
+
|
81
|
+
|
82
|
+
_EMPTY_MAP = object.__new__(_EmptyMap)
|
83
|
+
|
84
|
+
|
85
|
+
def empty_map() -> ta.Mapping[K, V]:
|
86
|
+
return _EMPTY_MAP
|
omlish/lang/descriptors.py
CHANGED
omlish/lifecycles/base.py
CHANGED
omlish/lifecycles/controller.py
CHANGED
@@ -14,7 +14,6 @@ LifecycleT = ta.TypeVar('LifecycleT', bound='Lifecycle')
|
|
14
14
|
|
15
15
|
|
16
16
|
class LifecycleListener(ta.Generic[LifecycleT]):
|
17
|
-
|
18
17
|
def on_starting(self, obj: LifecycleT) -> None:
|
19
18
|
pass
|
20
19
|
|
@@ -29,7 +28,6 @@ class LifecycleListener(ta.Generic[LifecycleT]):
|
|
29
28
|
|
30
29
|
|
31
30
|
class LifecycleController(Lifecycle, ta.Generic[LifecycleT]):
|
32
|
-
|
33
31
|
def __init__(
|
34
32
|
self,
|
35
33
|
lifecycle: LifecycleT,
|
omlish/lifecycles/manager.py
CHANGED
omlish/marshal/trivial/any.py
CHANGED
omlish/math/bits.py
CHANGED
omlish/math/stats.py
CHANGED
omlish/term/codes.py
CHANGED
@@ -3,7 +3,6 @@ from ._registry import register
|
|
3
3
|
|
4
4
|
@register
|
5
5
|
class SpacingPlugin:
|
6
|
-
|
7
6
|
def pytest_addoption(self, parser):
|
8
7
|
parser.addoption('--newlines-before', action='store', type=int, help='Adds newlines before tests')
|
9
8
|
parser.addoption('--newlines-after', action='store', type=int, help='Adds newlines after tests')
|
omlish/text/delimit.py
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
omlish/.manifests.json,sha256=
|
2
|
-
omlish/__about__.py,sha256=
|
1
|
+
omlish/.manifests.json,sha256=x26AIwDzScUvnX-p4xlq6Zc5QYrAo0Vmgf1qHc1KL_M,8253
|
2
|
+
omlish/__about__.py,sha256=vdUCdVH6QPJp23FjKOh9VC2Pxz8yofiz_tArVxvhOyU,3380
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
6
6
|
omlish/check.py,sha256=THqm6jD1a0skAO5EC8SOVg58yq96Vk5wcuruBkCYxyU,2016
|
7
7
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
8
8
|
omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
|
9
|
-
omlish/dynamic.py,sha256=
|
9
|
+
omlish/dynamic.py,sha256=xQ8LlOt_fUPApg-yz7-gNq8JdVgTqJ0_R6vhJq2WbpI,6522
|
10
10
|
omlish/libc.py,sha256=8K4c66YV1ziJerl5poAAYCmsV-VSsHkT3EHhPW04ufg,15639
|
11
11
|
omlish/metadata.py,sha256=q8UG-fpcXhEF7BZnhVikIE_IHyud9-8YT8iv646zU2s,3589
|
12
12
|
omlish/outcome.py,sha256=ABIE0zjjTyTNtn-ZqQ_9_mUzLiBQ3sDAyqc9JVD8N2k,7852
|
@@ -149,7 +149,7 @@ omlish/collections/ranked.py,sha256=rg6DL36oOUiG5JQEAkGnT8b6f9mSndQlIovtt8GQj_w,
|
|
149
149
|
omlish/collections/unmodifiable.py,sha256=-zys__n6L7liWzhmHAIvfxprq7cUE5HoR3foGvXc_7I,4748
|
150
150
|
omlish/collections/utils.py,sha256=Q0lHhNDokVxdOvApmu1QX5fABYwbn1ATiIwp194Ur_E,2889
|
151
151
|
omlish/collections/cache/__init__.py,sha256=D1gO71VcwxFTZP9gAc9isHfg_TEdalwhsJcgGLvS9hg,233
|
152
|
-
omlish/collections/cache/descriptor.py,sha256=
|
152
|
+
omlish/collections/cache/descriptor.py,sha256=aa-OOChFAJLMPHjuc8YPCvVsE0INntPxxXoq-kl4jtg,5021
|
153
153
|
omlish/collections/cache/impl.py,sha256=ySRU9UJG7jH9VPvuXdwZQ_rSqrleY-1mtie5Ml738wY,14755
|
154
154
|
omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K7p8E,685
|
155
155
|
omlish/collections/persistent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -160,8 +160,8 @@ omlish/collections/sorted/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
160
160
|
omlish/collections/sorted/skiplist.py,sha256=eU_cYQVnT-EZxv_dN9PYQZdOP0km5usEcOQRiJKL7Rw,5986
|
161
161
|
omlish/collections/sorted/sorted.py,sha256=euHJan3FqTYSCJGsVcYYRV-yhAAQ5_htnjymnNoVHRE,3319
|
162
162
|
omlish/concurrent/__init__.py,sha256=9p-s8MvBEYDqHIoYU3OYoe-Nni22QdkW7nhZGEukJTM,197
|
163
|
-
omlish/concurrent/executors.py,sha256=
|
164
|
-
omlish/concurrent/futures.py,sha256=
|
163
|
+
omlish/concurrent/executors.py,sha256=mF-rjJWzNFxwB1-_H7rHuwoImpl4FtNM6W3wcqM3NEE,1291
|
164
|
+
omlish/concurrent/futures.py,sha256=870tx8ELI8THvMnTrQoYIlEFKO9hM4KUrlehckJqKBU,4238
|
165
165
|
omlish/concurrent/threadlets.py,sha256=JfirbTDJgy9Ouokz_VmHeAAPS7cih8qMUJrN-owwXD4,2423
|
166
166
|
omlish/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
167
|
omlish/configs/all.py,sha256=kziwjzUBkf8AT0w7Pq7JX2jtkQVOQ5R1wJyn6hfTN5k,1055
|
@@ -195,7 +195,7 @@ omlish/dataclasses/impl/__init__.py,sha256=zqGBC5gSbjJxaqG_zS1LL1PX-zAfhIua8UqOE
|
|
195
195
|
omlish/dataclasses/impl/api.py,sha256=RhU4f50GVdn-dxilia8NA3F7VIm2R5z78pFfpIVXPRQ,6635
|
196
196
|
omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
|
197
197
|
omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
|
198
|
-
omlish/dataclasses/impl/descriptors.py,sha256=
|
198
|
+
omlish/dataclasses/impl/descriptors.py,sha256=jSYNkKdy2rKddGpQqRwNuhw-ggpcvp_SWHpLwIWPOzc,2474
|
199
199
|
omlish/dataclasses/impl/exceptions.py,sha256=-vqxZmfXVflymVuiM553XTlJProse5HEMktTpfdPCIY,1275
|
200
200
|
omlish/dataclasses/impl/fields.py,sha256=8p7Uzvr0C4yBR0NqHzkq--OY2HXFQlGsb1HC3K17-7k,6985
|
201
201
|
omlish/dataclasses/impl/frozen.py,sha256=x87DSM8FIMZ3c_BIUE8NooCkExFjPsabeqIueEP5qKs,2988
|
@@ -231,13 +231,14 @@ omlish/diag/_pycharm/runhack.py,sha256=JFz4GVN4AXndJo38iwnK5X_vH2MS6wyO8YmVZss5Y
|
|
231
231
|
omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
|
232
232
|
omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
|
233
233
|
omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
|
234
|
-
omlish/diag/replserver/server.py,sha256=
|
234
|
+
omlish/diag/replserver/server.py,sha256=pqJZXKnD-Cc03hnL_FNqGYaW9kH-IM3e11vCyDAcBD8,5374
|
235
235
|
omlish/dispatch/__init__.py,sha256=GsiGJ91NKiQptSROtnCSkrZExBkvfDwYvdoTu5dBqF0,117
|
236
|
-
omlish/dispatch/_dispatch2.py,sha256=
|
237
|
-
omlish/dispatch/_dispatch3.py,sha256=
|
238
|
-
omlish/dispatch/dispatch.py,sha256=
|
239
|
-
omlish/dispatch/functions.py,sha256=
|
240
|
-
omlish/dispatch/
|
236
|
+
omlish/dispatch/_dispatch2.py,sha256=70k1tKKvuhxtAu6v4skECfHKIKVWrmlt7G_JKLUsKEs,1966
|
237
|
+
omlish/dispatch/_dispatch3.py,sha256=9Zjd7bINAC3keiaBdssc4v5dY0-8OI6XooV2DR9U7Z0,2818
|
238
|
+
omlish/dispatch/dispatch.py,sha256=KA5l49AiGLRjp4J7RDJW9RiDp9WUD1ewR1AOPEF8g38,3062
|
239
|
+
omlish/dispatch/functions.py,sha256=8Qvj62XKn9SKfiqoVQdBD3wVRE4JUWpZDqs0oouuDIw,1519
|
240
|
+
omlish/dispatch/impls.py,sha256=f7uLDjtDcykx_iFYRSmIrQYbVmXlaqXZ3qFIuOTUiD8,1967
|
241
|
+
omlish/dispatch/methods.py,sha256=dr8xQo-zVRckIo_V2Wp8Reqor3NE6APuzomUfsSBGdk,5498
|
241
242
|
omlish/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
242
243
|
omlish/docker/all.py,sha256=xXRgJgLGPwAtr7bDMJ_Dp9jTfOwfGvohNhc6LsoELJc,514
|
243
244
|
omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
|
@@ -258,7 +259,7 @@ omlish/formats/pickle.py,sha256=jdp4E9WH9qVPBE3sSqbqDtUo18RbTSIiSpSzJ-IEVZw,529
|
|
258
259
|
omlish/formats/props.py,sha256=auCv-Jx79KGlWfyG1-Qo0ou-Ex0W_mF3r_lDFdsVkWI,18920
|
259
260
|
omlish/formats/repr.py,sha256=kYrNs4o-ji8nOdp6u_L3aMgBMWN1ZAZJSAWgQQfStSQ,414
|
260
261
|
omlish/formats/xml.py,sha256=VJfqHR60dhAtjeG8WXFMozFqesTBSGvv264d67eDFXc,3514
|
261
|
-
omlish/formats/yaml.py,sha256=
|
262
|
+
omlish/formats/yaml.py,sha256=jGPQlTE0vSV-p0O7TJRNlf6o1uq4gx8PrHZe1ApJ_o8,7386
|
262
263
|
omlish/formats/ini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
263
264
|
omlish/formats/ini/codec.py,sha256=omuFg0kiDksv8rRlWd_v32ebzEcKlgmiPgGID3bRi2M,631
|
264
265
|
omlish/formats/ini/sections.py,sha256=7wYyZdVTQbMPFpjQEACKJfAEPzUBrogINsrvFgxJoZ0,1015
|
@@ -278,7 +279,7 @@ omlish/formats/json/backends/orjson.py,sha256=wR8pMGFtkhZGHcNVk7vNYUnv8lUapdK89p
|
|
278
279
|
omlish/formats/json/backends/std.py,sha256=PM00Kh9ZR2XzollHMEvdo35Eml1N-zFfRW-LOCV5ftM,3085
|
279
280
|
omlish/formats/json/backends/ujson.py,sha256=BNJCU4kluGHdqTUKLJEuHhE2m2TmqR7HEN289S0Eokg,2278
|
280
281
|
omlish/formats/json/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
281
|
-
omlish/formats/json/stream/build.py,sha256=
|
282
|
+
omlish/formats/json/stream/build.py,sha256=EveVyYjc3lbVQRs8Y5uMGEKp0E_gJAUR5bd2ToSVnSU,2533
|
282
283
|
omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
|
283
284
|
omlish/formats/json/stream/lex.py,sha256=ItsWvtl5SZH-HwQtPy8Cpf4nszqDzvUTdIOEmSRiZ-E,6807
|
284
285
|
omlish/formats/json/stream/parse.py,sha256=JuYmXwtTHmQJTFKoJNoEHUpCPxXdl_gvKPykVXgED34,6208
|
@@ -304,13 +305,13 @@ omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
|
|
304
305
|
omlish/funcs/pairs.py,sha256=VCkZjDmJGtR76BsejsHNfb4TcpHCtkkmak-zWDFchAo,3904
|
305
306
|
omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
|
306
307
|
omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
307
|
-
omlish/graphs/dags.py,sha256=
|
308
|
-
omlish/graphs/domination.py,sha256=
|
309
|
-
omlish/graphs/trees.py,sha256=
|
308
|
+
omlish/graphs/dags.py,sha256=7ee4GfzHcAVUA5-LMJyT7odwxoooh4cTwz4H8qi8Anc,3045
|
309
|
+
omlish/graphs/domination.py,sha256=N-rCzB3uAug964Tx4YGew1Nuh7GvzGjA598GcOj-Who,7571
|
310
|
+
omlish/graphs/trees.py,sha256=IA2lMbPec-4UrkYFUjUqqxAKeww6YMV35xj8uQhILYk,8188
|
310
311
|
omlish/graphs/dot/__init__.py,sha256=Y1MZRQBZkcYyG1Tn7K2FhL8aYbm4v4tk6f5g9AqEkUw,359
|
311
|
-
omlish/graphs/dot/items.py,sha256=
|
312
|
+
omlish/graphs/dot/items.py,sha256=7c-lvB2pp6LKWDI2di-S6Zh4vlUZt97eJeNQzuGilGc,4082
|
312
313
|
omlish/graphs/dot/make.py,sha256=RN30gHfJPiXx5Q51kbDdhVJYf59Fr84Lz9J-mXRt9sI,360
|
313
|
-
omlish/graphs/dot/rendering.py,sha256=
|
314
|
+
omlish/graphs/dot/rendering.py,sha256=eN1NufiUaKFeRxRTOfIT-oLTg1YQCuPybBx3AmrhdBw,3629
|
314
315
|
omlish/graphs/dot/utils.py,sha256=_FMwn77WfiiAfLsRTOKWm4IYbNv5kQN22YJ5psw6CWg,801
|
315
316
|
omlish/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
316
317
|
omlish/http/all.py,sha256=OqCovZi_jv1Mnk975idaXA8FCGy4laoQIvNZ3hdKpRQ,722
|
@@ -336,7 +337,7 @@ omlish/http/coro/server.py,sha256=30FTcJG8kuFeThf0HJYpTzMZN-giLTBP7wr5Wl3b9X0,18
|
|
336
337
|
omlish/http/coro/simple.py,sha256=inWA_ss6Nz5Rqmy4dL9_SGah4anYoDecDTRQqVIGYeY,3200
|
337
338
|
omlish/http/coro/sockets.py,sha256=rtpZZ-XCOfC5tXr4Fmo1HSn-8f5nxfIOlJaPUkQeDyU,1654
|
338
339
|
omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
|
339
|
-
omlish/inject/binder.py,sha256=
|
340
|
+
omlish/inject/binder.py,sha256=3-6KMOcSgFE5bvthy3YUrRzCX5w7YSGmdJ3Tv2yXZGw,4022
|
340
341
|
omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
|
341
342
|
omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
|
342
343
|
omlish/inject/elements.py,sha256=npppGgYBQja0oPHkdBDmRhpm3md1mZT1FVcIQ--W2qI,1398
|
@@ -395,18 +396,18 @@ omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
|
395
396
|
omlish/io/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
|
396
397
|
omlish/io/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
|
397
398
|
omlish/iterators/__init__.py,sha256=yMavf5FofiS1EU4UFuWPXiFZ03W0H-y7MuMxW8FUaEE,358
|
398
|
-
omlish/iterators/iterators.py,sha256=
|
399
|
+
omlish/iterators/iterators.py,sha256=iTQQwBE6Wzoy36dnbPIws17zbjE3zNN4KwVw4Fzh-gY,3154
|
399
400
|
omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
|
400
401
|
omlish/iterators/tools.py,sha256=Pi4ybXytUXVZ3xwK89xpPImQfYYId9p1vIFQvVqVLqA,2551
|
401
402
|
omlish/iterators/unique.py,sha256=0jAX3kwzVfRNhe0Tmh7kVP_Q2WBIn8POo_O-rgFV0rQ,1390
|
402
|
-
omlish/lang/__init__.py,sha256=
|
403
|
+
omlish/lang/__init__.py,sha256=7UEkGV5eWdCQRSqWvr3QNOfLKjkzLkF_ngm6fK0SUTk,4700
|
403
404
|
omlish/lang/attrs.py,sha256=fofCKN0X8TMu1yGqHpLpNLih9r9HWl3D3Vn3b6O791w,3891
|
404
405
|
omlish/lang/clsdct.py,sha256=sJYadm-fwzti-gsi98knR5qQUxriBmOqQE_qz3RopNk,1743
|
405
406
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
406
|
-
omlish/lang/collections.py,sha256=
|
407
|
+
omlish/lang/collections.py,sha256=aGi0j6VzVe2nz4l357Y4RD5_XNl8OJbmM5qM6BclrrY,1895
|
407
408
|
omlish/lang/contextmanagers.py,sha256=UPH6daYwSP9cH5AfSVsJyEHk1UURMGhVPM5ZRhp_Hvw,7576
|
408
409
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
409
|
-
omlish/lang/descriptors.py,sha256=
|
410
|
+
omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
|
410
411
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
411
412
|
omlish/lang/functions.py,sha256=0ql9EXA_gEEhvUVzMJCjVhEnVtHecsLKmfmAXuQqeGY,4388
|
412
413
|
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
@@ -429,10 +430,10 @@ omlish/lang/classes/simple.py,sha256=XQ8b86WvQA0qtSYqlbMOJS7tHgE8sv9onda33uQmbkM
|
|
429
430
|
omlish/lang/classes/virtual.py,sha256=z0MYQD9Q5MkX8DzF325wDB4J9XoYbsB09jZ1omC62To,3366
|
430
431
|
omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
|
431
432
|
omlish/lifecycles/abstract.py,sha256=70CQyZy-c9a2o0ZJxPeUT7eYjWZTBrp2HpUBnrHdAOM,1109
|
432
|
-
omlish/lifecycles/base.py,sha256=
|
433
|
-
omlish/lifecycles/contextmanagers.py,sha256=
|
434
|
-
omlish/lifecycles/controller.py,sha256=
|
435
|
-
omlish/lifecycles/manager.py,sha256=
|
433
|
+
omlish/lifecycles/base.py,sha256=JSW5rFVCWLLVx_ASe4G49MeuKI1yN8kXcdh9U94kLYo,1393
|
434
|
+
omlish/lifecycles/contextmanagers.py,sha256=gojUTE1hjoP9hjXRPIgWFVwQcSIuOcmkXGLA5JEuYBA,2072
|
435
|
+
omlish/lifecycles/controller.py,sha256=p5S4_OZQ-h5elI803D5_bxbIn9MKIGRe6ECG4XhBXXA,3462
|
436
|
+
omlish/lifecycles/manager.py,sha256=x4wsVUtrjgnLKuBn0Wd4QmULCmzMu6LiMUuHjXH7MBQ,5444
|
436
437
|
omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
|
437
438
|
omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
|
438
439
|
omlish/lite/__init__.py,sha256=ISLhM4q0LR1XXTCaHdZOZxBRyIsoZqYm4u0bf1BPcVk,148
|
@@ -515,13 +516,13 @@ omlish/marshal/singular/numbers.py,sha256=12a8HxjDHMTgtJTxO7VY_h5llaPyYB-QEPY09d
|
|
515
516
|
omlish/marshal/singular/primitives.py,sha256=EZi2AIi_Onw1pekAiL4ujz4w-ASuOGWCu4MUIE_dCnk,1299
|
516
517
|
omlish/marshal/singular/uuids.py,sha256=rZoE6NE5z6x_ZRmVMjjR2iK7CR8ijfDOvhMKgmm8Mgk,918
|
517
518
|
omlish/marshal/trivial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
518
|
-
omlish/marshal/trivial/any.py,sha256=
|
519
|
+
omlish/marshal/trivial/any.py,sha256=m2eywIbOU3YpR9a33vE2djSnbcpYGDQVwekXXokF4zc,786
|
519
520
|
omlish/marshal/trivial/forbidden.py,sha256=7buKYamev2T3Q4RAhCBRzHO700vs8biH0--V5iBDqx4,874
|
520
521
|
omlish/marshal/trivial/nop.py,sha256=41bpwsLGeDGqIwzZ7j88lbc4wIYh0EcPROhCU98mQxo,466
|
521
522
|
omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
522
|
-
omlish/math/bits.py,sha256=
|
523
|
+
omlish/math/bits.py,sha256=LC3dTgrvodNbfxy9dvlya61eQuDEy0azzQLCvEbFHj4,3476
|
523
524
|
omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
|
524
|
-
omlish/math/stats.py,sha256=
|
525
|
+
omlish/math/stats.py,sha256=C700sib97E-IywlNKoByHFEtgA51n7Lffg7d3WSO4js,10052
|
525
526
|
omlish/multiprocessing/__init__.py,sha256=jwlWGOaSGcX8DkzyZwJ49nfkHocWWeKgKb7kMpgcj_Y,485
|
526
527
|
omlish/multiprocessing/proxies.py,sha256=bInhGds2rv6xT9q3qRMlZuSXFAjwfspkiohXZ36aUpY,484
|
527
528
|
omlish/multiprocessing/spawn.py,sha256=sTvPLIJGYnjjI6ASqhFzHF-97tCnaOXX7u7s-33SUMw,1875
|
@@ -690,7 +691,7 @@ omlish/subprocesses/sync.py,sha256=HKmKM99_Y7tkJRg_n5onXrw41IZt5M5fqU0281LY-mo,3
|
|
690
691
|
omlish/subprocesses/utils.py,sha256=MJb6hvKhZceTmBeFVqlc5oM7rDxWkUzSzK9nKvbIvM8,396
|
691
692
|
omlish/subprocesses/wrap.py,sha256=v7vrbDhl_FVWESnXIOJ3oGtE3Y-OHQa5sH3MTtFTBUE,504
|
692
693
|
omlish/term/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
693
|
-
omlish/term/codes.py,sha256=
|
694
|
+
omlish/term/codes.py,sha256=d8oii_9UJDm_TAowXYH3XDckX0XNBf2kiEPJKkVMMow,6149
|
694
695
|
omlish/term/progressbar.py,sha256=TiwdmPSMa5jQj35i1NQURTWQGy4eWUNx_XiPM38JtvQ,3184
|
695
696
|
omlish/term/vt100/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
696
697
|
omlish/term/vt100/c.py,sha256=cAhDKXI81PZRtFmTotfad3HZGREP1QnOlWYoAw6v-Fw,3532
|
@@ -706,13 +707,13 @@ omlish/testing/pytest/inject/harness.py,sha256=_Qf7lLcYc_dpauYOE68u_a65jPCFWmQUY
|
|
706
707
|
omlish/testing/pytest/plugins/__init__.py,sha256=ys1zXrYrNm7Uo6YOIVJ6Bd3dQo6kv387k7MbTYlqZSI,467
|
707
708
|
omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-btalYJkgjLc8Te8,77
|
708
709
|
omlish/testing/pytest/plugins/depskip.py,sha256=xithY-OMtjwhv8mcRNkv-WI_PSQtHldQ8H1s60MIXkk,2673
|
709
|
-
omlish/testing/pytest/plugins/logging.py,sha256=
|
710
|
+
omlish/testing/pytest/plugins/logging.py,sha256=ZUy4sQOMYroZubUnjYe4_KC1kqukgBbA84VjO0NwfsA,390
|
710
711
|
omlish/testing/pytest/plugins/managermarks.py,sha256=IzkspjT8-ToPIlHZs9cHt6RYbm51poJLjYVvkFPbJhE,1300
|
711
|
-
omlish/testing/pytest/plugins/pydevd.py,sha256=
|
712
|
-
omlish/testing/pytest/plugins/repeat.py,sha256=
|
713
|
-
omlish/testing/pytest/plugins/skips.py,sha256=
|
714
|
-
omlish/testing/pytest/plugins/spacing.py,sha256=
|
715
|
-
omlish/testing/pytest/plugins/switches.py,sha256=
|
712
|
+
omlish/testing/pytest/plugins/pydevd.py,sha256=5moE64LrNRV6gKRaeCuONDiwuh-4UFxJPWD9K9PR8GM,841
|
713
|
+
omlish/testing/pytest/plugins/repeat.py,sha256=jiZCI-17042jBvUEbZCxNwqWtr7s3EhTBSeSHh_Uz4E,497
|
714
|
+
omlish/testing/pytest/plugins/skips.py,sha256=eMir_n777Kk2BvOwjQzRROKL4iAMYKSHFwWCHJ-bdPI,1040
|
715
|
+
omlish/testing/pytest/plugins/spacing.py,sha256=tzq-L-exegHe2BImumkYIsVcUwpUUhLJJOuSrsKDuCU,706
|
716
|
+
omlish/testing/pytest/plugins/switches.py,sha256=U8tDP-WSI2yjxwp4hocgZNJEmEv8UO8_CFEv8mXWH3A,3814
|
716
717
|
omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0McdhwZWvfMlU,261
|
717
718
|
omlish/testing/pytest/plugins/asyncs/__init__.py,sha256=TTNhFmP_krug1973sq_bpWBTIvg68-1nbuVLSs92Z6k,41
|
718
719
|
omlish/testing/pytest/plugins/asyncs/consts.py,sha256=0NOCkzV43dOu3u97BqYMQ4mPG8JuFncpWibkOZpCqX4,55
|
@@ -726,16 +727,16 @@ omlish/testing/pytest/plugins/asyncs/backends/trio.py,sha256=xty9TR7-Kk6n0cdOqEr
|
|
726
727
|
omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py,sha256=VcGVwf4V-1ZFK_70FrFS9b11EU1dOy1ozhhIDXGNSEo,3169
|
727
728
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
728
729
|
omlish/text/asdl.py,sha256=AS3irh-sag5pqyH3beJif78PjCbOaFso1NeKq-HXuTs,16867
|
729
|
-
omlish/text/delimit.py,sha256=
|
730
|
+
omlish/text/delimit.py,sha256=Y0ID9Y9nfgQu3tYCiMS3hLa-ugA2cc-29PV4fF1343g,4927
|
730
731
|
omlish/text/glyphsplit.py,sha256=kqqjglRdxGo0czYZxOz9Vi8aBmVsCOq8h6lPwRA5xe0,3803
|
731
732
|
omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
|
732
733
|
omlish/text/mangle.py,sha256=kfzFLfvepH-chl1P89_mdc5vC4FSqyPA2aVtgzuB8IY,1133
|
733
734
|
omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
|
734
735
|
omlish/text/parts.py,sha256=JkNZpyR2tv2CNcTaWJJhpQ9E4F0yPR8P_YfDbZfMtwQ,6182
|
735
736
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
736
|
-
omlish-0.0.0.
|
737
|
-
omlish-0.0.0.
|
738
|
-
omlish-0.0.0.
|
739
|
-
omlish-0.0.0.
|
740
|
-
omlish-0.0.0.
|
741
|
-
omlish-0.0.0.
|
737
|
+
omlish-0.0.0.dev248.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
738
|
+
omlish-0.0.0.dev248.dist-info/METADATA,sha256=2MDwQ1CC7YMd2LkHobPoRqjE_TqGmuPaic_MlQcnojI,4176
|
739
|
+
omlish-0.0.0.dev248.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
740
|
+
omlish-0.0.0.dev248.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
741
|
+
omlish-0.0.0.dev248.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
742
|
+
omlish-0.0.0.dev248.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|