omlish 0.0.0.dev142__py3-none-any.whl → 0.0.0.dev144__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/collections/coerce.py +1 -0
- omlish/docker/__init__.py +2 -1
- omlish/docker/helpers.py +0 -6
- omlish/lite/docker.py +3 -0
- omlish/lite/marshal.py +98 -50
- omlish/lite/pycharm.py +48 -0
- omlish/logs/abc.py +0 -1
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/RECORD +14 -13
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev144.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/collections/coerce.py
CHANGED
omlish/docker/__init__.py
CHANGED
@@ -14,7 +14,6 @@ from .compose import ( # noqa
|
|
14
14
|
)
|
15
15
|
|
16
16
|
from .helpers import ( # noqa
|
17
|
-
DOCKER_FOR_MAC_HOSTNAME,
|
18
17
|
DOCKER_HOST_PLATFORM_KEY,
|
19
18
|
get_docker_host_platform,
|
20
19
|
timebomb_payload,
|
@@ -32,5 +31,7 @@ from .hub import ( # noqa
|
|
32
31
|
|
33
32
|
|
34
33
|
from ..lite.docker import ( # noqa
|
34
|
+
DOCKER_FOR_MAC_HOSTNAME,
|
35
|
+
|
35
36
|
is_likely_in_docker,
|
36
37
|
)
|
omlish/docker/helpers.py
CHANGED
@@ -21,12 +21,6 @@ def timebomb_payload(delay_s: float, name: str = _DEFAULT_TIMEBOMB_NAME) -> str:
|
|
21
21
|
##
|
22
22
|
|
23
23
|
|
24
|
-
DOCKER_FOR_MAC_HOSTNAME = 'docker.for.mac.localhost'
|
25
|
-
|
26
|
-
|
27
|
-
##
|
28
|
-
|
29
|
-
|
30
24
|
# Set by pyproject, docker-dev script
|
31
25
|
DOCKER_HOST_PLATFORM_KEY = 'DOCKER_HOST_PLATFORM'
|
32
26
|
|
omlish/lite/docker.py
CHANGED
omlish/lite/marshal.py
CHANGED
@@ -32,21 +32,26 @@ T = ta.TypeVar('T')
|
|
32
32
|
##
|
33
33
|
|
34
34
|
|
35
|
+
@dc.dataclass(frozen=True)
|
36
|
+
class ObjMarshalOptions:
|
37
|
+
raw_bytes: bool = False
|
38
|
+
|
39
|
+
|
35
40
|
class ObjMarshaler(abc.ABC):
|
36
41
|
@abc.abstractmethod
|
37
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
42
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
38
43
|
raise NotImplementedError
|
39
44
|
|
40
45
|
@abc.abstractmethod
|
41
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
46
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
42
47
|
raise NotImplementedError
|
43
48
|
|
44
49
|
|
45
50
|
class NopObjMarshaler(ObjMarshaler):
|
46
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
51
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
47
52
|
return o
|
48
53
|
|
49
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
54
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
50
55
|
return o
|
51
56
|
|
52
57
|
|
@@ -54,29 +59,29 @@ class NopObjMarshaler(ObjMarshaler):
|
|
54
59
|
class ProxyObjMarshaler(ObjMarshaler):
|
55
60
|
m: ta.Optional[ObjMarshaler] = None
|
56
61
|
|
57
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
58
|
-
return check_not_none(self.m).marshal(o)
|
62
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
63
|
+
return check_not_none(self.m).marshal(o, opts)
|
59
64
|
|
60
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
61
|
-
return check_not_none(self.m).unmarshal(o)
|
65
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
66
|
+
return check_not_none(self.m).unmarshal(o, opts)
|
62
67
|
|
63
68
|
|
64
69
|
@dc.dataclass(frozen=True)
|
65
70
|
class CastObjMarshaler(ObjMarshaler):
|
66
71
|
ty: type
|
67
72
|
|
68
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
73
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
69
74
|
return o
|
70
75
|
|
71
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
76
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
72
77
|
return self.ty(o)
|
73
78
|
|
74
79
|
|
75
80
|
class DynamicObjMarshaler(ObjMarshaler):
|
76
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
81
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
77
82
|
return marshal_obj(o)
|
78
83
|
|
79
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
84
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
80
85
|
return o
|
81
86
|
|
82
87
|
|
@@ -84,21 +89,36 @@ class DynamicObjMarshaler(ObjMarshaler):
|
|
84
89
|
class Base64ObjMarshaler(ObjMarshaler):
|
85
90
|
ty: type
|
86
91
|
|
87
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
92
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
88
93
|
return base64.b64encode(o).decode('ascii')
|
89
94
|
|
90
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
95
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
91
96
|
return self.ty(base64.b64decode(o))
|
92
97
|
|
93
98
|
|
99
|
+
@dc.dataclass(frozen=True)
|
100
|
+
class BytesSwitchedObjMarshaler(ObjMarshaler):
|
101
|
+
m: ObjMarshaler
|
102
|
+
|
103
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
104
|
+
if opts.raw_bytes:
|
105
|
+
return o
|
106
|
+
return self.m.marshal(o, opts)
|
107
|
+
|
108
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
109
|
+
if opts.raw_bytes:
|
110
|
+
return o
|
111
|
+
return self.m.unmarshal(o, opts)
|
112
|
+
|
113
|
+
|
94
114
|
@dc.dataclass(frozen=True)
|
95
115
|
class EnumObjMarshaler(ObjMarshaler):
|
96
116
|
ty: type
|
97
117
|
|
98
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
118
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
99
119
|
return o.name
|
100
120
|
|
101
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
121
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
102
122
|
return self.ty.__members__[o] # type: ignore
|
103
123
|
|
104
124
|
|
@@ -106,15 +126,15 @@ class EnumObjMarshaler(ObjMarshaler):
|
|
106
126
|
class OptionalObjMarshaler(ObjMarshaler):
|
107
127
|
item: ObjMarshaler
|
108
128
|
|
109
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
129
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
110
130
|
if o is None:
|
111
131
|
return None
|
112
|
-
return self.item.marshal(o)
|
132
|
+
return self.item.marshal(o, opts)
|
113
133
|
|
114
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
134
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
115
135
|
if o is None:
|
116
136
|
return None
|
117
|
-
return self.item.unmarshal(o)
|
137
|
+
return self.item.unmarshal(o, opts)
|
118
138
|
|
119
139
|
|
120
140
|
@dc.dataclass(frozen=True)
|
@@ -123,11 +143,11 @@ class MappingObjMarshaler(ObjMarshaler):
|
|
123
143
|
km: ObjMarshaler
|
124
144
|
vm: ObjMarshaler
|
125
145
|
|
126
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
127
|
-
return {self.km.marshal(k): self.vm.marshal(v) for k, v in o.items()}
|
146
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
147
|
+
return {self.km.marshal(k, opts): self.vm.marshal(v, opts) for k, v in o.items()}
|
128
148
|
|
129
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
130
|
-
return self.ty((self.km.unmarshal(k), self.vm.unmarshal(v)) for k, v in o.items())
|
149
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
150
|
+
return self.ty((self.km.unmarshal(k, opts), self.vm.unmarshal(v, opts)) for k, v in o.items())
|
131
151
|
|
132
152
|
|
133
153
|
@dc.dataclass(frozen=True)
|
@@ -135,11 +155,11 @@ class IterableObjMarshaler(ObjMarshaler):
|
|
135
155
|
ty: type
|
136
156
|
item: ObjMarshaler
|
137
157
|
|
138
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
139
|
-
return [self.item.marshal(e) for e in o]
|
158
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
159
|
+
return [self.item.marshal(e, opts) for e in o]
|
140
160
|
|
141
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
142
|
-
return self.ty(self.item.unmarshal(e) for e in o)
|
161
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
162
|
+
return self.ty(self.item.unmarshal(e, opts) for e in o)
|
143
163
|
|
144
164
|
|
145
165
|
@dc.dataclass(frozen=True)
|
@@ -148,11 +168,11 @@ class DataclassObjMarshaler(ObjMarshaler):
|
|
148
168
|
fs: ta.Mapping[str, ObjMarshaler]
|
149
169
|
nonstrict: bool = False
|
150
170
|
|
151
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
152
|
-
return {k: m.marshal(getattr(o, k)) for k, m in self.fs.items()}
|
171
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
172
|
+
return {k: m.marshal(getattr(o, k), opts) for k, m in self.fs.items()}
|
153
173
|
|
154
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
155
|
-
return self.ty(**{k: self.fs[k].unmarshal(v) for k, v in o.items() if not self.nonstrict or k in self.fs})
|
174
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
175
|
+
return self.ty(**{k: self.fs[k].unmarshal(v, opts) for k, v in o.items() if not self.nonstrict or k in self.fs})
|
156
176
|
|
157
177
|
|
158
178
|
@dc.dataclass(frozen=True)
|
@@ -172,50 +192,50 @@ class PolymorphicObjMarshaler(ObjMarshaler):
|
|
172
192
|
{i.tag: i for i in impls},
|
173
193
|
)
|
174
194
|
|
175
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
195
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
176
196
|
impl = self.impls_by_ty[type(o)]
|
177
|
-
return {impl.tag: impl.m.marshal(o)}
|
197
|
+
return {impl.tag: impl.m.marshal(o, opts)}
|
178
198
|
|
179
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
199
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
180
200
|
[(t, v)] = o.items()
|
181
201
|
impl = self.impls_by_tag[t]
|
182
|
-
return impl.m.unmarshal(v)
|
202
|
+
return impl.m.unmarshal(v, opts)
|
183
203
|
|
184
204
|
|
185
205
|
@dc.dataclass(frozen=True)
|
186
206
|
class DatetimeObjMarshaler(ObjMarshaler):
|
187
207
|
ty: type
|
188
208
|
|
189
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
209
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
190
210
|
return o.isoformat()
|
191
211
|
|
192
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
212
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
193
213
|
return self.ty.fromisoformat(o) # type: ignore
|
194
214
|
|
195
215
|
|
196
216
|
class DecimalObjMarshaler(ObjMarshaler):
|
197
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
217
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
198
218
|
return str(check_isinstance(o, decimal.Decimal))
|
199
219
|
|
200
|
-
def unmarshal(self, v: ta.Any) -> ta.Any:
|
220
|
+
def unmarshal(self, v: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
201
221
|
return decimal.Decimal(check_isinstance(v, str))
|
202
222
|
|
203
223
|
|
204
224
|
class FractionObjMarshaler(ObjMarshaler):
|
205
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
225
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
206
226
|
fr = check_isinstance(o, fractions.Fraction)
|
207
227
|
return [fr.numerator, fr.denominator]
|
208
228
|
|
209
|
-
def unmarshal(self, v: ta.Any) -> ta.Any:
|
229
|
+
def unmarshal(self, v: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
210
230
|
num, denom = check_isinstance(v, list)
|
211
231
|
return fractions.Fraction(num, denom)
|
212
232
|
|
213
233
|
|
214
234
|
class UuidObjMarshaler(ObjMarshaler):
|
215
|
-
def marshal(self, o: ta.Any) -> ta.Any:
|
235
|
+
def marshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
216
236
|
return str(o)
|
217
237
|
|
218
|
-
def unmarshal(self, o: ta.Any) -> ta.Any:
|
238
|
+
def unmarshal(self, o: ta.Any, opts: ObjMarshalOptions) -> ta.Any:
|
219
239
|
return uuid.UUID(o)
|
220
240
|
|
221
241
|
|
@@ -225,7 +245,7 @@ class UuidObjMarshaler(ObjMarshaler):
|
|
225
245
|
_DEFAULT_OBJ_MARSHALERS: ta.Dict[ta.Any, ObjMarshaler] = {
|
226
246
|
**{t: NopObjMarshaler() for t in (type(None),)},
|
227
247
|
**{t: CastObjMarshaler(t) for t in (int, float, str, bool)},
|
228
|
-
**{t: Base64ObjMarshaler(t) for t in (bytes, bytearray)},
|
248
|
+
**{t: BytesSwitchedObjMarshaler(Base64ObjMarshaler(t)) for t in (bytes, bytearray)},
|
229
249
|
**{t: IterableObjMarshaler(t, DynamicObjMarshaler()) for t in (list, tuple, set, frozenset)},
|
230
250
|
**{t: MappingObjMarshaler(t, DynamicObjMarshaler(), DynamicObjMarshaler()) for t in (dict,)},
|
231
251
|
|
@@ -258,12 +278,16 @@ class ObjMarshalerManager:
|
|
258
278
|
def __init__(
|
259
279
|
self,
|
260
280
|
*,
|
281
|
+
default_options: ObjMarshalOptions = ObjMarshalOptions(),
|
282
|
+
|
261
283
|
default_obj_marshalers: ta.Dict[ta.Any, ObjMarshaler] = _DEFAULT_OBJ_MARSHALERS, # noqa
|
262
284
|
generic_mapping_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_MAPPING_TYPES, # noqa
|
263
285
|
generic_iterable_types: ta.Dict[ta.Any, type] = _OBJ_MARSHALER_GENERIC_ITERABLE_TYPES, # noqa
|
264
286
|
) -> None:
|
265
287
|
super().__init__()
|
266
288
|
|
289
|
+
self._default_options = default_options
|
290
|
+
|
267
291
|
self._obj_marshalers = dict(default_obj_marshalers)
|
268
292
|
self._generic_mapping_types = generic_mapping_types
|
269
293
|
self._generic_iterable_types = generic_iterable_types
|
@@ -372,11 +396,35 @@ class ObjMarshalerManager:
|
|
372
396
|
|
373
397
|
#
|
374
398
|
|
375
|
-
def marshal_obj(
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
399
|
+
def marshal_obj(
|
400
|
+
self,
|
401
|
+
o: ta.Any,
|
402
|
+
ty: ta.Any = None,
|
403
|
+
opts: ta.Optional[ObjMarshalOptions] = None,
|
404
|
+
) -> ta.Any:
|
405
|
+
m = self.get_obj_marshaler(ty if ty is not None else type(o))
|
406
|
+
return m.marshal(o, opts or self._default_options)
|
407
|
+
|
408
|
+
def unmarshal_obj(
|
409
|
+
self,
|
410
|
+
o: ta.Any,
|
411
|
+
ty: ta.Union[ta.Type[T], ta.Any],
|
412
|
+
opts: ta.Optional[ObjMarshalOptions] = None,
|
413
|
+
) -> T:
|
414
|
+
m = self.get_obj_marshaler(ty)
|
415
|
+
return m.unmarshal(o, opts or self._default_options)
|
416
|
+
|
417
|
+
def roundtrip_obj(
|
418
|
+
self,
|
419
|
+
o: ta.Any,
|
420
|
+
ty: ta.Any = None,
|
421
|
+
opts: ta.Optional[ObjMarshalOptions] = None,
|
422
|
+
) -> ta.Any:
|
423
|
+
if ty is None:
|
424
|
+
ty = type(o)
|
425
|
+
m: ta.Any = self.marshal_obj(o, ty, opts)
|
426
|
+
u: ta.Any = self.unmarshal_obj(m, ty, opts)
|
427
|
+
return u
|
380
428
|
|
381
429
|
|
382
430
|
##
|
omlish/lite/pycharm.py
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
import dataclasses as dc
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
|
6
|
+
DEFAULT_PYCHARM_VERSION = '242.23726.102'
|
7
|
+
|
8
|
+
|
9
|
+
@dc.dataclass(frozen=True)
|
10
|
+
class PycharmRemoteDebug:
|
11
|
+
port: int
|
12
|
+
host: ta.Optional[str] = 'localhost'
|
13
|
+
install_version: ta.Optional[str] = DEFAULT_PYCHARM_VERSION
|
14
|
+
|
15
|
+
|
16
|
+
def pycharm_debug_connect(prd: PycharmRemoteDebug) -> None:
|
17
|
+
if prd.install_version is not None:
|
18
|
+
import subprocess
|
19
|
+
import sys
|
20
|
+
subprocess.check_call([
|
21
|
+
sys.executable,
|
22
|
+
'-mpip',
|
23
|
+
'install',
|
24
|
+
f'pydevd-pycharm~={prd.install_version}',
|
25
|
+
])
|
26
|
+
|
27
|
+
pydevd_pycharm = __import__('pydevd_pycharm') # noqa
|
28
|
+
pydevd_pycharm.settrace(
|
29
|
+
prd.host,
|
30
|
+
port=prd.port,
|
31
|
+
stdoutToServer=True,
|
32
|
+
stderrToServer=True,
|
33
|
+
)
|
34
|
+
|
35
|
+
|
36
|
+
def pycharm_debug_preamble(prd: PycharmRemoteDebug) -> str:
|
37
|
+
import inspect
|
38
|
+
import textwrap
|
39
|
+
|
40
|
+
return textwrap.dedent(f"""
|
41
|
+
{inspect.getsource(pycharm_debug_connect)}
|
42
|
+
|
43
|
+
pycharm_debug_connect(PycharmRemoteDebug(
|
44
|
+
{prd.port!r},
|
45
|
+
host={prd.host!r},
|
46
|
+
install_version={prd.install_version!r},
|
47
|
+
))
|
48
|
+
""")
|
omlish/logs/abc.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=RX24SRc6DCEg77PUVnaXOKCWa5TF_c9RQJdGIf7gl9c,1135
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=MT0BTpx7mPru-9X9bEnyKHLlujaF7_MenPp4KN78i3c,3409
|
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
|
@@ -93,7 +93,7 @@ omlish/bootstrap/marshal.py,sha256=ZxdAeMNd2qXRZ1HUK89HmEhz8tqlS9OduW34QBscKw0,5
|
|
93
93
|
omlish/bootstrap/sys.py,sha256=iLHUNIuIPv-k-Mc6aHj5sSET78olCVt7t0HquFDO4iQ,8762
|
94
94
|
omlish/collections/__init__.py,sha256=zeUvcAz073ekko37QKya6sElTMfKTuF1bKrdbMtaRpI,2142
|
95
95
|
omlish/collections/abc.py,sha256=sP7BpTVhx6s6C59mTFeosBi4rHOWC6tbFBYbxdZmvh0,2365
|
96
|
-
omlish/collections/coerce.py,sha256=
|
96
|
+
omlish/collections/coerce.py,sha256=g68ROb_-5HgH-vI8612mU2S0FZ8-wp2ZHK5_Zy_kVC0,7037
|
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
|
@@ -167,10 +167,10 @@ omlish/dispatch/_dispatch3.py,sha256=Vnu5DfoPWFJLodudBqoZBXGTi2wYk-Az56MXJgdQvwc
|
|
167
167
|
omlish/dispatch/dispatch.py,sha256=8XQiLVoAq4u2oO0DnDSXQB9Q5qDk569l4CIFBqwDSyc,3847
|
168
168
|
omlish/dispatch/functions.py,sha256=S8ElsLi6DKxTdtFGigWaF0vAquwy2sK-3f4iRLaYq70,1522
|
169
169
|
omlish/dispatch/methods.py,sha256=XHjwwC9Gn4iDWxbyLAcbdSwRgVaq-8Bnn5cAwf5oZdA,5403
|
170
|
-
omlish/docker/__init__.py,sha256=
|
170
|
+
omlish/docker/__init__.py,sha256=TK2UOuawDMDbsdANLtGfOPpKQbDQf-rU2fXneb9elxw,528
|
171
171
|
omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
|
172
172
|
omlish/docker/compose.py,sha256=4drmnGQzbkOFJ9B6XSg9rnXkJeZz1ETmdcMe1PE790U,1237
|
173
|
-
omlish/docker/helpers.py,sha256=
|
173
|
+
omlish/docker/helpers.py,sha256=dGmCSDd-Rpdu3YCdyVEaTx_8GdbXGR4lw12ctyGPxzg,552
|
174
174
|
omlish/docker/hub.py,sha256=7LIuJGdA-N1Y1dmo50ynKM1KUTcnQM_5XbtPbdT_QLU,3940
|
175
175
|
omlish/docker/manifests.py,sha256=LR4FpOGNUT3bZQ-gTjB6r_-1C3YiG30QvevZjrsVUQM,7068
|
176
176
|
omlish/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -314,15 +314,16 @@ omlish/lite/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
|
314
314
|
omlish/lite/cached.py,sha256=rrc_JEv3sKJIEmCBB6g7DwPvkb1hNFmhg0mxkvuXDJw,848
|
315
315
|
omlish/lite/check.py,sha256=pQC412ffe_Zh7eHa4C1UYn6fA71Ls1vpVM0ZIOroPAY,1765
|
316
316
|
omlish/lite/contextmanagers.py,sha256=DRarS2gx15tbse1YzyI8ZLdBmWYjFgmKPe-i4CSNDYg,1458
|
317
|
-
omlish/lite/docker.py,sha256=
|
317
|
+
omlish/lite/docker.py,sha256=Dj_7lQjs2sFPc_SmUn5CpJF3LnQQnckEBYGBKz8u5tE,392
|
318
318
|
omlish/lite/inject.py,sha256=aRRmFb6azTKF208ogYwVCEopNZx7496Ta1GZmL_IKBA,23716
|
319
319
|
omlish/lite/io.py,sha256=3ECgUXdRnXyS6pGTSoVr6oB4moI38EpWxTq08zaTM-U,5339
|
320
320
|
omlish/lite/journald.py,sha256=f5Y2Q6-6O3iK_7MoGiwZwoQEOcP7LfkxxQNUR9tMjJM,3882
|
321
321
|
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
322
322
|
omlish/lite/logs.py,sha256=1pcGu0ekhVCcLUckLSP16VccnAoprjtl5Vkdfm7y1Wg,6184
|
323
|
-
omlish/lite/marshal.py,sha256=
|
323
|
+
omlish/lite/marshal.py,sha256=a3_wuMjiCXHYngzgLhJU2C2BFznVC_VlrzRJ5_hpuRI,12989
|
324
324
|
omlish/lite/maybes.py,sha256=7OlHJ8Q2r4wQ-aRbZSlJY7x0e8gDvufFdlohGEIJ3P4,833
|
325
325
|
omlish/lite/pidfile.py,sha256=PRSDOAXmNkNwxh-Vwif0Nrs8RAmWroiNhLKIbdjwzBc,1723
|
326
|
+
omlish/lite/pycharm.py,sha256=CUArgzaG8ZZ0evN7tdrML5WXyF-G_BvF_s3Z4SI2LA0,1164
|
326
327
|
omlish/lite/reflect.py,sha256=ad_ya_zZJOQB8HoNjs9yc66R54zgflwJVPJqiBXMzqA,1681
|
327
328
|
omlish/lite/runtime.py,sha256=lVw5_yuQNHXZLwGf_l59u8IrAtBLZWPTml6owQ55uro,439
|
328
329
|
omlish/lite/secrets.py,sha256=3Mz3V2jf__XU9qNHcH56sBSw95L3U2UPL24bjvobG0c,816
|
@@ -343,7 +344,7 @@ omlish/lite/http/handlers.py,sha256=Yu0P3nqz-frklwCM2PbiWvoJNE-NqeTFLBvpNpqcdtA,
|
|
343
344
|
omlish/lite/http/parsing.py,sha256=jLdbBTQQhKU701j3_Ixl77nQE3rZld2qbJNAFhuW_cc,13977
|
344
345
|
omlish/lite/http/versions.py,sha256=M6WhZeeyun-3jL_NCViNONOfLCiApuFOfe5XNJwzSvw,394
|
345
346
|
omlish/logs/__init__.py,sha256=FbOyAW-lGH8gyBlSVArwljdYAU6RnwZLI5LwAfuNnrk,438
|
346
|
-
omlish/logs/abc.py,sha256=
|
347
|
+
omlish/logs/abc.py,sha256=ho4ABKYMKX-V7g4sp1BByuOLzslYzLlQ0MESmjEpT-o,8005
|
347
348
|
omlish/logs/configs.py,sha256=EE0jlNaXJbGnM7V-y4xS5VwyTBSTzFzc0BYaVjg0JmA,1283
|
348
349
|
omlish/logs/formatters.py,sha256=q79nMnR2mRIStPyGrydQHpYTXgC5HHptt8lH3W2Wwbs,671
|
349
350
|
omlish/logs/handlers.py,sha256=UpzUf3kWBBzWOnrtljoZsLjISw3Ix-ePz3Nsmp6lRgE,255
|
@@ -499,9 +500,9 @@ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,329
|
|
499
500
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
500
501
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
501
502
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
502
|
-
omlish-0.0.0.
|
503
|
-
omlish-0.0.0.
|
504
|
-
omlish-0.0.0.
|
505
|
-
omlish-0.0.0.
|
506
|
-
omlish-0.0.0.
|
507
|
-
omlish-0.0.0.
|
503
|
+
omlish-0.0.0.dev144.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
504
|
+
omlish-0.0.0.dev144.dist-info/METADATA,sha256=iSpb58aExr5aGcD3lhNq7BsAewClNKVvMdnbWH4u3sU,4264
|
505
|
+
omlish-0.0.0.dev144.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
506
|
+
omlish-0.0.0.dev144.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
507
|
+
omlish-0.0.0.dev144.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
508
|
+
omlish-0.0.0.dev144.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|