ominfra 0.0.0.dev188__py3-none-any.whl → 0.0.0.dev190__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.
@@ -3652,10 +3652,15 @@ class DelimitingBuffer:
3652
3652
 
3653
3653
 
3654
3654
  class ReadableListBuffer:
3655
+ # FIXME: merge with PrependableGeneratorReader
3656
+
3655
3657
  def __init__(self) -> None:
3656
3658
  super().__init__()
3657
3659
  self._lst: list[bytes] = []
3658
3660
 
3661
+ def __len__(self) -> int:
3662
+ return sum(map(len, self._lst))
3663
+
3659
3664
  def feed(self, d: bytes) -> None:
3660
3665
  if d:
3661
3666
  self._lst.append(d)
@@ -3694,6 +3699,12 @@ class ReadableListBuffer:
3694
3699
 
3695
3700
  return None
3696
3701
 
3702
+ def read_exact(self, sz: int) -> bytes:
3703
+ d = self.read(sz)
3704
+ if d is None or len(d) != sz:
3705
+ raise EOFError(f'ReadableListBuffer got {"no" if d is None else len(d)}, expected {sz}')
3706
+ return d
3707
+
3697
3708
  def read_until(self, delim: bytes = b'\n') -> ta.Optional[bytes]:
3698
3709
  if not (lst := self._lst):
3699
3710
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev188
3
+ Version: 0.0.0.dev190
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,8 +12,9 @@ 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.dev188
16
- Requires-Dist: omlish==0.0.0.dev188
15
+ Requires-Dist: omdev==0.0.0.dev190
16
+ Requires-Dist: omlish==0.0.0.dev190
17
+ Requires-Dist: omserv==0.0.0.dev190
17
18
  Provides-Extra: all
18
19
  Requires-Dist: paramiko~=3.5; extra == "all"
19
20
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -1,5 +1,5 @@
1
1
  ominfra/.manifests.json,sha256=8KREXxMAlsilZOktXPYru1ND3V5hFI22vnrp6hT3bio,589
2
- ominfra/__about__.py,sha256=6i1AoruFYQCd-PyhhbDQDWY2d1tiQu9nkwWr-fXAqfY,705
2
+ ominfra/__about__.py,sha256=_gUs3H7uunGy5IfGw3mq4dFJWaF1mecSPruJPyjbs7Y,741
3
3
  ominfra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  ominfra/cmds.py,sha256=E0AfnvEmnKntXWvmLW5L05_NeDpBET1VBXn7vV6EwBQ,2083
5
5
  ominfra/configs.py,sha256=UrwZrzsnU4E305OoFH_eAcyI8e82LQZ2yhy8WnuAUGM,3055
@@ -44,29 +44,30 @@ 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=d0OwAVqLyr-_lrsmaeTH69G4b6vIm6ESvmWqKjA-Xn0,4750
48
- ominfra/manage/deploy/commands.py,sha256=U74HYQ4nhvH7znAKyXGOmZfdnll2gMWxKWVW4GzxG-0,830
47
+ ominfra/manage/deploy/apps.py,sha256=cZmM3VgWlojKoGFAQN2Zzu5UkT_o7SXaoXg1iKdmFE8,3010
48
+ ominfra/manage/deploy/commands.py,sha256=OVZzSY4EP_SD7KJRkIIPeqUxcV4mcwrc_WYNvM16ahM,830
49
49
  ominfra/manage/deploy/config.py,sha256=kPpl8TRisz295cM4oj-RHA6oh5jdcJ_N9pVpkl_doO8,114
50
- ominfra/manage/deploy/deploy.py,sha256=vyBTbBm51HhRE-MQNvxEt39F8uOYsB4ToqZ3zmVkpqU,819
51
- ominfra/manage/deploy/driver.py,sha256=kSriXFC8L_EpOcHFGxNZDBGyxV_fZAAF95y-czisnwE,1352
50
+ ominfra/manage/deploy/deploy.py,sha256=qAae-MIsaebt1WuyT6vdYFDX6aLkuhDOesaCzMvpY1w,6041
52
51
  ominfra/manage/deploy/git.py,sha256=g4wzUuSu9HwWSDhdVX-7BvA2htMwtWbRcHaoDy-xOJ4,3960
