omlish 0.0.0.dev129__py3-none-any.whl → 0.0.0.dev131__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- omlish/__about__.py +3 -3
- omlish/formats/dotenv.py +166 -152
- omlish/inject/__init__.py +1 -1
- omlish/inject/impl/injector.py +2 -2
- omlish/inject/impl/scopes.py +4 -4
- omlish/inject/scopes.py +2 -2
- omlish/lite/check.py +13 -0
- omlish/lite/fdio/__init__.py +0 -0
- omlish/lite/fdio/corohttp.py +135 -0
- omlish/lite/fdio/handlers.py +67 -0
- omlish/lite/fdio/kqueue.py +102 -0
- omlish/lite/fdio/manager.py +48 -0
- omlish/lite/fdio/pollers.py +212 -0
- omlish/lite/inject.py +66 -8
- omlish/lite/io.py +98 -0
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/METADATA +3 -3
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/RECORD +21 -15
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev129.dist-info → omlish-0.0.0.dev131.dist-info}/top_level.txt +0 -0
omlish/lite/inject.py
CHANGED
@@ -1,9 +1,4 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007
|
2
|
-
"""
|
3
|
-
TODO:
|
4
|
-
- recursion detection
|
5
|
-
- bind empty array
|
6
|
-
"""
|
7
2
|
import abc
|
8
3
|
import contextlib
|
9
4
|
import dataclasses as dc
|
@@ -325,7 +320,11 @@ def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey,
|
|
325
320
|
|
326
321
|
for b in bs.bindings():
|
327
322
|
if b.key.array:
|
328
|
-
am.setdefault(b.key, [])
|
323
|
+
al = am.setdefault(b.key, [])
|
324
|
+
if isinstance(b.provider, ArrayInjectorProvider):
|
325
|
+
al.extend(b.provider.ps)
|
326
|
+
else:
|
327
|
+
al.append(b.provider)
|
329
328
|
else:
|
330
329
|
if b.key in pm:
|
331
330
|
raise KeyError(b.key)
|
@@ -473,6 +472,14 @@ def build_injection_kwargs_target(
|
|
473
472
|
_INJECTOR_INJECTOR_KEY: InjectorKey[Injector] = InjectorKey(Injector)
|
474
473
|
|
475
474
|
|
475
|
+
@dc.dataclass(frozen=True)
|
476
|
+
class _InjectorEager:
|
477
|
+
key: InjectorKey
|
478
|
+
|
479
|
+
|
480
|
+
_INJECTOR_EAGER_ARRAY_KEY: InjectorKey[_InjectorEager] = InjectorKey(_InjectorEager, array=True)
|
481
|
+
|
482
|
+
|
476
483
|
class _Injector(Injector):
|
477
484
|
def __init__(self, bs: InjectorBindings, p: ta.Optional[Injector] = None) -> None:
|
478
485
|
super().__init__()
|
@@ -487,6 +494,10 @@ class _Injector(Injector):
|
|
487
494
|
|
488
495
|
self.__cur_req: ta.Optional[_Injector._Request] = None
|
489
496
|
|
497
|
+
if _INJECTOR_EAGER_ARRAY_KEY in self._pfm:
|
498
|
+
for e in self.provide(_INJECTOR_EAGER_ARRAY_KEY):
|
499
|
+
self.provide(e.key)
|
500
|
+
|
490
501
|
class _Request:
|
491
502
|
def __init__(self, injector: '_Injector') -> None:
|
492
503
|
super().__init__()
|
@@ -644,6 +655,8 @@ class InjectorBinder:
|
|
644
655
|
to_key: ta.Any = None,
|
645
656
|
|
646
657
|
singleton: bool = False,
|
658
|
+
|
659
|
+
eager: bool = False,
|
647
660
|
) -> InjectorBindingOrBindings:
|
648
661
|
if obj is None or obj is inspect.Parameter.empty:
|
649
662
|
raise TypeError(obj)
|
@@ -717,13 +730,21 @@ class InjectorBinder:
|
|
717
730
|
if singleton:
|
718
731
|
provider = SingletonInjectorProvider(provider)
|
719
732
|
|
733
|
+
binding = InjectorBinding(key, provider)
|
734
|
+
|
720
735
|
##
|
721
736
|
|
722
|
-
|
737
|
+
extras: ta.List[InjectorBinding] = []
|
738
|
+
|
739
|
+
if eager:
|
740
|
+
extras.append(bind_injector_eager_key(key))
|
723
741
|
|
724
742
|
##
|
725
743
|
|
726
|
-
|
744
|
+
if extras:
|
745
|
+
return as_injector_bindings(binding, *extras)
|
746
|
+
else:
|
747
|
+
return binding
|
727
748
|
|
728
749
|
|
729
750
|
###
|
@@ -746,6 +767,26 @@ def make_injector_factory(
|
|
746
767
|
return outer
|
747
768
|
|
748
769
|
|
770
|
+
def bind_injector_array(
|
771
|
+
obj: ta.Any = None,
|
772
|
+
*,
|
773
|
+
tag: ta.Any = None,
|
774
|
+
) -> InjectorBindingOrBindings:
|
775
|
+
key = as_injector_key(obj)
|
776
|
+
if tag is not None:
|
777
|
+
if key.tag is not None:
|
778
|
+
raise ValueError('Must not specify multiple tags')
|
779
|
+
key = dc.replace(key, tag=tag)
|
780
|
+
|
781
|
+
if key.array:
|
782
|
+
raise ValueError('Key must not be array')
|
783
|
+
|
784
|
+
return InjectorBinding(
|
785
|
+
dc.replace(key, array=True),
|
786
|
+
ArrayInjectorProvider([]),
|
787
|
+
)
|
788
|
+
|
789
|
+
|
749
790
|
def make_injector_array_type(
|
750
791
|
ele: ta.Union[InjectorKey, InjectorKeyCls],
|
751
792
|
cls: U,
|
@@ -767,6 +808,10 @@ def make_injector_array_type(
|
|
767
808
|
return inner
|
768
809
|
|
769
810
|
|
811
|
+
def bind_injector_eager_key(key: ta.Any) -> InjectorBinding:
|
812
|
+
return InjectorBinding(_INJECTOR_EAGER_ARRAY_KEY, ConstInjectorProvider(_InjectorEager(as_injector_key(key))))
|
813
|
+
|
814
|
+
|
770
815
|
##
|
771
816
|
|
772
817
|
|
@@ -821,6 +866,8 @@ class Injection:
|
|
821
866
|
to_key: ta.Any = None,
|
822
867
|
|
823
868
|
singleton: bool = False,
|
869
|
+
|
870
|
+
eager: bool = False,
|
824
871
|
) -> InjectorBindingOrBindings:
|
825
872
|
return InjectorBinder.bind(
|
826
873
|
obj,
|
@@ -835,6 +882,8 @@ class Injection:
|
|
835
882
|
to_key=to_key,
|
836
883
|
|
837
884
|
singleton=singleton,
|
885
|
+
|
886
|
+
eager=eager,
|
838
887
|
)
|
839
888
|
|
840
889
|
# helpers
|
@@ -848,6 +897,15 @@ class Injection:
|
|
848
897
|
) -> InjectorBindingOrBindings:
|
849
898
|
return cls.bind(make_injector_factory(fn, cls_, ann))
|
850
899
|
|
900
|
+
@classmethod
|
901
|
+
def bind_array(
|
902
|
+
cls,
|
903
|
+
obj: ta.Any = None,
|
904
|
+
*,
|
905
|
+
tag: ta.Any = None,
|
906
|
+
) -> InjectorBindingOrBindings:
|
907
|
+
return bind_injector_array(obj, tag=tag)
|
908
|
+
|
851
909
|
@classmethod
|
852
910
|
def bind_array_type(
|
853
911
|
cls,
|
omlish/lite/io.py
CHANGED
@@ -3,6 +3,7 @@ import io
|
|
3
3
|
import typing as ta
|
4
4
|
|
5
5
|
from .check import check_isinstance
|
6
|
+
from .check import check_non_empty
|
6
7
|
from .check import check_not_none
|
7
8
|
from .strings import attr_repr
|
8
9
|
|
@@ -126,3 +127,100 @@ class DelimitingBuffer:
|
|
126
127
|
p = i + remaining_buf_capacity
|
127
128
|
yield self.Incomplete(self._append_and_reset(data[i:p]))
|
128
129
|
i = p
|
130
|
+
|
131
|
+
|
132
|
+
class ReadableListBuffer:
|
133
|
+
def __init__(self) -> None:
|
134
|
+
super().__init__()
|
135
|
+
self._lst: list[bytes] = []
|
136
|
+
|
137
|
+
def feed(self, d: bytes) -> None:
|
138
|
+
if d:
|
139
|
+
self._lst.append(d)
|
140
|
+
|
141
|
+
def _chop(self, i: int, e: int) -> bytes:
|
142
|
+
lst = self._lst
|
143
|
+
d = lst[i]
|
144
|
+
|
145
|
+
o = b''.join([
|
146
|
+
*lst[:i],
|
147
|
+
d[:e],
|
148
|
+
])
|
149
|
+
|
150
|
+
self._lst = [
|
151
|
+
*([d[e:]] if e < len(d) else []),
|
152
|
+
*lst[i + 1:],
|
153
|
+
]
|
154
|
+
|
155
|
+
return o
|
156
|
+
|
157
|
+
def read(self, n: ta.Optional[int] = None) -> ta.Optional[bytes]:
|
158
|
+
if n is None:
|
159
|
+
o = b''.join(self._lst)
|
160
|
+
self._lst = []
|
161
|
+
return o
|
162
|
+
|
163
|
+
if not (lst := self._lst):
|
164
|
+
return None
|
165
|
+
|
166
|
+
c = 0
|
167
|
+
for i, d in enumerate(lst):
|
168
|
+
r = n - c
|
169
|
+
if (l := len(d)) >= r:
|
170
|
+
return self._chop(i, r)
|
171
|
+
c += l
|
172
|
+
|
173
|
+
return None
|
174
|
+
|
175
|
+
def read_until(self, delim: bytes = b'\n') -> ta.Optional[bytes]:
|
176
|
+
if not (lst := self._lst):
|
177
|
+
return None
|
178
|
+
|
179
|
+
for i, d in enumerate(lst):
|
180
|
+
if (p := d.find(delim)) >= 0:
|
181
|
+
return self._chop(i, p + len(delim))
|
182
|
+
|
183
|
+
return None
|
184
|
+
|
185
|
+
|
186
|
+
class IncrementalWriteBuffer:
|
187
|
+
def __init__(
|
188
|
+
self,
|
189
|
+
data: bytes,
|
190
|
+
*,
|
191
|
+
write_size: int = 0x10000,
|
192
|
+
) -> None:
|
193
|
+
super().__init__()
|
194
|
+
|
195
|
+
check_non_empty(data)
|
196
|
+
self._len = len(data)
|
197
|
+
self._write_size = write_size
|
198
|
+
|
199
|
+
self._lst = [
|
200
|
+
data[i:i + write_size]
|
201
|
+
for i in range(0, len(data), write_size)
|
202
|
+
]
|
203
|
+
self._pos = 0
|
204
|
+
|
205
|
+
@property
|
206
|
+
def rem(self) -> int:
|
207
|
+
return self._len - self._pos
|
208
|
+
|
209
|
+
def write(self, fn: ta.Callable[[bytes], int]) -> int:
|
210
|
+
lst = check_non_empty(self._lst)
|
211
|
+
|
212
|
+
t = 0
|
213
|
+
for i, d in enumerate(lst): # noqa
|
214
|
+
n = fn(check_non_empty(d))
|
215
|
+
if not n:
|
216
|
+
break
|
217
|
+
t += n
|
218
|
+
|
219
|
+
if t:
|
220
|
+
self._lst = [
|
221
|
+
*([d[n:]] if n < len(d) else []),
|
222
|
+
*lst[i + 1:],
|
223
|
+
]
|
224
|
+
self._pos += t
|
225
|
+
|
226
|
+
return t
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev131
|
4
4
|
Summary: omlish
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -39,7 +39,7 @@ Requires-Dist: pymysql~=1.1; extra == "all"
|
|
39
39
|
Requires-Dist: aiomysql~=0.2; extra == "all"
|
40
40
|
Requires-Dist: aiosqlite~=0.20; extra == "all"
|
41
41
|
Requires-Dist: asyncpg~=0.30; extra == "all"
|
42
|
-
Requires-Dist: apsw~=3.
|
42
|
+
Requires-Dist: apsw~=3.47; extra == "all"
|
43
43
|
Requires-Dist: sqlean.py~=3.45; extra == "all"
|
44
44
|
Requires-Dist: duckdb~=1.1; extra == "all"
|
45
45
|
Requires-Dist: pytest~=8.0; extra == "all"
|
@@ -85,7 +85,7 @@ Requires-Dist: pymysql~=1.1; extra == "sqldrivers"
|
|
85
85
|
Requires-Dist: aiomysql~=0.2; extra == "sqldrivers"
|
86
86
|
Requires-Dist: aiosqlite~=0.20; extra == "sqldrivers"
|
87
87
|
Requires-Dist: asyncpg~=0.30; extra == "sqldrivers"
|
88
|
-
Requires-Dist: apsw~=3.
|
88
|
+
Requires-Dist: apsw~=3.47; extra == "sqldrivers"
|
89
89
|
Requires-Dist: sqlean.py~=3.45; extra == "sqldrivers"
|
90
90
|
Requires-Dist: duckdb~=1.1; extra == "sqldrivers"
|
91
91
|
Provides-Extra: testing
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=CxGnj-UiRPlZgmgWoovDWrOnqpSEmBy_kqA7cdfSA3w,1431
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=d7BMVkW2N3aBZ6Tdsm0Fd2b0CcKLA6TPpoZPJHMAGDM,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
|
@@ -178,7 +178,7 @@ omlish/docker/helpers.py,sha256=9uyHpPVbsB2jqTzvU7jiLzTkDN1omqofse1w4B4GH5E,612
|
|
178
178
|
omlish/docker/hub.py,sha256=7LIuJGdA-N1Y1dmo50ynKM1KUTcnQM_5XbtPbdT_QLU,3940
|
179
179
|
omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,7068
|
180
180
|
omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
181
|
-
omlish/formats/dotenv.py,sha256=
|
181
|
+
omlish/formats/dotenv.py,sha256=qoDG4Ayu7B-8LjBBhcmNiLZW0_9LgCi3Ri2aPo9DEQ8,19314
|
182
182
|
omlish/formats/props.py,sha256=cek3JLFLIrpE76gvs8rs_B8yF4SpY8ooDH8apWsquwE,18953
|
183
183
|
omlish/formats/xml.py,sha256=ggiOwSERt4d9XmZwLZiDIh5qnFJS4jdmow9m9_9USps,1491
|
184
184
|
omlish/formats/yaml.py,sha256=wTW8ECG9jyA7qIFUqKZUro4KAKpN4IvcW_qhlrKveXM,6836
|
@@ -232,7 +232,7 @@ omlish/http/multipart.py,sha256=R9ycpHsXRcmh0uoc43aYb7BdWL-8kSQHe7J-M81aQZM,2240
|
|
232
232
|
omlish/http/sessions.py,sha256=VZ_WS5uiQG5y7i3u8oKuQMqf8dPKUOjFm_qk_0OvI8c,4793
|
233
233
|
omlish/http/sse.py,sha256=MDs9RvxQXoQliImcc6qK1ERajEYM7Q1l8xmr-9ceNBc,2315
|
234
234
|
omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
|
235
|
-
omlish/inject/__init__.py,sha256=
|
235
|
+
omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
|
236
236
|
omlish/inject/binder.py,sha256=DAbc8TZi5w8Mna0TUtq0mT4jeDVA7i7SlBtOFrh2swc,4185
|
237
237
|
omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
|
238
238
|
omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
|
@@ -248,20 +248,20 @@ omlish/inject/origins.py,sha256=OVQkiuRxx6ZtE8ZliufdndtFexcfpj-wZSDkUeGUCYM,534
|
|
248
248
|
omlish/inject/overrides.py,sha256=hrm243slCw_DDRbn3dK5QK1jfHezVokG-WYO2JaQOV8,535
|
249
249
|
omlish/inject/privates.py,sha256=hZOa_keY3KlXAzyiZ-sfN697UKXpkfXXNUIEmGT5TAA,641
|
250
250
|
omlish/inject/providers.py,sha256=Z6UzNCwRhKHHR0L5CyBMo4F-1M_xElLkPA6EKQWcqlw,754
|
251
|
-
omlish/inject/scopes.py,sha256=
|
251
|
+
omlish/inject/scopes.py,sha256=bxbpEPqRs9N61GDKD-4ZWXkB6xiLDrILLjcE2IvZEtM,1989
|
252
252
|
omlish/inject/types.py,sha256=11WVEPkZ-_8cv1BeTDRU-soIYxB_6x7dyWtsa2Iej9U,251
|
253
253
|
omlish/inject/utils.py,sha256=_UOZqA8IcLWPqf4Mcg9iIusQ5yxP_6Txg6PWtUYl23o,408
|
254
254
|
omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
255
255
|
omlish/inject/impl/bindings.py,sha256=8H586RCgmvwq53XBL9WMbb-1-Tdw_hh9zxIDCwcHA1c,414
|
256
256
|
omlish/inject/impl/elements.py,sha256=bJBbHce_eZyIua2wbcejMwd9Uv-QeYcQ-c5N1qOXSmU,5950
|
257
|
-
omlish/inject/impl/injector.py,sha256=
|
257
|
+
omlish/inject/impl/injector.py,sha256=8Pm2TbI-ySfibpHG2kFeF1nBHkh5v-NEynykljkQ8ew,7560
|
258
258
|
omlish/inject/impl/inspect.py,sha256=J0d2HJ-Z2-cHD4mJ0Kf5oJCOa2bMVG68Oh0Mhe3Cay4,3120
|
259
259
|
omlish/inject/impl/multis.py,sha256=rRIWNCiTGaSWQUz_jxEy8LUmzdJDAlG94sLHYDS-ncg,2048
|
260
260
|
omlish/inject/impl/origins.py,sha256=-cdcwz3BWb5LuC9Yn5ynYOwyPsKH06-kCc-3U0PxZ5w,1640
|
261
261
|
omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
|
262
262
|
omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
|
263
263
|
omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
|
264
|
-
omlish/inject/impl/scopes.py,sha256=
|
264
|
+
omlish/inject/impl/scopes.py,sha256=hKnzNieB-fJSFEXDP_QG1mCfIKoVFIfFlf9LiIt5tk4,5920
|
265
265
|
omlish/io/__init__.py,sha256=aaIEsXTSfytW-oEkUWczdUJ_ifFY7ihIpyidIbfjkwY,56
|
266
266
|
omlish/io/_abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
|
267
267
|
omlish/io/pyio.py,sha256=YB3g6yg64MzcFwbzKBo4adnbsbZ3FZMlOZfjNtWmYoc,95316
|
@@ -300,11 +300,11 @@ omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1
|
|
300
300
|
omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
|
301
301
|
omlish/lite/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
302
302
|
omlish/lite/cached.py,sha256=Fs-ljXVJmHBjAaHc-JuJXMEV4MNSX5c_KHZIM3AEaIw,694
|
303
|
-
omlish/lite/check.py,sha256=
|
303
|
+
omlish/lite/check.py,sha256=pQC412ffe_Zh7eHa4C1UYn6fA71Ls1vpVM0ZIOroPAY,1765
|
304
304
|
omlish/lite/contextmanagers.py,sha256=_jfNdpYvxkbKwyjQLbK-o69W89GoEuUfl_NrCosE9lU,1308
|
305
305
|
omlish/lite/docker.py,sha256=3IVZZtIm7-UdB2SwArmN_MosTva1_KifyYp3YWjODbE,337
|
306
|
-
omlish/lite/inject.py,sha256=
|
307
|
-
omlish/lite/io.py,sha256=
|
306
|
+
omlish/lite/inject.py,sha256=aRRmFb6azTKF208ogYwVCEopNZx7496Ta1GZmL_IKBA,23716
|
307
|
+
omlish/lite/io.py,sha256=3ECgUXdRnXyS6pGTSoVr6oB4moI38EpWxTq08zaTM-U,5339
|
308
308
|
omlish/lite/journald.py,sha256=f5Y2Q6-6O3iK_7MoGiwZwoQEOcP7LfkxxQNUR9tMjJM,3882
|
309
309
|
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
310
310
|
omlish/lite/logs.py,sha256=1pcGu0ekhVCcLUckLSP16VccnAoprjtl5Vkdfm7y1Wg,6184
|
@@ -319,6 +319,12 @@ omlish/lite/socketserver.py,sha256=Esy9dAo9dPnNavNx5hW52YZi5hv504a8XQUudMrPs2A,1
|
|
319
319
|
omlish/lite/strings.py,sha256=QURcE4-1pKVW8eT_5VCJpXaHDWR2dW2pYOChTJnZDiQ,1504
|
320
320
|
omlish/lite/subprocesses.py,sha256=_YwUpvfaC2pV5TMC9-Ivuw1Ao-YxteD3a1NQwGERft4,3380
|
321
321
|
omlish/lite/typing.py,sha256=U3-JaEnkDSYxK4tsu_MzUn3RP6qALBe5FXQXpD-licE,1090
|
322
|
+
omlish/lite/fdio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
323
|
+
omlish/lite/fdio/corohttp.py,sha256=5kzuM1cssA2D7rfknHFxylpjBNfA5tQSPkIRY2Ilapo,3825
|
324
|
+
omlish/lite/fdio/handlers.py,sha256=ukUiwF8-UCr4mzTTfOaTipC0k3k7THiHnohVdYfH69o,1341
|
325
|
+
omlish/lite/fdio/kqueue.py,sha256=4SvSMwNdkXpQbkMhyLqiZIjFGPUGSgD22yr9mpxT2fk,3153
|
326
|
+
omlish/lite/fdio/manager.py,sha256=-gMVzk4B1YTZS-d2TdM12woUme37pcNVUxNTiLe91lA,1250
|
327
|
+
omlish/lite/fdio/pollers.py,sha256=zSFi19SGQ2WKtMO_ONiqaJ_mbQmhrK59zgH5CqMYcu8,5434
|
322
328
|
omlish/lite/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
323
329
|
omlish/lite/http/coroserver.py,sha256=aBaYjP80yQHQxPxwi7PTYHub-fdRDKsMnB-tM8lBc2o,18095
|
324
330
|
omlish/lite/http/handlers.py,sha256=Yu0P3nqz-frklwCM2PbiWvoJNE-NqeTFLBvpNpqcdtA,753
|
@@ -482,9 +488,9 @@ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,329
|
|
482
488
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
483
489
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
484
490
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
485
|
-
omlish-0.0.0.
|
486
|
-
omlish-0.0.0.
|
487
|
-
omlish-0.0.0.
|
488
|
-
omlish-0.0.0.
|
489
|
-
omlish-0.0.0.
|
490
|
-
omlish-0.0.0.
|
491
|
+
omlish-0.0.0.dev131.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
492
|
+
omlish-0.0.0.dev131.dist-info/METADATA,sha256=V7J6J12IhBiLRFrCaAkvQgvB1VPvsZSzu32VsYQGSdE,4173
|
493
|
+
omlish-0.0.0.dev131.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
494
|
+
omlish-0.0.0.dev131.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
495
|
+
omlish-0.0.0.dev131.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
496
|
+
omlish-0.0.0.dev131.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|