ominfra 0.0.0.dev355__py3-none-any.whl → 0.0.0.dev357__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/commands/injection.py +3 -0
- ominfra/manage/commands/local.py +3 -0
- ominfra/manage/commands/marshal.py +3 -0
- ominfra/manage/commands/subprocess.py +42 -4
- ominfra/manage/deploy/apps.py +3 -0
- ominfra/manage/deploy/conf/inject.py +3 -0
- ominfra/manage/deploy/injection.py +3 -0
- ominfra/manage/deploy/nginx.py +3 -0
- ominfra/manage/deploy/paths/inject.py +3 -0
- ominfra/manage/deploy/paths/manager.py +3 -0
- ominfra/manage/deploy/paths/owners.py +3 -0
- ominfra/manage/deploy/paths/specs.py +3 -0
- ominfra/manage/deploy/systemd.py +3 -0
- ominfra/manage/deploy/tmp.py +3 -0
- ominfra/manage/deploy/venvs.py +3 -0
- ominfra/manage/remote/config.py +3 -0
- ominfra/manage/remote/connection.py +1 -1
- ominfra/manage/remote/payload.py +3 -0
- ominfra/manage/remote/spawning.py +1 -1
- ominfra/manage/system/config.py +3 -0
- ominfra/manage/system/inject.py +3 -0
- ominfra/manage/system/packages.py +4 -1
- ominfra/manage/targets/connection.py +1 -1
- ominfra/pyremote.py +10 -4
- ominfra/scripts/journald2aws.py +1 -1
- ominfra/scripts/manage.py +247 -18
- ominfra/scripts/supervisor.py +1 -1
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/RECORD +33 -33
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/licenses/LICENSE +0 -0
- {ominfra-0.0.0.dev355.dist-info → ominfra-0.0.0.dev357.dist-info}/top_level.txt +0 -0
ominfra/manage/commands/local.py
CHANGED
@@ -28,13 +28,26 @@ class SubprocessCommand(Command['SubprocessCommand.Output']):
|
|
28
28
|
env: ta.Optional[ta.Mapping[str, str]] = None
|
29
29
|
|
30
30
|
stdout: str = 'pipe' # SubprocessChannelOption
|
31
|
+
decode_stdout: ta.Optional[str] = None
|
32
|
+
|
31
33
|
stderr: str = 'pipe' # SubprocessChannelOption
|
34
|
+
decode_stderr: ta.Optional[str] = None
|
32
35
|
|
33
36
|
input: ta.Optional[bytes] = None
|
37
|
+
encode_input: ta.Optional[str] = None
|
38
|
+
input_str: ta.Optional[str] = None
|
39
|
+
|
34
40
|
timeout: ta.Optional[float] = None
|
35
41
|
|
36
42
|
def __post_init__(self) -> None:
|
37
43
|
check.not_isinstance(self.cmd, str)
|
44
|
+
check.state(not (self.input is not None and self.input_str is not None))
|
45
|
+
if self.decode_stdout is not None:
|
46
|
+
check.non_empty_str(self.decode_stdout)
|
47
|
+
if self.decode_stderr is not None:
|
48
|
+
check.non_empty_str(self.decode_stderr)
|
49
|
+
if self.encode_input is not None:
|
50
|
+
check.non_empty_str(self.encode_input)
|
38
51
|
|
39
52
|
@dc.dataclass(frozen=True)
|
40
53
|
class Output(Command.Output):
|
@@ -44,11 +57,25 @@ class SubprocessCommand(Command['SubprocessCommand.Output']):
|
|
44
57
|
elapsed_s: float
|
45
58
|
|
46
59
|
stdout: ta.Optional[bytes] = None
|
60
|
+
stdout_str: ta.Optional[str] = None
|
61
|
+
|
47
62
|
stderr: ta.Optional[bytes] = None
|
63
|
+
stderr_str: ta.Optional[str] = None
|
48
64
|
|
49
65
|
|
50
66
|
class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCommand.Output]):
|
67
|
+
DEFAULT_INPUT_ENCODING: ta.ClassVar[str] = 'utf-8'
|
68
|
+
|
51
69
|
async def execute(self, cmd: SubprocessCommand) -> SubprocessCommand.Output:
|
70
|
+
input_bytes: ta.Optional[bytes]
|
71
|
+
if cmd.input is not None:
|
72
|
+
check.none(cmd.input_str)
|
73
|
+
input_bytes = cmd.input
|
74
|
+
elif cmd.input_str is not None:
|
75
|
+
input_bytes = cmd.input_str.encode(cmd.encode_input or self.DEFAULT_INPUT_ENCODING)
|
76
|
+
else:
|
77
|
+
input_bytes = None
|
78
|
+
|
52
79
|
proc: asyncio.subprocess.Process
|
53
80
|
async with asyncio_subprocesses.popen(
|
54
81
|
*subprocess_maybe_shell_wrap_exec(*cmd.cmd),
|
@@ -57,7 +84,7 @@ class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCom
|
|
57
84
|
cwd=cmd.cwd,
|
58
85
|
env={**os.environ, **(cmd.env or {})},
|
59
86
|
|
60
|
-
stdin=subprocess.PIPE if
|
87
|
+
stdin=subprocess.PIPE if input_bytes is not None else None,
|
61
88
|
stdout=SUBPROCESS_CHANNEL_OPTION_VALUES[ta.cast(SubprocessChannelOption, cmd.stdout)],
|
62
89
|
stderr=SUBPROCESS_CHANNEL_OPTION_VALUES[ta.cast(SubprocessChannelOption, cmd.stderr)],
|
63
90
|
|
@@ -66,17 +93,28 @@ class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCom
|
|
66
93
|
start_time = time.time()
|
67
94
|
stdout, stderr = await asyncio_subprocesses.communicate(
|
68
95
|
proc,
|
69
|
-
input=
|
96
|
+
input=input,
|
70
97
|
timeout=cmd.timeout,
|
71
98
|
)
|
72
99
|
end_time = time.time()
|
73
100
|
|
101
|
+
out_kw: ta.Dict[str, ta.Any] = {}
|
102
|
+
if stdout is not None:
|
103
|
+
if cmd.decode_stdout is not None:
|
104
|
+
out_kw.update(stdout_str=stdout.decode(cmd.decode_stdout))
|
105
|
+
else:
|
106
|
+
out_kw.update(stdout=stdout)
|
107
|
+
if stderr is not None:
|
108
|
+
if cmd.decode_stderr is not None:
|
109
|
+
out_kw.update(stderr_str=stderr.decode(cmd.decode_stderr))
|
110
|
+
else:
|
111
|
+
out_kw.update(stderr=stderr)
|
112
|
+
|
74
113
|
return SubprocessCommand.Output(
|
75
114
|
rc=check.not_none(proc.returncode),
|
76
115
|
pid=proc.pid,
|
77
116
|
|
78
117
|
elapsed_s=end_time - start_time,
|
79
118
|
|
80
|
-
|
81
|
-
stderr=stderr, # noqa
|
119
|
+
**out_kw,
|
82
120
|
)
|
ominfra/manage/deploy/apps.py
CHANGED
ominfra/manage/deploy/nginx.py
CHANGED
ominfra/manage/deploy/systemd.py
CHANGED
ominfra/manage/deploy/tmp.py
CHANGED
ominfra/manage/deploy/venvs.py
CHANGED
ominfra/manage/remote/config.py
CHANGED
ominfra/manage/remote/payload.py
CHANGED
ominfra/manage/system/config.py
CHANGED
ominfra/manage/system/inject.py
CHANGED
@@ -13,7 +13,10 @@ from omlish.asyncs.asyncio.subprocesses import asyncio_subprocesses
|
|
13
13
|
from omlish.lite.check import check
|
14
14
|
|
15
15
|
|
16
|
-
SystemPackageOrStr = ta.Union['SystemPackage', str]
|
16
|
+
SystemPackageOrStr = ta.Union['SystemPackage', str] # ta.TypeAlias
|
17
|
+
|
18
|
+
|
19
|
+
##
|
17
20
|
|
18
21
|
|
19
22
|
@dc.dataclass(frozen=True)
|
ominfra/pyremote.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# ruff: noqa: UP006 UP007 UP045
|
1
|
+
# ruff: noqa: UP006 UP007 UP043 UP045
|
2
2
|
# @omlish-lite
|
3
3
|
"""
|
4
4
|
Basically this: https://mitogen.networkgenomics.com/howitworks.html
|
@@ -438,15 +438,21 @@ class PyremoteBootstrapDriver:
|
|
438
438
|
if isinstance(payload_src, str):
|
439
439
|
parts = [payload_src]
|
440
440
|
else:
|
441
|
-
parts =
|
441
|
+
parts = []
|
442
|
+
for i, p in enumerate(payload_src):
|
443
|
+
if i:
|
444
|
+
parts.append('\n\n')
|
445
|
+
parts.append(p)
|
442
446
|
|
443
447
|
if (mn := options.main_name_override) is not None:
|
444
|
-
|
448
|
+
# Must go on same single line as first line of user payload to preserve '<stdin>' line numbers. If more
|
449
|
+
# things wind up having to be done here, it can still be crammed on one line into a single `exec()`.
|
450
|
+
parts.insert(0, f'__name__ = {mn!r}; ')
|
445
451
|
|
446
452
|
if len(parts) == 1:
|
447
453
|
return parts[0]
|
448
454
|
else:
|
449
|
-
return '
|
455
|
+
return ''.join(parts)
|
450
456
|
|
451
457
|
#
|
452
458
|
|
ominfra/scripts/journald2aws.py
CHANGED
ominfra/scripts/manage.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# @omlish-generated
|
6
6
|
# @omlish-amalg-output ../manage/main.py
|
7
7
|
# @omlish-git-diff-omit
|
8
|
-
# ruff: noqa: N802 TC003 UP006 UP007 UP036 UP045
|
8
|
+
# ruff: noqa: N802 TC003 UP006 UP007 UP036 UP043 UP045
|
9
9
|
"""
|
10
10
|
manage.py -s 'docker run -i python:3.13'
|
11
11
|
manage.py -s 'ssh -i /foo/bar.pem foo@bar.baz' -q --python=python3.8
|
@@ -152,7 +152,7 @@ KeyDeployTagT = ta.TypeVar('KeyDeployTagT', bound='KeyDeployTag')
|
|
152
152
|
SubprocessChannelOption = ta.Literal['pipe', 'stdout', 'devnull'] # ta.TypeAlias
|
153
153
|
|
154
154
|
# system/packages.py
|
155
|
-
SystemPackageOrStr = ta.Union['SystemPackage', str]
|
155
|
+
SystemPackageOrStr = ta.Union['SystemPackage', str] # ta.TypeAlias
|
156
156
|
|
157
157
|
|
158
158
|
########################################
|
@@ -1103,15 +1103,21 @@ class PyremoteBootstrapDriver:
|
|
1103
1103
|
if isinstance(payload_src, str):
|
1104
1104
|
parts = [payload_src]
|
1105
1105
|
else:
|
1106
|
-
parts =
|
1106
|
+
parts = []
|
1107
|
+
for i, p in enumerate(payload_src):
|
1108
|
+
if i:
|
1109
|
+
parts.append('\n\n')
|
1110
|
+
parts.append(p)
|
1107
1111
|
|
1108
1112
|
if (mn := options.main_name_override) is not None:
|
1109
|
-
|
1113
|
+
# Must go on same single line as first line of user payload to preserve '<stdin>' line numbers. If more
|
1114
|
+
# things wind up having to be done here, it can still be crammed on one line into a single `exec()`.
|
1115
|
+
parts.insert(0, f'__name__ = {mn!r}; ')
|
1110
1116
|
|
1111
1117
|
if len(parts) == 1:
|
1112
1118
|
return parts[0]
|
1113
1119
|
else:
|
1114
|
-
return '
|
1120
|
+
return ''.join(parts)
|
1115
1121
|
|
1116
1122
|
#
|
1117
1123
|
|
@@ -5062,6 +5068,9 @@ def build_command_name_map(crs: CommandRegistrations) -> CommandNameMap:
|
|
5062
5068
|
# ../deploy/paths/specs.py
|
5063
5069
|
|
5064
5070
|
|
5071
|
+
##
|
5072
|
+
|
5073
|
+
|
5065
5074
|
def check_valid_deploy_spec_path(s: str) -> str:
|
5066
5075
|
check.non_empty_str(s)
|
5067
5076
|
for c in ['..', '//']:
|
@@ -5074,6 +5083,9 @@ def check_valid_deploy_spec_path(s: str) -> str:
|
|
5074
5083
|
# ../remote/config.py
|
5075
5084
|
|
5076
5085
|
|
5086
|
+
##
|
5087
|
+
|
5088
|
+
|
5077
5089
|
@dc.dataclass(frozen=True)
|
5078
5090
|
class RemoteConfig:
|
5079
5091
|
payload_file: ta.Optional[str] = None
|
@@ -5098,6 +5110,9 @@ class RemoteConfig:
|
|
5098
5110
|
RemoteExecutionPayloadFile = ta.NewType('RemoteExecutionPayloadFile', str)
|
5099
5111
|
|
5100
5112
|
|
5113
|
+
##
|
5114
|
+
|
5115
|
+
|
5101
5116
|
@cached_nullary
|
5102
5117
|
def _get_self_src() -> str:
|
5103
5118
|
return inspect.getsource(sys.modules[__name__])
|
@@ -8310,17 +8325,10 @@ class Interp:
|
|
8310
8325
|
|
8311
8326
|
|
8312
8327
|
########################################
|
8313
|
-
#
|
8314
|
-
|
8315
|
-
|
8316
|
-
def bind_interp_uv() -> InjectorBindings:
|
8317
|
-
lst: ta.List[InjectorBindingOrBindings] = []
|
8318
|
-
|
8319
|
-
return inj.as_bindings(*lst)
|
8328
|
+
# ../commands/injection.py
|
8320
8329
|
|
8321
8330
|
|
8322
|
-
|
8323
|
-
# ../commands/injection.py
|
8331
|
+
##
|
8324
8332
|
|
8325
8333
|
|
8326
8334
|
def bind_command(
|
@@ -8344,6 +8352,9 @@ def bind_command(
|
|
8344
8352
|
# ../commands/marshal.py
|
8345
8353
|
|
8346
8354
|
|
8355
|
+
##
|
8356
|
+
|
8357
|
+
|
8347
8358
|
def install_command_marshaling(
|
8348
8359
|
cmds: CommandNameMap,
|
8349
8360
|
msh: ObjMarshalerManager,
|
@@ -8811,6 +8822,9 @@ class RemoteChannelImpl(RemoteChannel):
|
|
8811
8822
|
# ../system/config.py
|
8812
8823
|
|
8813
8824
|
|
8825
|
+
##
|
8826
|
+
|
8827
|
+
|
8814
8828
|
@dc.dataclass(frozen=True)
|
8815
8829
|
class SystemConfig:
|
8816
8830
|
platform: ta.Optional[Platform] = None
|
@@ -9127,6 +9141,9 @@ class MainBootstrap:
|
|
9127
9141
|
# ../commands/local.py
|
9128
9142
|
|
9129
9143
|
|
9144
|
+
##
|
9145
|
+
|
9146
|
+
|
9130
9147
|
class LocalCommandExecutor(CommandExecutor):
|
9131
9148
|
def __init__(
|
9132
9149
|
self,
|
@@ -10077,6 +10094,9 @@ class BaseSubprocesses(abc.ABC): # noqa
|
|
10077
10094
|
# ../../../omdev/interp/resolvers.py
|
10078
10095
|
|
10079
10096
|
|
10097
|
+
##
|
10098
|
+
|
10099
|
+
|
10080
10100
|
@dc.dataclass(frozen=True)
|
10081
10101
|
class InterpResolverProviders:
|
10082
10102
|
providers: ta.Sequence[ta.Tuple[str, InterpProvider]]
|
@@ -10413,6 +10433,9 @@ class DeployConfManager:
|
|
10413
10433
|
# ../deploy/paths/owners.py
|
10414
10434
|
|
10415
10435
|
|
10436
|
+
##
|
10437
|
+
|
10438
|
+
|
10416
10439
|
class DeployPathOwner(abc.ABC):
|
10417
10440
|
@abc.abstractmethod
|
10418
10441
|
def get_owned_deploy_paths(self) -> ta.AbstractSet[DeployPath]:
|
@@ -10926,6 +10949,9 @@ def git_shallow_clone(
|
|
10926
10949
|
# ../deploy/injection.py
|
10927
10950
|
|
10928
10951
|
|
10952
|
+
##
|
10953
|
+
|
10954
|
+
|
10929
10955
|
def bind_deploy_manager(cls: type) -> InjectorBindings:
|
10930
10956
|
return inj.as_bindings(
|
10931
10957
|
inj.bind(cls, singleton=True),
|
@@ -10938,6 +10964,9 @@ def bind_deploy_manager(cls: type) -> InjectorBindings:
|
|
10938
10964
|
# ../deploy/paths/manager.py
|
10939
10965
|
|
10940
10966
|
|
10967
|
+
##
|
10968
|
+
|
10969
|
+
|
10941
10970
|
class DeployPathsManager:
|
10942
10971
|
def __init__(
|
10943
10972
|
self,
|
@@ -10966,6 +10995,9 @@ class DeployPathsManager:
|
|
10966
10995
|
# ../deploy/tmp.py
|
10967
10996
|
|
10968
10997
|
|
10998
|
+
##
|
10999
|
+
|
11000
|
+
|
10969
11001
|
class DeployHomeAtomics(Func1[DeployHome, AtomicPathSwapping]):
|
10970
11002
|
pass
|
10971
11003
|
|
@@ -11204,6 +11236,9 @@ asyncio_subprocesses = AsyncioSubprocesses()
|
|
11204
11236
|
# ../../../omdev/interp/inspect.py
|
11205
11237
|
|
11206
11238
|
|
11239
|
+
##
|
11240
|
+
|
11241
|
+
|
11207
11242
|
@dc.dataclass(frozen=True)
|
11208
11243
|
class InterpInspection:
|
11209
11244
|
exe: str
|
@@ -11313,6 +11348,9 @@ TODO:
|
|
11313
11348
|
"""
|
11314
11349
|
|
11315
11350
|
|
11351
|
+
##
|
11352
|
+
|
11353
|
+
|
11316
11354
|
class Pyenv:
|
11317
11355
|
def __init__(
|
11318
11356
|
self,
|
@@ -11380,6 +11418,67 @@ class Pyenv:
|
|
11380
11418
|
return True
|
11381
11419
|
|
11382
11420
|
|
11421
|
+
########################################
|
11422
|
+
# ../../../omdev/interp/uv/uv.py
|
11423
|
+
|
11424
|
+
|
11425
|
+
##
|
11426
|
+
|
11427
|
+
|
11428
|
+
@dc.dataclass(frozen=True)
|
11429
|
+
class UvConfig:
|
11430
|
+
ignore_path: bool = False
|
11431
|
+
pip_bootstrap: bool = True
|
11432
|
+
|
11433
|
+
|
11434
|
+
class Uv:
|
11435
|
+
def __init__(
|
11436
|
+
self,
|
11437
|
+
config: UvConfig = UvConfig(),
|
11438
|
+
*,
|
11439
|
+
log: ta.Optional[logging.Logger] = None,
|
11440
|
+
) -> None:
|
11441
|
+
super().__init__()
|
11442
|
+
|
11443
|
+
self._config = config
|
11444
|
+
self._log = log
|
11445
|
+
|
11446
|
+
self._bootstrap_dir: ta.Optional[str] = None
|
11447
|
+
|
11448
|
+
def delete_bootstrap_dir(self) -> bool:
|
11449
|
+
if (bs := self._bootstrap_dir) is None:
|
11450
|
+
return False
|
11451
|
+
|
11452
|
+
shutil.rmtree(bs)
|
11453
|
+
self._bootstrap_dir = None
|
11454
|
+
return True
|
11455
|
+
|
11456
|
+
@async_cached_nullary
|
11457
|
+
async def uv_exe(self) -> ta.Optional[str]:
|
11458
|
+
if not self._config.ignore_path and (uv := shutil.which('uv')):
|
11459
|
+
return uv
|
11460
|
+
|
11461
|
+
if self._config.pip_bootstrap:
|
11462
|
+
if (bd := self._bootstrap_dir) is None:
|
11463
|
+
bd = self._bootstrap_dir = tempfile.mkdtemp()
|
11464
|
+
|
11465
|
+
if self._log is not None:
|
11466
|
+
self._log.info(f'Bootstrapping uv into %s', bd)
|
11467
|
+
|
11468
|
+
vn = 'uv-bootstrap'
|
11469
|
+
await asyncio_subprocesses.check_call(os.path.realpath(sys.executable), '-m', 'venv', vn, cwd=bd)
|
11470
|
+
|
11471
|
+
vx = os.path.join(bd, vn, 'bin', 'python3')
|
11472
|
+
await asyncio_subprocesses.check_call(vx, '-m', 'pip', 'install', 'uv', cwd=bd)
|
11473
|
+
|
11474
|
+
ux = os.path.join(bd, vn, 'bin', 'uv')
|
11475
|
+
check.state(os.path.isfile(ux))
|
11476
|
+
|
11477
|
+
return ux
|
11478
|
+
|
11479
|
+
return None
|
11480
|
+
|
11481
|
+
|
11383
11482
|
########################################
|
11384
11483
|
# ../commands/subprocess.py
|
11385
11484
|
|
@@ -11396,13 +11495,26 @@ class SubprocessCommand(Command['SubprocessCommand.Output']):
|
|
11396
11495
|
env: ta.Optional[ta.Mapping[str, str]] = None
|
11397
11496
|
|
11398
11497
|
stdout: str = 'pipe' # SubprocessChannelOption
|
11498
|
+
decode_stdout: ta.Optional[str] = None
|
11499
|
+
|
11399
11500
|
stderr: str = 'pipe' # SubprocessChannelOption
|
11501
|
+
decode_stderr: ta.Optional[str] = None
|
11400
11502
|
|
11401
11503
|
input: ta.Optional[bytes] = None
|
11504
|
+
encode_input: ta.Optional[str] = None
|
11505
|
+
input_str: ta.Optional[str] = None
|
11506
|
+
|
11402
11507
|
timeout: ta.Optional[float] = None
|
11403
11508
|
|
11404
11509
|
def __post_init__(self) -> None:
|
11405
11510
|
check.not_isinstance(self.cmd, str)
|
11511
|
+
check.state(not (self.input is not None and self.input_str is not None))
|
11512
|
+
if self.decode_stdout is not None:
|
11513
|
+
check.non_empty_str(self.decode_stdout)
|
11514
|
+
if self.decode_stderr is not None:
|
11515
|
+
check.non_empty_str(self.decode_stderr)
|
11516
|
+
if self.encode_input is not None:
|
11517
|
+
check.non_empty_str(self.encode_input)
|
11406
11518
|
|
11407
11519
|
@dc.dataclass(frozen=True)
|
11408
11520
|
class Output(Command.Output):
|
@@ -11412,11 +11524,25 @@ class SubprocessCommand(Command['SubprocessCommand.Output']):
|
|
11412
11524
|
elapsed_s: float
|
11413
11525
|
|
11414
11526
|
stdout: ta.Optional[bytes] = None
|
11527
|
+
stdout_str: ta.Optional[str] = None
|
11528
|
+
|
11415
11529
|
stderr: ta.Optional[bytes] = None
|
11530
|
+
stderr_str: ta.Optional[str] = None
|
11416
11531
|
|
11417
11532
|
|
11418
11533
|
class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCommand.Output]):
|
11534
|
+
DEFAULT_INPUT_ENCODING: ta.ClassVar[str] = 'utf-8'
|
11535
|
+
|
11419
11536
|
async def execute(self, cmd: SubprocessCommand) -> SubprocessCommand.Output:
|
11537
|
+
input_bytes: ta.Optional[bytes]
|
11538
|
+
if cmd.input is not None:
|
11539
|
+
check.none(cmd.input_str)
|
11540
|
+
input_bytes = cmd.input
|
11541
|
+
elif cmd.input_str is not None:
|
11542
|
+
input_bytes = cmd.input_str.encode(cmd.encode_input or self.DEFAULT_INPUT_ENCODING)
|
11543
|
+
else:
|
11544
|
+
input_bytes = None
|
11545
|
+
|
11420
11546
|
proc: asyncio.subprocess.Process
|
11421
11547
|
async with asyncio_subprocesses.popen(
|
11422
11548
|
*subprocess_maybe_shell_wrap_exec(*cmd.cmd),
|
@@ -11425,7 +11551,7 @@ class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCom
|
|
11425
11551
|
cwd=cmd.cwd,
|
11426
11552
|
env={**os.environ, **(cmd.env or {})},
|
11427
11553
|
|
11428
|
-
stdin=subprocess.PIPE if
|
11554
|
+
stdin=subprocess.PIPE if input_bytes is not None else None,
|
11429
11555
|
stdout=SUBPROCESS_CHANNEL_OPTION_VALUES[ta.cast(SubprocessChannelOption, cmd.stdout)],
|
11430
11556
|
stderr=SUBPROCESS_CHANNEL_OPTION_VALUES[ta.cast(SubprocessChannelOption, cmd.stderr)],
|
11431
11557
|
|
@@ -11434,19 +11560,30 @@ class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCom
|
|
11434
11560
|
start_time = time.time()
|
11435
11561
|
stdout, stderr = await asyncio_subprocesses.communicate(
|
11436
11562
|
proc,
|
11437
|
-
input=
|
11563
|
+
input=input,
|
11438
11564
|
timeout=cmd.timeout,
|
11439
11565
|
)
|
11440
11566
|
end_time = time.time()
|
11441
11567
|
|
11568
|
+
out_kw: ta.Dict[str, ta.Any] = {}
|
11569
|
+
if stdout is not None:
|
11570
|
+
if cmd.decode_stdout is not None:
|
11571
|
+
out_kw.update(stdout_str=stdout.decode(cmd.decode_stdout))
|
11572
|
+
else:
|
11573
|
+
out_kw.update(stdout=stdout)
|
11574
|
+
if stderr is not None:
|
11575
|
+
if cmd.decode_stderr is not None:
|
11576
|
+
out_kw.update(stderr_str=stderr.decode(cmd.decode_stderr))
|
11577
|
+
else:
|
11578
|
+
out_kw.update(stderr=stderr)
|
11579
|
+
|
11442
11580
|
return SubprocessCommand.Output(
|
11443
11581
|
rc=check.not_none(proc.returncode),
|
11444
11582
|
pid=proc.pid,
|
11445
11583
|
|
11446
11584
|
elapsed_s=end_time - start_time,
|
11447
11585
|
|
11448
|
-
|
11449
|
-
stderr=stderr, # noqa
|
11586
|
+
**out_kw,
|
11450
11587
|
)
|
11451
11588
|
|
11452
11589
|
|
@@ -11454,6 +11591,9 @@ class SubprocessCommandExecutor(CommandExecutor[SubprocessCommand, SubprocessCom
|
|
11454
11591
|
# ../deploy/conf/inject.py
|
11455
11592
|
|
11456
11593
|
|
11594
|
+
##
|
11595
|
+
|
11596
|
+
|
11457
11597
|
def bind_deploy_conf() -> InjectorBindings:
|
11458
11598
|
lst: ta.List[InjectorBindingOrBindings] = [
|
11459
11599
|
bind_deploy_manager(DeployConfManager),
|
@@ -11654,6 +11794,9 @@ class DeployGitManager(SingleDirDeployPathOwner):
|
|
11654
11794
|
# ../deploy/paths/inject.py
|
11655
11795
|
|
11656
11796
|
|
11797
|
+
##
|
11798
|
+
|
11799
|
+
|
11657
11800
|
def bind_deploy_paths() -> InjectorBindings:
|
11658
11801
|
lst: ta.List[InjectorBindingOrBindings] = [
|
11659
11802
|
inj.bind_array(DeployPathOwner),
|
@@ -11677,6 +11820,9 @@ TODO:
|
|
11677
11820
|
"""
|
11678
11821
|
|
11679
11822
|
|
11823
|
+
##
|
11824
|
+
|
11825
|
+
|
11680
11826
|
class DeploySystemdManager:
|
11681
11827
|
def __init__(
|
11682
11828
|
self,
|
@@ -11902,6 +12048,9 @@ TODO:
|
|
11902
12048
|
"""
|
11903
12049
|
|
11904
12050
|
|
12051
|
+
##
|
12052
|
+
|
12053
|
+
|
11905
12054
|
@dc.dataclass(frozen=True)
|
11906
12055
|
class SystemPackage:
|
11907
12056
|
name: str
|
@@ -12020,6 +12169,9 @@ class YumSystemPackageManager(SystemPackageManager):
|
|
12020
12169
|
# ../../../omdev/interp/providers/running.py
|
12021
12170
|
|
12022
12171
|
|
12172
|
+
##
|
12173
|
+
|
12174
|
+
|
12023
12175
|
class RunningInterpProvider(InterpProvider):
|
12024
12176
|
@cached_nullary
|
12025
12177
|
def version(self) -> InterpVersion:
|
@@ -12426,6 +12578,40 @@ class PyenvVersionInstaller:
|
|
12426
12578
|
return exe
|
12427
12579
|
|
12428
12580
|
|
12581
|
+
########################################
|
12582
|
+
# ../../../omdev/interp/uv/provider.py
|
12583
|
+
"""
|
12584
|
+
uv run pip
|
12585
|
+
uv run --python 3.11.6 pip
|
12586
|
+
uv venv --python 3.11.6 --seed barf
|
12587
|
+
python3 -m venv barf && barf/bin/pip install uv && barf/bin/uv venv --python 3.11.6 --seed barf2
|
12588
|
+
"""
|
12589
|
+
|
12590
|
+
|
12591
|
+
##
|
12592
|
+
|
12593
|
+
|
12594
|
+
class UvInterpProvider(InterpProvider):
|
12595
|
+
def __init__(
|
12596
|
+
self,
|
12597
|
+
*,
|
12598
|
+
pyenv: Uv,
|
12599
|
+
inspector: InterpInspector,
|
12600
|
+
log: ta.Optional[logging.Logger] = None,
|
12601
|
+
) -> None:
|
12602
|
+
super().__init__()
|
12603
|
+
|
12604
|
+
self._pyenv = pyenv
|
12605
|
+
self._inspector = inspector
|
12606
|
+
self._log = log
|
12607
|
+
|
12608
|
+
async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
|
12609
|
+
return []
|
12610
|
+
|
12611
|
+
async def get_installed_version(self, version: InterpVersion) -> Interp:
|
12612
|
+
raise NotImplementedError
|
12613
|
+
|
12614
|
+
|
12429
12615
|
########################################
|
12430
12616
|
# ../commands/inject.py
|
12431
12617
|
|
@@ -12666,6 +12852,9 @@ class CheckSystemPackageCommandExecutor(CommandExecutor[CheckSystemPackageComman
|
|
12666
12852
|
# ../../../omdev/interp/providers/inject.py
|
12667
12853
|
|
12668
12854
|
|
12855
|
+
##
|
12856
|
+
|
12857
|
+
|
12669
12858
|
def bind_interp_providers() -> InjectorBindings:
|
12670
12859
|
lst: ta.List[InjectorBindingOrBindings] = [
|
12671
12860
|
inj.bind_array(InterpProvider),
|
@@ -12685,6 +12874,9 @@ def bind_interp_providers() -> InjectorBindings:
|
|
12685
12874
|
# ../../../omdev/interp/pyenv/provider.py
|
12686
12875
|
|
12687
12876
|
|
12877
|
+
##
|
12878
|
+
|
12879
|
+
|
12688
12880
|
class PyenvInterpProvider(InterpProvider):
|
12689
12881
|
@dc.dataclass(frozen=True)
|
12690
12882
|
class Options:
|
@@ -12812,6 +13004,24 @@ class PyenvInterpProvider(InterpProvider):
|
|
12812
13004
|
return Interp(exe, version)
|
12813
13005
|
|
12814
13006
|
|
13007
|
+
########################################
|
13008
|
+
# ../../../omdev/interp/uv/inject.py
|
13009
|
+
|
13010
|
+
|
13011
|
+
##
|
13012
|
+
|
13013
|
+
|
13014
|
+
def bind_interp_uv() -> InjectorBindings:
|
13015
|
+
lst: ta.List[InjectorBindingOrBindings] = [
|
13016
|
+
inj.bind(Uv, singleton=True),
|
13017
|
+
|
13018
|
+
inj.bind(UvInterpProvider, singleton=True),
|
13019
|
+
inj.bind(InterpProvider, to_key=UvInterpProvider, array=True),
|
13020
|
+
]
|
13021
|
+
|
13022
|
+
return inj.as_bindings(*lst)
|
13023
|
+
|
13024
|
+
|
12815
13025
|
########################################
|
12816
13026
|
# ../remote/inject.py
|
12817
13027
|
|
@@ -12844,6 +13054,9 @@ def bind_remote(
|
|
12844
13054
|
# ../system/inject.py
|
12845
13055
|
|
12846
13056
|
|
13057
|
+
##
|
13058
|
+
|
13059
|
+
|
12847
13060
|
def bind_system(
|
12848
13061
|
*,
|
12849
13062
|
system_config: SystemConfig,
|
@@ -13033,6 +13246,9 @@ class SshManageTargetConnector(ManageTargetConnector):
|
|
13033
13246
|
# ../../../omdev/interp/pyenv/inject.py
|
13034
13247
|
|
13035
13248
|
|
13249
|
+
##
|
13250
|
+
|
13251
|
+
|
13036
13252
|
def bind_interp_pyenv() -> InjectorBindings:
|
13037
13253
|
lst: ta.List[InjectorBindingOrBindings] = [
|
13038
13254
|
inj.bind(Pyenv, singleton=True),
|
@@ -13077,6 +13293,9 @@ def bind_targets() -> InjectorBindings:
|
|
13077
13293
|
# ../../../omdev/interp/inject.py
|
13078
13294
|
|
13079
13295
|
|
13296
|
+
##
|
13297
|
+
|
13298
|
+
|
13080
13299
|
def bind_interp() -> InjectorBindings:
|
13081
13300
|
lst: ta.List[InjectorBindingOrBindings] = [
|
13082
13301
|
bind_interp_providers(),
|
@@ -13096,6 +13315,7 @@ def bind_interp() -> InjectorBindings:
|
|
13096
13315
|
injector.provide(c)
|
13097
13316
|
for c in [
|
13098
13317
|
PyenvInterpProvider,
|
13318
|
+
UvInterpProvider,
|
13099
13319
|
RunningInterpProvider,
|
13100
13320
|
SystemInterpProvider,
|
13101
13321
|
]
|
@@ -13118,6 +13338,9 @@ def bind_interp() -> InjectorBindings:
|
|
13118
13338
|
# ../../../omdev/interp/default.py
|
13119
13339
|
|
13120
13340
|
|
13341
|
+
##
|
13342
|
+
|
13343
|
+
|
13121
13344
|
@cached_nullary
|
13122
13345
|
def get_default_interp_resolver() -> InterpResolver:
|
13123
13346
|
return inj.create_injector(bind_interp())[InterpResolver]
|
@@ -13162,6 +13385,9 @@ TODO:
|
|
13162
13385
|
"""
|
13163
13386
|
|
13164
13387
|
|
13388
|
+
##
|
13389
|
+
|
13390
|
+
|
13165
13391
|
class DeployVenvManager:
|
13166
13392
|
async def setup_venv(
|
13167
13393
|
self,
|
@@ -13207,6 +13433,9 @@ class DeployVenvManager:
|
|
13207
13433
|
# ../deploy/apps.py
|
13208
13434
|
|
13209
13435
|
|
13436
|
+
##
|
13437
|
+
|
13438
|
+
|
13210
13439
|
class DeployAppManager(DeployPathOwner):
|
13211
13440
|
def __init__(
|
13212
13441
|
self,
|
ominfra/scripts/supervisor.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# @omlish-generated
|
6
6
|
# @omlish-amalg-output ../supervisor/main.py
|
7
7
|
# @omlish-git-diff-omit
|
8
|
-
# ruff: noqa: N802 UP006 UP007 UP012 UP036 UP045
|
8
|
+
# ruff: noqa: N802 UP006 UP007 UP012 UP036 UP043 UP045
|
9
9
|
#
|
10
10
|
# Supervisor is Copyright (c) 2006-2015 Agendaless Consulting and Contributors.
|
11
11
|
# (http://www.agendaless.com), All Rights Reserved
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev357
|
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.13
|
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.dev357
|
16
|
+
Requires-Dist: omlish==0.0.0.dev357
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.21; extra == "all"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
ominfra/.manifests.json,sha256=8KREXxMAlsilZOktXPYru1ND3V5hFI22vnrp6hT3bio,589
|
2
2
|
ominfra/__about__.py,sha256=Cb4OinET2BZACWkjdR97ihmUdjDcQBe_qF2VcJ0tey4,705
|
3
3
|
ominfra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
ominfra/pyremote.py,sha256=
|
4
|
+
ominfra/pyremote.py,sha256=hCoh0m-yxAoHOTB_tG8nwqq_CEXxIF0MTZ0A5eaZcSM,16529
|
5
5
|
ominfra/systemd.py,sha256=-tk4qeQF9py98AtK5VVGYwcgQ_mJPanEWbemoU-nmbY,1028
|
6
6
|
ominfra/threadworkers.py,sha256=We6wkoq-cd0DRAxS0z5bUXQKtSwwfcHNZqRuIU57doU,4980
|
7
7
|
ominfra/clouds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -57,64 +57,64 @@ ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
|
|
57
57
|
ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
58
|
ominfra/manage/commands/base.py,sha256=8wXSlvihd4GBwYa05HZ9QD2-uiH7dUqEG0uP6flxuJQ,3999
|
59
59
|
ominfra/manage/commands/inject.py,sha256=ixQVuKN808dTSqHp5V-MUIgDHw5jVei8BnEy-bE4tDY,2960
|
60
|
-
ominfra/manage/commands/injection.py,sha256=
|
61
|
-
ominfra/manage/commands/local.py,sha256=
|
62
|
-
ominfra/manage/commands/marshal.py,sha256=
|
60
|
+
ominfra/manage/commands/injection.py,sha256=6jVPO2mhaorVfe7vAv8EQQSkxgEZhu-NZHpK37JlKc0,846
|
61
|
+
ominfra/manage/commands/local.py,sha256=dESeaFeQAiWMCx62wfaqbJlJF6kALKi6Fzy1M5H-H3A,543
|
62
|
+
ominfra/manage/commands/marshal.py,sha256=k3MmlHy4ibQjaZwMNcjvjjMsjdegn0XWTnJ6XLSDJ2c,694
|
63
63
|
ominfra/manage/commands/ping.py,sha256=DVZFzL1Z_f-Bq53vxMrL3xOi0iK_nMonJE4KvQf9wsI,546
|
64
|
-
ominfra/manage/commands/subprocess.py,sha256=
|
64
|
+
ominfra/manage/commands/subprocess.py,sha256=UjoZA_csQ5ksb1ZPSByP9noS5920DOvQg1SqDBxFusg,3892
|
65
65
|
ominfra/manage/commands/types.py,sha256=tEufI13T1j1Ji2p2APNpPfBz4pFI2KiFv5ady9UXdXI,216
|
66
66
|
ominfra/manage/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
|
-
ominfra/manage/deploy/apps.py,sha256=
|
67
|
+
ominfra/manage/deploy/apps.py,sha256=PcBkx-3PGTdP7kpKD2Sk401HljQVcHcrAbXfP4dh0G8,4876
|
68
68
|
ominfra/manage/deploy/commands.py,sha256=gGrw7JNkPrxAh_x5-ih1_XG6kGhoqPwRD1wjdaNUSR8,836
|
69
69
|
ominfra/manage/deploy/config.py,sha256=EsDzSvUzNrFT32tL53xIY2MSKstTrf-L7sBtedYAlDw,120
|
70
70
|
ominfra/manage/deploy/deploy.py,sha256=naI0vH5MQNiSu3go9y35k-C9rGUfvz_V246oJ_HOUr8,8972
|
71
71
|
ominfra/manage/deploy/git.py,sha256=D3mdEM5LifnAfAVPVwAIZYc5X0A4A7lyF46diheqBW8,5539
|
72
72
|
ominfra/manage/deploy/inject.py,sha256=el2GPkY7uV_2_PIlMwT9FnY-QGQQPUL8U3OzR0bvh1o,3478
|
73
|
-
ominfra/manage/deploy/injection.py,sha256=
|
73
|
+
ominfra/manage/deploy/injection.py,sha256=88zkzgtAY2Rg6qaXqSa555W7RMMYglWXdfZNlKs2a4Q,403
|
74
74
|
ominfra/manage/deploy/interp.py,sha256=IRM-_r1PWtcrjennC02jbWF6xWsBhxDMQG_6bJ6o3v0,1043
|
75
|
-
ominfra/manage/deploy/nginx.py,sha256=
|
75
|
+
ominfra/manage/deploy/nginx.py,sha256=L_1txY0z4HPAXjz9qkjwM8gT1X16zKCq77Nfp5_F79k,100
|
76
76
|
ominfra/manage/deploy/specs.py,sha256=q3_tfzkVB6bXQ4cNobIRTYoSPFCUFAo_4R71nL9tPfE,2899
|
77
|
-
ominfra/manage/deploy/systemd.py,sha256=
|
77
|
+
ominfra/manage/deploy/systemd.py,sha256=5P8QTJ0Oa1PBDja8oljfmaQBetObS1bD9QkwsWNOiuc,3623
|
78
78
|
ominfra/manage/deploy/tags.py,sha256=Z0uIbiEEGxWtqytMR6QyAquBDRtQBT0apNZB3kHj2Z4,5124
|
79
|
-
ominfra/manage/deploy/tmp.py,sha256=
|
79
|
+
ominfra/manage/deploy/tmp.py,sha256=E-59X9KzV4wXXNr7J4_NbRX8N5EPOo7KL-hRw9pZ6yY,740
|
80
80
|
ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
|
81
|
-
ominfra/manage/deploy/venvs.py,sha256=
|
81
|
+
ominfra/manage/deploy/venvs.py,sha256=QES260A0QbX1YIY7cXxFbSlzXcWGfH05cilZ3fEx0CE,1707
|
82
82
|
ominfra/manage/deploy/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
-
ominfra/manage/deploy/conf/inject.py,sha256=
|
83
|
+
ominfra/manage/deploy/conf/inject.py,sha256=MWN56HbSBK57WrU4nznJk4lJbQjM4NKwp6VhlKmiqac,464
|
84
84
|
ominfra/manage/deploy/conf/manager.py,sha256=ktLS1sAuVVR0quevr3tEc77q6shGuAcBSmfYO4YHPEw,8328
|
85
85
|
ominfra/manage/deploy/conf/specs.py,sha256=KwvppmSpAL-ieTk4zOF85wCJovMypAHTMv7daEvnahA,2197
|
86
86
|
ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
|
-
ominfra/manage/deploy/paths/inject.py,sha256=
|
88
|
-
ominfra/manage/deploy/paths/manager.py,sha256=
|
89
|
-
ominfra/manage/deploy/paths/owners.py,sha256=
|
87
|
+
ominfra/manage/deploy/paths/inject.py,sha256=WZarL7SizE3GR1n1atHXeudBXd2A4R_2-w6iPWuXkG0,607
|
88
|
+
ominfra/manage/deploy/paths/manager.py,sha256=RRgMPJ9gMrEFsU0Dezbls45M6kjmvKzAqRo9vmDWj-w,940
|
89
|
+
ominfra/manage/deploy/paths/owners.py,sha256=Cb_80BBrsUo6Rm0tWTljjEScoCHL0PWbLGvWlvqBZl8,1240
|
90
90
|
ominfra/manage/deploy/paths/paths.py,sha256=8_RVgHctv_Lj4v7FjxMDSXcayXaIo_CRMwhIBRUQ2iQ,5643
|
91
|
-
ominfra/manage/deploy/paths/specs.py,sha256=
|
91
|
+
ominfra/manage/deploy/paths/specs.py,sha256=HDP1XLKHJx1NwpJZuGikirmkHoFPYHX6Myn_Vd03CVQ,255
|
92
92
|
ominfra/manage/deploy/paths/types.py,sha256=WyQA5DlM5vKZnGXZouunuLTPl3KV7ktaez_sqoC5clY,118
|
93
93
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
94
94
|
ominfra/manage/remote/_main.py,sha256=UIp_Xalp8FP-p1cSe3uO7TPJrJEUnbPrNWIZRJDmg-s,4362
|
95
95
|
ominfra/manage/remote/channel.py,sha256=6eYzQfmTRN4nvQyFOt37EKPjUQ10Bbu8d6Zq4cpWhNc,2230
|
96
|
-
ominfra/manage/remote/config.py,sha256=
|
97
|
-
ominfra/manage/remote/connection.py,sha256=
|
96
|
+
ominfra/manage/remote/config.py,sha256=0tgfTJKa2Cy2nzl2j3allYyMIEsAwhIlF02v9ke-990,484
|
97
|
+
ominfra/manage/remote/connection.py,sha256=vciH5wtzXN7g-B6hlR97m886YSflbnDASLUDjz5mq7Q,3807
|
98
98
|
ominfra/manage/remote/execution.py,sha256=0r34APS4YYvUqWijBQa3HizoNJ5U9PAdu5L9mSHPrsE,11744
|
99
99
|
ominfra/manage/remote/inject.py,sha256=7upiQPMa_JkcdHgYyJjmbppIy3E2ne7IxJ_EZuIQllQ,1086
|
100
|
-
ominfra/manage/remote/payload.py,sha256=
|
101
|
-
ominfra/manage/remote/spawning.py,sha256=
|
100
|
+
ominfra/manage/remote/payload.py,sha256=QVNz7bBBWKLdXPuIGfQ0FW1rWE8nrBEE5Q9cLgF8FwU,955
|
101
|
+
ominfra/manage/remote/spawning.py,sha256=jjReGjsW4MWq5wecrPBLg-4leCVeris04HvctWTnegA,3318
|
102
102
|
ominfra/manage/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
103
|
ominfra/manage/system/commands.py,sha256=VN-nthJB4LYwsDvPNmc_mYe4XyWnStAi7SLZGaEPZCA,1179
|
104
|
-
ominfra/manage/system/config.py,sha256=
|
105
|
-
ominfra/manage/system/inject.py,sha256=
|
106
|
-
ominfra/manage/system/packages.py,sha256=
|
104
|
+
ominfra/manage/system/config.py,sha256=Ql-kCV4BVsgmMh08SrxJ7YW-BCLviOJM-cpoZ2gBIL0,207
|
105
|
+
ominfra/manage/system/inject.py,sha256=i1yCAnmhN_mUe9CY2YdNT0GBipo7WED_vncWbZFvF3c,1885
|
106
|
+
ominfra/manage/system/packages.py,sha256=xe_JNv5rTPlqKGfkiB9iDmH-bAEdvQ0yeFiY6mPVTKc,4641
|
107
107
|
ominfra/manage/system/platforms.py,sha256=F0bgYzUzCjZ2LbWVvnEq2ya_X_LfRW406LQYFL7bG44,1202
|
108
108
|
ominfra/manage/targets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
109
|
ominfra/manage/targets/bestpython.py,sha256=6_CH_Vm9Am5aD5UV3m8uC-B8bvMNSjVIWicPmFw0aLI,631
|
110
110
|
ominfra/manage/targets/bestpython.sh,sha256=RTvImgsRv-67D9Ugg5bo7NfpV2MD8zTsLt6aipdLQiQ,350
|
111
|
-
ominfra/manage/targets/connection.py,sha256=
|
111
|
+
ominfra/manage/targets/connection.py,sha256=Ut-R_PvQN9tPBacZD0ODmLIYvLsgS51qvOGrNgAyiEo,5028
|
112
112
|
ominfra/manage/targets/inject.py,sha256=WhkEAB5BFWtENnVMmuiy9eoBNd6jBPSGZsWjT_9_7JA,1567
|
113
113
|
ominfra/manage/targets/targets.py,sha256=WmasYmL6xfAI7F0XvDhScFdBVxkqPkmo_gRgABmmkGA,1891
|
114
114
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
115
|
-
ominfra/scripts/journald2aws.py,sha256=
|
116
|
-
ominfra/scripts/manage.py,sha256=
|
117
|
-
ominfra/scripts/supervisor.py,sha256=
|
115
|
+
ominfra/scripts/journald2aws.py,sha256=qV9yL8xZSPd2Ec2ZY67rhGQQ9ZzeOafuwu9cBALQVik,171899
|
116
|
+
ominfra/scripts/manage.py,sha256=8oZbE87PcWLbUKtiKEQRIMQsg2RYeGr-uP_vhgu64Ac,390105
|
117
|
+
ominfra/scripts/supervisor.py,sha256=xF-GynxXERKfUkP9P_AREDt4Ggxj5MTiNgiz-FJkK6I,304404
|
118
118
|
ominfra/supervisor/LICENSE.txt,sha256=ZrHY15PVR98y26Yg6iQfa-SXnUaYTDhrUsPVcEO5OKM,1874
|
119
119
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
120
120
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -156,9 +156,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
156
156
|
ominfra/tailscale/cli.py,sha256=zRV7-tKB7kBah1oTVZlol-vwx1FBlnfzYAPGkeU5jX4,3543
|
157
157
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
158
158
|
ominfra/tools/listresources.py,sha256=auGP1LlbBJSFKUWNvQo_UzA8IsBNZBTMwEkFFRJ4FX4,6185
|
159
|
-
ominfra-0.0.0.
|
160
|
-
ominfra-0.0.0.
|
161
|
-
ominfra-0.0.0.
|
162
|
-
ominfra-0.0.0.
|
163
|
-
ominfra-0.0.0.
|
164
|
-
ominfra-0.0.0.
|
159
|
+
ominfra-0.0.0.dev357.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
160
|
+
ominfra-0.0.0.dev357.dist-info/METADATA,sha256=OPD_Ml1F-Or7UJT4H-uvQWNPglktwUfpIzlcSJw0GZM,753
|
161
|
+
ominfra-0.0.0.dev357.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
162
|
+
ominfra-0.0.0.dev357.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
163
|
+
ominfra-0.0.0.dev357.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
164
|
+
ominfra-0.0.0.dev357.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|