omlish 0.0.0.dev136__py3-none-any.whl → 0.0.0.dev138__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/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
|