ominfra 0.0.0.dev384__py3-none-any.whl → 0.0.0.dev386__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/scripts/manage.py CHANGED
@@ -155,76 +155,6 @@ SubprocessChannelOption = ta.Literal['pipe', 'stdout', 'devnull'] # ta.TypeAlia
155
155
  SystemPackageOrStr = ta.Union['SystemPackage', str] # ta.TypeAlias
156
156
 
157
157
 
158
- ########################################
159
- # ../../../omdev/home/paths.py
160
- """
161
- TODO:
162
- - XDG cache root
163
- """
164
-
165
-
166
- ##
167
-
168
-
169
- HOME_DIR_ENV_VAR = 'OMLISH_HOME'
170
- DEFAULT_HOME_DIR = '~/.omlish'
171
-
172
-
173
- def get_home_dir() -> str:
174
- return os.path.expanduser(os.getenv(HOME_DIR_ENV_VAR, DEFAULT_HOME_DIR))
175
-
176
-
177
- #
178
-
179
-
180
- class HomePaths:
181
- def __init__(self, home_dir: ta.Optional[str] = None) -> None:
182
- super().__init__()
183
-
184
- if home_dir is None:
185
- home_dir = get_home_dir()
186
- self._home_dir = home_dir
187
-
188
- @property
189
- def home_dir(self) -> str:
190
- return self._home_dir
191
-
192
- @property
193
- def config_dir(self) -> str:
194
- return os.path.join(self._home_dir, 'config')
195
-
196
- @property
197
- def log_dir(self) -> str:
198
- return os.path.join(self._home_dir, 'log')
199
-
200
- @property
201
- def run_dir(self) -> str:
202
- return os.path.join(self._home_dir, 'run')
203
-
204
- @property
205
- def shadow_dir(self) -> str:
206
- return os.path.join(self._home_dir, 'shadow')
207
-
208
- @property
209
- def state_dir(self) -> str:
210
- return os.path.join(self._home_dir, 'state')
211
-
212
-
213
- def get_home_paths() -> HomePaths:
214
- return HomePaths()
215
-
216
-
217
- ##
218
-
219
-
220
- CACHE_DIR_ENV_VAR = 'OMLISH_CACHE'
221
- DEFAULT_CACHE_DIR = '~/.cache/omlish'
222
-
223
-
224
- def get_cache_dir() -> str:
225
- return os.path.expanduser(os.getenv(DEFAULT_CACHE_DIR, DEFAULT_CACHE_DIR))
226
-
227
-
228
158
  ########################################
229
159
  # ../../../omdev/packaging/versions.py
230
160
  # Copyright (c) Donald Stufft and individual contributors.
@@ -3867,6 +3797,158 @@ def set_process_deathsig(sig: int) -> bool:
3867
3797
  return False
3868
3798
 
3869
3799
 
