ominfra 0.0.0.dev158__py3-none-any.whl → 0.0.0.dev160__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- ominfra/manage/deploy/apps.py +13 -11
- ominfra/manage/deploy/atomics.py +207 -0
- ominfra/manage/deploy/commands.py +10 -1
- ominfra/manage/deploy/git.py +32 -29
- ominfra/manage/deploy/inject.py +11 -0
- ominfra/manage/deploy/paths.py +46 -37
- ominfra/manage/deploy/specs.py +26 -2
- ominfra/manage/deploy/tmp.py +46 -0
- ominfra/manage/deploy/types.py +1 -0
- ominfra/manage/deploy/venvs.py +6 -1
- ominfra/scripts/journald2aws.py +32 -18
- ominfra/scripts/manage.py +417 -109
- ominfra/scripts/supervisor.py +32 -18
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/RECORD +19 -17
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev158.dist-info → ominfra-0.0.0.dev160.dist-info}/top_level.txt +0 -0
ominfra/scripts/supervisor.py
CHANGED
@@ -2296,6 +2296,10 @@ def is_new_type(spec: ta.Any) -> bool:
|
|
2296
2296
|
return isinstance(spec, types.FunctionType) and spec.__code__ is ta.NewType.__code__.co_consts[1] # type: ignore # noqa
|
2297
2297
|
|
2298
2298
|
|
2299
|
+
def get_new_type_supertype(spec: ta.Any) -> ta.Any:
|
2300
|
+
return spec.__supertype__
|
2301
|
+
|
2302
|
+
|
2299
2303
|
def deep_subclasses(cls: ta.Type[T]) -> ta.Iterator[ta.Type[T]]:
|
2300
2304
|
seen = set()
|
2301
2305
|
todo = list(reversed(cls.__subclasses__()))
|
@@ -4854,9 +4858,7 @@ inj = Injection
|
|
4854
4858
|
"""
|
4855
4859
|
TODO:
|
4856
4860
|
- pickle stdlib objs? have to pin to 3.8 pickle protocol, will be cross-version
|
4857
|
-
- namedtuple
|
4858
4861
|
- literals
|
4859
|
-
- newtypes?
|
4860
4862
|
"""
|
4861
4863
|
|
4862
4864
|
|
@@ -4866,7 +4868,7 @@ TODO:
|
|
4866
4868
|
@dc.dataclass(frozen=True)
|
4867
4869
|
class ObjMarshalOptions:
|
4868
4870
|
raw_bytes: bool = False
|
4869
|
-
|
4871
|
+
non_strict_fields: bool = False
|
4870
4872
|
|
4871
4873
|
|
4872
4874
|
class ObjMarshaler(abc.ABC):
|
@@ -4995,10 +4997,10 @@ class IterableObjMarshaler(ObjMarshaler):
|
|
4995
4997
|
|
4996
4998
|
|
4997
4999
|
@dc.dataclass(frozen=True)
|
4998
|
-
class
|
5000
|
+
class FieldsObjMarshaler(ObjMarshaler):
|
4999
5001
|
ty: type
|
5000
5002
|
fs: ta.Mapping[str, ObjMarshaler]
|
5001
|
-
|
5003
|
+
non_strict: bool = False
|
5002
5004
|
|
5003
5005
|
def marshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
5004
5006
|
return {
|
@@ -5010,7 +5012,7 @@ class DataclassObjMarshaler(ObjMarshaler):
|
|
5010
5012
|
return self.ty(**{
|
5011
5013
|
k: self.fs[k].unmarshal(v, ctx)
|
5012
5014
|
for k, v in o.items()
|
5013
|
-
if not (self.
|
5015
|
+
if not (self.non_strict or ctx.options.non_strict_fields) or k in self.fs
|
5014
5016
|
})
|
5015
5017
|
|
5016
5018
|
|
@@ -5142,7 +5144,7 @@ class ObjMarshalerManager:
|
|
5142
5144
|
ty: ta.Any,
|
5143
5145
|
rec: ta.Callable[[ta.Any], ObjMarshaler],
|
5144
5146
|
*,
|
5145
|
-
|
5147
|
+
non_strict_fields: bool = False,
|
5146
5148
|
) -> ObjMarshaler:
|
5147
5149
|
if isinstance(ty, type):
|
5148
5150
|
if abc.ABC in ty.__bases__:
|
@@ -5164,12 +5166,22 @@ class ObjMarshalerManager:
|
|
5164
5166
|
return EnumObjMarshaler(ty)
|
5165
5167
|
|
5166
5168
|
if dc.is_dataclass(ty):
|
5167
|
-
return
|
5169
|
+
return FieldsObjMarshaler(
|
5168
5170
|
ty,
|
5169
5171
|
{f.name: rec(f.type) for f in dc.fields(ty)},
|
5170
|
-
|
5172
|
+
non_strict=non_strict_fields,
|
5173
|
+
)
|
5174
|
+
|
5175
|
+
if issubclass(ty, tuple) and hasattr(ty, '_fields'):
|
5176
|
+
return FieldsObjMarshaler(
|
5177
|
+
ty,
|
5178
|
+
{p.name: rec(p.annotation) for p in inspect.signature(ty).parameters.values()},
|
5179
|
+
non_strict=non_strict_fields,
|
5171
5180
|
)
|
5172
5181
|
|
5182
|
+
if is_new_type(ty):
|
5183
|
+
return rec(get_new_type_supertype(ty))
|
5184
|
+
|
5173
5185
|
if is_generic_alias(ty):
|
5174
5186
|
try:
|
5175
5187
|
mt = self._generic_mapping_types[ta.get_origin(ty)]
|
@@ -5303,12 +5315,12 @@ def is_debugger_attached() -> bool:
|
|
5303
5315
|
return any(frame[1].endswith('pydevd.py') for frame in inspect.stack())
|
5304
5316
|
|
5305
5317
|
|
5306
|
-
|
5318
|
+
LITE_REQUIRED_PYTHON_VERSION = (3, 8)
|
5307
5319
|
|
5308
5320
|
|
5309
|
-
def
|
5310
|
-
if sys.version_info <
|
5311
|
-
raise OSError(f'Requires python {
|
5321
|
+
def check_lite_runtime_version() -> None:
|
5322
|
+
if sys.version_info < LITE_REQUIRED_PYTHON_VERSION:
|
5323
|
+
raise OSError(f'Requires python {LITE_REQUIRED_PYTHON_VERSION}, got {sys.version_info} from {sys.executable}') # noqa
|
5312
5324
|
|
5313
5325
|
|
5314
5326
|
########################################
|
@@ -5760,6 +5772,7 @@ TODO:
|
|
5760
5772
|
- structured
|
5761
5773
|
- prefixed
|
5762
5774
|
- debug
|
5775
|
+
- optional noisy? noisy will never be lite - some kinda configure_standard callback mechanism?
|
5763
5776
|
"""
|
5764
5777
|
|
5765
5778
|
|
@@ -5796,8 +5809,9 @@ class StandardLogFormatter(logging.Formatter):
|
|
5796
5809
|
##
|
5797
5810
|
|
5798
5811
|
|
5799
|
-
class
|
5800
|
-
|
5812
|
+
class StandardConfiguredLogHandler(ProxyLogHandler):
|
5813
|
+
def __init_subclass__(cls, **kwargs):
|
5814
|
+
raise TypeError('This class serves only as a marker and should not be subclassed.')
|
5801
5815
|
|
5802
5816
|
|
5803
5817
|
##
|
@@ -5828,7 +5842,7 @@ def configure_standard_logging(
|
|
5828
5842
|
target: ta.Optional[logging.Logger] = None,
|
5829
5843
|
force: bool = False,
|
5830
5844
|
handler_factory: ta.Optional[ta.Callable[[], logging.Handler]] = None,
|
5831
|
-
) -> ta.Optional[
|
5845
|
+
) -> ta.Optional[StandardConfiguredLogHandler]:
|
5832
5846
|
with _locking_logging_module_lock():
|
5833
5847
|
if target is None:
|
5834
5848
|
target = logging.root
|
@@ -5836,7 +5850,7 @@ def configure_standard_logging(
|
|
5836
5850
|
#
|
5837
5851
|
|
5838
5852
|
if not force:
|
5839
|
-
if any(isinstance(h,
|
5853
|
+
if any(isinstance(h, StandardConfiguredLogHandler) for h in list(target.handlers)):
|
5840
5854
|
return None
|
5841
5855
|
|
5842
5856
|
#
|
@@ -5870,7 +5884,7 @@ def configure_standard_logging(
|
|
5870
5884
|
|
5871
5885
|
#
|
5872
5886
|
|
5873
|
-
return
|
5887
|
+
return StandardConfiguredLogHandler(handler)
|
5874
5888
|
|
5875
5889
|
|
5876
5890
|
########################################
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev160
|
4
4
|
Summary: ominfra
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -12,8 +12,8 @@ Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
13
13
|
Requires-Python: >=3.12
|
14
14
|
License-File: LICENSE
|
15
|
-
Requires-Dist: omdev==0.0.0.
|
16
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omdev==0.0.0.dev160
|
16
|
+
Requires-Dist: omlish==0.0.0.dev160
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -44,16 +44,18 @@ ominfra/manage/commands/ping.py,sha256=DVZFzL1Z_f-Bq53vxMrL3xOi0iK_nMonJE4KvQf9w
|
|
44
44
|
ominfra/manage/commands/subprocess.py,sha256=yHGMbAI-xKe_9BUs5IZ3Yav8qRE-I9aGnBtTwW15Pnw,2440
|
45
45
|
ominfra/manage/commands/types.py,sha256=XFZPeqeIBAaIIQF3pdPbGxLlb-LCrz6WtlDWO2q_vz0,210
|
46
46
|
ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
-
ominfra/manage/deploy/apps.py,sha256=
|
48
|
-
ominfra/manage/deploy/
|
47
|
+
ominfra/manage/deploy/apps.py,sha256=lXcbyX8_wrvvwKtIMM9P_Mh7xL8yj6z9_PFTl_0u-0U,1887
|
48
|
+
ominfra/manage/deploy/atomics.py,sha256=j9_L2LXls2dR1I4rQw3msIa2D90JwEO9Mb8KBGOKmyU,5180
|
49
|
+
ominfra/manage/deploy/commands.py,sha256=N9qVntnRgJ_IneI7rEQB2Za0oU7gouPfm-sl2MCwW1E,764
|
49
50
|
ominfra/manage/deploy/config.py,sha256=aR6ubMEWqkTI55XtcG1Cczn6YhCVN6eSL8DT5EHQJN0,166
|
50
|
-
ominfra/manage/deploy/git.py,sha256=
|
51
|
-
ominfra/manage/deploy/inject.py,sha256=
|
51
|
+
ominfra/manage/deploy/git.py,sha256=T-ad5HtavIsZG3Y1lNimYXvrvklWfm2kZBcV1DLlI-A,3750
|
52
|
+
ominfra/manage/deploy/inject.py,sha256=JBc96rxOL7Q6P78yZP4WHp08i2AHvV0JHbRpUzbFblw,1444
|
52
53
|
ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
|
53
|
-
ominfra/manage/deploy/paths.py,sha256=
|
54
|
-
ominfra/manage/deploy/specs.py,sha256=
|
55
|
-
ominfra/manage/deploy/
|
56
|
-
ominfra/manage/deploy/
|
54
|
+
ominfra/manage/deploy/paths.py,sha256=tK8zZFWOHDRdTN5AlTe-3MpgZqovhWrljGosQmeEYvo,6839
|
55
|
+
ominfra/manage/deploy/specs.py,sha256=Yq3WiLNJcodUBEsJfP18gPGB3X2ABI1g8YLlsUvJOXg,1230
|
56
|
+
ominfra/manage/deploy/tmp.py,sha256=Wg29UMsWL_A8anFsE-XyvkTNsMfH26Nr8BvJxgKNxMo,1248
|
57
|
+
ominfra/manage/deploy/types.py,sha256=o95wqvTGNRq8Cxx7VpqeX-9x1tI8k8BpqPFvJZkJYBA,305
|
58
|
+
ominfra/manage/deploy/venvs.py,sha256=A1nqFo1Zhxg-Sw3Uyxe6hck4ZEh3bBq8GIjnJPvNLd8,2232
|
57
59
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
60
|
ominfra/manage/remote/_main.py,sha256=p5KoiS2WMw6QAqlDl_Zun-JybmCsy8awIfpBMLBjGMY,4356
|
59
61
|
ominfra/manage/remote/channel.py,sha256=36xR9Ti9ZA8TUBtxmY0u7_3Lv7E6wzQTxlZl7gLR5GE,2224
|
@@ -74,9 +76,9 @@ ominfra/manage/targets/connection.py,sha256=j2QrVS-QFOZJ47TqwaMt8MSPg0whokysGePa
|
|
74
76
|
ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhhMcE,1561
|
75
77
|
ominfra/manage/targets/targets.py,sha256=CFl8Uirgn3gfowO1Fn-LBK-6qYqEMFJ9snPUl0gCRuM,1753
|
76
78
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
|
-
ominfra/scripts/journald2aws.py,sha256=
|
78
|
-
ominfra/scripts/manage.py,sha256=
|
79
|
-
ominfra/scripts/supervisor.py,sha256=
|
79
|
+
ominfra/scripts/journald2aws.py,sha256=EC8tSKW3hztBV_Kr_ykK72AmcvnWivUxcz6Sfg3M_hI,155085
|
80
|
+
ominfra/scripts/manage.py,sha256=mrjtcbAYVv3RkhEV_tcdPra5lZTJG27k0qgAZsye9zk,293936
|
81
|
+
ominfra/scripts/supervisor.py,sha256=npGYEWSZfY7E24mdkJ3HrL_ax6AcqjHfqh-7nZ_sX0U,273987
|
80
82
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
81
83
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
82
84
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -118,9 +120,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
118
120
|
ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
|
119
121
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
122
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
121
|
-
ominfra-0.0.0.
|
122
|
-
ominfra-0.0.0.
|
123
|
-
ominfra-0.0.0.
|
124
|
-
ominfra-0.0.0.
|
125
|
-
ominfra-0.0.0.
|
126
|
-
ominfra-0.0.0.
|
123
|
+
ominfra-0.0.0.dev160.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
124
|
+
ominfra-0.0.0.dev160.dist-info/METADATA,sha256=eS2Inhifb3u6Dusi7KHOATGGlcALPwhc363rDTOzVz0,731
|
125
|
+
ominfra-0.0.0.dev160.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
126
|
+
ominfra-0.0.0.dev160.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
127
|
+
ominfra-0.0.0.dev160.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
128
|
+
ominfra-0.0.0.dev160.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|