omdev 0.0.0.dev181__py3-none-any.whl → 0.0.0.dev183__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.
@@ -5203,6 +5203,17 @@ def register_type_obj_marshaler(ty: type, om: ObjMarshaler) -> None:
5203
5203
  _REGISTERED_OBJ_MARSHALERS_BY_TYPE[ty] = om
5204
5204
 
5205
5205
 
5206
+ def register_single_field_type_obj_marshaler(fld, ty=None):
5207
+ def inner(ty): # noqa
5208
+ register_type_obj_marshaler(ty, SingleFieldObjMarshaler(ty, fld))
5209
+ return ty
5210
+
5211
+ if ty is not None:
5212
+ return inner(ty)
5213
+ else:
5214
+ return inner
5215
+
5216
+
5206
5217
  ##
5207
5218
 
5208
5219
 
@@ -6462,6 +6473,88 @@ class InterpInspector:
6462
6473
  return ret
6463
6474
 
6464
6475
 
6476
+ ########################################
6477
+ # ../../interp/pyenv/pyenv.py
6478
+ """
6479
+ TODO:
6480
+ - custom tags
6481
+ - 'aliases'
6482
+ - https://github.com/pyenv/pyenv/pull/2966
6483
+ - https://github.com/pyenv/pyenv/issues/218 (lol)
6484
+ - probably need custom (temp?) definition file
6485
+ - *or* python-build directly just into the versions dir?
6486
+ - optionally install / upgrade pyenv itself
6487
+ - new vers dont need these custom mac opts, only run on old vers
6488
+ """
6489
+
6490
+
6491
+ class Pyenv:
6492
+ def __init__(
6493
+ self,
6494
+ *,
6495
+ root: ta.Optional[str] = None,
6496
+ ) -> None:
6497
+ if root is not None and not (isinstance(root, str) and root):
6498
+ raise ValueError(f'pyenv_root: {root!r}')
6499
+
6500
+ super().__init__()
6501
+
6502
+ self._root_kw = root
6503
+
6504
+ @async_cached_nullary
6505
+ async def root(self) -> ta.Optional[str]:
6506
+ if self._root_kw is not None:
6507
+ return self._root_kw
6508
+
6509
+ if shutil.which('pyenv'):
6510
+ return await asyncio_subprocesses.check_output_str('pyenv', 'root')
6511
+
6512
+ d = os.path.expanduser('~/.pyenv')
6513
+ if os.path.isdir(d) and os.path.isfile(os.path.join(d, 'bin', 'pyenv')):
6514
+ return d
6515
+
6516
+ return None
6517
+
6518
+ @async_cached_nullary
6519
+ async def exe(self) -> str:
6520
+ return os.path.join(check.not_none(await self.root()), 'bin', 'pyenv')
6521
+
6522
+ async def version_exes(self) -> ta.List[ta.Tuple[str, str]]:
6523
+ if (root := await self.root()) is None:
6524
+ return []
6525
+ ret = []
6526
+ vp = os.path.join(root, 'versions')
6527
+ if os.path.isdir(vp):
6528
+ for dn in os.listdir(vp):
6529
+ ep = os.path.join(vp, dn, 'bin', 'python')
6530
+ if not os.path.isfile(ep):
6531
+ continue
6532
+ ret.append((dn, ep))
6533
+ return ret
6534
+
6535
+ async def installable_versions(self) -> ta.List[str]:
6536
+ if await self.root() is None:
6537
+ return []
6538
+ ret = []
6539
+ s = await asyncio_subprocesses.check_output_str(await self.exe(), 'install', '--list')
6540
+ for l in s.splitlines():
6541
+ if not l.startswith(' '):
6542
+ continue
6543
+ l = l.strip()
6544
+ if not l:
6545
+ continue
6546
+ ret.append(l)
6547
+ return ret
6548
+
6549
+ async def update(self) -> bool:
6550
+ if (root := await self.root()) is None:
6551
+ return False
6552
+ if not os.path.isdir(os.path.join(root, '.git')):
6553
+ return False
6554
+ await asyncio_subprocesses.check_call('git', 'pull', cwd=root)
6555
+ return True
6556
+
6557
+
6465
6558
  ########################################
