ominfra 0.0.0.dev177__py3-none-any.whl → 0.0.0.dev179__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- ominfra/manage/deploy/commands.py +4 -3
- ominfra/manage/deploy/deploy.py +1 -51
- ominfra/manage/deploy/driver.py +62 -0
- ominfra/manage/deploy/inject.py +63 -0
- ominfra/manage/deploy/interp.py +2 -2
- ominfra/manage/deploy/venvs.py +2 -2
- ominfra/scripts/manage.py +964 -592
- ominfra/scripts/supervisor.py +224 -29
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.dist-info}/METADATA +3 -3
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.dist-info}/RECORD +14 -13
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.dist-info}/LICENSE +0 -0
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.dist-info}/WHEEL +0 -0
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.dist-info}/entry_points.txt +0 -0
- {ominfra-0.0.0.dev177.dist-info → ominfra-0.0.0.dev179.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
|
@@ -4286,6 +4291,33 @@ def as_injector_bindings(*args: InjectorBindingOrBindings) -> InjectorBindings:
|
|
4286
4291
|
##
|
4287
4292
|
|
4288
4293
|
|
4294
|
+
def build_injector_provider_map(bs: InjectorBindings) -> ta.Mapping[InjectorKey, InjectorProvider]:
|
4295
|
+
pm: ta.Dict[InjectorKey, InjectorProvider] = {}
|
4296
|
+
am: ta.Dict[InjectorKey, ta.List[InjectorProvider]] = {}
|
4297
|
+
|
4298
|
+
for b in bs.bindings():
|
4299
|
+
if b.key.array:
|
4300
|
+
al = am.setdefault(b.key, [])
|
4301
|
+
if isinstance(b.provider, ArrayInjectorProvider):
|
4302
|
+
al.extend(b.provider.ps)
|
4303
|
+
else:
|
4304
|
+
al.append(b.provider)
|
4305
|
+
else:
|
4306
|
+
if b.key in pm:
|
4307
|
+
raise KeyError(b.key)
|
4308
|
+
pm[b.key] = b.provider
|
4309
|
+
|
4310
|
+
if am:
|
4311
|
+
for k, aps in am.items():
|
4312
|
+
pm[k] = ArrayInjectorProvider(aps)
|
4313
|
+
|
4314
|
+
return pm
|
4315
|
+
|
4316
|
+
|
4317
|
+
###
|
4318
|
+
# overrides
|
4319
|
+
|
4320
|
+
|
4289
4321
|
@dc.dataclass(frozen=True)
|
4290
4322
|
class OverridesInjectorBindings(InjectorBindings):
|
4291
4323
|
p: InjectorBindings
|
@@ -4307,30 +4339,160 @@ def injector_override(p: InjectorBindings, *args: InjectorBindingOrBindings) ->
|
|
4307
4339
|
return OverridesInjectorBindings(p, m)
|
4308
4340
|
|
4309
4341
|
|
4310
|
-
|
4342
|
+
###
|
4343
|
+
# scopes
|
4311
4344
|
|
4312
4345
|
|
4313
|
-
|
4314
|
-
|
4315
|
-
|
4346
|
+
class InjectorScope(abc.ABC): # noqa
|
4347
|
+
def __init__(
|
4348
|
+
self,
|
4349
|
+
*,
|
4350
|
+
_i: Injector,
|
4351
|
+
) -> None:
|
4352
|
+
check.not_in(abc.ABC, type(self).__bases__)
|
4316
4353
|
|
4317
|
-
|
4318
|
-
|
4319
|
-
|
4320
|
-
|
4321
|
-
|
4322
|
-
|
4323
|
-
|
4354
|
+
super().__init__()
|
4355
|
+
|
4356
|
+
self._i = _i
|
4357
|
+
|
4358
|
+
all_seeds: ta.Iterable[_InjectorScopeSeed] = self._i.provide(InjectorKey(_InjectorScopeSeed, array=True))
|
4359
|
+
self._sks = {s.k for s in all_seeds if s.sc is type(self)}
|
4360
|
+
|
4361
|
+
#
|
4362
|
+
|
4363
|
+
@dc.dataclass(frozen=True)
|
4364
|
+
class State:
|
4365
|
+
seeds: ta.Dict[InjectorKey, ta.Any]
|
4366
|
+
provisions: ta.Dict[InjectorKey, ta.Any] = dc.field(default_factory=dict)
|
4367
|
+
|
4368
|
+
def new_state(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> State:
|
4369
|
+
vs = dict(vs)
|
4370
|
+
check.equal(set(vs.keys()), self._sks)
|
4371
|
+
return InjectorScope.State(vs)
|
4372
|
+
|
4373
|
+
#
|
4374
|
+
|
4375
|
+
@abc.abstractmethod
|
4376
|
+
def state(self) -> State:
|
4377
|
+
raise NotImplementedError
|
4378
|
+
|
4379
|
+
@abc.abstractmethod
|
4380
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.ContextManager[None]:
|
4381
|
+
raise NotImplementedError
|
4382
|
+
|
4383
|
+
|
4384
|
+
class ExclusiveInjectorScope(InjectorScope, abc.ABC):
|
4385
|
+
_st: ta.Optional[InjectorScope.State] = None
|
4386
|
+
|
4387
|
+
def state(self) -> InjectorScope.State:
|
4388
|
+
return check.not_none(self._st)
|
4389
|
+
|
4390
|
+
@contextlib.contextmanager
|
4391
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.Iterator[None]:
|
4392
|
+
check.none(self._st)
|
4393
|
+
self._st = self.new_state(vs)
|
4394
|
+
try:
|
4395
|
+
yield
|
4396
|
+
finally:
|
4397
|
+
self._st = None
|
4398
|
+
|
4399
|
+
|
4400
|
+
class ContextvarInjectorScope(InjectorScope, abc.ABC):
|
4401
|
+
_cv: contextvars.ContextVar
|
4402
|
+
|
4403
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
4404
|
+
super().__init_subclass__(**kwargs)
|
4405
|
+
check.not_in(abc.ABC, cls.__bases__)
|
4406
|
+
check.state(not hasattr(cls, '_cv'))
|
4407
|
+
cls._cv = contextvars.ContextVar(f'{cls.__name__}_cv')
|
4408
|
+
|
4409
|
+
def state(self) -> InjectorScope.State:
|
4410
|
+
return self._cv.get()
|
4411
|
+
|
4412
|
+
@contextlib.contextmanager
|
4413
|
+
def enter(self, vs: ta.Mapping[InjectorKey, ta.Any]) -> ta.Iterator[None]:
|
4414
|
+
try:
|
4415
|
+
self._cv.get()
|
4416
|
+
except LookupError:
|
4417
|
+
pass
|
4324
4418
|
else:
|
4325
|
-
|
4326
|
-
|
4327
|
-
|
4419
|
+
raise RuntimeError(f'Scope already entered: {self}')
|
4420
|
+
st = self.new_state(vs)
|
4421
|
+
tok = self._cv.set(st)
|
4422
|
+
try:
|
4423
|
+
yield
|
4424
|
+
finally:
|
4425
|
+
self._cv.reset(tok)
|
4328
4426
|
|
4329
|
-
if am:
|
4330
|
-
for k, aps in am.items():
|
4331
|
-
pm[k] = ArrayInjectorProvider(aps)
|
4332
4427
|
|
4333
|
-
|
4428
|
+
#
|
4429
|
+
|
4430
|
+
|
4431
|
+
@dc.dataclass(frozen=True)
|
4432
|
+
class ScopedInjectorProvider(InjectorProvider):
|
4433
|
+
p: InjectorProvider
|
4434
|
+
k: InjectorKey
|
4435
|
+
sc: ta.Type[InjectorScope]
|
4436
|
+
|
4437
|
+
def __post_init__(self) -> None:
|
4438
|
+
check.isinstance(self.p, InjectorProvider)
|
4439
|
+
check.isinstance(self.k, InjectorKey)
|
4440
|
+
check.issubclass(self.sc, InjectorScope)
|
4441
|
+
|
4442
|
+
def provider_fn(self) -> InjectorProviderFn:
|
4443
|
+
def pfn(i: Injector) -> ta.Any:
|
4444
|
+
st = i[self.sc].state()
|
4445
|
+
try:
|
4446
|
+
return st.provisions[self.k]
|
4447
|
+
except KeyError:
|
4448
|
+
pass
|
4449
|
+
v = ufn(i)
|
4450
|
+
st.provisions[self.k] = v
|
4451
|
+
return v
|
4452
|
+
|
4453
|
+
ufn = self.p.provider_fn()
|
4454
|
+
return pfn
|
4455
|
+
|
4456
|
+
|
4457
|
+
@dc.dataclass(frozen=True)
|
4458
|
+
class _ScopeSeedInjectorProvider(InjectorProvider):
|
4459
|
+
k: InjectorKey
|
4460
|
+
sc: ta.Type[InjectorScope]
|
4461
|
+
|
4462
|
+
def __post_init__(self) -> None:
|
4463
|
+
check.isinstance(self.k, InjectorKey)
|
4464
|
+
check.issubclass(self.sc, InjectorScope)
|
4465
|
+
|
4466
|
+
def provider_fn(self) -> InjectorProviderFn:
|
4467
|
+
def pfn(i: Injector) -> ta.Any:
|
4468
|
+
st = i[self.sc].state()
|
4469
|
+
return st.seeds[self.k]
|
4470
|
+
return pfn
|
4471
|
+
|
4472
|
+
|
4473
|
+
def bind_injector_scope(sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
4474
|
+
return InjectorBinder.bind(sc, singleton=True)
|
4475
|
+
|
4476
|
+
|
4477
|
+
#
|
4478
|
+
|
4479
|
+
|
4480
|
+
@dc.dataclass(frozen=True)
|
4481
|
+
class _InjectorScopeSeed:
|
4482
|
+
sc: ta.Type['InjectorScope']
|
4483
|
+
k: InjectorKey
|
4484
|
+
|
4485
|
+
def __post_init__(self) -> None:
|
4486
|
+
check.issubclass(self.sc, InjectorScope)
|
4487
|
+
check.isinstance(self.k, InjectorKey)
|
4488
|
+
|
4489
|
+
|
4490
|
+
def bind_injector_scope_seed(k: ta.Any, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
4491
|
+
kk = as_injector_key(k)
|
4492
|
+
return as_injector_bindings(
|
4493
|
+
InjectorBinding(kk, _ScopeSeedInjectorProvider(kk, sc)),
|
4494
|
+
InjectorBinder.bind(_InjectorScopeSeed(sc, kk), array=True),
|
4495
|
+
)
|
4334
4496
|
|
4335
4497
|
|
4336
4498
|
###
|
@@ -4477,13 +4639,21 @@ _INJECTOR_EAGER_ARRAY_KEY: InjectorKey[_InjectorEager] = InjectorKey(_InjectorEa
|
|
4477
4639
|
|
4478
4640
|
|
4479
4641
|
class _Injector(Injector):
|
4642
|
+
_DEFAULT_BINDINGS: ta.ClassVar[ta.List[InjectorBinding]] = []
|
4643
|
+
|
4480
4644
|
def __init__(self, bs: InjectorBindings, p: ta.Optional[Injector] = None) -> None:
|
4481
4645
|
super().__init__()
|
4482
4646
|
|
4483
4647
|
self._bs = check.isinstance(bs, InjectorBindings)
|
4484
4648
|
self._p: ta.Optional[Injector] = check.isinstance(p, (Injector, type(None)))
|
4485
4649
|
|
4486
|
-
self._pfm = {
|
4650
|
+
self._pfm = {
|
4651
|
+
k: v.provider_fn()
|
4652
|
+
for k, v in build_injector_provider_map(as_injector_bindings(
|
4653
|
+
*self._DEFAULT_BINDINGS,
|
4654
|
+
bs,
|
4655
|
+
)).items()
|
4656
|
+
}
|
4487
4657
|
|
4488
4658
|
if _INJECTOR_INJECTOR_KEY in self._pfm:
|
4489
4659
|
raise DuplicateInjectorKeyError(_INJECTOR_INJECTOR_KEY)
|
@@ -4650,6 +4820,7 @@ class InjectorBinder:
|
|
4650
4820
|
to_const: ta.Any = None,
|
4651
4821
|
to_key: ta.Any = None,
|
4652
4822
|
|
4823
|
+
in_: ta.Optional[ta.Type[InjectorScope]] = None,
|
4653
4824
|
singleton: bool = False,
|
4654
4825
|
|
4655
4826
|
eager: bool = False,
|
@@ -4659,12 +4830,12 @@ class InjectorBinder:
|
|
4659
4830
|
if isinstance(obj, cls._BANNED_BIND_TYPES):
|
4660
4831
|
raise TypeError(obj)
|
4661
4832
|
|
4662
|
-
|
4833
|
+
#
|
4663
4834
|
|
4664
4835
|
if key is not None:
|
4665
4836
|
key = as_injector_key(key)
|
4666
4837
|
|
4667
|
-
|
4838
|
+
#
|
4668
4839
|
|
4669
4840
|
has_to = (
|
4670
4841
|
to_fn is not None or
|
@@ -4694,7 +4865,7 @@ class InjectorBinder:
|
|
4694
4865
|
key = InjectorKey(type(obj))
|
4695
4866
|
del has_to
|
4696
4867
|
|
4697
|
-
|
4868
|
+
#
|
4698
4869
|
|
4699
4870
|
if tag is not None:
|
4700
4871
|
if key.tag is not None:
|
@@ -4704,7 +4875,7 @@ class InjectorBinder:
|
|
4704
4875
|
if array is not None:
|
4705
4876
|
key = dc.replace(key, array=array)
|
4706
4877
|
|
4707
|
-
|
4878
|
+
#
|
4708
4879
|
|
4709
4880
|
providers: ta.List[InjectorProvider] = []
|
4710
4881
|
if to_fn is not None:
|
@@ -4719,23 +4890,34 @@ class InjectorBinder:
|
|
4719
4890
|
raise TypeError('Must specify provider')
|
4720
4891
|
if len(providers) > 1:
|
4721
4892
|
raise TypeError('May not specify multiple providers')
|
4722
|
-
provider
|
4893
|
+
provider = check.single(providers)
|
4723
4894
|
|
4724
|
-
|
4895
|
+
#
|
4725
4896
|
|
4897
|
+
pws: ta.List[ta.Any] = []
|
4898
|
+
if in_ is not None:
|
4899
|
+
check.issubclass(in_, InjectorScope)
|
4900
|
+
check.not_in(abc.ABC, in_.__bases__)
|
4901
|
+
pws.append(functools.partial(ScopedInjectorProvider, k=key, sc=in_))
|
4726
4902
|
if singleton:
|
4727
|
-
|
4903
|
+
pws.append(SingletonInjectorProvider)
|
4904
|
+
if len(pws) > 1:
|
4905
|
+
raise TypeError('May not specify multiple provider wrappers')
|
4906
|
+
elif pws:
|
4907
|
+
provider = check.single(pws)(provider)
|
4908
|
+
|
4909
|
+
#
|
4728
4910
|
|
4729
4911
|
binding = InjectorBinding(key, provider)
|
4730
4912
|
|
4731
|
-
|
4913
|
+
#
|
4732
4914
|
|
4733
4915
|
extras: ta.List[InjectorBinding] = []
|
4734
4916
|
|
4735
4917
|
if eager:
|
4736
4918
|
extras.append(bind_injector_eager_key(key))
|
4737
4919
|
|
4738
|
-
|
4920
|
+
#
|
4739
4921
|
|
4740
4922
|
if extras:
|
4741
4923
|
return as_injector_bindings(binding, *extras)
|
@@ -4808,7 +4990,8 @@ def bind_injector_eager_key(key: ta.Any) -> InjectorBinding:
|
|
4808
4990
|
return InjectorBinding(_INJECTOR_EAGER_ARRAY_KEY, ConstInjectorProvider(_InjectorEager(as_injector_key(key))))
|
4809
4991
|
|
4810
4992
|
|
4811
|
-
|
4993
|
+
###
|
4994
|
+
# api
|
4812
4995
|
|
4813
4996
|
|
4814
4997
|
class InjectionApi:
|
@@ -4828,9 +5011,19 @@ class InjectionApi:
|
|
4828
5011
|
def as_bindings(self, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
4829
5012
|
return as_injector_bindings(*args)
|
4830
5013
|
|
5014
|
+
# overrides
|
5015
|
+
|
4831
5016
|
def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
|
4832
5017
|
return injector_override(p, *args)
|
4833
5018
|
|
5019
|
+
# scopes
|
5020
|
+
|
5021
|
+
def bind_scope(self, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
5022
|
+
return bind_injector_scope(sc)
|
5023
|
+
|
5024
|
+
def bind_scope_seed(self, k: ta.Any, sc: ta.Type[InjectorScope]) -> InjectorBindingOrBindings:
|
5025
|
+
return bind_injector_scope_seed(k, sc)
|
5026
|
+
|
4834
5027
|
# injector
|
4835
5028
|
|
4836
5029
|
def create_injector(self, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
|
@@ -4851,6 +5044,7 @@ class InjectionApi:
|
|
4851
5044
|
to_const: ta.Any = None,
|
4852
5045
|
to_key: ta.Any = None,
|
4853
5046
|
|
5047
|
+
in_: ta.Optional[ta.Type[InjectorScope]] = None,
|
4854
5048
|
singleton: bool = False,
|
4855
5049
|
|
4856
5050
|
eager: bool = False,
|
@@ -4867,6 +5061,7 @@ class InjectionApi:
|
|
4867
5061
|
to_const=to_const,
|
4868
5062
|
to_key=to_key,
|
4869
5063
|
|
5064
|
+
in_=in_,
|
4870
5065
|
singleton=singleton,
|
4871
5066
|
|
4872
5067
|
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.dev179
|
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.dev179
|
16
|
+
Requires-Dist: omlish==0.0.0.dev179
|
17
17
|
Provides-Extra: all
|
18
18
|
Requires-Dist: paramiko~=3.5; extra == "all"
|
19
19
|
Requires-Dist: asyncssh~=2.18; extra == "all"
|
@@ -45,18 +45,19 @@ ominfra/manage/commands/subprocess.py,sha256=yHGMbAI-xKe_9BUs5IZ3Yav8qRE-I9aGnBt
|
|
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
47
|
ominfra/manage/deploy/apps.py,sha256=LeZ2iX2YHviOAnvgut7Oz15301eJoYYCpmD3ffoIagA,4742
|
48
|
-
ominfra/manage/deploy/commands.py,sha256=
|
48
|
+
ominfra/manage/deploy/commands.py,sha256=U74HYQ4nhvH7znAKyXGOmZfdnll2gMWxKWVW4GzxG-0,830
|
49
49
|
ominfra/manage/deploy/conf.py,sha256=fNfFlIb-bB3KAzaYZcjrbqaqKSiSq0Lpk0mIF6WgXiw,5410
|
50
50
|
ominfra/manage/deploy/config.py,sha256=kPpl8TRisz295cM4oj-RHA6oh5jdcJ_N9pVpkl_doO8,114
|
51
|
-
ominfra/manage/deploy/deploy.py,sha256=
|
51
|
+
ominfra/manage/deploy/deploy.py,sha256=vyBTbBm51HhRE-MQNvxEt39F8uOYsB4ToqZ3zmVkpqU,819
|
52
|
+
ominfra/manage/deploy/driver.py,sha256=kSriXFC8L_EpOcHFGxNZDBGyxV_fZAAF95y-czisnwE,1352
|
52
53
|
ominfra/manage/deploy/git.py,sha256=g4wzUuSu9HwWSDhdVX-7BvA2htMwtWbRcHaoDy-xOJ4,3960
|
53
|
-
ominfra/manage/deploy/inject.py,sha256=
|
54
|
-
ominfra/manage/deploy/interp.py,sha256=
|
54
|
+
ominfra/manage/deploy/inject.py,sha256=eTQC8Kyk8S8ogTJqti2lTwD2j7ha5qQG6KxqeIpLoxU,3610
|
55
|
+
ominfra/manage/deploy/interp.py,sha256=_5fuHrY5ZA0eGbnNcOqAhAMSWI1UNvbm0l29eDjE5fI,1037
|
55
56
|
ominfra/manage/deploy/specs.py,sha256=usi5AmTlv8OGFcwhVHnu8Qrz1Criu5QP6_ScNMi9ehM,3748
|
56
57
|
ominfra/manage/deploy/tags.py,sha256=NVEJhHKMwoDuCFd8lInH_jIe99FQILBX3wrulh3GiDg,5166
|
57
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=1Ic3yKap9bTduqHorz1MpmSiQPh9x-vxhLLxgpVpRdc,1592
|
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
63
|
ominfra/manage/deploy/paths/manager.py,sha256=Dnl8euyZQYDGwDzkMvgPAwOssseducr5kP6T0qzVXQk,929
|
@@ -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=8amo3uZzto1lHwrPANYIiQANnI4tg7d2tYPZpLQxOek,327303
|
91
|
+
ominfra/scripts/supervisor.py,sha256=fjUREQahtEy3FmuIVJsJIDNKNt002dCSjQO6OYq64SY,281855
|
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.dev179.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
134
|
+
ominfra-0.0.0.dev179.dist-info/METADATA,sha256=DToWITQGiSWlecrUHlTZfyqAdadg-kSWUpZb8auv38g,731
|
135
|
+
ominfra-0.0.0.dev179.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
136
|
+
ominfra-0.0.0.dev179.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
|
137
|
+
ominfra-0.0.0.dev179.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
|
138
|
+
ominfra-0.0.0.dev179.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|