53
- ominfra/manage/deploy/inject.py,sha256=8Y1wUEnWCFh9a7YEzHi1GaPfK18c6wP6eVVkKKheScw,3378
52
+ ominfra/manage/deploy/inject.py,sha256=lVNik0CfQMd31fiqzFlM828oQKVUTJY-zTmU1pGOopQ,3467
54
53
  ominfra/manage/deploy/inject_.py,sha256=LR7gEkVx2ldUoQZsGvIcm1Y4QXCVDnLIAdc3LHhQiD4,392
55
54
  ominfra/manage/deploy/interp.py,sha256=_5fuHrY5ZA0eGbnNcOqAhAMSWI1UNvbm0l29eDjE5fI,1037
56
- ominfra/manage/deploy/specs.py,sha256=-WSVpRwiwgXVUh4HVdFUYxadxbLz1WX1ARmQXvmbLlw,2445
55
+ ominfra/manage/deploy/nginx.py,sha256=cU9GjWMSxqeNhbuSBZYRuBXUokiRiY4OWMLAgbj_4m4,89
56
+ ominfra/manage/deploy/specs.py,sha256=Bl0Fp1_loWZ3Y6gFGE9j_neTslaN4jMwFKHmoFcQixs,2629
57
+ ominfra/manage/deploy/systemd.py,sha256=aDwm3Ly0I4qSZehInIGn_70RQvgdzUCSTfOTlhRmVrM,2765
57
58
  ominfra/manage/deploy/tags.py,sha256=3BU0OtHQJ1Vk9B_U7Q3Cq1rbVgxcXrFki24WU0nPX1M,5106
58
59
  ominfra/manage/deploy/tmp.py,sha256=FqXoVpIpVe8-KWNu7kXt37A4jKdK_y7h_YFvtrUoOG8,729
59
60
  ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
60
- ominfra/manage/deploy/venvs.py,sha256=1Ic3yKap9bTduqHorz1MpmSiQPh9x-vxhLLxgpVpRdc,1592
61
+ ominfra/manage/deploy/venvs.py,sha256=cwHapRRMioWvsYJL2-8SijTDOmiVoXIsOlunEIaIuVU,1532
61
62
  ominfra/manage/deploy/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
63
  ominfra/manage/deploy/conf/inject.py,sha256=xHZQr7oaJCxaKgpJ0H-hgiQNGt4QsskhT3f5v7xrFwE,451
63
- ominfra/manage/deploy/conf/manager.py,sha256=29txtcAeRNUqK2MD1V5Q-82EoeExdkkV4fRvPnc8GTs,6226
64
- ominfra/manage/deploy/conf/specs.py,sha256=r9Tf6i0TPVOTuoS__F5Yz1v14Btfqtb1nvUdgEaNeBU,2030
64
+ ominfra/manage/deploy/conf/manager.py,sha256=h8tJJv-ZfK5Jiw4xM-mbEoWolVUlq_ETsNqNhSzN9ag,6653
65
+ ominfra/manage/deploy/conf/specs.py,sha256=AWeofV1YbcNZS-7WX7EpsX8i_7stJAXndXktB6fDWw8,2187
65
66
  ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
67
  ominfra/manage/deploy/paths/inject.py,sha256=X81C-Qhef1LQ7tILWvkomBwFTvgooLVmWRnKL7TeVoI,596
67
68
  ominfra/manage/deploy/paths/manager.py,sha256=Dnl8euyZQYDGwDzkMvgPAwOssseducr5kP6T0qzVXQk,929
68
69
  ominfra/manage/deploy/paths/owners.py,sha256=sgCdKOFve8XZOtoTjrFrOrJd_MhZOGXo4yFJAFGRQ_s,1229
69
- ominfra/manage/deploy/paths/paths.py,sha256=i7g8YdYOh4M_jgJXtafTbFkRhlu469cfGxAJAuB3fVY,5531
70
+ ominfra/manage/deploy/paths/paths.py,sha256=Slh6_ts77c4VVgyOt8GmIBMRz-rKsTnuKaaIYUGNwFY,5637
70
71
  ominfra/manage/deploy/paths/specs.py,sha256=0cXJI7xjevv4qco3qn4jAs9i5pGyupJ3CFAyJh8y1z0,244
