ominfra 0.0.0.dev161__py3-none-any.whl → 0.0.0.dev163__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.
@@ -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,,