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.
- omdev/interp/inject.py +1 -1
- omdev/interp/pyenv/inject.py +1 -1
- omdev/interp/pyenv/install.py +251 -0
- omdev/interp/pyenv/provider.py +144 -0
- omdev/interp/pyenv/pyenv.py +0 -383
- omdev/scripts/interp.py +104 -102
- omdev/scripts/pyproject.py +225 -212
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/METADATA +2 -2
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/RECORD +13 -11
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/LICENSE +0 -0
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/WHEEL +0 -0
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/entry_points.txt +0 -0
- {omdev-0.0.0.dev181.dist-info → omdev-0.0.0.dev183.dist-info}/top_level.txt +0 -0
omdev/scripts/pyproject.py
CHANGED
@@ -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/
|
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.
|
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.
|
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=
|
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=
|
100
|
-
omdev/interp/pyenv/
|
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=
|
152
|
-
omdev/scripts/pyproject.py,sha256=
|
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.
|
182
|
-
omdev-0.0.0.
|
183
|
-
omdev-0.0.0.
|
184
|
-
omdev-0.0.0.
|
185
|
-
omdev-0.0.0.
|
186
|
-
omdev-0.0.0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|