6466
6559
  # ../../interp/resolvers.py
6467
6560
 
@@ -6820,88 +6913,7 @@ class SystemInterpProvider(InterpProvider):
6820
6913
 
6821
6914
 
6822
6915
  ########################################
6823
- # ../../interp/pyenv/pyenv.py
6824
- """
6825
- TODO:
6826
- - custom tags
6827
- - 'aliases'
6828
- - https://github.com/pyenv/pyenv/pull/2966
6829
- - https://github.com/pyenv/pyenv/issues/218 (lol)
6830
- - probably need custom (temp?) definition file
6831
- - *or* python-build directly just into the versions dir?
6832
- - optionally install / upgrade pyenv itself
6833
- - new vers dont need these custom mac opts, only run on old vers
6834
- """
6835
-
6836
-
6837
- ##
6838
-
6839
-
6840
- class Pyenv:
6841
- def __init__(
6842
- self,
6843
- *,
6844
- root: ta.Optional[str] = None,
6845
- ) -> None:
6846
- if root is not None and not (isinstance(root, str) and root):
6847
- raise ValueError(f'pyenv_root: {root!r}')
6848
-
6849
- super().__init__()
6850
-
6851
- self._root_kw = root
6852
-
6853
- @async_cached_nullary
6854
- async def root(self) -> ta.Optional[str]:
6855
- if self._root_kw is not None:
6856
- return self._root_kw
6857
-
6858
- if shutil.which('pyenv'):
6859
- return await asyncio_subprocesses.check_output_str('pyenv', 'root')
6860
-
6861
- d = os.path.expanduser('~/.pyenv')
6862
- if os.path.isdir(d) and os.path.isfile(os.path.join(d, 'bin', 'pyenv')):
6863
- return d
6864
-
6865
- return None
6866
-
6867
- @async_cached_nullary
6868
- async def exe(self) -> str:
6869
- return os.path.join(check.not_none(await self.root()), 'bin', 'pyenv')
6870
-
6871
- async def version_exes(self) -> ta.List[ta.Tuple[str, str]]:
6872
- if (root := await self.root()) is None:
6873
- return []
6874
- ret = []
6875
- vp = os.path.join(root, 'versions')
6876
- if os.path.isdir(vp):
6877
- for dn in os.listdir(vp):
6878
- ep = os.path.join(vp, dn, 'bin', 'python')
6879
- if not os.path.isfile(ep):
6880
- continue
6881
- ret.append((dn, ep))
6882
- return ret
6883
-
6884
- async def installable_versions(self) -> ta.List[str]:
6885
- if await self.root() is None:
6886
- return []
6887
- ret = []
6888
- s = await asyncio_subprocesses.check_output_str(await self.exe(), 'install', '--list')
6889
- for l in s.splitlines():
6890
- if not l.startswith(' '):
6891
- continue
6892
- l = l.strip()
6893
- if not l:
6894
- continue
6895
- ret.append(l)
6896
- return ret
6897
-
6898
- async def update(self) -> bool:
6899
- if (root := await self.root()) is None:
6900
- return False
6901
- if not os.path.isdir(os.path.join(root, '.git')):
6902
- return False
6903
- await asyncio_subprocesses.check_call('git', 'pull', cwd=root)
6904
- return True
6916
+ # ../../interp/pyenv/install.py
6905
6917
 
6906
6918
 
6907
6919
  ##
@@ -7139,136 +7151,6 @@ class PyenvVersionInstaller:
7139
7151
  return exe
7140
7152
 
7141
7153
 
