ominfra 0.0.0.dev162__py3-none-any.whl → 0.0.0.dev163__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 +3 -2
- ominfra/manage/deploy/specs.py +18 -0
- ominfra/manage/deploy/venvs.py +9 -4
- ominfra/scripts/manage.py +29 -6
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/RECORD +10 -10
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev162.dist-info → ominfra-0.0.0.dev163.dist-info}/top_level.txt +0 -0
ominfra/manage/deploy/apps.py
CHANGED
@@ -51,7 +51,7 @@ class DeployAppManager(DeployPathOwner):
|
|
51
51
|
|
52
52
|
def get_owned_deploy_paths(self) -> ta.AbstractSet[DeployPath]:
|
53
53
|
return {
|
54
|
-
DeployPath.parse('apps/@app/@tag'),
|
54
|
+
DeployPath.parse('apps/@app/@tag/'),
|
55
55
|
}
|
56
56
|
|
57
57
|
async def prepare_app(
|
@@ -70,4 +70,5 @@ class DeployAppManager(DeployPathOwner):
|
|
70
70
|
|
71
71
|
#
|
72
72
|
|
73
|
-
|
73
|
+
if spec.venv is not None:
|
74
|
+
await self._venvs.setup_app_venv(app_tag, spec.venv)
|
ominfra/manage/deploy/specs.py
CHANGED
@@ -43,11 +43,29 @@ class DeployGitCheckout:
|
|
43
43
|
##
|
44
44
|
|
45
45
|
|
46
|
+
@dc.dataclass(frozen=True)
|
47
|
+
class DeployVenvSpec:
|
48
|
+
interp: ta.Optional[str] = None
|
49
|
+
|
50
|
+
requirements_files: ta.Optional[ta.Sequence[str]] = None
|
51
|
+
extra_dependencies: ta.Optional[ta.Sequence[str]] = None
|
52
|
+
|
53
|
+
use_uv: bool = False
|
54
|
+
|
55
|
+
def __post_init__(self) -> None:
|
56
|
+
hash(self)
|
57
|
+
|
58
|
+
|
59
|
+
##
|
60
|
+
|
61
|
+
|
46
62
|
@dc.dataclass(frozen=True)
|
47
63
|
class DeploySpec:
|
48
64
|
app: DeployApp
|
49
65
|
checkout: DeployGitCheckout
|
50
66
|
|
67
|
+
venv: ta.Optional[DeployVenvSpec] = None
|
68
|
+
|
51
69
|
def __post_init__(self) -> None:
|
52
70
|
hash(self)
|
53
71
|
|
ominfra/manage/deploy/venvs.py
CHANGED
@@ -14,6 +14,7 @@ from omlish.os.atomics import AtomicPathSwapping
|
|
14
14
|
|
15
15
|
from .paths import DeployPath
|
16
16
|
from .paths import DeployPathOwner
|
17
|
+
from .specs import DeployVenvSpec
|
17
18
|
from .types import DeployAppTag
|
18
19
|
from .types import DeployHome
|
19
20
|
|
@@ -43,8 +44,7 @@ class DeployVenvManager(DeployPathOwner):
|
|
43
44
|
self,
|
44
45
|
app_dir: str,
|
45
46
|
venv_dir: str,
|
46
|
-
|
47
|
-
use_uv: bool = True,
|
47
|
+
spec: DeployVenvSpec,
|
48
48
|
) -> None:
|
49
49
|
sys_exe = 'python3'
|
50
50
|
|
@@ -61,7 +61,7 @@ class DeployVenvManager(DeployPathOwner):
|
|
61
61
|
reqs_txt = os.path.join(app_dir, 'requirements.txt')
|
62
62
|
|
63
63
|
if os.path.isfile(reqs_txt):
|
64
|
-
if use_uv:
|
64
|
+
if spec.use_uv:
|
65
65
|
await asyncio_subprocesses.check_call(venv_exe, '-m', 'pip', 'install', 'uv')
|
66
66
|
pip_cmd = ['-m', 'uv', 'pip']
|
67
67
|
else:
|
@@ -69,8 +69,13 @@ class DeployVenvManager(DeployPathOwner):
|
|
69
69
|
|
70
70
|
await asyncio_subprocesses.check_call(venv_exe, *pip_cmd,'install', '-r', reqs_txt)
|
71
71
|
|
72
|
-
async def setup_app_venv(
|
72
|
+
async def setup_app_venv(
|
73
|
+
self,
|
74
|
+
app_tag: DeployAppTag,
|
75
|
+
spec: DeployVenvSpec,
|
76
|
+
) -> None:
|
73
77
|
await self.setup_venv(
|
74
78
|
os.path.join(check.non_empty_str(self._deploy_home), 'apps', app_tag.app, app_tag.tag),
|
75
79
|
os.path.join(self._dir(), app_tag.app, app_tag.tag),
|
80
|
+
spec,
|
76
81
|
)
|
ominfra/scripts/manage.py
CHANGED
@@ -4329,11 +4329,29 @@ class DeployGitCheckout:
|
|
4329
4329
|
##
|
4330
4330
|
|
4331
4331
|
|
4332
|
+
@dc.dataclass(frozen=True)
|
4333
|
+
class DeployVenvSpec:
|
4334
|
+
interp: ta.Optional[str] = None
|
4335
|
+
|
4336
|
+
requirements_files: ta.Optional[ta.Sequence[str]] = None
|
4337
|
+
extra_dependencies: ta.Optional[ta.Sequence[str]] = None
|
4338
|
+
|
4339
|
+
use_uv: bool = False
|
4340
|
+
|
4341
|
+
def __post_init__(self) -> None:
|
4342
|
+
hash(self)
|
4343
|
+
|
4344
|
+
|
4345
|
+
##
|
4346
|
+
|
4347
|
+
|
4332
4348
|
@dc.dataclass(frozen=True)
|
4333
4349
|
class DeploySpec:
|
4334
4350
|
app: DeployApp
|
4335
4351
|
checkout: DeployGitCheckout
|
4336
4352
|
|
4353
|
+
venv: ta.Optional[DeployVenvSpec] = None
|
4354
|
+
|
4337
4355
|
def __post_init__(self) -> None:
|
4338
4356
|
hash(self)
|
4339
4357
|
|
@@ -8284,8 +8302,7 @@ class DeployVenvManager(DeployPathOwner):
|
|
8284
8302
|
self,
|
8285
8303
|
app_dir: str,
|
8286
8304
|
venv_dir: str,
|
8287
|
-
|
8288
|
-
use_uv: bool = True,
|
8305
|
+
spec: DeployVenvSpec,
|
8289
8306
|
) -> None:
|
8290
8307
|
sys_exe = 'python3'
|
8291
8308
|
|
@@ -8302,7 +8319,7 @@ class DeployVenvManager(DeployPathOwner):
|
|
8302
8319
|
reqs_txt = os.path.join(app_dir, 'requirements.txt')
|
8303
8320
|
|
8304
8321
|
if os.path.isfile(reqs_txt):
|
8305
|
-
if use_uv:
|
8322
|
+
if spec.use_uv:
|
8306
8323
|
await asyncio_subprocesses.check_call(venv_exe, '-m', 'pip', 'install', 'uv')
|
8307
8324
|
pip_cmd = ['-m', 'uv', 'pip']
|
8308
8325
|
else:
|
@@ -8310,10 +8327,15 @@ class DeployVenvManager(DeployPathOwner):
|
|
8310
8327
|
|
8311
8328
|
await asyncio_subprocesses.check_call(venv_exe, *pip_cmd,'install', '-r', reqs_txt)
|
8312
8329
|
|
8313
|
-
async def setup_app_venv(
|
8330
|
+
async def setup_app_venv(
|
8331
|
+
self,
|
8332
|
+
app_tag: DeployAppTag,
|
8333
|
+
spec: DeployVenvSpec,
|
8334
|
+
) -> None:
|
8314
8335
|
await self.setup_venv(
|
8315
8336
|
os.path.join(check.non_empty_str(self._deploy_home), 'apps', app_tag.app, app_tag.tag),
|
8316
8337
|
os.path.join(self._dir(), app_tag.app, app_tag.tag),
|
8338
|
+
spec,
|
8317
8339
|
)
|
8318
8340
|
|
8319
8341
|
|
@@ -8879,7 +8901,7 @@ class DeployAppManager(DeployPathOwner):
|
|
8879
8901
|
|
8880
8902
|
def get_owned_deploy_paths(self) -> ta.AbstractSet[DeployPath]:
|
8881
8903
|
return {
|
8882
|
-
DeployPath.parse('apps/@app/@tag'),
|
8904
|
+
DeployPath.parse('apps/@app/@tag/'),
|
8883
8905
|
}
|
8884
8906
|
|
8885
8907
|
async def prepare_app(
|
@@ -8898,7 +8920,8 @@ class DeployAppManager(DeployPathOwner):
|
|
8898
8920
|
|
8899
8921
|
#
|
8900
8922
|
|
8901
|
-
|
8923
|
+
if spec.venv is not None:
|
8924
|
+
await self._venvs.setup_app_venv(app_tag, spec.venv)
|
8902
8925
|
|
8903
8926
|
|
8904
8927
|
########################################
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev163
|
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.dev163
|
16
|
+
Requires-Dist: omlish==0.0.0.dev163
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -44,17 +44,17 @@ 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=
|
47
|
+
ominfra/manage/deploy/apps.py,sha256=Nv3eXVPxEbSz4wyTI8chJ-C-EEC721vFssvvg0YDRXo,1937
|
48
48
|
ominfra/manage/deploy/commands.py,sha256=N9qVntnRgJ_IneI7rEQB2Za0oU7gouPfm-sl2MCwW1E,764
|
49
49
|
ominfra/manage/deploy/config.py,sha256=aR6ubMEWqkTI55XtcG1Cczn6YhCVN6eSL8DT5EHQJN0,166
|
50
50
|
ominfra/manage/deploy/git.py,sha256=6CGLvGH8uYkuT8gyZHybJb7sgUPTtFgy7grj1YHkI9g,3747
|
51
51
|
ominfra/manage/deploy/inject.py,sha256=8wuIgdzkDCHbc69nD1meLjwfCOMdWOIfDT5yijL-du8,1441
|
52
52
|
ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
|
53
53
|
ominfra/manage/deploy/paths.py,sha256=tK8zZFWOHDRdTN5AlTe-3MpgZqovhWrljGosQmeEYvo,6839
|
54
|
-
ominfra/manage/deploy/specs.py,sha256=
|
54
|
+
ominfra/manage/deploy/specs.py,sha256=qQSMA2ns0dalbizYwOp14i154mCOkjyvvh4_cN0gT3k,1574
|
55
55
|
ominfra/manage/deploy/tmp.py,sha256=L0pIfQuxQ7_6gC_AAv7eubI37_IPzCVR29hkn1MHL2Q,1230
|
56
56
|
ominfra/manage/deploy/types.py,sha256=o95wqvTGNRq8Cxx7VpqeX-9x1tI8k8BpqPFvJZkJYBA,305
|
57
|
-
ominfra/manage/deploy/venvs.py,sha256=
|
57
|
+
ominfra/manage/deploy/venvs.py,sha256=u8ds1TVyipFVSfm7sgEHGPw4JPG_hXY2j1LnTCLjxqw,2337
|
58
58
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
59
|
ominfra/manage/remote/_main.py,sha256=p5KoiS2WMw6QAqlDl_Zun-JybmCsy8awIfpBMLBjGMY,4356
|
60
60
|
ominfra/manage/remote/channel.py,sha256=36xR9Ti9ZA8TUBtxmY0u7_3Lv7E6wzQTxlZl7gLR5GE,2224
|
@@ -76,7 +76,7 @@ ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhh
|
|
76
76
|
ominfra/manage/targets/targets.py,sha256=CFl8Uirgn3gfowO1Fn-LBK-6qYqEMFJ9snPUl0gCRuM,1753
|
77
77
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
78
|
ominfra/scripts/journald2aws.py,sha256=EC8tSKW3hztBV_Kr_ykK72AmcvnWivUxcz6Sfg3M_hI,155085
|
79
|
-
ominfra/scripts/manage.py,sha256=
|
79
|
+
ominfra/scripts/manage.py,sha256=M8k4XmOrq2R3rjUNU3SAHeqdjvWZptpXvFAl4A0RmGM,294060
|
80
80
|
ominfra/scripts/supervisor.py,sha256=uPcw4o8gt8xvQ97jXK-WBAaZj3D81Lq9tqDoKxGvLCU,273791
|
81
81
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
82
82
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
@@ -119,9 +119,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
119
119
|
ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
|
120
120
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
121
121
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
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.
|
127
|
-
ominfra-0.0.0.
|
122
|
+
ominfra-0.0.0.dev163.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
123
|
+
ominfra-0.0.0.dev163.dist-info/METADATA,sha256=q9fLsfIpIUNBG4_udrnURTTYe68b6VtNtktfvCBVlIs,731
|
124
|
+
ominfra-0.0.0.dev163.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
125
|
+
ominfra-0.0.0.dev163.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
126
|
+
ominfra-0.0.0.dev163.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
127
|
+
ominfra-0.0.0.dev163.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|