3800
+ ########################################
3801
+ # ../../../omlish/os/environ.py
3802
+
3803
+
3804
+ ##
3805
+
3806
+
3807
+ class EnvVar:
3808
+ def __init__(self, name: str) -> None:
3809
+ super().__init__()
3810
+
3811
+ if not isinstance(name, str):
3812
+ raise TypeError(name)
3813
+ if not name:
3814
+ raise NameError(name)
3815
+ self._name = name
3816
+
3817
+ @property
3818
+ def name(self) -> str:
3819
+ return self._name
3820
+
3821
+ def __init_subclass__(cls, **kwargs):
3822
+ raise TypeError
3823
+
3824
+ def __repr__(self) -> str:
3825
+ return f'{self.__class__.__name__}({self._name!r})'
3826
+
3827
+ def __hash__(self) -> int:
3828
+ return hash((self.__class__, self._name))
3829
+
3830
+ def __eq__(self, other):
3831
+ if not isinstance(other, EnvVar):
3832
+ return NotImplemented
3833
+ return self._name == other._name
3834
+
3835
+ def __bool__(self) -> bool:
3836
+ raise TypeError
3837
+
3838
+ def __str__(self) -> str:
3839
+ raise TypeError
3840
+
3841
+ #
3842
+
3843
+ @classmethod
3844
+ def _get_mut_environ(
3845
+ cls,
3846
+ environ: ta.Optional[ta.MutableMapping[str, str]] = None,
3847
+ ) -> ta.MutableMapping[str, str]:
3848
+ if environ is None:
3849
+ return os.environ
3850
+ return environ
3851
+
3852
+ @classmethod
3853
+ def _get_environ(
3854
+ cls,
3855
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3856
+ ) -> ta.Mapping[str, str]:
3857
+ if environ is None:
3858
+ return cls._get_mut_environ()
3859
+ return environ
3860
+
3861
+ #
3862
+
3863
+ def is_set(self, environ: ta.Optional[ta.Mapping[str, str]] = None) -> bool:
3864
+ return self._name in self._get_environ(environ)
3865
+
3866
+ _NO_DEFAULT: ta.ClassVar[ta.Any] = object()
3867
+
3868
+ @ta.overload
3869
+ def get(
3870
+ self,
3871
+ *,
3872
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3873
+ ) -> str:
3874
+ ...
3875
+
3876
+ @ta.overload
3877
+ def get(
3878
+ self,
3879
+ default: str,
3880
+ /,
3881
+ *,
3882
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3883
+ ) -> str:
3884
+ ...
3885
+
3886
+ @ta.overload
3887
+ def get(
3888
+ self,
3889
+ default: ta.Optional[str],
3890
+ /,
3891
+ *,
3892
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3893
+ ) -> ta.Optional[str]:
3894
+ ...
3895
+
3896
+ @ta.overload
3897
+ def get(
3898
+ self,
3899
+ default: ta.Callable[[], str],
3900
+ /,
3901
+ *,
3902
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3903
+ ) -> str:
3904
+ ...
3905
+
3906
+ @ta.overload
3907
+ def get(
3908
+ self,
3909
+ default: ta.Callable[[], ta.Optional[str]],
3910
+ /,
3911
+ *,
3912
+ environ: ta.Optional[ta.Mapping[str, str]] = None,
3913
+ ) -> ta.Optional[str]:
3914
+ ...
3915
+
3916
+ def get(self, default=_NO_DEFAULT, /, *, environ=None):
3917
+ environ = self._get_environ(environ)
3918
+ try:
3919
+ return environ[self._name]
3920
+ except KeyError:
3921
+ if default is self._NO_DEFAULT:
3922
+ raise
3923
+ elif callable(default):
3924
+ return default()
3925
+ else:
3926
+ return default
3927
+
3928
+ #
3929
+
3930
+ def set(self, value: ta.Optional[str], *, environ: ta.Optional[ta.MutableMapping[str, str]] = None) -> None:
3931
+ environ = self._get_mut_environ(environ)
3932
+ if value is not None:
3933
+ environ[self._name] = value
3934
+ else:
3935
+ del environ[self._name]
3936
+
3937
+ @contextlib.contextmanager
3938
+ def set_context(
3939
+ self,
3940
+ value: ta.Optional[str],
3941
+ *,
3942
+ environ: ta.Optional[ta.MutableMapping[str, str]] = None,
3943
+ ) -> ta.Iterator[ta.Optional[str]]:
3944
+ prev = self.get(None, environ=environ)
3945
+ self.set(value, environ=environ)
3946
+ try:
3947
+ yield prev
3948
+ finally:
3949
+ self.set(prev, environ=environ)
3950
+
3951
+
3870
3952
  ########################################
3871
3953
  # ../../../omlish/os/linux.py
