omlish 0.0.0.dev162__py3-none-any.whl → 0.0.0.dev163__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/.manifests.json +228 -0
- omlish/__about__.py +2 -2
- omlish/codecs/__init__.py +69 -0
- omlish/codecs/base.py +102 -0
- omlish/codecs/bytes.py +119 -0
- omlish/codecs/chain.py +23 -0
- omlish/codecs/funcs.py +28 -0
- omlish/codecs/registry.py +139 -0
- omlish/codecs/standard.py +4 -0
- omlish/codecs/text.py +217 -0
- omlish/formats/cbor.py +31 -0
- omlish/formats/codecs.py +93 -0
- omlish/formats/json/codecs.py +33 -0
- omlish/formats/json5.py +31 -0
- omlish/formats/pickle.py +31 -0
- omlish/formats/toml.py +17 -0
- omlish/formats/yaml.py +18 -0
- omlish/io/compress/brotli.py +15 -1
- omlish/io/compress/bz2.py +14 -0
- omlish/io/compress/codecs.py +58 -0
- omlish/io/compress/gzip.py +11 -0
- omlish/io/compress/lz4.py +14 -0
- omlish/io/compress/lzma.py +14 -0
- omlish/io/compress/snappy.py +14 -0
- omlish/io/compress/zlib.py +14 -0
- omlish/io/compress/zstd.py +14 -0
- omlish/lang/__init__.py +1 -0
- omlish/lang/functions.py +11 -0
- omlish/manifests/load.py +44 -6
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/RECORD +35 -20
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev162.dist-info → omlish-0.0.0.dev163.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
import dataclasses as dc
|
2
|
+
import typing as ta
|
3
|
+
|
4
|
+
from ... import codecs
|
5
|
+
from .base import Compression
|
6
|
+
|
7
|
+
|
8
|
+
##
|
9
|
+
|
10
|
+
|
11
|
+
@dc.dataclass(frozen=True)
|
12
|
+
class CompressionEagerCodec(codecs.EagerCodec[bytes, bytes]):
|
13
|
+
compression: Compression
|
14
|
+
|
15
|
+
def encode(self, i: bytes) -> bytes:
|
16
|
+
return self.compression.compress(i)
|
17
|
+
|
18
|
+
def decode(self, o: bytes) -> bytes:
|
19
|
+
return self.compression.decompress(o)
|
20
|
+
|
21
|
+
|
22
|
+
##
|
23
|
+
|
24
|
+
|
25
|
+
class CompressionCodec(codecs.Codec):
|
26
|
+
pass
|
27
|
+
|
28
|
+
|
29
|
+
def make_compression_codec(
|
30
|
+
name: str,
|
31
|
+
cls: type[Compression],
|
32
|
+
*,
|
33
|
+
aliases: ta.Collection[str] | None = None,
|
34
|
+
) -> CompressionCodec:
|
35
|
+
return CompressionCodec(
|
36
|
+
name=name,
|
37
|
+
aliases=aliases,
|
38
|
+
|
39
|
+
input=bytes,
|
40
|
+
output=bytes,
|
41
|
+
|
42
|
+
new=lambda *args, **kwargs: CompressionEagerCodec(cls(*args, **kwargs)),
|
43
|
+
)
|
44
|
+
|
45
|
+
|
46
|
+
##
|
47
|
+
|
48
|
+
|
49
|
+
def make_compression_lazy_loaded_codec(
|
50
|
+
mod_name: str,
|
51
|
+
attr_name: str,
|
52
|
+
codec: CompressionCodec,
|
53
|
+
) -> codecs.LazyLoadedCodec:
|
54
|
+
return codecs.LazyLoadedCodec.new(
|
55
|
+
mod_name,
|
56
|
+
attr_name,
|
57
|
+
codec,
|
58
|
+
)
|
omlish/io/compress/gzip.py
CHANGED
@@ -48,6 +48,8 @@ from ..generators import BytesSteppedReaderGenerator
|
|
48
48
|
from ..generators.readers import PrependableBytesGeneratorReader
|
49
49
|
from .base import Compression
|
50
50
|
from .base import IncrementalCompression
|
51
|
+
from .codecs import make_compression_codec
|
52
|
+
from .codecs import make_compression_lazy_loaded_codec
|
51
53
|
|
52
54
|
|
53
55
|
if ta.TYPE_CHECKING:
|
@@ -337,3 +339,12 @@ class IncrementalGzipDecompressor:
|
|
337
339
|
stream_size += len(uncompress)
|
338
340
|
pos += len(uncompress)
|
339
341
|
check.none((yield uncompress))
|
342
|
+
|
343
|
+
|
344
|
+
##
|
345
|
+
|
346
|
+
|
347
|
+
GZIP_CODEC = make_compression_codec('gzip', GzipCompression, aliases=['gz'])
|
348
|
+
|
349
|
+
# @omlish-manifest
|
350
|
+
_GZIP_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'GZIP_CODEC', GZIP_CODEC)
|
omlish/io/compress/lz4.py
CHANGED
@@ -6,6 +6,8 @@ from ... import lang
|
|
6
6
|
from ..generators import BytesSteppedGenerator
|
7
7
|
from .base import Compression
|
8
8
|
from .base import IncrementalCompression
|
9
|
+
from .codecs import make_compression_codec
|
10
|
+
from .codecs import make_compression_lazy_loaded_codec
|
9
11
|
|
10
12
|
|
11
13
|
if ta.TYPE_CHECKING:
|
@@ -14,6 +16,9 @@ else:
|
|
14
16
|
lz4_frame = lang.proxy_import('lz4.frame')
|
15
17
|
|
16
18
|
|
19
|
+
##
|
20
|
+
|
21
|
+
|
17
22
|
@dc.dataclass(frozen=True, kw_only=True)
|
18
23
|
class Lz4Compression(Compression, IncrementalCompression):
|
19
24
|
level: int = 0
|
@@ -75,3 +80,12 @@ class Lz4Compression(Compression, IncrementalCompression):
|
|
75
80
|
return
|
76
81
|
if (o := decompressor.decompress(i)):
|
77
82
|
yield o
|
83
|
+
|
84
|
+
|
85
|
+
##
|
86
|
+
|
87
|
+
|
88
|
+
LZ4_CODEC = make_compression_codec('lz4', Lz4Compression)
|
89
|
+
|
90
|
+
# @omlish-manifest
|
91
|
+
_LZ4_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'LZ4_CODEC', LZ4_CODEC)
|
omlish/io/compress/lzma.py
CHANGED
@@ -9,6 +9,8 @@ from .adapters import CompressorObjectIncrementalAdapter
|
|
9
9
|
from .adapters import DecompressorObjectIncrementalAdapter
|
10
10
|
from .base import Compression
|
11
11
|
from .base import IncrementalCompression
|
12
|
+
from .codecs import make_compression_codec
|
13
|
+
from .codecs import make_compression_lazy_loaded_codec
|
12
14
|
|
13
15
|
|
14
16
|
if ta.TYPE_CHECKING:
|
@@ -17,6 +19,9 @@ else:
|
|
17
19
|
lzma = lang.proxy_import('lzma')
|
18
20
|
|
19
21
|
|
22
|
+
##
|
23
|
+
|
24
|
+
|
20
25
|
@dc.dataclass(frozen=True, kw_only=True)
|
21
26
|
class LzmaCompression(Compression, IncrementalCompression):
|
22
27
|
format: int | None = None
|
@@ -65,3 +70,12 @@ class LzmaCompression(Compression, IncrementalCompression):
|
|
65
70
|
),
|
66
71
|
trailing_error=lzma.LZMAError,
|
67
72
|
)()
|
73
|
+
|
74
|
+
|
75
|
+
##
|
76
|
+
|
77
|
+
|
78
|
+
LZMA_CODEC = make_compression_codec('lzma', LzmaCompression)
|
79
|
+
|
80
|
+
# @omlish-manifest
|
81
|
+
_LZMA_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'LZMA_CODEC', LZMA_CODEC)
|
omlish/io/compress/snappy.py
CHANGED
@@ -3,6 +3,8 @@ import typing as ta
|
|
3
3
|
|
4
4
|
from ... import lang
|
5
5
|
from .base import Compression
|
6
|
+
from .codecs import make_compression_codec
|
7
|
+
from .codecs import make_compression_lazy_loaded_codec
|
6
8
|
|
7
9
|
|
8
10
|
if ta.TYPE_CHECKING:
|
@@ -11,6 +13,9 @@ else:
|
|
11
13
|
snappy = lang.proxy_import('snappy')
|
12
14
|
|
13
15
|
|
16
|
+
##
|
17
|
+
|
18
|
+
|
14
19
|
@dc.dataclass(frozen=True)
|
15
20
|
class SnappyCompression(Compression):
|
16
21
|
def compress(self, d: bytes) -> bytes:
|
@@ -18,3 +23,12 @@ class SnappyCompression(Compression):
|
|
18
23
|
|
19
24
|
def decompress(self, d: bytes) -> bytes:
|
20
25
|
return snappy.decompress(d)
|
26
|
+
|
27
|
+
|
28
|
+
##
|
29
|
+
|
30
|
+
|
31
|
+
SNAPPY_CODEC = make_compression_codec('snappy', SnappyCompression)
|
32
|
+
|
33
|
+
# @omlish-manifest
|
34
|
+
_SNAPPY_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'SNAPPY_CODEC', SNAPPY_CODEC)
|
omlish/io/compress/zlib.py
CHANGED
@@ -9,6 +9,8 @@ from .adapters import CompressorObjectIncrementalAdapter
|
|
9
9
|
from .adapters import DecompressorObjectIncrementalAdapter
|
10
10
|
from .base import Compression
|
11
11
|
from .base import IncrementalCompression
|
12
|
+
from .codecs import make_compression_codec
|
13
|
+
from .codecs import make_compression_lazy_loaded_codec
|
12
14
|
|
13
15
|
|
14
16
|
if ta.TYPE_CHECKING:
|
@@ -17,6 +19,9 @@ else:
|
|
17
19
|
zlib = lang.proxy_import('zlib')
|
18
20
|
|
19
21
|
|
22
|
+
##
|
23
|
+
|
24
|
+
|
20
25
|
@dc.dataclass(frozen=True, kw_only=True)
|
21
26
|
class ZlibCompression(Compression, IncrementalCompression):
|
22
27
|
level: int = 9
|
@@ -58,3 +63,12 @@ class ZlibCompression(Compression, IncrementalCompression):
|
|
58
63
|
),
|
59
64
|
trailing_error=OSError,
|
60
65
|
)()
|
66
|
+
|
67
|
+
|
68
|
+
##
|
69
|
+
|
70
|
+
|
71
|
+
ZLIB_CODEC = make_compression_codec('zlib', ZlibCompression)
|
72
|
+
|
73
|
+
# @omlish-manifest
|
74
|
+
_ZLIB_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'ZLIB_CODEC', ZLIB_CODEC)
|
omlish/io/compress/zstd.py
CHANGED
@@ -3,6 +3,8 @@ import typing as ta
|
|
3
3
|
|
4
4
|
from ... import lang
|
5
5
|
from .base import Compression
|
6
|
+
from .codecs import make_compression_codec
|
7
|
+
from .codecs import make_compression_lazy_loaded_codec
|
6
8
|
|
7
9
|
|
8
10
|
if ta.TYPE_CHECKING:
|
@@ -11,6 +13,9 @@ else:
|
|
11
13
|
zstandard = lang.proxy_import('zstandard')
|
12
14
|
|
13
15
|
|
16
|
+
##
|
17
|
+
|
18
|
+
|
14
19
|
@dc.dataclass(frozen=True, kw_only=True)
|
15
20
|
class ZstdCompression(Compression):
|
16
21
|
level: int | None = None
|
@@ -28,3 +33,12 @@ class ZstdCompression(Compression):
|
|
28
33
|
d,
|
29
34
|
max_output_size=self.max_output_size,
|
30
35
|
)
|
36
|
+
|
37
|
+
|
38
|
+
##
|
39
|
+
|
40
|
+
|
41
|
+
ZSTD_CODEC = make_compression_codec('zstd', ZstdCompression)
|
42
|
+
|
43
|
+
# @omlish-manifest
|
44
|
+
_ZSTD_LAZY_CODEC = make_compression_lazy_loaded_codec(__name__, 'ZSTD_CODEC', ZSTD_CODEC)
|
omlish/lang/__init__.py
CHANGED
omlish/lang/functions.py
CHANGED
@@ -4,6 +4,7 @@ import time
|
|
4
4
|
import typing as ta
|
5
5
|
|
6
6
|
|
7
|
+
F = ta.TypeVar('F')
|
7
8
|
T = ta.TypeVar('T')
|
8
9
|
P = ta.ParamSpec('P')
|
9
10
|
CallableT = ta.TypeVar('CallableT', bound=ta.Callable)
|
@@ -81,6 +82,16 @@ def identity(obj: T) -> T:
|
|
81
82
|
return obj
|
82
83
|
|
83
84
|
|
85
|
+
def opt_fn(fn: ta.Callable[[F], T]) -> ta.Callable[[F | None], T | None]:
|
86
|
+
@functools.wraps(fn)
|
87
|
+
def inner(v: F | None) -> T | None:
|
88
|
+
if v is not None:
|
89
|
+
return fn(v)
|
90
|
+
else:
|
91
|
+
return None
|
92
|
+
return inner
|
93
|
+
|
94
|
+
|
84
95
|
class constant(ta.Generic[T]): # noqa
|
85
96
|
def __init__(self, obj: T) -> None:
|
86
97
|
super().__init__()
|
omlish/manifests/load.py
CHANGED
@@ -9,6 +9,7 @@ import dataclasses as dc
|
|
9
9
|
import importlib.machinery
|
10
10
|
import importlib.resources
|
11
11
|
import json
|
12
|
+
import threading
|
12
13
|
import typing as ta
|
13
14
|
|
14
15
|
from .types import Manifest
|
@@ -25,6 +26,8 @@ class ManifestLoader:
|
|
25
26
|
) -> None:
|
26
27
|
super().__init__()
|
27
28
|
|
29
|
+
self._lock = threading.RLock()
|
30
|
+
|
28
31
|
self._module_remap = module_remap or {}
|
29
32
|
self._module_reverse_remap = {v: k for k, v in self._module_remap.items()}
|
30
33
|
|
@@ -56,7 +59,7 @@ class ManifestLoader:
|
|
56
59
|
|
57
60
|
#
|
58
61
|
|
59
|
-
def
|
62
|
+
def _load_cls(self, key: str) -> type:
|
60
63
|
try:
|
61
64
|
return self._cls_cache[key]
|
62
65
|
except KeyError:
|
@@ -83,7 +86,13 @@ class ManifestLoader:
|
|
83
86
|
self._cls_cache[key] = cls
|
84
87
|
return cls
|
85
88
|
|
86
|
-
def
|
89
|
+
def load_cls(self, key: str) -> type:
|
90
|
+
with self._lock:
|
91
|
+
return self._load_cls(key)
|
92
|
+
|
93
|
+
#
|
94
|
+
|
95
|
+
def _load_contents(self, obj: ta.Any, pkg_name: str) -> ta.Sequence[Manifest]:
|
87
96
|
if not isinstance(obj, (list, tuple)):
|
88
97
|
raise TypeError(obj)
|
89
98
|
|
@@ -104,7 +113,13 @@ class ManifestLoader:
|
|
104
113
|
|
105
114
|
return lst
|
106
115
|
|
107
|
-
def
|
116
|
+
def load_contents(self, obj: ta.Any, pkg_name: str) -> ta.Sequence[Manifest]:
|
117
|
+
with self._lock:
|
118
|
+
return self.load_contents(obj, pkg_name)
|
119
|
+
|
120
|
+
#
|
121
|
+
|
122
|
+
def _load_raw(self, pkg_name: str) -> ta.Optional[ta.Sequence[Manifest]]:
|
108
123
|
try:
|
109
124
|
return self._raw_cache[pkg_name]
|
110
125
|
except KeyError:
|
@@ -120,12 +135,18 @@ class ManifestLoader:
|
|
120
135
|
if not isinstance(obj, (list, tuple)):
|
121
136
|
raise TypeError(obj)
|
122
137
|
|
123
|
-
lst = self.
|
138
|
+
lst = self._load_contents(obj, pkg_name)
|
124
139
|
|
125
140
|
self._raw_cache[pkg_name] = lst
|
126
141
|
return lst
|
127
142
|
|
128
|
-
def
|
143
|
+
def load_raw(self, pkg_name: str) -> ta.Optional[ta.Sequence[Manifest]]:
|
144
|
+
with self._lock:
|
145
|
+
return self._load_raw(pkg_name)
|
146
|
+
|
147
|
+
#
|
148
|
+
|
149
|
+
def _load(
|
129
150
|
self,
|
130
151
|
*pkg_names: str,
|
131
152
|
only: ta.Optional[ta.Iterable[type]] = None,
|
@@ -149,7 +170,7 @@ class ManifestLoader:
|
|
149
170
|
if only_keys is not None and key not in only_keys:
|
150
171
|
continue
|
151
172
|
|
152
|
-
cls = self.
|
173
|
+
cls = self._load_cls(key)
|
153
174
|
value = cls(**value_dct)
|
154
175
|
|
155
176
|
manifest = dc.replace(manifest, value=value)
|
@@ -157,6 +178,17 @@ class ManifestLoader:
|
|
157
178
|
|
158
179
|
return lst
|
159
180
|
|
181
|
+
def load(
|
182
|
+
self,
|
183
|
+
*pkg_names: str,
|
184
|
+
only: ta.Optional[ta.Iterable[type]] = None,
|
185
|
+
) -> ta.Sequence[Manifest]:
|
186
|
+
with self._lock:
|
187
|
+
return self._load(
|
188
|
+
*pkg_names,
|
189
|
+
only=only,
|
190
|
+
)
|
191
|
+
|
160
192
|
#
|
161
193
|
|
162
194
|
ENTRY_POINT_GROUP = 'omlish.manifests'
|
@@ -169,3 +201,9 @@ class ManifestLoader:
|
|
169
201
|
ep.value
|
170
202
|
for ep in importlib.metadata.entry_points(group=self.ENTRY_POINT_GROUP)
|
171
203
|
]
|
204
|
+
|
205
|
+
|
206
|
+
##
|
207
|
+
|
208
|
+
|
209
|
+
MANIFEST_LOADER = ManifestLoader()
|
@@ -1,5 +1,5 @@
|
|
1
|
-
omlish/.manifests.json,sha256=
|
2
|
-
omlish/__about__.py,sha256=
|
1
|
+
omlish/.manifests.json,sha256=Z-OzsisX-uiidgvNIQIrN92nEPRucZUOhM5lIc52LMY,6568
|
2
|
+
omlish/__about__.py,sha256=Y07EsFN7CjY1AAm1qpNSzRY2us9VYdNOAdlHXLTfjcs,3409
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
@@ -109,6 +109,14 @@ omlish/bootstrap/harness.py,sha256=VW8YP-yENGyXIuJ8GL_xintArF13nafwpz-iAghPt34,1
|
|
109
109
|
omlish/bootstrap/main.py,sha256=yZhOHDDlj4xB5a89dRdT8z58FsqqnpoBg1-tvY2CJe4,5903
|
110
110
|
omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,516
|
111
111
|
omlish/bootstrap/sys.py,sha256=aqMzxZa_lPj78cgz4guYZAkjT6En32e2LptfEo20NIM,8769
|
112
|
+
omlish/codecs/__init__.py,sha256=dtDRfvZRLM6KSfT0y9GRRPu8kjkMaBM1ItrfQTa84Vk,854
|
113
|
+
omlish/codecs/base.py,sha256=90e4PJKtBj9AFw0IXlhVLM1jlrDgJmDD-Zy0GFkth1c,2078
|
114
|
+
omlish/codecs/bytes.py,sha256=jlZ87OmZ52HhQDNyL87R3OIviK2qV5iU2jZYOTOLWjk,2157
|
115
|
+
omlish/codecs/chain.py,sha256=DrBi5vbaFfObfoppo6alwOmyW2XbrH2051cjExwr2Gs,527
|
116
|
+
omlish/codecs/funcs.py,sha256=bMcARQUziSiGocaERbfCR71sVw-BcmKfQEns30y_bEc,590
|
117
|
+
omlish/codecs/registry.py,sha256=8ySUG-kwGJoUN1HCRnz8VjcykB0wlIzoWF5WTAE1ny0,3860
|
118
|
+
omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
|
119
|
+
omlish/codecs/text.py,sha256=D8uy-3_XFwUSlygPQsHP8c2t5ZCgebQS0hv5CWoDXCI,5728
|
112
120
|
omlish/collections/__init__.py,sha256=zeUvcAz073ekko37QKya6sElTMfKTuF1bKrdbMtaRpI,2142
|
113
121
|
omlish/collections/abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
|
114
122
|
omlish/collections/coerce.py,sha256=g68ROb_-5HgH-vI8612mU2S0FZ8-wp2ZHK5_Zy_kVC0,7037
|
@@ -195,11 +203,17 @@ omlish/docker/hub.py,sha256=7LIuJGdA-N1Y1dmo50ynKM1KUTcnQM_5XbtPbdT_QLU,3940
|
|
195
203
|
omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,7068
|
196
204
|
omlish/docker/timebomb.py,sha256=A_pgIDaXKsQwPiikrCTgIJl91gwYqkPGFY6j-Naq07Q,342
|
197
205
|
omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
206
|
+
omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
|
207
|
+
omlish/formats/codecs.py,sha256=6AbKIz_gl_om36-7qsutybYzK8cJP3LzwC9YJlwCPOA,1590
|
198
208
|
omlish/formats/dotenv.py,sha256=qoDG4Ayu7B-8LjBBhcmNiLZW0_9LgCi3Ri2aPo9DEQ8,19314
|
209
|
+
omlish/formats/json5.py,sha256=odpZIShlUpv19aACWe58SoMPcv0AHKIa6zSMjlKgaMI,515
|
210
|
+
omlish/formats/pickle.py,sha256=jdp4E9WH9qVPBE3sSqbqDtUo18RbTSIiSpSzJ-IEVZw,529
|
199
211
|
omlish/formats/props.py,sha256=cek3JLFLIrpE76gvs8rs_B8yF4SpY8ooDH8apWsquwE,18953
|
212
|
+
omlish/formats/toml.py,sha256=AhpVNAy87eBohBCsvIvwH2ucASWxnWXMEsMH8zB7rpI,340
|
200
213
|
omlish/formats/xml.py,sha256=ggiOwSERt4d9XmZwLZiDIh5qnFJS4jdmow9m9_9USps,1491
|
201
|
-
omlish/formats/yaml.py,sha256=
|
214
|
+
omlish/formats/yaml.py,sha256=2-ULW2fm82cA2L14UNbSHZwYr7b6W3CxjAbIiNnfHz8,7185
|
202
215
|
omlish/formats/json/__init__.py,sha256=y7T-Jm-7FuQFzb-6uedky0ZhBaKtCKzcu291juXfiWI,669
|
216
|
+
omlish/formats/json/codecs.py,sha256=0eRmbHPDq1XELuPcgl_vTqJoaHMuCoUitd0GYCntpTY,800
|
203
217
|
omlish/formats/json/consts.py,sha256=A0cTAGGLyjo-gcYIQrL4JIaardI0yPMhQoNmh42BaRg,387
|
204
218
|
omlish/formats/json/encoding.py,sha256=O4iIWle7W_-RwpOvJNlqOfkbnDyiQHexV5Za4hlrFzw,497
|
205
219
|
omlish/formats/json/json.py,sha256=Mdqv2vdMi7gp96eV0BIYH5UdWpjWfsh-tSMZeywG-08,331
|
@@ -293,14 +307,15 @@ omlish/io/compress/__init__.py,sha256=qV-aDfPWykTMYcoQmE8THZ4KFDRzqwN3QPPNEJVarX
|
|
293
307
|
omlish/io/compress/abc.py,sha256=P9YoQX8XYoq2UfBsinKLUuwwqV1ODUIJzjTraRWGF1M,3090
|
294
308
|
omlish/io/compress/adapters.py,sha256=DQvbiqTiaVE-GsawpOpUTX07Gjg125Iuwd6IhjuSaxE,6180
|
295
309
|
omlish/io/compress/base.py,sha256=yx8ifzs_j8y66gMCQcssjZ936NNBFhYn_kBRwNh3SWQ,647
|
296
|
-
omlish/io/compress/brotli.py,sha256=
|
297
|
-
omlish/io/compress/bz2.py,sha256=
|
298
|
-
omlish/io/compress/
|
299
|
-
omlish/io/compress/
|
300
|
-
omlish/io/compress/
|
301
|
-
omlish/io/compress/
|
302
|
-
omlish/io/compress/
|
303
|
-
omlish/io/compress/
|
310
|
+
omlish/io/compress/brotli.py,sha256=Q2t9uRqBEgRyJCSPsTaJv5w7d-rhsjDMluA4VRBHa_A,1182
|
311
|
+
omlish/io/compress/bz2.py,sha256=2ULaZwcpAkHKV-JargrLoXgL9G-gxrVnPqE_pGqNUrg,1566
|
312
|
+
omlish/io/compress/codecs.py,sha256=e6jCYVfUbanUzvkWW9IHDK6SbG6dwRLAztTADCWnWEQ,1076
|
313
|
+
omlish/io/compress/gzip.py,sha256=ZKZdg0wg_nIgFdkfemOv8xZpHneBXZAiCH0n6gIibWY,12281
|
314
|
+
omlish/io/compress/lz4.py,sha256=4kppXZCXpSAQw6wJvCs9LLHFzukekENja7RiwmN8uMc,2790
|
315
|
+
omlish/io/compress/lzma.py,sha256=4bWNKk7uTFiRT_HogW2ZldgaNy1IukmqfVDVkf5M2Ok,2501
|
316
|
+
omlish/io/compress/snappy.py,sha256=JFoH_9l0Tr9AGaQ0jHRiP4TsFnG071l27mprCBcqt4c,704
|
317
|
+
omlish/io/compress/zlib.py,sha256=BQ0BvX-wEN-0NwktcqFECYHTGwVe-VHCVCNarspGQ8o,2396
|
318
|
+
omlish/io/compress/zstd.py,sha256=wik_HWLq_8fGAJgGyMGq9fhFQovot1aCH4lwMpihQmg,949
|
304
319
|
omlish/io/fdio/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
305
320
|
omlish/io/fdio/handlers.py,sha256=OOQhiazbhNMwxLwyzf8KUQrBQSuHIm-UqAMpXmmHGFQ,1344
|
306
321
|
omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
@@ -311,7 +326,7 @@ omlish/io/generators/consts.py,sha256=4r6IMLBMic6MJHVn9UiORIkkPAuxsqtzFT3KV0fatC
|
|
311
326
|
omlish/io/generators/direct.py,sha256=A9VJB1rNKU3l-NatpYIwyCLI3R_ybGglmdx6sAtoTo4,324
|
312
327
|
omlish/io/generators/readers.py,sha256=MolTFCzcnD5XoP0su0YUNHJ0xlHC3KTihvWAi75y8Bo,4336
|
313
328
|
omlish/io/generators/stepped.py,sha256=wk4vDqOKi_Tr4qMY_FxIGO5dF3Ob-3Uh8UcV_9UYrAg,4677
|
314
|
-
omlish/lang/__init__.py,sha256=
|
329
|
+
omlish/lang/__init__.py,sha256=wMfsQjBFNsZ_Y4352iEr0DlEnNebf26JmR4ETtDsQow,3948
|
315
330
|
omlish/lang/cached.py,sha256=92TvRZQ6sWlm7dNn4hgl7aWKbX0J1XUEo3DRjBpgVQk,7834
|
316
331
|
omlish/lang/clsdct.py,sha256=AjtIWLlx2E6D5rC97zQ3Lwq2SOMkbg08pdO_AxpzEHI,1744
|
317
332
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
@@ -319,7 +334,7 @@ omlish/lang/contextmanagers.py,sha256=NEwaTLQMfhKawD5x_0HgI2RpeLXbMa5r9NqWqfDnUX
|
|
319
334
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
320
335
|
omlish/lang/descriptors.py,sha256=RRBbkMgTzg82fFFE4D0muqobpM-ZZaOta6yB1lpX3s8,6617
|
321
336
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
322
|
-
omlish/lang/functions.py,sha256=
|
337
|
+
omlish/lang/functions.py,sha256=t9nsnWwhsibG0w908VMx-_pRM5tZfruE3faPxrCWTbI,4160
|
323
338
|
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
324
339
|
omlish/lang/imports.py,sha256=TXLbj2F53LsmozlM05bQhvow9kEgWJOi9qYKsnm2D18,9258
|
325
340
|
omlish/lang/iterables.py,sha256=mE-XyhqMe9LztBf5Y36SDSO0Gtu8rIKmE-hcNvhhOX8,2085
|
@@ -375,7 +390,7 @@ omlish/logs/proxy.py,sha256=A-ROPUUAlF397qTbEqhel6YhQMstNuXL3Xmts7w9dAo,2347
|
|
375
390
|
omlish/logs/standard.py,sha256=BVFn8pFyafxuco1sjA5COYxX5Q0Wv80_OE9zo6uDp2Q,3164
|
376
391
|
omlish/logs/utils.py,sha256=mzHrZ9ji75p5A8qR29eUr05CBAHMb8J753MSkID_VaQ,393
|
377
392
|
omlish/manifests/__init__.py,sha256=P2B0dpT8D7l5lJwRGPA92IcQj6oeXfd90X5-q9BJrKg,51
|
378
|
-
omlish/manifests/load.py,sha256=
|
393
|
+
omlish/manifests/load.py,sha256=LrWAvBfdzDkFdLuVwfw2RwFvLjxx-rvfkpU9eBsWeIc,5626
|
379
394
|
omlish/manifests/types.py,sha256=d8bv5tknCJqclRfxCpao_8XxHo2yofhLpVHQTB-MfNw,260
|
380
395
|
omlish/marshal/__init__.py,sha256=iVA7n31L08Bdub6HKPvYOXVvDhk2CMA6rPeKDL_u1to,2298
|
381
396
|
omlish/marshal/any.py,sha256=e82OyYK3Emm1P1ClnsnxP7fIWC2iNVyW0H5nK4mLmWM,779
|
@@ -535,9 +550,9 @@ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,329
|
|
535
550
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
536
551
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
537
552
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
538
|
-
omlish-0.0.0.
|
539
|
-
omlish-0.0.0.
|
540
|
-
omlish-0.0.0.
|
541
|
-
omlish-0.0.0.
|
542
|
-
omlish-0.0.0.
|
543
|
-
omlish-0.0.0.
|
553
|
+
omlish-0.0.0.dev163.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
554
|
+
omlish-0.0.0.dev163.dist-info/METADATA,sha256=CbI3Uq6iTFyvnBAKSWdpADOUvmHFsUkfMV5rnHiOOio,4264
|
555
|
+
omlish-0.0.0.dev163.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
556
|
+
omlish-0.0.0.dev163.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
557
|
+
omlish-0.0.0.dev163.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
558
|
+
omlish-0.0.0.dev163.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|