ominfra 0.0.0.dev162__tar.gz → 0.0.0.dev163__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {ominfra-0.0.0.dev162/ominfra.egg-info → ominfra-0.0.0.dev163}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/apps.py +3 -2
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/specs.py +18 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/venvs.py +9 -4
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/scripts/manage.py +29 -6
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163/ominfra.egg-info}/PKG-INFO +3 -3
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra.egg-info/requires.txt +2 -2
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/pyproject.toml +3 -3
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/LICENSE +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/MANIFEST.in +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/README.rst +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/.manifests.json +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/__about__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/__main__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/auth.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/cli.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/dataclasses.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/__main__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/cursor.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/driver.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/main.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/journald2aws/poster.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/logs.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/aws/metadata.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/gcp/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/clouds/gcp/auth.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/cmds.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/configs.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/journald/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/journald/fields.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/journald/genmessages.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/journald/messages.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/journald/tailer.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/__main__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/bootstrap.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/bootstrap_.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/base.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/local.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/marshal.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/ping.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/subprocess.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/commands/types.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/config.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/commands.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/config.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/git.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/interp.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/paths.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/tmp.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/deploy/types.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/main.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/marshal.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/_main.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/channel.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/config.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/connection.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/execution.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/payload.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/remote/spawning.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/commands.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/config.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/packages.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/system/platforms.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/targets/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/targets/connection.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/targets/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/manage/targets/targets.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/pyremote.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/scripts/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/scripts/journald2aws.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/scripts/supervisor.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/ssh.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/LICENSE.txt +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/__main__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/configs.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/dispatchers.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/dispatchersimpl.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/events.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/exceptions.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/groups.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/groupsimpl.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/http.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/inject.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/io.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/main.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/pipes.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/privileges.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/process.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/processimpl.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/setup.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/setupimpl.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/signals.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/spawning.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/spawningimpl.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/states.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/supervisor.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/types.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/collections.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/diag.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/fds.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/fs.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/os.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/ostypes.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/signals.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/strings.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/supervisor/utils/users.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/tailscale/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/tailscale/api.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/tailscale/cli.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/threadworkers.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/tools/__init__.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra/tools/listresources.py +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra.egg-info/SOURCES.txt +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra.egg-info/dependency_links.txt +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra.egg-info/entry_points.txt +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/ominfra.egg-info/top_level.txt +0 -0
- {ominfra-0.0.0.dev162 → ominfra-0.0.0.dev163}/setup.cfg +0 -0
@@ -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"
|
@@ -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)
|
@@ -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
|
|
@@ -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
|
)
|
@@ -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"
|
@@ -12,7 +12,7 @@ authors = [
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
13
13
|
license = {text = 'BSD-3-Clause'}
|
14
14
|
requires-python = '>=3.12'
|
15
|
-
version = '0.0.0.
|
15
|
+
version = '0.0.0.dev163'
|
16
16
|
classifiers = [
|
17
17
|
'License :: OSI Approved :: BSD License',
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
@@ -22,8 +22,8 @@ classifiers = [
|
|
22
22
|
]
|
23
23
|
description = 'ominfra'
|
24
24
|
dependencies = [
|
25
|
-
'omdev == 0.0.0.
|
26
|
-
'omlish == 0.0.0.
|
25
|
+
'omdev == 0.0.0.dev163',
|
26
|
+
'omlish == 0.0.0.dev163',
|
27
27
|
]
|
28
28
|
|
29
29
|
[project.optional-dependencies]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|