3872
3954
  """
@@ -4435,6 +4517,76 @@ def shlex_maybe_quote(s: str) -> str:
4435
4517
  return s
4436
4518
 
4437
4519
 
4520
+ ########################################
4521
+ # ../../../omdev/home/paths.py
4522
+ """
4523
+ TODO:
4524
+ - XDG cache root
4525
+ """
4526
+
4527
+
4528
+ ##
4529
+
4530
+
4531
+ HOME_DIR_ENV_VAR = EnvVar('OMLISH_HOME')
4532
+ DEFAULT_HOME_DIR = '~/.omlish'
4533
+
4534
+
4535
+ def get_home_dir() -> str:
4536
+ return os.path.expanduser(HOME_DIR_ENV_VAR.get(DEFAULT_HOME_DIR))
4537
+
4538
+
4539
+ #
4540
+
4541
+
4542
+ class HomePaths:
4543
+ def __init__(self, home_dir: ta.Optional[str] = None) -> None:
4544
+ super().__init__()
4545
+
4546
+ if home_dir is None:
4547
+ home_dir = get_home_dir()
4548
+ self._home_dir = home_dir
4549
+
4550
+ @property
4551
+ def home_dir(self) -> str:
4552
+ return self._home_dir
4553
+
4554
+ @property
4555
+ def config_dir(self) -> str:
4556
+ return os.path.join(self._home_dir, 'config')
4557
+
4558
+ @property
4559
+ def log_dir(self) -> str:
4560
+ return os.path.join(self._home_dir, 'log')
4561
+
4562
+ @property
4563
+ def run_dir(self) -> str:
4564
+ return os.path.join(self._home_dir, 'run')
4565
+
4566
+ @property
4567
+ def shadow_dir(self) -> str:
4568
+ return os.path.join(self._home_dir, 'shadow')
4569
+
4570
+ @property
4571
+ def state_dir(self) -> str:
4572
+ return os.path.join(self._home_dir, 'state')
4573
+
4574
+
4575
+ def get_home_paths() -> HomePaths:
4576
+ return HomePaths()
4577
+
4578
+
4579
+ ##
4580
+
4581
+
4582
+ CACHE_DIR_ENV_VAR = 'OMLISH_CACHE'
4583
+ DEFAULT_CACHE_DIR = '~/.cache/omlish'
4584
+
4585
+
4586
+ def get_cache_dir() -> str:
4587
+ return os.path.expanduser(os.getenv(DEFAULT_CACHE_DIR, DEFAULT_CACHE_DIR))
4588
+
4589
+
4438
4590
  ########################################
4439
4591
  # ../../../omdev/packaging/specifiers.py
4440
4592
  # Copyright (c) Donald Stufft and individual contributors.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ominfra
3
- Version: 0.0.0.dev384
3
+ Version: 0.0.0.dev386
4
4
  Summary: ominfra
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omdev==0.0.0.dev384
18
- Requires-Dist: omlish==0.0.0.dev384
17
+ Requires-Dist: omdev==0.0.0.dev386
18
+ Requires-Dist: omlish==0.0.0.dev386
19
19
  Provides-Extra: all
20
20
  Requires-Dist: paramiko~=4.0; extra == "all"
21
21
  Requires-Dist: asyncssh~=2.21; extra == "all"
@@ -113,7 +113,7 @@ ominfra/manage/targets/inject.py,sha256=3M4wBkxtvymq_yhiotHlTN8iydELMjVCndyp9Bq-
113
113
  ominfra/manage/targets/targets.py,sha256=WmasYmL6xfAI7F0XvDhScFdBVxkqPkmo_gRgABmmkGA,1891
114
114
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
115
  ominfra/scripts/journald2aws.py,sha256=WOyM_3Em7F_DKB7PaGYD3hUD1L3dnvpZXNJjmNUb4xc,173849
116
- ominfra/scripts/manage.py,sha256=GNzN34VDtwqQuB3I1KG4wEvWvlnSYW30XOlVO0E5N7s,392468
116
+ ominfra/scripts/manage.py,sha256=RIFrfK6yE1WdWajuJUpdA4acIiICozS_x_k5XaK2M4w,396142
117
117
  ominfra/scripts/supervisor.py,sha256=1x2J9JmRSa6uQsIHRYK3fXp_nOR-NS7akuV55__Pf-U,306331
118
118
  ominfra/supervisor/LICENSE.txt,sha256=ZrHY15PVR98y26Yg6iQfa-SXnUaYTDhrUsPVcEO5OKM,1874
119
119
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
@@ -156,9 +156,9 @@ ominfra/tailscale/api.py,sha256=XASv9C_CWI-u-yX5jVzhJrkJhlwQRkYQWQQG1uJwAd8,1375
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.dev384.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
160
- ominfra-0.0.0.dev384.dist-info/METADATA,sha256=yU_RXCooNz88zTZmKkmNK8ErpbgKQuLwTmpG8YJzJjc,2377
161
- ominfra-0.0.0.dev384.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
162
- ominfra-0.0.0.dev384.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
163
- ominfra-0.0.0.dev384.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
164
- ominfra-0.0.0.dev384.dist-info/RECORD,,
159
+ ominfra-0.0.0.dev386.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
160
+ ominfra-0.0.0.dev386.dist-info/METADATA,sha256=MX-Ldv3ZPxZNvzvq1KuzcXLdcFNoJc-ANKW4lg7s7tA,2377
161
+ ominfra-0.0.0.dev386.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
162
+ ominfra-0.0.0.dev386.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
163
+ ominfra-0.0.0.dev386.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
164
+ ominfra-0.0.0.dev386.dist-info/RECORD,,