omlish 0.0.0.dev350__py3-none-any.whl → 0.0.0.dev352__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.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/__about__.py +2 -2
- omlish/http/headers.py +28 -1
- omlish/io/compress/gzip.py +1 -1
- omlish/io/coro/__init__.py +2 -0
- omlish/io/coro/stepped.py +32 -0
- omlish/iterators/__init__.py +0 -1
- omlish/iterators/tools.py +0 -14
- omlish/lang/__init__.py +1 -0
- omlish/lang/iterables.py +14 -0
- omlish/marshal/__init__.py +4 -0
- omlish/marshal/polymorphism/standard.py +22 -0
- omlish/term/confirm.py +40 -0
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/RECORD +18 -16
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev350.dist-info → omlish-0.0.0.dev352.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/http/headers.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
TODO:
|
|
3
3
|
- handle secrets (but they're strs..)
|
|
4
4
|
"""
|
|
5
|
+
import http.client
|
|
5
6
|
import typing as ta
|
|
6
7
|
|
|
7
8
|
from .. import cached
|
|
@@ -11,9 +12,15 @@ from .. import collections as col
|
|
|
11
12
|
|
|
12
13
|
StrOrBytes: ta.TypeAlias = str | bytes
|
|
13
14
|
|
|
15
|
+
|
|
16
|
+
##
|
|
17
|
+
|
|
18
|
+
|
|
14
19
|
CanHttpHeaders: ta.TypeAlias = ta.Union[
|
|
15
20
|
'HttpHeaders',
|
|
16
21
|
|
|
22
|
+
http.client.HTTPMessage,
|
|
23
|
+
|
|
17
24
|
ta.Mapping[str, str],
|
|
18
25
|
ta.Mapping[str, ta.Sequence[str]],
|
|
19
26
|
ta.Mapping[str, str | ta.Sequence[str]],
|
|
@@ -42,7 +49,10 @@ class HttpHeaders:
|
|
|
42
49
|
|
|
43
50
|
# TODO: optimized storage, 'use-whats-given'
|
|
44
51
|
lst: list[tuple[bytes, bytes]] = []
|
|
45
|
-
if isinstance(src,
|
|
52
|
+
if isinstance(src, http.client.HTTPMessage):
|
|
53
|
+
lst = [(self._as_bytes(k), self._as_bytes(v)) for k, v in src.items()]
|
|
54
|
+
|
|
55
|
+
elif isinstance(src, ta.Mapping):
|
|
46
56
|
for k, v in src.items():
|
|
47
57
|
if isinstance(v, (str, bytes)):
|
|
48
58
|
lst.append((self._as_bytes(k), self._as_bytes(v)))
|
|
@@ -181,6 +191,23 @@ class HttpHeaders:
|
|
|
181
191
|
def items(self) -> ta.Iterable[tuple[bytes, bytes]]:
|
|
182
192
|
return self._lst
|
|
183
193
|
|
|
194
|
+
#
|
|
195
|
+
|
|
196
|
+
def update(
|
|
197
|
+
self,
|
|
198
|
+
*items: tuple[bytes, bytes], # FIXME: all arg types
|
|
199
|
+
override: bool = False,
|
|
200
|
+
) -> 'HttpHeaders':
|
|
201
|
+
if override:
|
|
202
|
+
nks = {k.lower() for k, v in items}
|
|
203
|
+
src = [(k, v) for k, v in self.items() if k.lower() not in nks]
|
|
204
|
+
else:
|
|
205
|
+
src = list(self.items())
|
|
206
|
+
return HttpHeaders([
|
|
207
|
+
*src,
|
|
208
|
+
*items,
|
|
209
|
+
])
|
|
210
|
+
|
|
184
211
|
|
|
185
212
|
def headers(src: CanHttpHeaders) -> HttpHeaders:
|
|
186
213
|
return HttpHeaders(src)
|
omlish/io/compress/gzip.py
CHANGED
|
@@ -313,7 +313,7 @@ class IncrementalGzipDecompressor:
|
|
|
313
313
|
crc = _zero_crc()
|
|
314
314
|
stream_size = 0 # Decompressed size of unconcatenated stream
|
|
315
315
|
last_mtime = yield from self._read_gzip_header(rdr)
|
|
316
|
-
if
|
|
316
|
+
if last_mtime is None:
|
|
317
317
|
check.none((yield b''))
|
|
318
318
|
return
|
|
319
319
|
new_member = False
|
omlish/io/coro/__init__.py
CHANGED
omlish/io/coro/stepped.py
CHANGED
|
@@ -190,3 +190,35 @@ def buffer_bytes_stepped_reader_coro(g: BytesSteppedReaderCoro) -> BytesSteppedC
|
|
|
190
190
|
return
|
|
191
191
|
else:
|
|
192
192
|
break
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
##
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
@lang.autostart
|
|
199
|
+
def iterable_bytes_stepped_coro(g: BytesSteppedCoro) -> ta.Generator[ta.Iterator[bytes], bytes, None]:
|
|
200
|
+
i: bytes | None = check.isinstance((yield None), bytes) # type: ignore[misc]
|
|
201
|
+
eof = False
|
|
202
|
+
|
|
203
|
+
def f() -> ta.Iterator[bytes]:
|
|
204
|
+
nonlocal i
|
|
205
|
+
while True:
|
|
206
|
+
o = g.send(i)
|
|
207
|
+
i = None
|
|
208
|
+
|
|
209
|
+
if isinstance(o, bytes):
|
|
210
|
+
yield o
|
|
211
|
+
if not o:
|
|
212
|
+
nonlocal eof
|
|
213
|
+
eof = True
|
|
214
|
+
return
|
|
215
|
+
elif o is None:
|
|
216
|
+
return
|
|
217
|
+
else:
|
|
218
|
+
raise TypeError(o)
|
|
219
|
+
|
|
220
|
+
while True:
|
|
221
|
+
if eof:
|
|
222
|
+
return
|
|
223
|
+
|
|
224
|
+
i = (yield f()) # noqa
|
omlish/iterators/__init__.py
CHANGED
omlish/iterators/tools.py
CHANGED
|
@@ -47,20 +47,6 @@ def take(n: int, iterable: ta.Iterable[T]) -> list[T]:
|
|
|
47
47
|
return list(itertools.islice(iterable, n))
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
def chunk(n: int, iterable: ta.Iterable[T], strict: bool = False) -> ta.Iterator[list[T]]:
|
|
51
|
-
# TODO: remove with 3.13 - 3.12 doesn't support strict
|
|
52
|
-
iterator = iter(functools.partial(take, n, iter(iterable)), [])
|
|
53
|
-
if strict:
|
|
54
|
-
def ret():
|
|
55
|
-
for chunk in iterator:
|
|
56
|
-
if len(chunk) != n:
|
|
57
|
-
raise ValueError('iterable is not divisible by n.')
|
|
58
|
-
yield chunk
|
|
59
|
-
return iter(ret())
|
|
60
|
-
else:
|
|
61
|
-
return iterator
|
|
62
|
-
|
|
63
|
-
|
|
64
50
|
def merge_on(
|
|
65
51
|
function: ta.Callable[[T], U],
|
|
66
52
|
*its: ta.Iterable[T],
|
omlish/lang/__init__.py
CHANGED
omlish/lang/iterables.py
CHANGED
|
@@ -33,6 +33,20 @@ def peek(vs: ta.Iterable[T]) -> tuple[T, ta.Iterator[T]]:
|
|
|
33
33
|
return v, itertools.chain(iter((v,)), it)
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
def chunk(n: int, iterable: ta.Iterable[T], strict: bool = False) -> ta.Iterator[list[T]]:
|
|
37
|
+
# TODO: replace with itertools.batched in 3.13 - 3.12 doesn't support strict
|
|
38
|
+
iterator = iter(functools.partial(take, n, iter(iterable)), [])
|
|
39
|
+
if strict:
|
|
40
|
+
def ret():
|
|
41
|
+
for c in iterator:
|
|
42
|
+
if len(c) != n:
|
|
43
|
+
raise ValueError('iterable is not divisible by n.')
|
|
44
|
+
yield c
|
|
45
|
+
return iter(ret())
|
|
46
|
+
else:
|
|
47
|
+
return iterator
|
|
48
|
+
|
|
49
|
+
|
|
36
50
|
def interleave(vs: ta.Iterable[T], d: T) -> ta.Iterable[T]:
|
|
37
51
|
for i, v in enumerate(vs):
|
|
38
52
|
if i:
|
omlish/marshal/__init__.py
CHANGED
|
@@ -123,6 +123,10 @@ from .polymorphism.metadata import ( # noqa
|
|
|
123
123
|
polymorphism_from_subclasses,
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
+
from .polymorphism.standard import ( # noqa
|
|
127
|
+
standard_polymorphism_factories,
|
|
128
|
+
)
|
|
129
|
+
|
|
126
130
|
from .polymorphism.unions import ( # noqa
|
|
127
131
|
PRIMITIVE_UNION_TYPES,
|
|
128
132
|
PolymorphismUnionMarshalerFactory,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import typing as ta
|
|
2
|
+
|
|
3
|
+
from ..base import MarshalerFactory
|
|
4
|
+
from ..base import UnmarshalerFactory
|
|
5
|
+
from .marshal import PolymorphismMarshalerFactory
|
|
6
|
+
from .metadata import Polymorphism
|
|
7
|
+
from .metadata import TypeTagging
|
|
8
|
+
from .metadata import WrapperTypeTagging
|
|
9
|
+
from .unmarshal import PolymorphismUnmarshalerFactory
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
##
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def standard_polymorphism_factories(
|
|
16
|
+
poly: Polymorphism,
|
|
17
|
+
tt: TypeTagging = WrapperTypeTagging(),
|
|
18
|
+
) -> ta.Sequence[MarshalerFactory | UnmarshalerFactory]:
|
|
19
|
+
return [
|
|
20
|
+
PolymorphismMarshalerFactory(poly, tt),
|
|
21
|
+
PolymorphismUnmarshalerFactory(poly, tt),
|
|
22
|
+
]
|
omlish/term/confirm.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import typing as ta
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def confirm_action(
|
|
9
|
+
message: str | None = None,
|
|
10
|
+
*,
|
|
11
|
+
stdin: ta.Any | None = None,
|
|
12
|
+
stdout: ta.Any | None = None,
|
|
13
|
+
) -> bool:
|
|
14
|
+
if stdin is None:
|
|
15
|
+
stdin = sys.stdin
|
|
16
|
+
if not stdin.isatty():
|
|
17
|
+
raise OSError(f'stdin {stdin!r} is not a tty')
|
|
18
|
+
|
|
19
|
+
if stdout is None:
|
|
20
|
+
stdout = sys.stdout
|
|
21
|
+
if not stdout.isatty():
|
|
22
|
+
raise OSError(f'stdout {stdout!r} is not a tty')
|
|
23
|
+
|
|
24
|
+
while True:
|
|
25
|
+
if message and not message[-1].isspace():
|
|
26
|
+
if '\n' in message:
|
|
27
|
+
prefix = message + '\n\n'
|
|
28
|
+
else:
|
|
29
|
+
prefix = message + ' '
|
|
30
|
+
else:
|
|
31
|
+
prefix = ''
|
|
32
|
+
|
|
33
|
+
c = input(f'{prefix}(y/n): ').lower().strip()
|
|
34
|
+
|
|
35
|
+
if c == 'y':
|
|
36
|
+
return True
|
|
37
|
+
elif c == 'n':
|
|
38
|
+
return False
|
|
39
|
+
else:
|
|
40
|
+
print("Please enter 'y' for yes or 'n' for no.")
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
omlish/.manifests.json,sha256=orgsRvtpHu8tdhaCvlP9v3P495OJopYYiHKjK68WtWg,8587
|
|
2
|
-
omlish/__about__.py,sha256=
|
|
2
|
+
omlish/__about__.py,sha256=1QrsZ7a4tfaOZ2X4I1KvbNEhVOyaYwWqS4vdXo7oCaM,3478
|
|
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
|
|
@@ -320,7 +320,7 @@ omlish/http/cookies.py,sha256=uuOYlHR6e2SC3GM41V0aozK10nef9tYg83Scqpn5-HM,6351
|
|
|
320
320
|
omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
|
|
321
321
|
omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
|
|
322
322
|
omlish/http/handlers.py,sha256=XHv35iLAKAsnftGyJa27Ds9asfCmUtqMRVmrzOKJqck,3902
|
|
323
|
-
omlish/http/headers.py,sha256=
|
|
323
|
+
omlish/http/headers.py,sha256=Ft7jsjDegcpzkXk2rk3uw8bEFIB7vifIfLMMwATDo1A,5716
|
|
324
324
|
omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
|
|
325
325
|
omlish/http/jwt.py,sha256=6Rigk1WrJ059DY4jDIKnxjnChWb7aFdermj2AI2DSvk,4346
|
|
326
326
|
omlish/http/multipart.py,sha256=R9ycpHsXRcmh0uoc43aYb7BdWL-8kSQHe7J-M81aQZM,2240
|
|
@@ -383,28 +383,28 @@ omlish/io/compress/base.py,sha256=zwPnicyrEY-zersxdhxGHXxn02ycl8ew2uZXEecJea4,61
|
|
|
383
383
|
omlish/io/compress/brotli.py,sha256=sNDX5HmEVqg9_xID5NTFPAWuvlNPw5ixfOnnIWwZf_o,1189
|
|
384
384
|
omlish/io/compress/bz2.py,sha256=HtwBuBYHJ3MyWO9xJ0XhWpyIYTA3OszLrpu_J4kRRPA,1534
|
|
385
385
|
omlish/io/compress/codecs.py,sha256=VBc_MAz0W8lVKTKavot3aVKOuPmEUquzarMtpyuteiU,1804
|
|
386
|
-
omlish/io/compress/gzip.py,sha256=
|
|
386
|
+
omlish/io/compress/gzip.py,sha256=f5G-uqzL3HYF58dIolb8TghHeSGVSVodwW5vys1ouvk,12217
|
|
387
387
|
omlish/io/compress/lz4.py,sha256=qaze1yVXexjJyN18Adh8fbTm_5pEeyytx66KoMUNpCU,2759
|
|
388
388
|
omlish/io/compress/lzma.py,sha256=qDyshBgBUSPcZpAyXiRXnqI7zx7x60UpPxn8K3nN8aM,2469
|
|
389
389
|
omlish/io/compress/snappy.py,sha256=JFoH_9l0Tr9AGaQ0jHRiP4TsFnG071l27mprCBcqt4c,704
|
|
390
390
|
omlish/io/compress/zlib.py,sha256=dE38zBY4qNihUYtPjSpNRXweiw6mB6xsYqsBJklTDXM,2364
|
|
391
391
|
omlish/io/compress/zstd.py,sha256=wik_HWLq_8fGAJgGyMGq9fhFQovot1aCH4lwMpihQmg,949
|
|
392
|
-
omlish/io/coro/__init__.py,sha256=
|
|
392
|
+
omlish/io/coro/__init__.py,sha256=Mr8-GoDzOlA2sKmaDxuov2vPmjX_IeB_49I8dTSvjvA,1080
|
|
393
393
|
omlish/io/coro/consts.py,sha256=4r6IMLBMic6MJHVn9UiORIkkPAuxsqtzFT3KV0fatC0,33
|
|
394
394
|
omlish/io/coro/direct.py,sha256=Y--rP3wvBAYMeYctokb5IGd8UyQGmEFChyKISmRg5k0,294
|
|
395
395
|
omlish/io/coro/readers.py,sha256=9VcXuBQ7BSoFen8UVuYFwnl2jJVjyilWV7QeqLNQtKU,4131
|
|
396
|
-
omlish/io/coro/stepped.py,sha256=
|
|
396
|
+
omlish/io/coro/stepped.py,sha256=xk7ODs_kSz_6IAmgW9682pMKGCuSVpzcGNvOsjoFzwI,5643
|
|
397
397
|
omlish/io/fdio/__init__.py,sha256=XJMieft-Z-JEkpeARn0M1Jj7HYCjRHwfs2QfE8gdzQs,137
|
|
398
398
|
omlish/io/fdio/handlers.py,sha256=Bw2jhrNili7XRlsf63mlSkrFPHmWM2jelb3BmWqy3Ok,1361
|
|
399
399
|
omlish/io/fdio/kqueue.py,sha256=xRxDPKcOw5_bMDS0buF5xi12WHok4reNnnaYTX4kkCk,3843
|
|
400
400
|
omlish/io/fdio/manager.py,sha256=I4KDZGo8fkBe0LAhpN0rmP9KJHyXRynypcCYsTzEjS4,1261
|
|
401
401
|
omlish/io/fdio/pollers.py,sha256=nhSbzL8N9LBVsbGZngJySeCPqMjkax4NNiFgB7CLbfk,5513
|
|
402
|
-
omlish/iterators/__init__.py,sha256=
|
|
402
|
+
omlish/iterators/__init__.py,sha256=yMPzA1GMTxP96FR1ruaWpNCr4_tRczhKq-cUpi5J_58,347
|
|
403
403
|
omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8,3159
|
|
404
404
|
omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
|
|
405
|
-
omlish/iterators/tools.py,sha256=
|
|
405
|
+
omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
|
|
406
406
|
omlish/iterators/unique.py,sha256=Nw0pSaNEcHAkve0ugfLPvJcirDOn9ECyC5wIL8JlJKI,1395
|
|
407
|
-
omlish/lang/__init__.py,sha256=
|
|
407
|
+
omlish/lang/__init__.py,sha256=vk7k-NT3QWB_YcBPAO6_ml2z3feVLuq69pweWX8ECOk,6445
|
|
408
408
|
omlish/lang/attrs.py,sha256=zFiVuGVOq88x45464T_LxDa-ZEq_RD9zJLq2zeVEBDc,5105
|
|
409
409
|
omlish/lang/casing.py,sha256=cFUlbDdXLhwnWwcYx4qnM5c4zGX7hIRUfcjiZbxUD28,4636
|
|
410
410
|
omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
|
|
@@ -417,7 +417,7 @@ omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
|
|
|
417
417
|
omlish/lang/functions.py,sha256=qNqzWF6vI6PGTzKhgkhnNXP8e1gSerb8GsHG3_wVBP8,6386
|
|
418
418
|
omlish/lang/generators.py,sha256=a4D5HU_mySs2T2z3xCmE_s3t4QJkj0YRrK4-hhpGd0A,5197
|
|
419
419
|
omlish/lang/imports.py,sha256=y9W9Y-d_cQ35QCLuSIPoa6vnEqSErFCz8b-34IH128U,10552
|
|
420
|
-
omlish/lang/iterables.py,sha256=
|
|
420
|
+
omlish/lang/iterables.py,sha256=y1SX2Co3VsOeX2wlfFF7K3rwLvF7Dtre7VY6EpfwAwA,3338
|
|
421
421
|
omlish/lang/objects.py,sha256=ZsibJwNp1EXorbaObm9TlCNtuuM65snCmVb7H4_llqI,6116
|
|
422
422
|
omlish/lang/outcomes.py,sha256=mpFy_VoM-b74L1aCFsjsZVUHx_icZ1AHMOKeVesjOp4,8628
|
|
423
423
|
omlish/lang/overrides.py,sha256=IBzK6ljfLX6TLgIyKTSjhqTLcuKRkQNVtEOnBLS4nuA,2095
|
|
@@ -490,7 +490,7 @@ omlish/manifests/base.py,sha256=5CmayiuzdXXv9hB5tDnWqfAosAoEQ26YG0B-emkiTXU,941
|
|
|
490
490
|
omlish/manifests/load.py,sha256=XYSWJve4dYSaXNO4vSTv5REB6dqJEy9u-S0hoWOx8ko,6661
|
|
491
491
|
omlish/manifests/static.py,sha256=7YwOVh_Ek9_aTrWsWNO8kWS10_j4K7yv3TpXZSHsvDY,501
|
|
492
492
|
omlish/manifests/types.py,sha256=4iDPXWpJnLQkxnHtKqPNz3qdPgKzLpB3E5MTf9jYW8s,312
|
|
493
|
-
omlish/marshal/__init__.py,sha256=
|
|
493
|
+
omlish/marshal/__init__.py,sha256=SKPETuXI-XbjimU7nlJWo-ioANNzqn6IFBXkbqoPgIw,3480
|
|
494
494
|
omlish/marshal/base.py,sha256=Q0ZRsz5z0NTI6PeWPc9mdMstJryDDbeIAdpKH9-SDps,11427
|
|
495
495
|
omlish/marshal/errors.py,sha256=g5XJyTHd__8lfwQ4KwgK-E5WR6MoNTMrqKP2U_QRQQQ,307
|
|
496
496
|
omlish/marshal/factories.py,sha256=Q926jSVjaQLEmStnHLhm_c_vqEysN1LnDCwAsFLIzXw,2970
|
|
@@ -519,6 +519,7 @@ omlish/marshal/objects/unmarshal.py,sha256=IXIl_iokvVCSWYhkRORrWP_sE1DVklnrUErGW
|
|
|
519
519
|
omlish/marshal/polymorphism/__init__.py,sha256=e2UTrSL0qp7w_1vkdxDWd7sXlWhep2KPV49-BB64ma8,130
|
|
520
520
|
omlish/marshal/polymorphism/marshal.py,sha256=wVaUxiHMJwyEWfQIE3cuEcJFSMVNJhpdJoa1yRgBPUE,2260
|
|
521
521
|
omlish/marshal/polymorphism/metadata.py,sha256=Tvrjvi1kVhBbuljcQI60BXOIPEh-0_MGHXZDP-YKg1M,3335
|
|
522
|
+
omlish/marshal/polymorphism/standard.py,sha256=Gj_fhmkWlY99oYjceP1N9SVOnaPCHRwtO812kJYIuhA,603
|
|
522
523
|
omlish/marshal/polymorphism/unions.py,sha256=NDXh2aVCLUFfi10qvIZR39prtHwjndQiVl13XcIKV3k,4386
|
|
523
524
|
omlish/marshal/polymorphism/unmarshal.py,sha256=5jJnDarY85PuGTeL_9bwoeHjNIZnfVN3zr5rVhmNoQc,2451
|
|
524
525
|
omlish/marshal/singular/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -735,6 +736,7 @@ omlish/subprocesses/wrap.py,sha256=AhGV8rsnaVUMQCFYKkrjj35fs3O-VJLZC1hZ14dz3C8,7
|
|
|
735
736
|
omlish/term/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
736
737
|
omlish/term/codes.py,sha256=fDRhUYzCzllcvCfMMgEroJaQoxqFsfTivpYdVmnwcCE,6390
|
|
737
738
|
omlish/term/coloring.py,sha256=MCFYV_JTvEObTCJE12wfalW8OFFQB_KIFBKDtfES6Nk,2559
|
|
739
|
+
omlish/term/confirm.py,sha256=5aqZnfy60K9CBSfXDsD-zA84HJm5fBWb_Y1T1x8gRnw,918
|
|
738
740
|
omlish/term/progressbar.py,sha256=FtQqeIJCwSDWzraeG5uI9jKifQG1lOOyTpukJEpH22A,3672
|
|
739
741
|
omlish/term/vt100/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
740
742
|
omlish/term/vt100/c.py,sha256=cAhDKXI81PZRtFmTotfad3HZGREP1QnOlWYoAw6v-Fw,3532
|
|
@@ -864,9 +866,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
|
864
866
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
|
865
867
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
|
866
868
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
|
867
|
-
omlish-0.0.0.
|
|
868
|
-
omlish-0.0.0.
|
|
869
|
-
omlish-0.0.0.
|
|
870
|
-
omlish-0.0.0.
|
|
871
|
-
omlish-0.0.0.
|
|
872
|
-
omlish-0.0.0.
|
|
869
|
+
omlish-0.0.0.dev352.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
870
|
+
omlish-0.0.0.dev352.dist-info/METADATA,sha256=jtHXPRnomM-Ci8TwuWsGIHCGIR2pFERjLhvwLc9hcZE,4416
|
|
871
|
+
omlish-0.0.0.dev352.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
872
|
+
omlish-0.0.0.dev352.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
|
873
|
+
omlish-0.0.0.dev352.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
874
|
+
omlish-0.0.0.dev352.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|