omlish 0.0.0.dev136__py3-none-any.whl → 0.0.0.dev138__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omlish/__about__.py +2 -2
- omlish/cached.py +2 -2
- omlish/collections/mappings.py +1 -1
- omlish/configs/flattening.py +1 -1
- omlish/diag/_pycharm/runhack.py +3 -0
- omlish/formats/json/stream/errors.py +2 -0
- omlish/formats/json/stream/lex.py +11 -5
- omlish/formats/json/stream/parse.py +37 -21
- omlish/funcs/genmachine.py +5 -4
- omlish/io/compress/__init__.py +0 -0
- omlish/io/compress/abc.py +104 -0
- omlish/io/compress/adapters.py +147 -0
- omlish/io/compress/bz2.py +42 -0
- omlish/io/compress/gzip.py +306 -0
- omlish/io/compress/lzma.py +32 -0
- omlish/io/compress/types.py +29 -0
- omlish/io/generators/__init__.py +0 -0
- omlish/io/generators/readers.py +183 -0
- omlish/io/generators/stepped.py +104 -0
- omlish/lang/__init__.py +11 -1
- omlish/lang/functions.py +0 -2
- omlish/lang/generators.py +243 -0
- omlish/lang/iterables.py +28 -51
- omlish/lang/maybes.py +4 -4
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/RECORD +34 -22
- /omlish/collections/{_abc.py → abc.py} +0 -0
- /omlish/io/{_abc.py → abc.py} +0 -0
- /omlish/logs/{_abc.py → abc.py} +0 -0
- /omlish/sql/{_abc.py → abc.py} +0 -0
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev136.dist-info → omlish-0.0.0.dev138.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,243 @@
|
|
1
|
+
import abc
|
2
|
+
import functools
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
from .maybes import Maybe
|
6
|
+
from .maybes import empty
|
7
|
+
from .maybes import just
|
8
|
+
|
9
|
+
|
10
|
+
T = ta.TypeVar('T')
|
11
|
+
I = ta.TypeVar('I')
|
12
|
+
O = ta.TypeVar('O')
|
13
|
+
R = ta.TypeVar('R')
|
14
|
+
I_contra = ta.TypeVar('I_contra', contravariant=True)
|
15
|
+
O_co = ta.TypeVar('O_co', covariant=True)
|
16
|
+
R_co = ta.TypeVar('R_co', covariant=True)
|
17
|
+
|
18
|
+
|
19
|
+
##
|
20
|
+
|
21
|
+
|
22
|
+
def nextgen(g: T) -> T:
|
23
|
+
next(g) # type: ignore
|
24
|
+
return g
|
25
|
+
|
26
|
+
|
27
|
+
def autostart(fn):
|
28
|
+
@functools.wraps(fn)
|
29
|
+
def inner(*args, **kwargs):
|
30
|
+
g = fn(*args, **kwargs)
|
31
|
+
if (o := next(g)) is not None:
|
32
|
+
raise TypeError(o)
|
33
|
+
return g
|
34
|
+
return inner
|
35
|
+
|
36
|
+
|
37
|
+
##
|
38
|
+
|
39
|
+
|
40
|
+
@ta.runtime_checkable
|
41
|
+
class GeneratorLike(ta.Protocol[O_co, I_contra, R_co]):
|
42
|
+
def send(self, i: I_contra) -> O_co: # Raises[StopIteration[R_co]]
|
43
|
+
...
|
44
|
+
|
45
|
+
def close(self) -> None:
|
46
|
+
...
|
47
|
+
|
48
|
+
|
49
|
+
class GeneratorLike_(abc.ABC, ta.Generic[O, I, R]): # noqa
|
50
|
+
@abc.abstractmethod
|
51
|
+
def send(self, i: I) -> O: # Raises[StopIteration[R]]
|
52
|
+
raise NotImplementedError
|
53
|
+
|
54
|
+
def close(self) -> None:
|
55
|
+
pass
|
56
|
+
|
57
|
+
|
58
|
+
@ta.overload
|
59
|
+
def adapt_generator_like(gl: GeneratorLike_[O, I, R]) -> ta.Generator[O, I, R]:
|
60
|
+
...
|
61
|
+
|
62
|
+
|
63
|
+
@ta.overload
|
64
|
+
def adapt_generator_like(gl: GeneratorLike[O, I, R]) -> ta.Generator[O, I, R]:
|
65
|
+
...
|
66
|
+
|
67
|
+
|
68
|
+
def adapt_generator_like(gl):
|
69
|
+
try:
|
70
|
+
i = yield
|
71
|
+
while True:
|
72
|
+
i = yield gl.send(i)
|
73
|
+
except StopIteration as e:
|
74
|
+
return e.value
|
75
|
+
finally:
|
76
|
+
gl.close()
|
77
|
+
|
78
|
+
|
79
|
+
##
|
80
|
+
|
81
|
+
|
82
|
+
class Generator(ta.Generator[O, I, R]):
|
83
|
+
def __init__(self, g: ta.Generator[O, I, R]) -> None:
|
84
|
+
super().__init__()
|
85
|
+
self._g = g
|
86
|
+
|
87
|
+
@property
|
88
|
+
def g(self) -> ta.Generator[O, I, R]:
|
89
|
+
return self._g
|
90
|
+
|
91
|
+
value: R
|
92
|
+
|
93
|
+
def __iter__(self):
|
94
|
+
return self
|
95
|
+
|
96
|
+
def __next__(self):
|
97
|
+
try:
|
98
|
+
return next(self._g)
|
99
|
+
except StopIteration as e:
|
100
|
+
self.value = e.value
|
101
|
+
raise
|
102
|
+
|
103
|
+
def send(self, v):
|
104
|
+
try:
|
105
|
+
return self._g.send(v)
|
106
|
+
except StopIteration as e:
|
107
|
+
self.value = e.value
|
108
|
+
raise
|
109
|
+
|
110
|
+
def throw(self, *args):
|
111
|
+
try:
|
112
|
+
return self._g.throw(*args)
|
113
|
+
except StopIteration as e:
|
114
|
+
self.value = e.value
|
115
|
+
raise
|
116
|
+
|
117
|
+
def close(self):
|
118
|
+
self._g.close()
|
119
|
+
|
120
|
+
|
121
|
+
##
|
122
|
+
|
123
|
+
|
124
|
+
class CoroutineGenerator(ta.Generic[O, I, R]):
|
125
|
+
def __init__(self, g: ta.Generator[O, I, R]) -> None:
|
126
|
+
super().__init__()
|
127
|
+
self._g = g
|
128
|
+
|
129
|
+
@property
|
130
|
+
def g(self) -> ta.Generator[O, I, R]:
|
131
|
+
return self._g
|
132
|
+
|
133
|
+
#
|
134
|
+
|
135
|
+
def close(self) -> None:
|
136
|
+
self._g.close()
|
137
|
+
|
138
|
+
def __enter__(self) -> ta.Self:
|
139
|
+
return self
|
140
|
+
|
141
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
142
|
+
self._g.close()
|
143
|
+
|
144
|
+
#
|
145
|
+
|
146
|
+
class Output(ta.NamedTuple, ta.Generic[T]):
|
147
|
+
v: T
|
148
|
+
|
149
|
+
@property
|
150
|
+
def is_return(self) -> bool:
|
151
|
+
raise NotImplementedError
|
152
|
+
|
153
|
+
class Yield(Output[T]):
|
154
|
+
@property
|
155
|
+
def is_return(self) -> bool:
|
156
|
+
return False
|
157
|
+
|
158
|
+
class Return(Output[T]):
|
159
|
+
@property
|
160
|
+
def is_return(self) -> bool:
|
161
|
+
return True
|
162
|
+
|
163
|
+
class Nothing:
|
164
|
+
def __new__(cls):
|
165
|
+
raise TypeError
|
166
|
+
|
167
|
+
#
|
168
|
+
|
169
|
+
def send(self, /, v: I | type[Nothing] = Nothing) -> Yield[O] | Return[R]:
|
170
|
+
try:
|
171
|
+
if v is self.Nothing:
|
172
|
+
o = next(self._g)
|
173
|
+
else:
|
174
|
+
o = self._g.send(v) # type: ignore[arg-type]
|
175
|
+
except StopIteration as e:
|
176
|
+
return self.Return(e.value)
|
177
|
+
else:
|
178
|
+
return self.Yield(o)
|
179
|
+
|
180
|
+
def send_opt(self, v: I | None) -> Yield[O] | Return[R]:
|
181
|
+
return self.send(v if v is not None else self.Nothing)
|
182
|
+
|
183
|
+
def send_maybe(self, v: Maybe[I]) -> Yield[O] | Return[R]:
|
184
|
+
return self.send(v.or_else(self.Nothing))
|
185
|
+
|
186
|
+
def throw(self, v: BaseException) -> Yield[O] | Return[R]:
|
187
|
+
try:
|
188
|
+
o = self._g.throw(v)
|
189
|
+
except StopIteration as e:
|
190
|
+
return self.Return(e.value)
|
191
|
+
else:
|
192
|
+
return self.Yield(o)
|
193
|
+
|
194
|
+
|
195
|
+
corogen = CoroutineGenerator
|
196
|
+
|
197
|
+
|
198
|
+
##
|
199
|
+
|
200
|
+
|
201
|
+
class GeneratorMappedIterator(ta.Generic[O, I, R]):
|
202
|
+
"""
|
203
|
+
Like a `map` iterator but takes a generator instead of a function. Provided generator *must* yield outputs 1:1 with
|
204
|
+
inputs.
|
205
|
+
|
206
|
+
Generator return value will be captured on `value` property - if present generator stopped, it absent iterator
|
207
|
+
stopped.
|
208
|
+
"""
|
209
|
+
|
210
|
+
def __init__(self, g: ta.Generator[O, I, R], it: ta.Iterator[I]) -> None:
|
211
|
+
super().__init__()
|
212
|
+
|
213
|
+
self._g = g
|
214
|
+
self._it = it
|
215
|
+
self._value: Maybe[R] = empty()
|
216
|
+
|
217
|
+
@property
|
218
|
+
def g(self) -> ta.Generator[O, I, R]:
|
219
|
+
return self._g
|
220
|
+
|
221
|
+
@property
|
222
|
+
def it(self) -> ta.Iterator[I]:
|
223
|
+
return self._it
|
224
|
+
|
225
|
+
@property
|
226
|
+
def value(self) -> Maybe[R]:
|
227
|
+
return self._value
|
228
|
+
|
229
|
+
def __iter__(self) -> ta.Iterator[O]:
|
230
|
+
return self
|
231
|
+
|
232
|
+
def __next__(self) -> O:
|
233
|
+
i = next(self._it)
|
234
|
+
try:
|
235
|
+
o = self._g.send(i)
|
236
|
+
except StopIteration as e:
|
237
|
+
self._value = just(e.value)
|
238
|
+
raise StopIteration from e
|
239
|
+
return o
|
240
|
+
|
241
|
+
|
242
|
+
def genmap(g: ta.Generator[O, I, R], it: ta.Iterable[I]) -> GeneratorMappedIterator[O, I, R]:
|
243
|
+
return GeneratorMappedIterator(g, iter(it))
|
omlish/lang/iterables.py
CHANGED
@@ -4,7 +4,6 @@ import typing as ta
|
|
4
4
|
|
5
5
|
|
6
6
|
T = ta.TypeVar('T')
|
7
|
-
S = ta.TypeVar('S')
|
8
7
|
R = ta.TypeVar('R')
|
9
8
|
|
10
9
|
|
@@ -15,6 +14,9 @@ BUILTIN_SCALAR_ITERABLE_TYPES: tuple[type, ...] = (
|
|
15
14
|
)
|
16
15
|
|
17
16
|
|
17
|
+
##
|
18
|
+
|
19
|
+
|
18
20
|
def ilen(it: ta.Iterable) -> int:
|
19
21
|
c = 0
|
20
22
|
for _ in it:
|
@@ -44,6 +46,31 @@ def interleave(vs: ta.Iterable[T], d: T) -> ta.Iterable[T]:
|
|
44
46
|
yield v
|
45
47
|
|
46
48
|
|
49
|
+
@dc.dataclass(frozen=True)
|
50
|
+
class IterGen(ta.Generic[T]):
|
51
|
+
fn: ta.Callable[[], ta.Iterable[T]]
|
52
|
+
|
53
|
+
def __iter__(self):
|
54
|
+
return iter(self.fn())
|
55
|
+
|
56
|
+
|
57
|
+
itergen = IterGen
|
58
|
+
|
59
|
+
|
60
|
+
def renumerate(it: ta.Iterable[T]) -> ta.Iterable[tuple[T, int]]:
|
61
|
+
return ((e, i) for i, e in enumerate(it))
|
62
|
+
|
63
|
+
|
64
|
+
flatten = itertools.chain.from_iterable
|
65
|
+
|
66
|
+
|
67
|
+
def flatmap(fn: ta.Callable[[T], ta.Iterable[R]], it: ta.Iterable[T]) -> ta.Iterable[R]:
|
68
|
+
return flatten(map(fn, it))
|
69
|
+
|
70
|
+
|
71
|
+
##
|
72
|
+
|
73
|
+
|
47
74
|
Rangeable: ta.TypeAlias = ta.Union[ # noqa
|
48
75
|
int,
|
49
76
|
tuple[int],
|
@@ -68,53 +95,3 @@ def prodrange(*dims: Rangeable) -> ta.Iterable[ta.Sequence[int]]:
|
|
68
95
|
if not dims:
|
69
96
|
return []
|
70
97
|
return itertools.product(*map(asrange, dims))
|
71
|
-
|
72
|
-
|
73
|
-
@dc.dataclass(frozen=True)
|
74
|
-
class itergen(ta.Generic[T]): # noqa
|
75
|
-
fn: ta.Callable[[], ta.Iterable[T]]
|
76
|
-
|
77
|
-
def __iter__(self):
|
78
|
-
return iter(self.fn())
|
79
|
-
|
80
|
-
|
81
|
-
def renumerate(it: ta.Iterable[T]) -> ta.Iterable[tuple[T, int]]:
|
82
|
-
return ((e, i) for i, e in enumerate(it))
|
83
|
-
|
84
|
-
|
85
|
-
flatten = itertools.chain.from_iterable
|
86
|
-
|
87
|
-
|
88
|
-
def flatmap(fn: ta.Callable[[T], ta.Iterable[R]], it: ta.Iterable[T]) -> ta.Iterable[R]:
|
89
|
-
return flatten(map(fn, it))
|
90
|
-
|
91
|
-
|
92
|
-
class Generator(ta.Generator[T, S, R]):
|
93
|
-
def __init__(self, gen: ta.Generator[T, S, R]) -> None:
|
94
|
-
super().__init__()
|
95
|
-
self.gen = gen
|
96
|
-
|
97
|
-
value: R
|
98
|
-
|
99
|
-
def __iter__(self):
|
100
|
-
return self
|
101
|
-
|
102
|
-
def __next__(self):
|
103
|
-
return self.send(None)
|
104
|
-
|
105
|
-
def send(self, v):
|
106
|
-
try:
|
107
|
-
return self.gen.send(v)
|
108
|
-
except StopIteration as e:
|
109
|
-
self.value = e.value
|
110
|
-
raise
|
111
|
-
|
112
|
-
def throw(self, *args):
|
113
|
-
try:
|
114
|
-
return self.gen.throw(*args)
|
115
|
-
except StopIteration as e:
|
116
|
-
self.value = e.value
|
117
|
-
raise
|
118
|
-
|
119
|
-
def close(self):
|
120
|
-
self.gen.close()
|
omlish/lang/maybes.py
CHANGED
@@ -50,11 +50,11 @@ class Maybe(abc.ABC, ta.Generic[T]):
|
|
50
50
|
raise NotImplementedError
|
51
51
|
|
52
52
|
@abc.abstractmethod
|
53
|
-
def or_else(self, other: T) -> T:
|
53
|
+
def or_else(self, other: T | U) -> T | U:
|
54
54
|
raise NotImplementedError
|
55
55
|
|
56
56
|
@abc.abstractmethod
|
57
|
-
def or_else_get(self, supplier: ta.Callable[[],
|
57
|
+
def or_else_get(self, supplier: ta.Callable[[], U]) -> T | U:
|
58
58
|
raise NotImplementedError
|
59
59
|
|
60
60
|
@abc.abstractmethod
|
@@ -109,10 +109,10 @@ class _Maybe(Maybe[T], tuple):
|
|
109
109
|
return value
|
110
110
|
return _empty # noqa
|
111
111
|
|
112
|
-
def or_else(self, other: T) -> T:
|
112
|
+
def or_else(self, other: T | U) -> T | U:
|
113
113
|
return self.must() if self else other
|
114
114
|
|
115
|
-
def or_else_get(self, supplier: ta.Callable[[], T]) -> T:
|
115
|
+
def or_else_get(self, supplier: ta.Callable[[], T | U]) -> T | U:
|
116
116
|
return self.must() if self else supplier()
|
117
117
|
|
118
118
|
def or_else_raise(self, exception_supplier: ta.Callable[[], Exception]) -> T:
|
@@ -1,9 +1,9 @@
|
|
1
1
|
omlish/.manifests.json,sha256=RX24SRc6DCEg77PUVnaXOKCWa5TF_c9RQJdGIf7gl9c,1135
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=46U2GBugODPMhUv3HImiUCjwQXnuT9j_dpRhQPYc4Ss,3379
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/argparse.py,sha256=cqKGAqcxuxv_s62z0gq29L9KAvg_3-_rFvXKjVpRJjo,8126
|
5
5
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
6
|
-
omlish/cached.py,sha256=
|
6
|
+
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
7
7
|
omlish/check.py,sha256=Li5xmecEyWKMzlwWyd6xDHpq3F4lE6IFOPBWdylCnpU,10540
|
8
8
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
9
9
|
omlish/defs.py,sha256=T3bq_7h_tO3nDB5RAFBn7DkdeQgqheXzkFColbOHZko,4890
|
@@ -92,14 +92,14 @@ omlish/bootstrap/main.py,sha256=yZhOHDDlj4xB5a89dRdT8z58FsqqnpoBg1-tvY2CJe4,5903
|
|
92
92
|
omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
|
93
93
|
omlish/bootstrap/sys.py,sha256=iLHUNIuIPv-k-Mc6aHj5sSET78olCVt7t0HquFDO4iQ,8762
|
94
94
|
omlish/collections/__init__.py,sha256=zeUvcAz073ekko37QKya6sElTMfKTuF1bKrdbMtaRpI,2142
|
95
|
-
omlish/collections/
|
95
|
+
omlish/collections/abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
|
96
96
|
omlish/collections/coerce.py,sha256=o11AMrUiyoadd8WkdqeKPIpXf2xd0LyylzNCyJivCLU,7036
|
97
97
|
omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
|
98
98
|
omlish/collections/frozen.py,sha256=DGxemj_pVID85tSBm-Wns_x4ov0wOEIT6X5bVgJtmkA,4152
|
99
99
|
omlish/collections/hasheq.py,sha256=XcOCE6f2lXizDCOXxSX6vJv-rLcpDo2OWCYIKGSWuic,3697
|
100
100
|
omlish/collections/identity.py,sha256=jhEpC8tnfh3Sg-MJff1Fp9eMydt150wits_UeVdctUk,2723
|
101
101
|
omlish/collections/indexed.py,sha256=tFQsIWH4k9QqsF5VB7DsIVNsRThiQNx-ooRF36X_PnU,2203
|
102
|
-
omlish/collections/mappings.py,sha256=
|
102
|
+
omlish/collections/mappings.py,sha256=laXV4WU1VZPGwaJQsJCQsmL3BVeUfELljTZ6a5sfg0s,3206
|
103
103
|
omlish/collections/ordered.py,sha256=RzEC3fHvrDeJQSWThVDNYQKke263Vje1II5YwtDwT1Q,2335
|
104
104
|
omlish/collections/persistent.py,sha256=KG471s0bhhReQrjlmX0xaN9HeAIcrtT264ddZCxsExo,875
|
105
105
|
omlish/collections/skiplist.py,sha256=xjuKZtSScp1VnOi9lpf7I090vGp1DnjA5ELjFhMeGps,5987
|
@@ -118,7 +118,7 @@ omlish/concurrent/futures.py,sha256=J2s9wYURUskqRJiBbAR0PNEAp1pXbIMYldOVBTQduQY,
|
|
118
118
|
omlish/concurrent/threadlets.py,sha256=JfirbTDJgy9Ouokz_VmHeAAPS7cih8qMUJrN-owwXD4,2423
|
119
119
|
omlish/configs/__init__.py,sha256=3uh09ezodTwkMI0nRmAMP0eEuJ_0VdF-LYyNmPjHiCE,77
|
120
120
|
omlish/configs/classes.py,sha256=GLbB8xKjHjjoUQRCUQm3nEjM8z1qNTx9gPV7ODSt5dg,1317
|
121
|
-
omlish/configs/flattening.py,sha256=
|
121
|
+
omlish/configs/flattening.py,sha256=rVxoTqgM9te86hUwQsHJ5u94jo2PARNfhk_HkrrDT9Y,4745
|
122
122
|
omlish/configs/strings.py,sha256=0brx1duL85r1GpfbNvbHcSvH4jWzutwuvMFXda9NeI0,2651
|
123
123
|
omlish/dataclasses/__init__.py,sha256=AHo-tN5V_b_VYFUF7VFRmuHrjZBXS1WytRAj061MUTA,1423
|
124
124
|
omlish/dataclasses/utils.py,sha256=lcikCPiiX5Giu0Kb1hP18loZjmm_Z9D-XtJ-ZlHq9iM,3793
|
@@ -156,7 +156,7 @@ omlish/diag/pycharm.py,sha256=7-r_F-whXt8v-0dehxAX-MeMFPM3iZXX9IfeL0GfUtk,4643
|
|
156
156
|
omlish/diag/pydevd.py,sha256=UN55ZjkWLCVyHxE2CNRRYamuvSKfzWsn0D5oczRTXO4,7536
|
157
157
|
omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
|
158
158
|
omlish/diag/_pycharm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
159
|
-
omlish/diag/_pycharm/runhack.py,sha256=
|
159
|
+
omlish/diag/_pycharm/runhack.py,sha256=JFz4GVN4AXndJo38iwnK5X_vH2MS6wyO8YmVZss5YRE,35157
|
160
160
|
omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
|
161
161
|
omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
|
162
162
|
omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
|
@@ -194,11 +194,12 @@ omlish/formats/json/backends/std.py,sha256=PM00Kh9ZR2XzollHMEvdo35Eml1N-zFfRW-LO
|
|
194
194
|
omlish/formats/json/backends/ujson.py,sha256=BNJCU4kluGHdqTUKLJEuHhE2m2TmqR7HEN289S0Eokg,2278
|
195
195
|
omlish/formats/json/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
196
196
|
omlish/formats/json/stream/build.py,sha256=MSxgreWSfI5CzNAdgQrArZ0yWqDsaHl-shI_jmjLDms,2505
|
197
|
-
omlish/formats/json/stream/
|
198
|
-
omlish/formats/json/stream/
|
197
|
+
omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
|
198
|
+
omlish/formats/json/stream/lex.py,sha256=bfy0fb3_Z6G18UGueX2DR6oPSVUsMoFhlbsvXC3ztzI,6793
|
199
|
+
omlish/formats/json/stream/parse.py,sha256=JuYmXwtTHmQJTFKoJNoEHUpCPxXdl_gvKPykVXgED34,6208
|
199
200
|
omlish/formats/json/stream/render.py,sha256=NtmDsN92xZi5dkgSSuMeMXMAiJblmjz1arB4Ft7vBhc,3715
|
200
201
|
omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
201
|
-
omlish/funcs/genmachine.py,sha256=
|
202
|
+
omlish/funcs/genmachine.py,sha256=EY2k-IFNKMEmHo9CmGRptFvhEMZVOWzZhn0wdQGeaFM,2476
|
202
203
|
omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
|
203
204
|
omlish/funcs/pairs.py,sha256=OzAwnALkRJXVpD47UvBZHKzQfHtFNry_EgjTcC7vgLU,10606
|
204
205
|
omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
|
@@ -256,10 +257,20 @@ omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNx
|
|
256
257
|
omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
|
257
258
|
omlish/inject/impl/scopes.py,sha256=hKnzNieB-fJSFEXDP_QG1mCfIKoVFIfFlf9LiIt5tk4,5920
|
258
259
|
omlish/io/__init__.py,sha256=aaIEsXTSfytW-oEkUWczdUJ_ifFY7ihIpyidIbfjkwY,56
|
259
|
-
omlish/io/
|
260
|
+
omlish/io/abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
|
260
261
|
omlish/io/pyio.py,sha256=YB3g6yg64MzcFwbzKBo4adnbsbZ3FZMlOZfjNtWmYoc,95316
|
261
262
|
omlish/io/trampoline.py,sha256=oUKTQg1F5xQS1431Kt7MbK-NZpX509ubcXU-s86xJr8,7171
|
262
|
-
omlish/
|
263
|
+
omlish/io/compress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
264
|
+
omlish/io/compress/abc.py,sha256=R9ebpSjJK4VAimV3OevPJB-jSDTGB_xi2FKNZKbTdYE,3054
|
265
|
+
omlish/io/compress/adapters.py,sha256=wS7cA_quham3C23j3_H6sf2EQ4gI0vURTQdPhapiiFE,6088
|
266
|
+
omlish/io/compress/bz2.py,sha256=BX-xWrpYe5K9vJ28iB2wCNPtd6PW2RgCh3h6XfE4FtA,1026
|
267
|
+
omlish/io/compress/gzip.py,sha256=Vs8O3l1Sf50iAvBSQueMLEDLDbmh6FqPdvdzwwaDy3o,11189
|
268
|
+
omlish/io/compress/lzma.py,sha256=_fFNWY1R6z71zRnrejhpKs7DVCHn_Ei9ny_fxHvUwJo,823
|
269
|
+
omlish/io/compress/types.py,sha256=IuCyxFX8v12fGqCq2ofCCRM5ZM-4zngHeeBW_PWqYbM,557
|
270
|
+
omlish/io/generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
271
|
+
omlish/io/generators/readers.py,sha256=nv6inmyJmYCJ2YFE2cv6jkVmoxGsbXzyuIki-MCjZDg,4195
|
272
|
+
omlish/io/generators/stepped.py,sha256=AYZmtZF1p95JW17XKe3ZIXWwWRuYmmbDLVuhB5x8Dog,2571
|
273
|
+
omlish/lang/__init__.py,sha256=lQ-w1MgrMtuyVNWtqODI0qNZ71SZPfvf-Lkn2LUMTec,3922
|
263
274
|
omlish/lang/cached.py,sha256=92TvRZQ6sWlm7dNn4hgl7aWKbX0J1XUEo3DRjBpgVQk,7834
|
264
275
|
omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
|
265
276
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
@@ -267,10 +278,11 @@ omlish/lang/contextmanagers.py,sha256=NEwaTLQMfhKawD5x_0HgI2RpeLXbMa5r9NqWqfDnUX
|
|
267
278
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
268
279
|
omlish/lang/descriptors.py,sha256=RRBbkMgTzg82fFFE4D0muqobpM-ZZaOta6yB1lpX3s8,6617
|
269
280
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
270
|
-
omlish/lang/functions.py,sha256=
|
281
|
+
omlish/lang/functions.py,sha256=tUqeqBNHtJtrwimbG6Kc1SjZQDDhqqC1o-8ANpXWn9E,3893
|
282
|
+
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
271
283
|
omlish/lang/imports.py,sha256=TXLbj2F53LsmozlM05bQhvow9kEgWJOi9qYKsnm2D18,9258
|
272
|
-
omlish/lang/iterables.py,sha256=
|
273
|
-
omlish/lang/maybes.py,sha256=
|
284
|
+
omlish/lang/iterables.py,sha256=1bc-Vn-b34T6Gy3li2tMNYpUvuwCC7fjg7dpjXkTfWY,1746
|
285
|
+
omlish/lang/maybes.py,sha256=1RN7chX_x2XvgUwryZRz0W7hAX-be3eEFcFub5vvf6M,3417
|
274
286
|
omlish/lang/objects.py,sha256=LOC3JvX1g5hPxJ7Sv2TK9kNkAo9c8J-Jw2NmClR_rkA,4576
|
275
287
|
omlish/lang/resolving.py,sha256=OuN2mDTPNyBUbcrswtvFKtj4xgH4H4WglgqSKv3MTy0,1606
|
276
288
|
omlish/lang/resources.py,sha256=yywDWhh0tsgw24l7mHYv49ll4oZS8Kc8MSCa8f4UbbI,2280
|
@@ -324,7 +336,7 @@ omlish/lite/http/handlers.py,sha256=Yu0P3nqz-frklwCM2PbiWvoJNE-NqeTFLBvpNpqcdtA,
|
|
324
336
|
omlish/lite/http/parsing.py,sha256=jLdbBTQQhKU701j3_Ixl77nQE3rZld2qbJNAFhuW_cc,13977
|
325
337
|
omlish/lite/http/versions.py,sha256=M6WhZeeyun-3jL_NCViNONOfLCiApuFOfe5XNJwzSvw,394
|
326
338
|
omlish/logs/__init__.py,sha256=FbOyAW-lGH8gyBlSVArwljdYAU6RnwZLI5LwAfuNnrk,438
|
327
|
-
omlish/logs/
|
339
|
+
omlish/logs/abc.py,sha256=rWySJcr1vatu-AR1EYtODRhi-TjFaixqUzXeWg1c0GA,8006
|
328
340
|
omlish/logs/configs.py,sha256=EE0jlNaXJbGnM7V-y4xS5VwyTBSTzFzc0BYaVjg0JmA,1283
|
329
341
|
omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
|
330
342
|
omlish/logs/handlers.py,sha256=UpzUf3kWBBzWOnrtljoZsLjISw3Ix-ePz3Nsmp6lRgE,255
|
@@ -419,7 +431,7 @@ omlish/specs/openapi/__init__.py,sha256=zilQhafjvteRDF_TUIRgF293dBC6g-TJChmUb6T9
|
|
419
431
|
omlish/specs/openapi/marshal.py,sha256=Z-E2Knm04C81N8AA8cibCVSl2ImhSpHZVc7yAhmPx88,2135
|
420
432
|
omlish/specs/openapi/openapi.py,sha256=y4h04jeB7ORJSVrcy7apaBdpwLjIyscv1Ub5SderH2c,12682
|
421
433
|
omlish/sql/__init__.py,sha256=TpZLsEJKJzvJ0eMzuV8hwOJJbkxBCV1RZPUMLAVB6io,173
|
422
|
-
omlish/sql/
|
434
|
+
omlish/sql/abc.py,sha256=kiOitW_ZhTXrJanJ582wD7o9K69v6HXqDPkxuHEAxrc,1606
|
423
435
|
omlish/sql/dbapi.py,sha256=5ghJH-HexsmDlYdWlhf00nCGQX2IC98_gxIxMkucOas,3195
|
424
436
|
omlish/sql/dbs.py,sha256=lpdFmm2vTwLoBiVYGj9yPsVcTEYYNCxlYZZpjfChzkY,1870
|
425
437
|
omlish/sql/params.py,sha256=Z4VPet6GhNqD1T_MXSWSHkdy3cpUEhST-OplC4B_fYI,4433
|
@@ -480,9 +492,9 @@ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,329
|
|
480
492
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
481
493
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
482
494
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
483
|
-
omlish-0.0.0.
|
484
|
-
omlish-0.0.0.
|
485
|
-
omlish-0.0.0.
|
486
|
-
omlish-0.0.0.
|
487
|
-
omlish-0.0.0.
|
488
|
-
omlish-0.0.0.
|
495
|
+
omlish-0.0.0.dev138.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
496
|
+
omlish-0.0.0.dev138.dist-info/METADATA,sha256=J41ow55cnZbTzEAJBExrJvbwa-bt1NqEZbwrh1r4l_A,4173
|
497
|
+
omlish-0.0.0.dev138.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
498
|
+
omlish-0.0.0.dev138.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
499
|
+
omlish-0.0.0.dev138.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
500
|
+
omlish-0.0.0.dev138.dist-info/RECORD,,
|
File without changes
|
/omlish/io/{_abc.py → abc.py}
RENAMED
File without changes
|
/omlish/logs/{_abc.py → abc.py}
RENAMED
File without changes
|
/omlish/sql/{_abc.py → abc.py}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|