omlish 0.0.0.dev129__py3-none-any.whl → 0.0.0.dev131__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 +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
|