ominfra 0.0.0.dev176__py3-none-any.whl → 0.0.0.dev178__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 +7 -8
- ominfra/manage/deploy/commands.py +4 -3
- ominfra/manage/deploy/conf.py +0 -12
- ominfra/manage/deploy/config.py +1 -2
- ominfra/manage/deploy/deploy.py +1 -38
- ominfra/manage/deploy/driver.py +71 -0
- ominfra/manage/deploy/git.py +24 -9
- ominfra/manage/deploy/inject.py +36 -8
- ominfra/manage/deploy/paths/manager.py +0 -3
- ominfra/manage/deploy/paths/owners.py +4 -10
- ominfra/manage/deploy/specs.py +5 -0
- ominfra/manage/deploy/tmp.py +9 -28
- ominfra/manage/deploy/venvs.py +2 -10
- ominfra/manage/main.py +1 -7
- ominfra/scripts/manage.py +452 -233
- ominfra/scripts/supervisor.py +205 -11
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/RECORD +22 -21
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev176.dist-info → ominfra-0.0.0.dev178.dist-info}/top_level.txt +0 -0
ominfra/scripts/supervisor.py
CHANGED
@@ -37,6 +37,7 @@ import base64
|
|
37
37
|
import collections
|
38
38
|
import collections.abc
|
39
39
|
import contextlib
|
40
|
+
import contextvars
|
40
41
|
import ctypes as ct
|
41
42
|
import dataclasses as dc
|
42
43
|
import datetime
|
@@ -4070,6 +4071,10 @@ class InjectorBinding:
|
|
4070
4071
|
key: InjectorKey
|
4071
4072
|
provider: InjectorProvider
|
4072
4073
|
|
4074
|
+
def __post_init__(self) -> None:
|
4075
|
+
check.isinstance(self.key, InjectorKey)
|
4076
|
+
check.isinstance(self.provider, InjectorProvider)
|
4077
|
+
|
4073
4078
|
|
4074
4079
|
class InjectorBindings(abc.ABC):
|
4075
4080
|
@abc.abstractmethod
|
@@ -4333,6 +4338,164 @@ def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey,
|
|
4333
4338
|
return pm
|
4334
4339
|
|
4335
4340
|
|
4341
|
+
###
|
4342
|
+
# scopes
|
4343
|
+
|
4344
|
+
|
4345
|
+
class InjectorScope(abc.ABC): # noqa
|
4346
|
+
def __init__(
|
4347
|
+
self,
|
4348
|
+
*,
|
4349
|
+
_i: Injector,
|
4350
|
+
) -> None:
|
4351
|
+
check.not_in(abc.ABC, type(self).__bases__)
|
4352
|
+
|
4353
|
+
super().__init__()
|
4354
|
+
|
4355
|
+
self._i = _i
|
4356
|
+
|
4357
|
+
all_seeds: ta.Iterable[_InjectorScopeSeed] = self._i.provide(InjectorKey(_InjectorScopeSeed, array=True))
|
4358
|
+
self._sks = {s.k for s in all_seeds if s.sc is type(self)}
|
4359
|
+
|
4360
|
+
#
|
4361
|
+
|
4362
|
+
@dc.dataclass(frozen=True)
|
4363
|
+
class State:
|
4364
|
+
seeds: ta.Dict[InjectorKey, ta.Any]
|
4365
|
+
prvs: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
|
4366
|
+
|
4367
|
+
def new_state(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> State:
|
4368
|
+
vs = dict(vs)
|
4369
|
+
check.equal(set(vs.keys()), self._sks)
|
4370
|
+
return InjectorScope.State(vs)
|
4371
|
+
|
4372
|
+
#
|
4373
|
+
|
4374
|
+
@abc.abstractmethod
|
4375
|
+
def state(self) -> State:
|
4376
|
+
raise NotImplementedError
|
4377
|
+
|
4378
|
+
@abc.abstractmethod
|
4379
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.ContextManager[None]:
|
4380
|
+
raise NotImplementedError
|
4381
|
+
|
4382
|
+
|
4383
|
+
class ExclusiveInjectorScope(InjectorScope, abc.ABC):
|
4384
|
+
_st: ta.Optional[InjectorScope.State] = None
|
4385
|
+
|
4386
|
+
def state(self) -> InjectorScope.State:
|
4387
|
+
return check.not_none(self._st)
|
4388
|
+
|
4389
|
+
@contextlib.contextmanager
|
4390
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.Iterator[None]:
|
4391
|
+
check.none(self._st)
|
4392
|
+
self._st = self.new_state(vs)
|
4393
|
+
try:
|
4394
|
+
yield
|
4395
|
+
finally:
|
4396
|
+
self._st = None
|
4397
|
+
|
4398
|
+
|
4399
|
+
class ContextvarInjectorScope(InjectorScope, abc.ABC):
|
4400
|
+
_cv: contextvars.ContextVar
|
4401
|
+
|
4402
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
4403
|
+
super().__init_subclass__(**kwargs)
|
4404
|
+
check.not_in(abc.ABC, cls.__bases__)
|
4405
|
+
check.state(not hasattr(cls, '_cv'))
|
4406
|
+
cls._cv = contextvars.ContextVar(f'{cls.__name__}_cv')
|
4407
|
+
|
4408
|
+
def state(self) -> InjectorScope.State:
|
4409
|
+
return self._cv.get()
|
4410
|
+
|
4411
|
+
@contextlib.contextmanager
|
4412
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.Iterator[None]:
|
4413
|
+
try:
|
4414
|
+
self._cv.get()
|
4415
|
+
except LookupError:
|
4416
|
+
pass
|
4417
|
+
else:
|
4418
|
+
raise RuntimeError(f'Scope already entered: {self}')
|
4419
|
+
st = self.new_state(vs)
|
4420
|
+
tok = self._cv.set(st)
|
4421
|
+
try:
|
4422
|
+
yield
|
4423
|
+
finally:
|
4424
|
+
self._cv.reset(tok)
|
4425
|
+
|
4426
|
+
|
4427
|
+
#
|
4428
|
+
|
4429
|
+
|
4430
|
+
@dc.dataclass(frozen=True)
|
4431
|
+
class ScopedInjectorProvider(InjectorProvider):
|
4432
|
+
p: InjectorProvider
|
4433
|
+
k: InjectorKey
|
4434
|
+
sc: ta.Type[InjectorScope]
|
4435
|
+
|
4436
|
+
def __post_init__(self) -> None:
|
4437
|
+
check.isinstance(self.p, InjectorProvider)
|
4438
|
+
check.isinstance(self.k, InjectorKey)
|
4439
|
+
check.issubclass(self.sc, InjectorScope)
|
4440
|
+
|
4441
|
+
def provider_fn(self) -> InjectorProviderFn:
|
4442
|
+
def pfn(i: Injector) -> ta.Any:
|
4443
|
+
st = i[self.sc].state()
|
4444
|
+
try:
|
4445
|
+
return st.prvs[self.k]
|
4446
|
+
except KeyError:
|
4447
|
+
pass
|
4448
|
+
v = ufn(i)
|
4449
|
+
st.prvs[self.k] = v
|
4450
|
+
return v
|
4451
|
+
|
4452
|
+
ufn = self.p.provider_fn()
|
4453
|
+
return pfn
|
4454
|
+
|
4455
|
+
|
4456
|
+
@dc.dataclass(frozen=True)
|
4457
|
+
class _ScopeSeedInjectorProvider(InjectorProvider):
|
4458
|
+
k: InjectorKey
|
4459
|
+
sc: ta.Type[InjectorScope]
|
4460
|
+
|
4461
|
+
def __post_init__(self) -> None:
|
4462
|
+
check.isinstance(self.k, InjectorKey)
|
4463
|
+
check.issubclass(self.sc, InjectorScope)
|
4464
|
+
|
4465
|
+
def provider_fn(self) -> InjectorProviderFn:
|
4466
|
+
def pfn(i: Injector) -> ta.Any:
|
4467
|
+
st = i[self.sc].state()
|
4468
|
+
return st.seeds[self.k]
|
4469
|
+
return pfn
|
4470
|
+
|
4471
|
+
|
4472
|
+
def bind_injector_scope(sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
4473
|
+
return as_injector_bindings(
|
4474
|
+
InjectorBinder.bind(sc, singleton=True),
|
4475
|
+
)
|
4476
|
+
|
4477
|
+
|
4478
|
+
#
|
4479
|
+
|
4480
|
+
|
4481
|
+
@dc.dataclass(frozen=True)
|
4482
|
+
class _InjectorScopeSeed:
|
4483
|
+
sc: ta.Type['InjectorScope']
|
4484
|
+
k: InjectorKey
|
4485
|
+
|
4486
|
+
def __post_init__(self) -> None:
|
4487
|
+
check.issubclass(self.sc, InjectorScope)
|
4488
|
+
check.isinstance(self.k, InjectorKey)
|
4489
|
+
|
4490
|
+
|
4491
|
+
def bind_injector_scope_seed(k: ta.Any, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
4492
|
+
kk = as_injector_key(k)
|
4493
|
+
return as_injector_bindings(
|
4494
|
+
InjectorBinding(kk, _ScopeSeedInjectorProvider(kk, sc)),
|
4495
|
+
InjectorBinder.bind(_InjectorScopeSeed(sc, kk), array=True),
|
4496
|
+
)
|
4497
|
+
|
4498
|
+
|
4336
4499
|
###
|
4337
4500
|
# inspection
|
4338
4501
|
|
@@ -4477,13 +4640,21 @@ _INJECTOR_EAGER_ARRAY_KEY: InjectorKey[_InjectorEager] = InjectorKey(_InjectorEa
|
|
4477
4640
|
|
4478
4641
|
|
4479
4642
|
class _Injector(Injector):
|
4643
|
+
_DEFAULT_BINDINGS: ta.ClassVar[ta.List[InjectorBinding]] = []
|
4644
|
+
|
4480
4645
|
def __init__(self, bs: InjectorBindings, p: ta.Optional[Injector] = None) -> None:
|
4481
4646
|
super().__init__()
|
4482
4647
|
|
4483
4648
|
self._bs = check.isinstance(bs, InjectorBindings)
|
4484
4649
|
self._p: ta.Optional[Injector] = check.isinstance(p, (Injector, type(None)))
|
4485
4650
|
|
4486
|
-
self._pfm = {
|
4651
|
+
self._pfm = {
|
4652
|
+
k: v.provider_fn()
|
4653
|
+
for k, v in build_injector_provider_map(as_injector_bindings(
|
4654
|
+
*self._DEFAULT_BINDINGS,
|
4655
|
+
bs,
|
4656
|
+
)).items()
|
4657
|
+
}
|
4487
4658
|
|
4488
4659
|
if _INJECTOR_INJECTOR_KEY in self._pfm:
|
4489
4660
|
raise DuplicateInjectorKeyError(_INJECTOR_INJECTOR_KEY)
|
@@ -4650,6 +4821,7 @@ class InjectorBinder:
|
|
4650
4821
|
to_const: ta.Any = None,
|
4651
4822
|
to_key: ta.Any = None,
|
4652
4823
|
|
4824
|
+
in_: ta.Optional[ta.Type[InjectorScope]] = None,
|
4653
4825
|
singleton: bool = False,
|
4654
4826
|
|
4655
4827
|
eager: bool = False,
|
@@ -4659,12 +4831,12 @@ class InjectorBinder:
|
|
4659
4831
|
if isinstance(obj, cls._BANNED_BIND_TYPES):
|
4660
4832
|
raise TypeError(obj)
|
4661
4833
|
|
4662
|
-
|
4834
|
+
#
|
4663
4835
|
|
4664
4836
|
if key is not None:
|
4665
4837
|
key = as_injector_key(key)
|
4666
4838
|
|
4667
|
-
|
4839
|
+
#
|
4668
4840
|
|
4669
4841
|
has_to = (
|
4670
4842
|
to_fn is not None or
|
@@ -4694,7 +4866,7 @@ class InjectorBinder:
|
|
4694
4866
|
key = InjectorKey(type(obj))
|
4695
4867
|
del has_to
|
4696
4868
|
|
4697
|
-
|
4869
|
+
#
|
4698
4870
|
|
4699
4871
|
if tag is not None:
|
4700
4872
|
if key.tag is not None:
|
@@ -4704,7 +4876,7 @@ class InjectorBinder:
|
|
4704
4876
|
if array is not None:
|
4705
4877
|
key = dc.replace(key, array=array)
|
4706
4878
|
|
4707
|
-
|
4879
|
+
#
|
4708
4880
|
|
4709
4881
|
providers: ta.List[InjectorProvider] = []
|
4710
4882
|
if to_fn is not None:
|
@@ -4719,23 +4891,34 @@ class InjectorBinder:
|
|
4719
4891
|
raise TypeError('Must specify provider')
|
4720
4892
|
if len(providers) > 1:
|
4721
4893
|
raise TypeError('May not specify multiple providers')
|
4722
|
-
provider
|
4894
|
+
provider = check.single(providers)
|
4723
4895
|
|
4724
|
-
|
4896
|
+
#
|
4725
4897
|
|
4898
|
+
pws: ta.List[ta.Any] = []
|
4899
|
+
if in_ is not None:
|
4900
|
+
check.issubclass(in_, InjectorScope)
|
4901
|
+
check.not_in(abc.ABC, in_.__bases__)
|
4902
|
+
pws.append(functools.partial(ScopedInjectorProvider, k=key, sc=in_))
|
4726
4903
|
if singleton:
|
4727
|
-
|
4904
|
+
pws.append(SingletonInjectorProvider)
|
4905
|
+
if len(pws) > 1:
|
4906
|
+
raise TypeError('May not specify multiple provider wrappers')
|
4907
|
+
elif pws:
|
4908
|
+
provider = check.single(pws)(provider)
|
4909
|
+
|
4910
|
+
#
|
4728
4911
|
|
4729
4912
|
binding = InjectorBinding(key, provider)
|
4730
4913
|
|
4731
|
-
|
4914
|
+
#
|
4732
4915
|
|
4733
4916
|
extras: ta.List[InjectorBinding] = []
|
4734
4917
|
|
4735
4918
|
if eager:
|
4736
4919
|
extras.append(bind_injector_eager_key(key))
|
4737
4920
|
|
4738
|
-
|
4921
|
+
#
|
4739
4922
|
|
4740
4923
|
if extras:
|
4741
4924
|
return as_injector_bindings(binding, *extras)
|
@@ -4808,7 +4991,8 @@ def bind_injector_eager_key(key: ta.Any) -> InjectorBinding:
|
|
4808
4991
|
return InjectorBinding(_INJECTOR_EAGER_ARRAY_KEY, ConstInjectorProvider(_InjectorEager(as_injector_key(key))))
|
4809
4992
|
|
4810
4993
|
|
4811
|
-
|
4994
|
+
###
|
4995
|
+
# api
|
4812
4996
|
|
4813
4997
|
|
4814
4998
|
class InjectionApi:
|
@@ -4831,6 +5015,14 @@ class InjectionApi:
|
|
4831
5015
|
def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
4832
5016
|
return injector_override(p, *args)
|
4833
5017
|
|
5018
|
+
# scopes
|
5019
|
+
|
5020
|
+
def bind_scope(self, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
5021
|
+
return bind_injector_scope(sc)
|
5022
|
+
|
5023
|
+
def bind_scope_seed(self, k: ta.Any, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
5024
|
+
return bind_injector_scope_seed(k, sc)
|
5025
|
+
|
4834
5026
|
# injector
|
4835
5027
|
|
4836
5028
|
def create_injector(self, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
|
@@ -4851,6 +5043,7 @@ class InjectionApi:
|
|
4851
5043
|
to_const: ta.Any = None,
|
4852
5044
|
to_key: ta.Any = None,
|
4853
5045
|
|
5046
|
+
in_: ta.Optional[ta.Type[InjectorScope]] = None,
|
4854
5047
|
singleton: bool = False,
|
4855
5048
|
|
4856
5049
|
eager: bool = False,
|
@@ -4867,6 +5060,7 @@ class InjectionApi:
|
|
4867
5060
|
to_const=to_const,
|
4868
5061
|
to_key=to_key,
|
4869
5062
|
|
5063
|
+
in_=in_,
|
4870
5064
|
singleton=singleton,
|
4871
5065
|
|
4872
5066
|
eager=eager,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ominfra
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev178
|
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.dev178
|
16
|
+
Requires-Dist: omlish==0.0.0.dev178
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -33,7 +33,7 @@ ominfra/manage/bootstrap.py,sha256=1RIRhVkUZjxZcZerHMg8U6xgWhhemGgPN5cDye8dQ68,4
|
|
33
33
|
ominfra/manage/bootstrap_.py,sha256=B9UfR9J7mS3J54PFaSe1MQS5lCnKgxt5dDRJ9mnHYwg,656
|
34
34
|
ominfra/manage/config.py,sha256=1y2N_8nXHBZc6YbW6BaRZoDDCTBmiHuWtTOQ7zdr5VE,184
|
35
35
|
ominfra/manage/inject.py,sha256=_FVaMZUBKi-oObv14H77luWYCodxNJJD1t4pNQzckFE,2030
|
36
|
-
ominfra/manage/main.py,sha256=
|
36
|
+
ominfra/manage/main.py,sha256=6KulKJqgKHl_wdWEOdY9btoI-pq11tDFqugsUtOpW8A,4389
|
37
37
|
ominfra/manage/marshal.py,sha256=WKj7IU9bo4fBMSSzT6ZMm_WFalXIJZ-V7j8oi92fNhk,305
|
38
38
|
ominfra/manage/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
39
|
ominfra/manage/commands/base.py,sha256=LtaI0AgnplttQK7gNncNItq8yuTZQimJTaprVpZktI8,3993
|
@@ -44,23 +44,24 @@ 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=
|
48
|
-
ominfra/manage/deploy/commands.py,sha256=
|
49
|
-
ominfra/manage/deploy/conf.py,sha256=
|
50
|
-
ominfra/manage/deploy/config.py,sha256=
|
51
|
-
ominfra/manage/deploy/deploy.py,sha256=
|
52
|
-
ominfra/manage/deploy/
|
53
|
-
ominfra/manage/deploy/
|
47
|
+
ominfra/manage/deploy/apps.py,sha256=LeZ2iX2YHviOAnvgut7Oz15301eJoYYCpmD3ffoIagA,4742
|
48
|
+
ominfra/manage/deploy/commands.py,sha256=U74HYQ4nhvH7znAKyXGOmZfdnll2gMWxKWVW4GzxG-0,830
|
49
|
+
ominfra/manage/deploy/conf.py,sha256=fNfFlIb-bB3KAzaYZcjrbqaqKSiSq0Lpk0mIF6WgXiw,5410
|
50
|
+
ominfra/manage/deploy/config.py,sha256=kPpl8TRisz295cM4oj-RHA6oh5jdcJ_N9pVpkl_doO8,114
|
51
|
+
ominfra/manage/deploy/deploy.py,sha256=vyBTbBm51HhRE-MQNvxEt39F8uOYsB4ToqZ3zmVkpqU,819
|
52
|
+
ominfra/manage/deploy/driver.py,sha256=ccLiVoZz_GnhQ3FRPFCu9hzsU6wsOWTOmHeYNBRIZkg,1576
|
53
|
+
ominfra/manage/deploy/git.py,sha256=g4wzUuSu9HwWSDhdVX-7BvA2htMwtWbRcHaoDy-xOJ4,3960
|
54
|
+
ominfra/manage/deploy/inject.py,sha256=JHQexbf-789mWL8GTSxyd4SnTbDB0nqwSyiJp-3QvAM,2834
|
54
55
|
ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
|
55
|
-
ominfra/manage/deploy/specs.py,sha256=
|
56
|
+
ominfra/manage/deploy/specs.py,sha256=usi5AmTlv8OGFcwhVHnu8Qrz1Criu5QP6_ScNMi9ehM,3748
|
56
57
|
ominfra/manage/deploy/tags.py,sha256=NVEJhHKMwoDuCFd8lInH_jIe99FQILBX3wrulh3GiDg,5166
|
57
|
-
ominfra/manage/deploy/tmp.py,sha256=
|
58
|
+
ominfra/manage/deploy/tmp.py,sha256=FqXoVpIpVe8-KWNu7kXt37A4jKdK_y7h_YFvtrUoOG8,729
|
58
59
|
ominfra/manage/deploy/types.py,sha256=ZcIoheZ3zW7n0IZiqTRW_Uo3JyWWeWg5nyKGryvGc2I,112
|
59
|
-
ominfra/manage/deploy/venvs.py,sha256=
|
60
|
+
ominfra/manage/deploy/venvs.py,sha256=h_9Bb4NpvXqO2Hb5t_5qbWs3zfMDPfmKZvMACJ4CY5M,1584
|
60
61
|
ominfra/manage/deploy/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
61
62
|
ominfra/manage/deploy/paths/inject.py,sha256=X81C-Qhef1LQ7tILWvkomBwFTvgooLVmWRnKL7TeVoI,596
|
62
|
-
ominfra/manage/deploy/paths/manager.py,sha256=
|
63
|
-
ominfra/manage/deploy/paths/owners.py,sha256=
|
63
|
+
ominfra/manage/deploy/paths/manager.py,sha256=Dnl8euyZQYDGwDzkMvgPAwOssseducr5kP6T0qzVXQk,929
|
64
|
+
ominfra/manage/deploy/paths/owners.py,sha256=sgCdKOFve8XZOtoTjrFrOrJd_MhZOGXo4yFJAFGRQ_s,1229
|
64
65
|
ominfra/manage/deploy/paths/paths.py,sha256=i7g8YdYOh4M_jgJXtafTbFkRhlu469cfGxAJAuB3fVY,5531
|
65
66
|
ominfra/manage/deploy/paths/types.py,sha256=TGgtSASmdyuZ2maZnvahfA0QxPLWlHBtpDeIEoEDGxk,112
|
66
67
|
ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -86,8 +87,8 @@ ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhh
|
|
86
87
|
ominfra/manage/targets/targets.py,sha256=7GP6UAZyJFEhpkJN6UQdpr_WN3p7C76v-s445y-WB6U,1885
|
87
88
|
ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
89
|
ominfra/scripts/journald2aws.py,sha256=yEnBAd0Q_3lBkVoTvlJ_uCcUxz7Ckn2qoSWZVhMihvQ,157696
|
89
|
-
ominfra/scripts/manage.py,sha256=
|
90
|
-
ominfra/scripts/supervisor.py,sha256=
|
90
|
+
ominfra/scripts/manage.py,sha256=XDt86ZEFjcShexhLQjmse1N6f_dk7AVVtozzETsNUdY,324293
|
91
|
+
ominfra/scripts/supervisor.py,sha256=6RMBLbB4pMNaJlnOBwhdpuhMqv6NDrjTup9SYzKsEjo,281844
|
91
92
|
ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
|
92
93
|
ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
93
94
|
ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
|
@@ -129,9 +130,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
|
|
129
130
|
ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
|
130
131
|
ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
132
|
ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
|
132
|
-
ominfra-0.0.0.
|
133
|
-
ominfra-0.0.0.
|
134
|
-
ominfra-0.0.0.
|
135
|
-
ominfra-0.0.0.
|
136
|
-
ominfra-0.0.0.
|
137
|
-
ominfra-0.0.0.
|
133
|
+
ominfra-0.0.0.dev178.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
134
|
+
ominfra-0.0.0.dev178.dist-info/METADATA,sha256=Kfw95dyWOXq2P3oSLxG3ObbDVl139_CQAnrZy5k6QtE,731
|
135
|
+
ominfra-0.0.0.dev178.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
136
|
+
ominfra-0.0.0.dev178.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
137
|
+
ominfra-0.0.0.dev178.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
138
|
+
ominfra-0.0.0.dev178.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|