ominfra 0.0.0.dev161__py3-none-any.whl → 0.0.0.dev163__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -51,7 +51,7 @@ class DeployAppManager(DeployPathOwner):
51
51
 
52
52
  def get_owned_deploy_paths(self) -> ta.AbstractSet[DeployPath]:
53
53
  return {
54
- DeployPath.parse('apps/@app/@tag'),
54
+ DeployPath.parse('apps/@app/@tag/'),
55
55
  }
56
56
 
57
57
  async def prepare_app(
@@ -70,4 +70,5 @@ class DeployAppManager(DeployPathOwner):
70
70
 
71
71
  #
72
72
 
73
- await self._venvs.setup_app_venv(app_tag)
73
+ if spec.venv is not None:
74
+ await self._venvs.setup_app_venv(app_tag, spec.venv)
@@ -43,11 +43,29 @@ class DeployGitCheckout:
43
43
  ##
44
44
 
45
45
 
46
+ @dc.dataclass(frozen=True)
47
+ class DeployVenvSpec:
48
+ interp: ta.Optional[str] = None
49
+
50
+ requirements_files: ta.Optional[ta.Sequence[str]] = None
51
+ extra_dependencies: ta.Optional[ta.Sequence[str]] = None
52
+
53
+ use_uv: bool = False
54
+
55
+ def __post_init__(self) -> None:
56
+ hash(self)
57
+
58
+
59
+ ##
60
+
61
+
46
62
  @dc.dataclass(frozen=True)
47
63
  class DeploySpec:
48
64
  app: DeployApp
49
65
  checkout: DeployGitCheckout
50
66
 
67
+ venv: ta.Optional[DeployVenvSpec] = None
68
+
51
69
  def __post_init__(self) -> None:
52
70
  hash(self)
53
71
 
@@ -14,6 +14,7 @@ from omlish.os.atomics import AtomicPathSwapping
14
14
 
15
15
  from .paths import DeployPath
16
16
  from .paths import DeployPathOwner
17
+ from .specs import DeployVenvSpec
17
18
  from .types import DeployAppTag
18
19
  from .types import DeployHome
19
20
 
@@ -43,8 +44,7 @@ class DeployVenvManager(DeployPathOwner):
43
44
  self,
44
45
  app_dir: str,
45
46
  venv_dir: str,
46
- *,
47
- use_uv: bool = True,
47
+ spec: DeployVenvSpec,
48
48
  ) -> None:
49
49
  sys_exe = 'python3'
50
50
 
@@ -61,7 +61,7 @@ class DeployVenvManager(DeployPathOwner):
61
61
  reqs_txt = os.path.join(app_dir, 'requirements.txt')
62
62
 
63
63
  if os.path.isfile(reqs_txt):
64
- if use_uv:
64
+ if spec.use_uv:
65
65
  await asyncio_subprocesses.check_call(venv_exe, '-m', 'pip', 'install', 'uv')
66
66
  pip_cmd = ['-m', 'uv', 'pip']
67
67
  else:
@@ -69,8 +69,13 @@ class DeployVenvManager(DeployPathOwner):
69
69
 
70
70
  await asyncio_subprocesses.check_call(venv_exe, *pip_cmd,'install', '-r', reqs_txt)
71
71
 
72
- async def setup_app_venv(self, app_tag: DeployAppTag) -> None:
72
+ async def setup_app_venv(
73
+ self,
74
+ app_tag: DeployAppTag,
75
+ spec: DeployVenvSpec,
76
+ ) -> None:
73
77
  await self.setup_venv(
74
78
  os.path.join(check.non_empty_str(self._deploy_home), 'apps', app_tag.app, app_tag.tag),
75
79
  os.path.join(self._dir(), app_tag.app, app_tag.tag),
80
+ spec,
76
81
  )
ominfra/scripts/manage.py CHANGED
@@ -4329,11 +4329,29 @@ class DeployGitCheckout:
4329
4329
  ##
4330
4330
 
4331
4331
 
