ominfra 0.0.0.dev158__py3-none-any.whl → 0.0.0.dev160__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.
- 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
|