71
72
  ominfra/manage/deploy/paths/types.py,sha256=TGgtSASmdyuZ2maZnvahfA0QxPLWlHBtpDeIEoEDGxk,112
72
73
  ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -91,9 +92,9 @@ ominfra/manage/targets/connection.py,sha256=rVI1YJxFClcF-sdttqWyIz9_XjPI01GUdwxY
91
92
  ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhhMcE,1561
92
93
  ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
93
94
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- ominfra/scripts/journald2aws.py,sha256=-XlQ9s2yKZpOQqTQhvEb44q-cYX317mobkjlyCyfUro,158588
95
- ominfra/scripts/manage.py,sha256=ZH8YdqXxnFdcGb6uCcXotg2wbke0MnniRquPwy3aAPg,330216
96
- ominfra/scripts/supervisor.py,sha256=WpK_AR5LwmvxLfCyjylMV4_Ud2iNZ6k9QBUxiseSmqY,282876
95
+ ominfra/scripts/journald2aws.py,sha256=jxBI2ETft-GMJn0hFwV_lZgT55tj2kqKl0PszxUkOg8,158938
96
+ ominfra/scripts/manage.py,sha256=caUPUY6Re52MTbNCdsKLo_z2OAmZo81Dw_tVOpnQ1Ko,338592
97
+ ominfra/scripts/supervisor.py,sha256=nFPSB-NGQeoHwAA5UCAvcgy6sUWh4UtuQbhVZShk7wI,283226
97
98
  ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
98
99
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
99
100
  ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
@@ -135,9 +136,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
135
136
  ominfra/tailscale/cli.py,sha256=3FnJbgpLw6gInTfhERd1mDy9ijjMUGxkdYVo43Tnxx4,3555
136
137
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
138
  ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
138
- ominfra-0.0.0.dev188.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
139
- ominfra-0.0.0.dev188.dist-info/METADATA,sha256=alLfHLbNPLbhEihs4YokiE3EMXuc7xRKKD3lKw5rU2g,731
140
- ominfra-0.0.0.dev188.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
- ominfra-0.0.0.dev188.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
142
- ominfra-0.0.0.dev188.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
143
- ominfra-0.0.0.dev188.dist-info/RECORD,,
139
+ ominfra-0.0.0.dev190.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
140
+ ominfra-0.0.0.dev190.dist-info/METADATA,sha256=ZVC-MD5Jy8fZaChCJgEhJBQZ5JRqs_DVijPKgaJtwxs,767
141
+ ominfra-0.0.0.dev190.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
142
+ ominfra-0.0.0.dev190.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
143
+ ominfra-0.0.0.dev190.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
144
+ ominfra-0.0.0.dev190.dist-info/RECORD,,
@@ -1,62 +0,0 @@
1
- # ruff: noqa: UP006 UP007
2
- import typing as ta
3
-
4
- from omlish.lite.typing import Func1
5
-
6
- from .apps import DeployAppManager
7
- from .paths.manager import DeployPathsManager
8
- from .specs import DeploySpec
9
- from .tags import DeployAppRev
10
- from .tags import DeployTagMap
11
- from .tags import DeployTime
12
- from .types import DeployHome
13
-
14
-
15
- class DeployDriverFactory(Func1[DeploySpec, ta.ContextManager['DeployDriver']]):
16
- pass
17
-
18
-
19
- class DeployDriver:
20
- def __init__(
21
- self,
22
- *,
23
- spec: DeploySpec,
24
- home: DeployHome,
25
- time: DeployTime,
26
-
27
- paths: DeployPathsManager,
28
- apps: DeployAppManager,
29
- ) -> None:
30
- super().__init__()
31
-
32
- self._spec = spec
33
- self._home = home
34
- self._time = time
35
-
36
- self._paths = paths
37
- self._apps = apps
38
-
39
- async def drive_deploy(self) -> None:
40
- self._paths.validate_deploy_paths()
41
-
42
- #
43
-
44
- deploy_tags = DeployTagMap(
45
- self._time,
46
- self._spec.key(),
47
- )
48
-
49
- #
50
-
51
- for app in self._spec.apps:
52
- app_tags = deploy_tags.add(
53
- app.app,
54
- app.key(),
55
- DeployAppRev(app.git.rev),
56
- )
57
-
58
- await self._apps.prepare_app(
59
- app,
60
- self._home,
61
- app_tags,
62
- )