omlish 0.0.0.dev142__py3-none-any.whl → 0.0.0.dev143__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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.dev143.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev143.dist-info}/RECORD +14 -13
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev143.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev143.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev143.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev142.dist-info → omlish-0.0.0.dev143.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=hp55UtsiLw1Gm7q_ob-JsBND4my9FR1FdD_oDJG-nJ4,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.dev143.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
504
|
+
omlish-0.0.0.dev143.dist-info/METADATA,sha256=aJ6Jj2-7Q6PSTI2elpZ-POY5Ud1lpJWQEjhmbtPaWFs,4264
|
505
|
+
omlish-0.0.0.dev143.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
506
|
+
omlish-0.0.0.dev143.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
507
|
+
omlish-0.0.0.dev143.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
508
|
+
omlish-0.0.0.dev143.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|