ominfra 0.0.0.dev176__py3-none-any.whl → 0.0.0.dev178__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|