7142
- ##
7143
-
7144
-
7145
- class PyenvInterpProvider(InterpProvider):
7146
- @dc.dataclass(frozen=True)
7147
- class Options:
7148
- inspect: bool = False
7149
-
7150
- try_update: bool = False
7151
-
7152
- def __init__(
7153
- self,
7154
- options: Options = Options(),
7155
- *,
7156
- pyenv: Pyenv,
7157
- inspector: InterpInspector,
7158
- log: ta.Optional[logging.Logger] = None,
7159
- ) -> None:
7160
- super().__init__()
7161
-
7162
- self._options = options
7163
-
7164
- self._pyenv = pyenv
7165
- self._inspector = inspector
7166
- self._log = log
7167
-
7168
- #
7169
-
7170
- @staticmethod
7171
- def guess_version(s: str) -> ta.Optional[InterpVersion]:
7172
- def strip_sfx(s: str, sfx: str) -> ta.Tuple[str, bool]:
7173
- if s.endswith(sfx):
7174
- return s[:-len(sfx)], True
7175
- return s, False
7176
- ok = {}
7177
- s, ok['debug'] = strip_sfx(s, '-debug')
7178
- s, ok['threaded'] = strip_sfx(s, 't')
7179
- try:
7180
- v = Version(s)
7181
- except InvalidVersion:
7182
- return None
7183
- return InterpVersion(v, InterpOpts(**ok))
7184
-
7185
- class Installed(ta.NamedTuple):
7186
- name: str
7187
- exe: str
7188
- version: InterpVersion
7189
-
7190
- async def _make_installed(self, vn: str, ep: str) -> ta.Optional[Installed]:
7191
- iv: ta.Optional[InterpVersion]
7192
- if self._options.inspect:
7193
- try:
7194
- iv = check.not_none(await self._inspector.inspect(ep)).iv
7195
- except Exception as e: # noqa
7196
- return None
7197
- else:
7198
- iv = self.guess_version(vn)
7199
- if iv is None:
7200
- return None
7201
- return PyenvInterpProvider.Installed(
7202
- name=vn,
7203
- exe=ep,
7204
- version=iv,
7205
- )
7206
-
7207
- async def installed(self) -> ta.Sequence[Installed]:
7208
- ret: ta.List[PyenvInterpProvider.Installed] = []
7209
- for vn, ep in await self._pyenv.version_exes():
7210
- if (i := await self._make_installed(vn, ep)) is None:
7211
- if self._log is not None:
7212
- self._log.debug('Invalid pyenv version: %s', vn)
7213
- continue
7214
- ret.append(i)
7215
- return ret
7216
-
7217
- #
7218
-
7219
- async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7220
- return [i.version for i in await self.installed()]
7221
-
7222
- async def get_installed_version(self, version: InterpVersion) -> Interp:
7223
- for i in await self.installed():
7224
- if i.version == version:
7225
- return Interp(
7226
- exe=i.exe,
7227
- version=i.version,
7228
- )
7229
- raise KeyError(version)
7230
-
7231
- #
7232
-
7233
- async def _get_installable_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7234
- lst = []
7235
-
7236
- for vs in await self._pyenv.installable_versions():
7237
- if (iv := self.guess_version(vs)) is None:
7238
- continue
7239
- if iv.opts.debug:
7240
- raise Exception('Pyenv installable versions not expected to have debug suffix')
7241
- for d in [False, True]:
7242
- lst.append(dc.replace(iv, opts=dc.replace(iv.opts, debug=d)))
7243
-
7244
- return lst
7245
-
7246
- async def get_installable_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7247
- lst = await self._get_installable_versions(spec)
7248
-
7249
- if self._options.try_update and not any(v in spec for v in lst):
7250
- if self._pyenv.update():
7251
- lst = await self._get_installable_versions(spec)
7252
-
7253
- return lst
7254
-
7255
- async def install_version(self, version: InterpVersion) -> Interp:
7256
- inst_version = str(version.version)
7257
- inst_opts = version.opts
7258
- if inst_opts.threaded:
7259
- inst_version += 't'
7260
- inst_opts = dc.replace(inst_opts, threaded=False)
7261
-
7262
- installer = PyenvVersionInstaller(
7263
- inst_version,
7264
- interp_opts=inst_opts,
7265
- pyenv=self._pyenv,
7266
- )
7267
-
7268
- exe = await installer.install()
7269
- return Interp(exe, version)
7270
-
7271
-
7272
7154
  ########################################