4332
+ @dc.dataclass(frozen=True)
4333
+ class DeployVenvSpec:
4334
+ interp: ta.Optional[str] = None
4335
+
4336
+ requirements_files: ta.Optional[ta.Sequence[str]] = None
4337
+ extra_dependencies: ta.Optional[ta.Sequence[str]] = None
4338
+
4339
+ use_uv: bool = False
4340
+
4341
+ def __post_init__(self) -> None:
4342
+ hash(self)
4343
+
4344
+
4345
+ ##
4346
+
4347
+
4332
4348
  @dc.dataclass(frozen=True)
4333
4349
  class DeploySpec:
4334
4350
  app: DeployApp
4335
4351
  checkout: DeployGitCheckout
4336
4352
 
4353
+ venv: ta.Optional[DeployVenvSpec] = None
4354
+
4337
4355
  def __post_init__(self) -> None:
4338
4356
  hash(self)
4339
4357
 
@@ -5489,7 +5507,7 @@ class InjectorBinder:
5489
5507
  def __new__(cls, *args, **kwargs): # noqa
5490
5508
  raise TypeError
5491
5509
 
5492
- _FN_TYPES: ta.Tuple[type, ...] = (
5510
+ _FN_TYPES: ta.ClassVar[ta.Tuple[type, ...]] = (
5493
5511
  types.FunctionType,
5494
5512
  types.MethodType,
5495
5513
 
@@ -5511,7 +5529,7 @@ class InjectorBinder:
5511
5529
  cls._FN_TYPES = (*cls._FN_TYPES, icls)
5512
5530
  return icls
5513
5531
 
5514
- _BANNED_BIND_TYPES: ta.Tuple[type, ...] = (
5532
+ _BANNED_BIND_TYPES: ta.ClassVar[ta.Tuple[type, ...]] = (
5515
5533
  InjectorProvider,
5516
5534
  )
5517
5535
 
@@ -5690,45 +5708,35 @@ def bind_injector_eager_key(key: ta.Any) -> InjectorBinding:
5690
5708
  ##
5691
5709
 
5692
5710
 
5693
- class Injection:
5694
- def __new__(cls, *args, **kwargs): # noqa
5695
- raise TypeError
5696
-
5711
+ class InjectionApi:
5697
5712
  # keys
5698
5713
 
5699
- @classmethod
5700
- def as_key(cls, o: ta.Any) -> InjectorKey:
5714
+ def as_key(self, o: ta.Any) -> InjectorKey:
5701
5715
  return as_injector_key(o)
5702
5716
 
5703
- @classmethod
5704
- def array(cls, o: ta.Any) -> InjectorKey:
5717
+ def array(self, o: ta.Any) -> InjectorKey:
5705
5718
  return dc.replace(as_injector_key(o), array=True)
5706
5719
 
5707
- @classmethod
5708
- def tag(cls, o: ta.Any, t: ta.Any) -> InjectorKey:
5720
+ def tag(self, o: ta.Any, t: ta.Any) -> InjectorKey:
5709
5721
  return dc.replace(as_injector_key(o), tag=t)
5710
5722
 
5711
5723
  # bindings
5712
5724
 
5713
- @classmethod
5714
- def as_bindings(cls, *args: InjectorBindingOrBindings) -> InjectorBindings:
5725
+ def as_bindings(self, *args: InjectorBindingOrBindings) -> InjectorBindings:
5715
5726
  return as_injector_bindings(*args)
5716
5727
 
5717
- @classmethod
5718
- def override(cls, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
5728
+ def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
5719
5729
  return injector_override(p, *args)
5720
5730
 
5721
5731
  # injector
5722
5732
 
5723
- @classmethod
5724
- def create_injector(cls, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
5733
+ def create_injector(self, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
5725
5734
  return _Injector(as_injector_bindings(*args), parent)
5726
5735
 
5727
5736
  # binder
5728
5737
 
5729
- @classmethod
5730
5738
  def bind(
5731
- cls,
5739
+ self,
5732
5740
  obj: ta.Any,
5733
5741
  *,
5734
5742
  key: ta.Any = None,
@@ -5763,35 +5771,32 @@ class Injection:
5763
5771
 
5764
5772
  # helpers
5765
5773
 
5766
- @classmethod
5767
5774
  def bind_factory(
5768
- cls,
5775
+ self,
5769
5776
  fn: ta.Callable[..., T],
5770
5777
  cls_: U,
5771
5778
  ann: ta.Any = None,
5772
5779
  ) -> InjectorBindingOrBindings:
5773
- return cls.bind(make_injector_factory(fn, cls_, ann))
5780
+ return self.bind(make_injector_factory(fn, cls_, ann))
5774
5781
 
5775
- @classmethod
5776
5782
  def bind_array(
5777
- cls,
5783
+ self,
5778
5784
  obj: ta.Any = None,
5779
5785
  *,
5780
5786
  tag: ta.Any = None,
5781
5787
  ) -> InjectorBindingOrBindings:
5782
5788
  return bind_injector_array(obj, tag=tag)
5783
5789
 
5784
- @classmethod
5785
5790
  def bind_array_type(
5786
- cls,
5791
+ self,
5787
5792
  ele: ta.Union[InjectorKey, InjectorKeyCls],
5788
5793
  cls_: U,
5789
5794
  ann: ta.Any = None,
5790
5795
  ) -> InjectorBindingOrBindings:
5791
- return cls.bind(make_injector_array_type(ele, cls_, ann))
5796
+ return self.bind(make_injector_array_type(ele, cls_, ann))
5792
5797
 
5793
5798
 
5794
- inj = Injection
5799
+ inj = InjectionApi()
5795
5800
 
5796
5801
 
5797
5802
  ########################################
@@ -8297,8 +8302,7 @@ class DeployVenvManager(DeployPathOwner):
8297
8302
  self,
8298
8303
  app_dir: str,
8299
8304
  venv_dir: str,
8300
- *,
8301
- use_uv: bool = True,
8305
+ spec: DeployVenvSpec,
8302
8306
  ) -> None:
8303
8307
  sys_exe = 'python3'
8304
8308
 
@@ -8315,7 +8319,7 @@ class DeployVenvManager(DeployPathOwner):
8315
8319
  reqs_txt = os.path.join(app_dir, 'requirements.txt')
8316
8320
 
8317
8321
  if os.path.isfile(reqs_txt):
8318
- if use_uv:
8322
+ if spec.use_uv:
8319
8323
  await asyncio_subprocesses.check_call(venv_exe, '-m', 'pip', 'install', 'uv')
8320
8324
  pip_cmd = ['-m', 'uv', 'pip']
8321
8325
  else:
@@ -8323,10 +8327,15 @@ class DeployVenvManager(DeployPathOwner):
8323
8327
 
8324
8328
  await asyncio_subprocesses.check_call(venv_exe, *pip_cmd,'install', '-r', reqs_txt)
8325
8329
 
8326
- async def setup_app_venv(self, app_tag: DeployAppTag) -> None:
8330
+ async def setup_app_venv(
8331
+ self,
8332
+ app_tag: DeployAppTag,
8333
+ spec: DeployVenvSpec,
8334
+ ) -> None:
8327
8335
  await self.setup_venv(
8328
8336
  os.path.join(check.non_empty_str(self._deploy_home), 'apps', app_tag.app, app_tag.tag),
8329
8337
  os.path.join(self._dir(), app_tag.app, app_tag.tag),
8338
+ spec,
8330
8339
  )
8331
8340
 
8332
8341
 
@@ -8892,7 +8901,7 @@ class DeployAppManager(DeployPathOwner):
8892
8901
 
8893
8902
  def get_owned_deploy_paths(self) -> ta.AbstractSet[DeployPath]:
8894
8903
  return {
8895
- DeployPath.parse('apps/@app/@tag'),
8904
+ DeployPath.parse('apps/@app/@tag/'),
8896
8905
  }
8897
8906
 
8898
8907
  async def prepare_app(
@@ -8911,7 +8920,8 @@ class DeployAppManager(DeployPathOwner):
8911
8920
 
8912
8921
  #
8913
8922
 
8914
- await self._venvs.setup_app_venv(app_tag)
8923
+ if spec.venv is not None:
8924
+ await self._venvs.setup_app_venv(app_tag, spec.venv)
8915
8925
 
8916
8926
 
8917
8927
  ########################################
@@ -4548,7 +4548,7 @@ class InjectorBinder:
4548
4548
  def __new__(cls, *args, **kwargs): # noqa
4549
4549
  raise TypeError
4550
4550
 
4551
- _FN_TYPES: ta.Tuple[type, ...] = (
4551
+ _FN_TYPES: ta.ClassVar[ta.Tuple[type, ...]] = (
4552
4552
  types.FunctionType,
4553
4553
  types.MethodType,
4554
4554
 
@@ -4570,7 +4570,7 @@ class InjectorBinder:
4570
4570
  cls._FN_TYPES = (*cls._FN_TYPES, icls)
4571
4571
  return icls
4572
4572
 
4573
- _BANNED_BIND_TYPES: ta.Tuple[type, ...] = (
4573
+ _BANNED_BIND_TYPES: ta.ClassVar[ta.Tuple[type, ...]] = (
4574
4574
  InjectorProvider,
4575
4575
  )
4576
4576
 
@@ -4749,45 +4749,35 @@ def bind_injector_eager_key(key: ta.Any) -> InjectorBinding:
4749
4749
  ##
4750
4750
 
4751
4751
 
4752
- class Injection:
4753
- def __new__(cls, *args, **kwargs): # noqa
4754
- raise TypeError
4755
-
4752
+ class InjectionApi:
4756
4753
  # keys
4757
4754
 
4758
- @classmethod
4759
- def as_key(cls, o: ta.Any) -> InjectorKey:
4755
+ def as_key(self, o: ta.Any) -> InjectorKey:
4760
4756
  return as_injector_key(o)
4761
4757
 
4762
- @classmethod
4763
- def array(cls, o: ta.Any) -> InjectorKey:
4758
+ def array(self, o: ta.Any) -> InjectorKey:
4764
4759
  return dc.replace(as_injector_key(o), array=True)
4765
4760
 
4766
- @classmethod
4767
- def tag(cls, o: ta.Any, t: ta.Any) -> InjectorKey:
4761
+ def tag(self, o: ta.Any, t: ta.Any) -> InjectorKey:
4768
4762
  return dc.replace(as_injector_key(o), tag=t)
4769
4763
 
4770
4764
  # bindings
4771
4765
 
4772
- @classmethod
4773
- def as_bindings(cls, *args: InjectorBindingOrBindings) -> InjectorBindings:
4766
+ def as_bindings(self, *args: InjectorBindingOrBindings) -> InjectorBindings:
4774
4767
  return as_injector_bindings(*args)
4775
4768
 
4776
- @classmethod
4777
- def override(cls, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
4769
+ def override(self, p: InjectorBindings, *args: InjectorBindingOrBindings) -> InjectorBindings:
4778
4770
  return injector_override(p, *args)
4779
4771
 
4780
4772
  # injector
4781
4773
 
4782
- @classmethod
4783
- def create_injector(cls, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
4774
+ def create_injector(self, *args: InjectorBindingOrBindings, parent: ta.Optional[Injector] = None) -> Injector:
4784
4775
  return _Injector(as_injector_bindings(*args), parent)
4785
4776
 
4786
4777
  # binder
4787
4778
 
4788
- @classmethod
4789
4779
  def bind(
4790
- cls,
4780
+ self,
4791
4781
  obj: ta.Any,
4792
4782
  *,
4793
4783
  key: ta.Any = None,
@@ -4822,35 +4812,32 @@ class Injection:
4822
4812
 
4823
4813
  # helpers
4824
4814
 
4825
- @classmethod
4826
4815
  def bind_factory(
4827
- cls,
4816
+ self,
4828
4817
  fn: ta.Callable[..., T],
4829
4818
  cls_: U,
4830
4819
  ann: ta.Any = None,
4831
4820
  ) -> InjectorBindingOrBindings:
4832
- return cls.bind(make_injector_factory(fn, cls_, ann))
4821
+ return self.bind(make_injector_factory(fn, cls_, ann))
4833
4822
 
4834
- @classmethod
4835
4823
  def bind_array(
4836
- cls,
4824
+ self,
4837
4825
  obj: ta.Any = None,
4838
4826
  *,
4839
4827
  tag: ta.Any = None,
4840
4828
  ) -> InjectorBindingOrBindings:
4841
4829
  return bind_injector_array(obj, tag=tag)
4842
4830
 
4843
- @classmethod
4844
4831
  def bind_array_type(
4845
- cls,
4832
+ self,
4846
4833
  ele: ta.Union[InjectorKey, InjectorKeyCls],
4847
4834
  cls_: U,
4848
4835
  ann: ta.Any = None,
4849
4836
  ) -> InjectorBindingOrBindings:
4850
- return cls.bind(make_injector_array_type(ele, cls_, ann))
4837
+ return self.bind(make_injector_array_type(ele, cls_, ann))
4851
4838
 
4852
4839
 
4853
- inj = Injection
4840
+ inj = InjectionApi()
4854
4841
 
4855
4842
 
4856
4843
  ########################################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ominfra
3
- Version: 0.0.0.dev161
3
+ Version: 0.0.0.dev163
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.dev161
16
- Requires-Dist: omlish==0.0.0.dev161
15
+ Requires-Dist: omdev==0.0.0.dev163
16
+ Requires-Dist: omlish==0.0.0.dev163
17
17
  Provides-Extra: all
18
18
  Requires-Dist: paramiko~=3.5; extra == "all"
19
19
  Requires-Dist: asyncssh~=2.18; extra == "all"
@@ -44,17 +44,17 @@ 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=lXcbyX8_wrvvwKtIMM9P_Mh7xL8yj6z9_PFTl_0u-0U,1887
47
+ ominfra/manage/deploy/apps.py,sha256=Nv3eXVPxEbSz4wyTI8chJ-C-EEC721vFssvvg0YDRXo,1937
48
48
  ominfra/manage/deploy/commands.py,sha256=N9qVntnRgJ_IneI7rEQB2Za0oU7gouPfm-sl2MCwW1E,764
49
49
  ominfra/manage/deploy/config.py,sha256=aR6ubMEWqkTI55XtcG1Cczn6YhCVN6eSL8DT5EHQJN0,166
50
50
  ominfra/manage/deploy/git.py,sha256=6CGLvGH8uYkuT8gyZHybJb7sgUPTtFgy7grj1YHkI9g,3747
51
51
  ominfra/manage/deploy/inject.py,sha256=8wuIgdzkDCHbc69nD1meLjwfCOMdWOIfDT5yijL-du8,1441
52
52
  ominfra/manage/deploy/interp.py,sha256=OKkenH8YKEW_mEDR6X7_ZLxK9a1Ox6KHSwFPTHT6OzA,1029
53
53
  ominfra/manage/deploy/paths.py,sha256=tK8zZFWOHDRdTN5AlTe-3MpgZqovhWrljGosQmeEYvo,6839
54
- ominfra/manage/deploy/specs.py,sha256=Yq3WiLNJcodUBEsJfP18gPGB3X2ABI1g8YLlsUvJOXg,1230
54
+ ominfra/manage/deploy/specs.py,sha256=qQSMA2ns0dalbizYwOp14i154mCOkjyvvh4_cN0gT3k,1574
55
55
  ominfra/manage/deploy/tmp.py,sha256=L0pIfQuxQ7_6gC_AAv7eubI37_IPzCVR29hkn1MHL2Q,1230
56
56
  ominfra/manage/deploy/types.py,sha256=o95wqvTGNRq8Cxx7VpqeX-9x1tI8k8BpqPFvJZkJYBA,305
57
- ominfra/manage/deploy/venvs.py,sha256=ZG9tXhzg0R173T1IFIc5DE45xEuJK97DjlN1cQPAvXI,2229
57
+ ominfra/manage/deploy/venvs.py,sha256=u8ds1TVyipFVSfm7sgEHGPw4JPG_hXY2j1LnTCLjxqw,2337
58
58
  ominfra/manage/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  ominfra/manage/remote/_main.py,sha256=p5KoiS2WMw6QAqlDl_Zun-JybmCsy8awIfpBMLBjGMY,4356
60
60
  ominfra/manage/remote/channel.py,sha256=36xR9Ti9ZA8TUBtxmY0u7_3Lv7E6wzQTxlZl7gLR5GE,2224
@@ -76,8 +76,8 @@ ominfra/manage/targets/inject.py,sha256=P4597xWM-V3I_gCt2O71OLhYQkkXtuJvkYRsIbhh
76
76
  ominfra/manage/targets/targets.py,sha256=CFl8Uirgn3gfowO1Fn-LBK-6qYqEMFJ9snPUl0gCRuM,1753
77
77
  ominfra/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
78
  ominfra/scripts/journald2aws.py,sha256=EC8tSKW3hztBV_Kr_ykK72AmcvnWivUxcz6Sfg3M_hI,155085
79
- ominfra/scripts/manage.py,sha256=MQQGcgbIDwUfD31nDGJD2DhWhlazj8GVwQi7kOzi3gc,293788
80
- ominfra/scripts/supervisor.py,sha256=npGYEWSZfY7E24mdkJ3HrL_ax6AcqjHfqh-7nZ_sX0U,273987
79
+ ominfra/scripts/manage.py,sha256=M8k4XmOrq2R3rjUNU3SAHeqdjvWZptpXvFAl4A0RmGM,294060
80
+ ominfra/scripts/supervisor.py,sha256=uPcw4o8gt8xvQ97jXK-WBAaZj3D81Lq9tqDoKxGvLCU,273791
81
81
  ominfra/supervisor/LICENSE.txt,sha256=yvqaMNsDhWxziHa9ien6qCW1SkZv-DQlAg96XjfSee8,1746
82
82
  ominfra/supervisor/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
83
83
  ominfra/supervisor/__main__.py,sha256=I0yFw-C08OOiZ3BF6lF1Oiv789EQXu-_j6whDhQUTEA,66
@@ -119,9 +119,9 @@ ominfra/tailscale/api.py,sha256=C5-t_b6jZXUWcy5k8bXm7CFnk73pSdrlMOgGDeGVrpw,1370
119
119
  ominfra/tailscale/cli.py,sha256=h6akQJMl0KuWLHS7Ur6WcBZ2JwF0DJQhsPTnFBdGyNk,3571
120
120
  ominfra/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
121
  ominfra/tools/listresources.py,sha256=4qVg5txsb10EHhvqXXeM6gJ2jx9LbroEnPydDv1uXs0,6176
122
- ominfra-0.0.0.dev161.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
123
- ominfra-0.0.0.dev161.dist-info/METADATA,sha256=9BUyOL7-nhzomsloRZDx7T8VL-T0KbCHxyQ74LxzbFY,731
124
- ominfra-0.0.0.dev161.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
125
- ominfra-0.0.0.dev161.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
126
- ominfra-0.0.0.dev161.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
127
- ominfra-0.0.0.dev161.dist-info/RECORD,,
122
+ ominfra-0.0.0.dev163.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
123
+ ominfra-0.0.0.dev163.dist-info/METADATA,sha256=q9fLsfIpIUNBG4_udrnURTTYe68b6VtNtktfvCBVlIs,731
124
+ ominfra-0.0.0.dev163.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
125
+ ominfra-0.0.0.dev163.dist-info/entry_points.txt,sha256=kgecQ2MgGrM9qK744BoKS3tMesaC3yjLnl9pa5CRczg,37
126
+ ominfra-0.0.0.dev163.dist-info/top_level.txt,sha256=E-b2OHkk_AOBLXHYZQ2EOFKl-_6uOGd8EjeG-Zy6h_w,8
127
+ ominfra-0.0.0.dev163.dist-info/RECORD,,