omdev 0.0.0.dev181__py3-none-any.whl → 0.0.0.dev183__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|