7273
7155
  # ../pkg.py
7274
7156
  """
@@ -7846,6 +7728,137 @@ def bind_interp_providers() -> InjectorBindings:
7846
7728
  return inj.as_bindings(*lst)
7847
7729
 
7848
7730
 
7731
+ ########################################
7732
+ # ../../interp/pyenv/provider.py
7733
+
7734
+
7735
+ class PyenvInterpProvider(InterpProvider):
7736
+ @dc.dataclass(frozen=True)
7737
+ class Options:
7738
+ inspect: bool = False
7739
+
7740
+ try_update: bool = False
7741
+
7742
+ def __init__(
7743
+ self,
7744
+ options: Options = Options(),
7745
+ *,
7746
+ pyenv: Pyenv,
7747
+ inspector: InterpInspector,
7748
+ log: ta.Optional[logging.Logger] = None,
7749
+ ) -> None:
7750
+ super().__init__()
7751
+
7752
+ self._options = options
7753
+
7754
+ self._pyenv = pyenv
7755
+ self._inspector = inspector
7756
+ self._log = log
7757
+
7758
+ #
7759
+
7760
+ @staticmethod
7761
+ def guess_version(s: str) -> ta.Optional[InterpVersion]:
7762
+ def strip_sfx(s: str, sfx: str) -> ta.Tuple[str, bool]:
7763
+ if s.endswith(sfx):
7764
+ return s[:-len(sfx)], True
7765
+ return s, False
7766
+ ok = {}
7767
+ s, ok['debug'] = strip_sfx(s, '-debug')
7768
+ s, ok['threaded'] = strip_sfx(s, 't')
7769
+ try:
7770
+ v = Version(s)
7771
+ except InvalidVersion:
7772
+ return None
7773
+ return InterpVersion(v, InterpOpts(**ok))
7774
+
7775
+ class Installed(ta.NamedTuple):
7776
+ name: str
7777
+ exe: str
7778
+ version: InterpVersion
7779
+
7780
+ async def _make_installed(self, vn: str, ep: str) -> ta.Optional[Installed]:
7781
+ iv: ta.Optional[InterpVersion]
7782
+ if self._options.inspect:
7783
+ try:
7784
+ iv = check.not_none(await self._inspector.inspect(ep)).iv
7785
+ except Exception as e: # noqa
7786
+ return None
7787
+ else:
7788
+ iv = self.guess_version(vn)
7789
+ if iv is None:
7790
+ return None
7791
+ return PyenvInterpProvider.Installed(
7792
+ name=vn,
7793
+ exe=ep,
7794
+ version=iv,
7795
+ )
7796
+
7797
+ async def installed(self) -> ta.Sequence[Installed]:
7798
+ ret: ta.List[PyenvInterpProvider.Installed] = []
7799
+ for vn, ep in await self._pyenv.version_exes():
7800
+ if (i := await self._make_installed(vn, ep)) is None:
7801
+ if self._log is not None:
7802
+ self._log.debug('Invalid pyenv version: %s', vn)
7803
+ continue
7804
+ ret.append(i)
7805
+ return ret
7806
+
7807
+ #
7808
+
7809
+ async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7810
+ return [i.version for i in await self.installed()]
7811
+
7812
+ async def get_installed_version(self, version: InterpVersion) -> Interp:
7813
+ for i in await self.installed():
7814
+ if i.version == version:
7815
+ return Interp(
7816
+ exe=i.exe,
7817
+ version=i.version,
7818
+ )
7819
+ raise KeyError(version)
7820
+
7821
+ #
7822
+
7823
+ async def _get_installable_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7824
+ lst = []
7825
+
7826
+ for vs in await self._pyenv.installable_versions():
7827
+ if (iv := self.guess_version(vs)) is None:
7828
+ continue
7829
+ if iv.opts.debug:
7830
+ raise Exception('Pyenv installable versions not expected to have debug suffix')
7831
+ for d in [False, True]:
7832
+ lst.append(dc.replace(iv, opts=dc.replace(iv.opts, debug=d)))
7833
+
7834
+ return lst
7835
+
7836
+ async def get_installable_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
7837
+ lst = await self._get_installable_versions(spec)
7838
+
7839
+ if self._options.try_update and not any(v in spec for v in lst):
7840
+ if self._pyenv.update():
7841
+ lst = await self._get_installable_versions(spec)
7842
+
7843
+ return lst
7844
+
7845
+ async def install_version(self, version: InterpVersion) -> Interp:
7846
+ inst_version = str(version.version)
7847
+ inst_opts = version.opts
7848
+ if inst_opts.threaded:
7849
+ inst_version += 't'
7850
+ inst_opts = dc.replace(inst_opts, threaded=False)
7851
+
7852
+ installer = PyenvVersionInstaller(
7853
+ inst_version,
7854
+ interp_opts=inst_opts,
7855
+ pyenv=self._pyenv,
7856
+ )
7857
+
7858
+ exe = await installer.install()
7859
+ return Interp(exe, version)
7860
+
7861
+
7849
7862
  ########################################
7850
7863
  # ../../interp/pyenv/inject.py
7851
7864
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev181
3
+ Version: 0.0.0.dev183
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ 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: omlish==0.0.0.dev181
15
+ Requires-Dist: omlish==0.0.0.dev183
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -84,7 +84,7 @@ omdev/interp/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
84
84
  omdev/interp/__main__.py,sha256=GMCqeGYltgt5dlJzHxY9gqisa8cRkrPfmZYuZnjg4WI,162
85
85
  omdev/interp/cli.py,sha256=_oaG5fN-UE2sQUNeCi4b9m5UF_lPEJ2S9nO_no1cvXI,2394
86
86
  omdev/interp/default.py,sha256=FTFQVvA8Lipe8k5eFbf-mLIbrcmfuEXka4ifPyQP8CA,285
87
- omdev/interp/inject.py,sha256=BE3VjFxU0gJ7KwSdKaNIlgXD7EAr-nidlJqSLwhGeNk,1479
87
+ omdev/interp/inject.py,sha256=fJyYvGqYVmXweKDFN-B_y8pemIYhWS9Y9qM3IApBz0M,1482
88
88
  omdev/interp/inspect.py,sha256=UnRA1w-tm5xrFR0ovlLHo_smDqmzoF7TuZBQbhYF_CA,2966
89
89
  omdev/interp/resolvers.py,sha256=rIWcMh7CL3it5z-pI_69PtyA9JGFzdx3CnPhgo4ecZU,2579
90
90
  omdev/interp/types.py,sha256=Pr0wrVpNasoCw-ThEvKC5LG30Civ7YJ4EONwrwBLpy0,2516
@@ -96,8 +96,10 @@ omdev/interp/providers/running.py,sha256=9MCJAcHotI0EmNIxPwt7b3W715Jp2Gfw1qtMhCE
96
96
  omdev/interp/providers/standalone.py,sha256=jJnncea4PIuaW-KwD2YiWDn8zTmwmsJNUKpF-qC2bwo,7725
97
97
  omdev/interp/providers/system.py,sha256=KQ4Y2o8d5nrmsCtsQO_vCbJJCrhVFVjaS0k2lkc3kVw,3977
98
98
  omdev/interp/pyenv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- omdev/interp/pyenv/inject.py,sha256=9g0imuqp6tku5YgUn2DM4FgbjjqCZSPO6JzibeL6fRs,602
100
- omdev/interp/pyenv/pyenv.py,sha256=Y5zw42nmdak975EbWw7YFLu7j-S4G2s9UVj_pJQSykU,14451
99
+ omdev/interp/pyenv/inject.py,sha256=JZCSvkLYj5x_2LWScgYVOpmPrwrYQ8YVv7OeHbcH53s,605
100
+ omdev/interp/pyenv/install.py,sha256=LX5jDzQQR1X0C9OKi4masKWoMU3ms8XCfQPXS2kTZKI,7818
101
+ omdev/interp/pyenv/provider.py,sha256=RvPWnT5Fpj85gYxfw9o8E4kNtgvM0AcXk8_7FUk7rTs,4445
102
+ omdev/interp/pyenv/pyenv.py,sha256=1Gt77di-lxeje9SnNYCWhYRo7CHdhTWZD0whvPanNP8,2643
101
103
  omdev/interp/uv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
104
  omdev/interp/uv/inject.py,sha256=3nHYu8qQMbV5iXdp-ItzNtfYE0zkIxrzmt7QdV7WiXU,314
103
105
  omdev/interp/uv/uv.py,sha256=oP4V6WJ0aYLIzFwkIvKMPLD_5HxppTuhd8fvtz6UoXs,671
@@ -148,8 +150,8 @@ omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,
148
150
  omdev/scripts/execrss.py,sha256=mR0G0wERBYtQmVIn63lCIIFb5zkCM6X_XOENDFYDBKc,651
149
151
  omdev/scripts/exectime.py,sha256=sFb376GflU6s9gNX-2-we8hgH6w5MuQNS9g6i4SqJIo,610
150
152
  omdev/scripts/importtrace.py,sha256=oa7CtcWJVMNDbyIEiRHej6ICfABfErMeo4_haIqe18Q,14041
151
- omdev/scripts/interp.py,sha256=Kkdtfze1jHzhmF5_4xLbfEYP0ZtlObgN1UPE6qHBbOE,140779
152
- omdev/scripts/pyproject.py,sha256=Wt5I2_5WoJ7y2jyZSKKB4qXS_XVEJ2lfSbxEPnoMQvo,242107
153
+ omdev/scripts/interp.py,sha256=mkHsByunXDVHLYOZgc17UDXtHPJl8dFRbJmwUptmuOg,140900
154
+ omdev/scripts/pyproject.py,sha256=ox4UoF2Uafvv_T6qwxe4tdifmiEp4g1pHKMAcnLDokE,242509
153
155
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
154
156
  omdev/scripts/tmpexec.py,sha256=WTYcf56Tj2qjYV14AWmV8SfT0u6Y8eIU6cKgQRvEK3c,1442
155
157
  omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
@@ -178,9 +180,9 @@ omdev/tools/json/rendering.py,sha256=jNShMfCpFR9-Kcn6cUFuOChXHjg71diuTC4x7Ofmz-o
178
180
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
181
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
180
182
  omdev/tools/pawk/pawk.py,sha256=Eckymn22GfychCQcQi96BFqRo_LmiJ-EPhC8TTUJdB4,11446
181
- omdev-0.0.0.dev181.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
182
- omdev-0.0.0.dev181.dist-info/METADATA,sha256=iifiP3giFinE3LOI0F5hKPbU65E2ZAboHUvOhsTBH9M,1760
183
- omdev-0.0.0.dev181.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
184
- omdev-0.0.0.dev181.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
185
- omdev-0.0.0.dev181.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
186
- omdev-0.0.0.dev181.dist-info/RECORD,,
183
+ omdev-0.0.0.dev183.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
184
+ omdev-0.0.0.dev183.dist-info/METADATA,sha256=Y1IcrclCU5MupXvWa5IX2q67HQgP-rmC3eU_LrMA-kQ,1760
185
+ omdev-0.0.0.dev183.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
186
+ omdev-0.0.0.dev183.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
187
+ omdev-0.0.0.dev183.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
188
+ omdev-0.0.0.dev183.dist-info/RECORD,,