ominfra 0.0.0.dev177__py3-none-any.whl → 0.0.0.dev179__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/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
|