omlish 0.0.0.dev266__py3-none-any.whl → 0.0.0.dev267__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/collections/kv/transformed.py +45 -42
- omlish/dataclasses/impl/init.py +1 -1
- omlish/dispatch/methods.py +1 -1
- omlish/lang/__init__.py +4 -1
- omlish/lang/classes/restrict.py +0 -12
- omlish/lang/functions.py +44 -0
- omlish/lang/objects.py +27 -5
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/RECORD +14 -14
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev266.dist-info → omlish-0.0.0.dev267.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -9,114 +9,117 @@ from .wrappers import WrapperKv
|
|
9
9
|
K = ta.TypeVar('K')
|
10
10
|
V = ta.TypeVar('V')
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
# 'Above' the wrapper
|
13
|
+
KA = ta.TypeVar('KA')
|
14
|
+
VA = ta.TypeVar('VA')
|
15
|
+
|
16
|
+
# 'Below' the wrapper
|
17
|
+
KB = ta.TypeVar('KB')
|
18
|
+
VB = ta.TypeVar('VB')
|
16
19
|
|
17
20
|
|
18
21
|
##
|
19
22
|
|
20
23
|
|
21
|
-
class KeyTransformedKv(WrapperKv[
|
24
|
+
class KeyTransformedKv(WrapperKv[KA, V], ta.Generic[KA, KB, V]):
|
22
25
|
def __init__(
|
23
26
|
self,
|
24
|
-
u: Kv[
|
27
|
+
u: Kv[KB, V],
|
25
28
|
*,
|
26
|
-
|
27
|
-
|
29
|
+
a_to_b: ta.Callable[[KA], KB] | None = None,
|
30
|
+
b_to_a: ta.Callable[[KB], KA] | None = None,
|
28
31
|
) -> None:
|
29
32
|
super().__init__()
|
30
33
|
|
31
34
|
self._u = u
|
32
|
-
self.
|
33
|
-
self.
|
35
|
+
self._a_to_b = a_to_b
|
36
|
+
self._b_to_a = b_to_a
|
34
37
|
|
35
38
|
def underlying(self) -> ta.Sequence[Kv]:
|
36
39
|
return [self._u]
|
37
40
|
|
38
|
-
def __getitem__(self, k:
|
39
|
-
fn = check.not_none(self.
|
41
|
+
def __getitem__(self, k: KA, /) -> V:
|
42
|
+
fn = check.not_none(self._a_to_b)
|
40
43
|
return self._u[fn(k)]
|
41
44
|
|
42
45
|
def __len__(self) -> int:
|
43
46
|
return len(self._u)
|
44
47
|
|
45
|
-
def items(self) -> ta.Iterator[tuple[
|
46
|
-
fn = check.not_none(self.
|
48
|
+
def items(self) -> ta.Iterator[tuple[KA, V]]:
|
49
|
+
fn = check.not_none(self._b_to_a)
|
47
50
|
return ((fn(k), v) for k, v in self._u.items())
|
48
51
|
|
49
52
|
|
50
|
-
class KeyTransformedMutableKey(KeyTransformedKv[
|
53
|
+
class KeyTransformedMutableKey(KeyTransformedKv[KA, KB, V], MutableKv[KA, V], ta.Generic[KA, KB, V]):
|
51
54
|
def __init__(
|
52
55
|
self,
|
53
|
-
u: MutableKv[
|
56
|
+
u: MutableKv[KB, V],
|
54
57
|
*,
|
55
|
-
|
56
|
-
|
58
|
+
a_to_b: ta.Callable[[KA], KB] | None = None,
|
59
|
+
b_to_a: ta.Callable[[KB], KA] | None = None,
|
57
60
|
) -> None:
|
58
61
|
super().__init__(
|
59
62
|
u,
|
60
|
-
|
61
|
-
|
63
|
+
a_to_b=a_to_b,
|
64
|
+
b_to_a=b_to_a,
|
62
65
|
)
|
63
66
|
|
64
|
-
_u: MutableKv[
|
67
|
+
_u: MutableKv[KB, V]
|
65
68
|
|
66
|
-
def __setitem__(self, k:
|
67
|
-
fn = check.not_none(self.
|
69
|
+
def __setitem__(self, k: KA, v: V, /) -> None:
|
70
|
+
fn = check.not_none(self._a_to_b)
|
68
71
|
self._u[fn(k)] = v
|
69
72
|
|
70
|
-
def __delitem__(self, k:
|
71
|
-
fn = check.not_none(self.
|
73
|
+
def __delitem__(self, k: KA, /) -> None:
|
74
|
+
fn = check.not_none(self._a_to_b)
|
72
75
|
del self._u[fn(k)]
|
73
76
|
|
74
77
|
|
75
78
|
##
|
76
79
|
|
77
80
|
|
78
|
-
class ValueTransformedKv(WrapperKv[K,
|
81
|
+
class ValueTransformedKv(WrapperKv[K, VA], ta.Generic[K, VA, VB]):
|
79
82
|
def __init__(
|
80
83
|
self,
|
81
|
-
u: Kv[K,
|
82
|
-
|
84
|
+
u: Kv[K, VB],
|
85
|
+
b_to_a: ta.Callable[[VB], VA] | None = None,
|
83
86
|
) -> None:
|
84
87
|
super().__init__()
|
85
88
|
|
86
89
|
self._u = u
|
87
|
-
self.
|
90
|
+
self._b_to_a = b_to_a
|
88
91
|
|
89
92
|
def underlying(self) -> ta.Sequence[Kv]:
|
90
93
|
return [self._u]
|
91
94
|
|
92
|
-
def __getitem__(self, k: K, /) ->
|
93
|
-
fn = check.not_none(self.
|
95
|
+
def __getitem__(self, k: K, /) -> VA:
|
96
|
+
fn = check.not_none(self._b_to_a)
|
94
97
|
return fn(self._u[k])
|
95
98
|
|
96
99
|
def __len__(self) -> int:
|
97
100
|
return len(self._u)
|
98
101
|
|
99
|
-
def items(self) -> ta.Iterator[tuple[K,
|
100
|
-
fn = check.not_none(self.
|
102
|
+
def items(self) -> ta.Iterator[tuple[K, VA]]:
|
103
|
+
fn = check.not_none(self._b_to_a)
|
101
104
|
return ((k, fn(v)) for k, v in self._u.items())
|
102
105
|
|
103
106
|
|
104
|
-
class ValueTransformedMutableKv(ValueTransformedKv[K,
|
107
|
+
class ValueTransformedMutableKv(ValueTransformedKv[K, VA, VB], MutableKv[K, VA], ta.Generic[K, VA, VB]):
|
105
108
|
def __init__(
|
106
109
|
self,
|
107
|
-
u: MutableKv[K,
|
110
|
+
u: MutableKv[K, VB],
|
108
111
|
*,
|
109
|
-
|
110
|
-
|
112
|
+
b_to_a: ta.Callable[[VB], VA] | None = None,
|
113
|
+
a_to_b: ta.Callable[[VA], VB] | None = None,
|
111
114
|
) -> None:
|
112
|
-
super().__init__(u,
|
115
|
+
super().__init__(u, b_to_a)
|
113
116
|
|
114
|
-
self.
|
117
|
+
self._a_to_b = a_to_b
|
115
118
|
|
116
|
-
_u: MutableKv[K,
|
119
|
+
_u: MutableKv[K, VB]
|
117
120
|
|
118
|
-
def __setitem__(self, k: K, v:
|
119
|
-
fn = check.not_none(self.
|
121
|
+
def __setitem__(self, k: K, v: VA, /) -> None:
|
122
|
+
fn = check.not_none(self._a_to_b)
|
120
123
|
self._u[k] = fn(v)
|
121
124
|
|
122
125
|
def __delitem__(self, k: K, /) -> None:
|
omlish/dataclasses/impl/init.py
CHANGED
@@ -147,7 +147,7 @@ class InitBuilder:
|
|
147
147
|
body_lines.append(f'if not {cn}({cas}): __dataclass_raise_validation_error__({self._self_name}, {cn})')
|
148
148
|
|
149
149
|
inits = self._info.merged_metadata.get(Init, [])
|
150
|
-
mro_dct = lang.
|
150
|
+
mro_dct = lang.mro_dict(self._info.cls)
|
151
151
|
mro_v_ids = set(map(id, mro_dct.values()))
|
152
152
|
props_by_fget_id = {id(v.fget): v for v in mro_dct.values() if isinstance(v, property) and v.fget is not None}
|
153
153
|
for i, obj in enumerate(inits):
|
omlish/dispatch/methods.py
CHANGED
@@ -78,7 +78,7 @@ class Method:
|
|
78
78
|
def build_attr_dispatcher(self, instance_cls: type, owner_cls: type | None = None) -> Dispatcher[str]:
|
79
79
|
disp: Dispatcher[str] = Dispatcher()
|
80
80
|
|
81
|
-
mro_dct = lang.
|
81
|
+
mro_dct = lang.mro_dict(instance_cls, owner_cls)
|
82
82
|
seen: ta.Mapping[ta.Any, str] = {}
|
83
83
|
for nam, att in mro_dct.items():
|
84
84
|
try:
|
omlish/lang/__init__.py
CHANGED
@@ -140,6 +140,8 @@ from .functions import ( # noqa
|
|
140
140
|
isinstance_of,
|
141
141
|
issubclass_of,
|
142
142
|
maybe_call,
|
143
|
+
new_function,
|
144
|
+
new_function_kwargs,
|
143
145
|
opt_coalesce,
|
144
146
|
opt_fn,
|
145
147
|
opt_kw,
|
@@ -203,10 +205,11 @@ from .objects import ( # noqa
|
|
203
205
|
anon_object,
|
204
206
|
arg_repr,
|
205
207
|
attr_repr,
|
206
|
-
build_mro_dict,
|
207
208
|
can_weakref,
|
208
209
|
deep_subclasses,
|
209
210
|
dir_dict,
|
211
|
+
mro_dict,
|
212
|
+
mro_owner_dict,
|
210
213
|
new_type,
|
211
214
|
opt_repr,
|
212
215
|
super_meta,
|
omlish/lang/classes/restrict.py
CHANGED
@@ -3,7 +3,6 @@ import functools
|
|
3
3
|
import typing as ta
|
4
4
|
|
5
5
|
from .abstract import Abstract
|
6
|
-
from .abstract import is_abstract
|
7
6
|
|
8
7
|
|
9
8
|
##
|
@@ -25,7 +24,6 @@ class Final(Abstract):
|
|
25
24
|
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
26
25
|
super().__init_subclass__(**kwargs)
|
27
26
|
|
28
|
-
abstracts: set[ta.Any] = set()
|
29
27
|
for base in cls.__bases__:
|
30
28
|
if base is Abstract:
|
31
29
|
raise FinalTypeError(base)
|
@@ -33,16 +31,6 @@ class Final(Abstract):
|
|
33
31
|
continue
|
34
32
|
elif Final in base.__mro__:
|
35
33
|
raise FinalTypeError(base)
|
36
|
-
else:
|
37
|
-
abstracts.update(getattr(base, '__abstractmethods__', []))
|
38
|
-
|
39
|
-
for a in abstracts:
|
40
|
-
try:
|
41
|
-
v = cls.__dict__[a]
|
42
|
-
except KeyError:
|
43
|
-
raise FinalTypeError(a) from None
|
44
|
-
if is_abstract(v):
|
45
|
-
raise FinalTypeError(a)
|
46
34
|
|
47
35
|
|
48
36
|
##
|
omlish/lang/functions.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import dataclasses as dc
|
2
2
|
import functools
|
3
3
|
import time
|
4
|
+
import types
|
4
5
|
import typing as ta
|
5
6
|
|
6
7
|
|
@@ -239,3 +240,46 @@ def opt_coalesce(*vs: T | None) -> T | None:
|
|
239
240
|
|
240
241
|
def opt_kw(**kwargs: ta.Any) -> dict[str, ta.Any]:
|
241
242
|
return {k: v for k, v in kwargs.items() if v is not None}
|
243
|
+
|
244
|
+
|
245
|
+
##
|
246
|
+
|
247
|
+
|
248
|
+
def new_function(
|
249
|
+
# a code object
|
250
|
+
code: types.CodeType,
|
251
|
+
|
252
|
+
# the globals dictionary
|
253
|
+
globals: dict, # noqa
|
254
|
+
|
255
|
+
# a string that overrides the name from the code object
|
256
|
+
name: str | None = None,
|
257
|
+
|
258
|
+
# a tuple that specifies the default argument values
|
259
|
+
argdefs: tuple | None = None,
|
260
|
+
|
261
|
+
# a tuple that supplies the bindings for free variables
|
262
|
+
closure: tuple | None = None,
|
263
|
+
|
264
|
+
# # a dictionary that specifies the default keyword argument values
|
265
|
+
# kwdefaults: dict | None = None,
|
266
|
+
) -> types.FunctionType:
|
267
|
+
return types.FunctionType(
|
268
|
+
code=code,
|
269
|
+
globals=globals,
|
270
|
+
name=name,
|
271
|
+
argdefs=argdefs,
|
272
|
+
closure=closure,
|
273
|
+
# kwdefaults=kwdefaults,
|
274
|
+
)
|
275
|
+
|
276
|
+
|
277
|
+
def new_function_kwargs(f: types.FunctionType) -> dict[str, ta.Any]:
|
278
|
+
return dict(
|
279
|
+
code=f.__code__,
|
280
|
+
globals=f.__globals__, # noqa
|
281
|
+
name=f.__name__,
|
282
|
+
argdefs=f.__defaults__,
|
283
|
+
closure=f.__closure__,
|
284
|
+
# kwdefaults=f.__kwdefaults__,
|
285
|
+
)
|
omlish/lang/objects.py
CHANGED
@@ -117,12 +117,13 @@ def deep_subclasses(
|
|
117
117
|
todo.extend(reversed(cur.__subclasses__()))
|
118
118
|
|
119
119
|
|
120
|
-
def
|
120
|
+
def mro_owner_dict(
|
121
121
|
instance_cls: type,
|
122
122
|
owner_cls: type | None = None,
|
123
123
|
*,
|
124
124
|
bottom_up_key_order: bool = False,
|
125
|
-
|
125
|
+
sort_keys: bool = False,
|
126
|
+
) -> ta.Mapping[str, tuple[type, ta.Any]]:
|
126
127
|
if owner_cls is None:
|
127
128
|
owner_cls = instance_cls
|
128
129
|
|
@@ -132,20 +133,41 @@ def build_mro_dict(
|
|
132
133
|
except ValueError:
|
133
134
|
raise TypeError(f'Owner class {owner_cls} not in mro of instance class {instance_cls}') from None
|
134
135
|
|
135
|
-
dct: dict[str, ta.Any] = {}
|
136
|
+
dct: dict[str, tuple[type, ta.Any]] = {}
|
136
137
|
if not bottom_up_key_order:
|
137
138
|
for cur_cls in mro[:pos + 1][::-1]:
|
138
139
|
for k, v in cur_cls.__dict__.items():
|
139
140
|
if k not in dct:
|
140
|
-
dct[k] = v
|
141
|
+
dct[k] = (cur_cls, v)
|
141
142
|
|
142
143
|
else:
|
143
144
|
for cur_cls in mro[:pos + 1]:
|
144
|
-
dct.update(cur_cls.__dict__)
|
145
|
+
dct.update({k: (cur_cls, v) for k, v in cur_cls.__dict__.items()})
|
146
|
+
|
147
|
+
if sort_keys:
|
148
|
+
dct = dict(sorted(dct.items(), key=lambda t: t[0]))
|
145
149
|
|
146
150
|
return dct
|
147
151
|
|
148
152
|
|
153
|
+
def mro_dict(
|
154
|
+
instance_cls: type,
|
155
|
+
owner_cls: type | None = None,
|
156
|
+
*,
|
157
|
+
bottom_up_key_order: bool = False,
|
158
|
+
sort_keys: bool = False,
|
159
|
+
) -> ta.Mapping[str, ta.Any]:
|
160
|
+
return {
|
161
|
+
k: v
|
162
|
+
for k, (o, v) in mro_owner_dict(
|
163
|
+
instance_cls,
|
164
|
+
owner_cls,
|
165
|
+
bottom_up_key_order=bottom_up_key_order,
|
166
|
+
sort_keys=sort_keys,
|
167
|
+
).items()
|
168
|
+
}
|
169
|
+
|
170
|
+
|
149
171
|
def dir_dict(o: ta.Any) -> dict[str, ta.Any]:
|
150
172
|
return {
|
151
173
|
a: getattr(o, a)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=x26AIwDzScUvnX-p4xlq6Zc5QYrAo0Vmgf1qHc1KL_M,8253
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=ka6y6PMiRUbqY3l0xTavDrpeKm2OK0Im3dJU_twVSEY,3380
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
@@ -164,7 +164,7 @@ omlish/collections/kv/base.py,sha256=QDAwnWQFnyfWoZB0rlSTvfO-m-YED9MBi5nojDt8n-g
|
|
164
164
|
omlish/collections/kv/capabilities.py,sha256=ZINohQKPuUGJNbUnwm6CExMoCKrOcftrUWzFF0xlSww,752
|
165
165
|
omlish/collections/kv/filtered.py,sha256=EJS885-skKEilRy9noblTUU_4RY04jIYet9OMDQwQPo,2266
|
166
166
|
omlish/collections/kv/mappings.py,sha256=Y67h6mY4MpBfOUXZCyW_Gi7xuiAzTq7KzB4qIldqG10,1615
|
167
|
-
omlish/collections/kv/transformed.py,sha256=
|
167
|
+
omlish/collections/kv/transformed.py,sha256=2ge9RTqTCA6ftWn4twgFjHokg4zNzHnKCh9cclblHE0,3046
|
168
168
|
omlish/collections/kv/wrappers.py,sha256=nUtoiArK1Fu2TgxFrqZU69bEoAxKJ_nA7qMeeihIz3U,1985
|
169
169
|
omlish/collections/persistent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
omlish/collections/persistent/persistent.py,sha256=6CuzeZjZMqBLflU-CuWu32SrtZXFrJOV-H_UUuYoTkg,880
|
@@ -214,7 +214,7 @@ omlish/dataclasses/impl/exceptions.py,sha256=-vqxZmfXVflymVuiM553XTlJProse5HEMkt
|
|
214
214
|
omlish/dataclasses/impl/fields.py,sha256=jM2Rvu6DQOfRUrZBMOeJMda-CT5JKXQvJKzoIU_LFxc,6897
|
215
215
|
omlish/dataclasses/impl/frozen.py,sha256=x87DSM8FIMZ3c_BIUE8NooCkExFjPsabeqIueEP5qKs,2988
|
216
216
|
omlish/dataclasses/impl/hashing.py,sha256=0Gr6XIRkKy4pr-mdHblIlQCy3mBxycjMqJk3oZDw43s,3215
|
217
|
-
omlish/dataclasses/impl/init.py,sha256=
|
217
|
+
omlish/dataclasses/impl/init.py,sha256=CUM8Gnx171D3NO6FN4mlrIBoTcYiDqj_tqE9_NKKicg,6409
|
218
218
|
omlish/dataclasses/impl/internals.py,sha256=UvZYjrLT1S8ntyxJ_vRPIkPOF00K8HatGAygErgoXTU,2990
|
219
219
|
omlish/dataclasses/impl/main.py,sha256=LyWr8IBfoL-bBfweR4OqJgi842REDw20WRYcGSYNfMg,2577
|
220
220
|
omlish/dataclasses/impl/metaclass.py,sha256=Mfr_6_TR_inpH2GIkOtQDKSEwF4mhY-cnUiNBYpO25s,5252
|
@@ -252,7 +252,7 @@ omlish/dispatch/_dispatch3.py,sha256=9Zjd7bINAC3keiaBdssc4v5dY0-8OI6XooV2DR9U7Z0
|
|
252
252
|
omlish/dispatch/dispatch.py,sha256=KA5l49AiGLRjp4J7RDJW9RiDp9WUD1ewR1AOPEF8g38,3062
|
253
253
|
omlish/dispatch/functions.py,sha256=8Qvj62XKn9SKfiqoVQdBD3wVRE4JUWpZDqs0oouuDIw,1519
|
254
254
|
omlish/dispatch/impls.py,sha256=JP67zSvDWG4XFOmKPrhWHxRV9WnyAPAsjQHvbmEJh4c,2136
|
255
|
-
omlish/dispatch/methods.py,sha256=
|
255
|
+
omlish/dispatch/methods.py,sha256=oFtKljPnTMG0DVUBdEkf81-0RzEbgHhS4J_63HYJfKU,5492
|
256
256
|
omlish/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
257
257
|
omlish/docker/all.py,sha256=xXRgJgLGPwAtr7bDMJ_Dp9jTfOwfGvohNhc6LsoELJc,514
|
258
258
|
omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
|
@@ -415,7 +415,7 @@ omlish/iterators/iterators.py,sha256=iTQQwBE6Wzoy36dnbPIws17zbjE3zNN4KwVw4Fzh-gY
|
|
415
415
|
omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
|
416
416
|
omlish/iterators/tools.py,sha256=Pi4ybXytUXVZ3xwK89xpPImQfYYId9p1vIFQvVqVLqA,2551
|
417
417
|
omlish/iterators/unique.py,sha256=0jAX3kwzVfRNhe0Tmh7kVP_Q2WBIn8POo_O-rgFV0rQ,1390
|
418
|
-
omlish/lang/__init__.py,sha256
|
418
|
+
omlish/lang/__init__.py,sha256=ZRoUfTeSvMWFvXPeHwhncOkopoIDQ8Rml1zM4hp07Fc,5171
|
419
419
|
omlish/lang/attrs.py,sha256=fofCKN0X8TMu1yGqHpLpNLih9r9HWl3D3Vn3b6O791w,3891
|
420
420
|
omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
|
421
421
|
omlish/lang/collections.py,sha256=aGi0j6VzVe2nz4l357Y4RD5_XNl8OJbmM5qM6BclrrY,1895
|
@@ -424,12 +424,12 @@ omlish/lang/contextmanagers.py,sha256=UPH6daYwSP9cH5AfSVsJyEHk1UURMGhVPM5ZRhp_Hv
|
|
424
424
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
425
425
|
omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
|
426
426
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
427
|
-
omlish/lang/functions.py,sha256=
|
427
|
+
omlish/lang/functions.py,sha256=kSdVUJZmRcncMdU43rcQLZ5E2NMcRz6X6pppwLNHiWk,5762
|
428
428
|
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
429
429
|
omlish/lang/imports.py,sha256=Gdl6xCF89xiMOE1yDmdvKWamLq8HX-XPianO58Jdpmw,9218
|
430
430
|
omlish/lang/iterables.py,sha256=HOjcxOwyI5bBApDLsxRAGGhTTmw7fdZl2kEckxRVl-0,1994
|
431
431
|
omlish/lang/maybes.py,sha256=dAgrUoAhCgyrHRqa73CkaGnpXwGc-o9n-NIThrNXnbU,3416
|
432
|
-
omlish/lang/objects.py,sha256=
|
432
|
+
omlish/lang/objects.py,sha256=5SFF6bf7QQpp1Hju01ITWRsM9q2J3hlePqprPDmfXdI,5910
|
433
433
|
omlish/lang/outcomes.py,sha256=mpFy_VoM-b74L1aCFsjsZVUHx_icZ1AHMOKeVesjOp4,8628
|
434
434
|
omlish/lang/params.py,sha256=QmNVBfJsfxjDG5ilDPgHV7sK4UwRztkSQdLTo0umb8I,6648
|
435
435
|
omlish/lang/resolving.py,sha256=OuN2mDTPNyBUbcrswtvFKtj4xgH4H4WglgqSKv3MTy0,1606
|
@@ -442,7 +442,7 @@ omlish/lang/cached/function.py,sha256=3AeTVfpzovMMWbnjFuT5mM7kT1dBuk7fa66FOJKikY
|
|
442
442
|
omlish/lang/cached/property.py,sha256=kzbao_35PlszdK_9oJBWrMmFFlVK_Xhx7YczHhTJ6cc,2764
|
443
443
|
omlish/lang/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
444
444
|
omlish/lang/classes/abstract.py,sha256=bIcuAetV_aChhpSURypmjjcqP07xi20uVYPKh1kvQNU,3710
|
445
|
-
omlish/lang/classes/restrict.py,sha256=
|
445
|
+
omlish/lang/classes/restrict.py,sha256=nCsQuSFsKTwLhYfmwZr9af00qdVA8TuPQXaSJQNKzBI,3543
|
446
446
|
omlish/lang/classes/simple.py,sha256=XQ8b86WvQA0qtSYqlbMOJS7tHgE8sv9onda33uQmbkM,3294
|
447
447
|
omlish/lang/classes/virtual.py,sha256=z0MYQD9Q5MkX8DzF325wDB4J9XoYbsB09jZ1omC62To,3366
|
448
448
|
omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
|
@@ -775,9 +775,9 @@ omlish/text/parts.py,sha256=Q9NvoyEGQKIWgiPD4D_Qc66cWAuyEKE033dT9m7c3Wk,6662
|
|
775
775
|
omlish/text/random.py,sha256=8feS5JE_tSjYlMl-lp0j93kCfzBae9AM2cXlRLebXMA,199
|
776
776
|
omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
777
777
|
omlish/text/go/quoting.py,sha256=N9EYdnFdEX_A8fOviH-1w4jwV3XOQ7VU2WsoUNubYVY,9137
|
778
|
-
omlish-0.0.0.
|
779
|
-
omlish-0.0.0.
|
780
|
-
omlish-0.0.0.
|
781
|
-
omlish-0.0.0.
|
782
|
-
omlish-0.0.0.
|
783
|
-
omlish-0.0.0.
|
778
|
+
omlish-0.0.0.dev267.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
779
|
+
omlish-0.0.0.dev267.dist-info/METADATA,sha256=An6CgJ82eAUmeEV7QAbzuOZ3-1aVeUJgyCzald60rNM,4198
|
780
|
+
omlish-0.0.0.dev267.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
781
|
+
omlish-0.0.0.dev267.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
782
|
+
omlish-0.0.0.dev267.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
783
|
+
omlish-0.0.0.dev267.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|