omdev 0.0.0.dev63__tar.gz → 0.0.0.dev65__tar.gz
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-0.0.0.dev63/omdev.egg-info → omdev-0.0.0.dev65}/PKG-INFO +2 -2
- omdev-0.0.0.dev65/omdev/cli/managers.py +54 -0
- omdev-0.0.0.dev65/omdev/cli/pathhack.py +43 -0
- omdev-0.0.0.dev65/omdev/pycharm/__init__.py +0 -0
- omdev-0.0.0.dev65/omdev/pycharm/runhack.py +1357 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev.egg-info/SOURCES.txt +3 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/pyproject.toml +2 -2
- omdev-0.0.0.dev63/omdev/cli/managers.py +0 -95
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/LICENSE +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/README.rst +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/.manifests.json +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/amalg/amalg.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/antlr/_antlr/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/findmagic.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/git.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/providers.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/pyenv.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/standalone.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/system.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/manifests/load.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/manifests/types.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/precheck.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tokens.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/toml/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/toml/parser.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/toml/writer.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/dockertools.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/gittools.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/nbtools.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/piptools.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/proftools.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/rst.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev63 → omdev-0.0.0.dev65}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev65
|
|
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.dev65
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
18
18
|
Requires-Dist: cffi~=1.17; extra == "all"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import enum
|
|
2
|
+
import os.path
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
##
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _normalize_pkg_name(s: str) -> str:
|
|
10
|
+
return s.lower().replace('_', '-')
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
##
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ManagerType(enum.Enum):
|
|
17
|
+
UVX = 'uvx'
|
|
18
|
+
PIPX = 'pipx'
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def detect_install_manager(cli_pkg: str) -> ManagerType | None:
|
|
22
|
+
if os.path.isfile(fp := os.path.join(sys.prefix, 'uv-receipt.toml')):
|
|
23
|
+
import tomllib
|
|
24
|
+
|
|
25
|
+
with open(fp) as f:
|
|
26
|
+
dct = tomllib.loads(f.read())
|
|
27
|
+
|
|
28
|
+
reqs = dct.get('tool', {}).get('requirements')
|
|
29
|
+
main_pkg = _normalize_pkg_name(reqs[0].get('name', ''))
|
|
30
|
+
if reqs and main_pkg == cli_pkg:
|
|
31
|
+
return ManagerType.UVX
|
|
32
|
+
|
|
33
|
+
if os.path.isfile(fp := os.path.join(sys.prefix, 'pipx_metadata.json')):
|
|
34
|
+
import json
|
|
35
|
+
|
|
36
|
+
with open(fp) as f:
|
|
37
|
+
dct = json.loads(f.read())
|
|
38
|
+
|
|
39
|
+
main_pkg = _normalize_pkg_name(dct.get('main_package', {}).get('package_or_url', ''))
|
|
40
|
+
if main_pkg == cli_pkg:
|
|
41
|
+
return ManagerType.PIPX
|
|
42
|
+
|
|
43
|
+
return None
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
##
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def setup_install_manager(cli_pkg: str) -> None:
|
|
50
|
+
if detect_install_manager(cli_pkg) is None:
|
|
51
|
+
return
|
|
52
|
+
|
|
53
|
+
from .pathhack import _install_pth_file
|
|
54
|
+
_install_pth_file()
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Python is insistent on prepending sys.path with an empty string (translating to the current working directory), which
|
|
3
|
+
leads to problems when using the cli in directories containing python packages (such as within this very source tree).
|
|
4
|
+
This can't be done in cli main as the code frequently spawns other sys.executable processes which wouldn't know to do
|
|
5
|
+
that, so a .pth file hack is used. Cleaning sys.path solely there is also insufficient as that code runs before thej
|
|
6
|
+
problematic empty string is added, so a sys.meta_path hook is prepended.
|
|
7
|
+
|
|
8
|
+
See:
|
|
9
|
+
https://github.com/python/cpython/blob/da1e5526aee674bb33c17a498aa3781587b9850c/Python/sysmodule.c#L3939
|
|
10
|
+
"""
|
|
11
|
+
import os.path
|
|
12
|
+
import site
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _remove_empty_from_sys_path() -> None:
|
|
17
|
+
while '' in sys.path:
|
|
18
|
+
sys.path.remove('')
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class _PathHackMetaFinder:
|
|
22
|
+
def find_spec(self, fullname, path, target=None):
|
|
23
|
+
_remove_empty_from_sys_path()
|
|
24
|
+
return None # noqa
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _activate_path_hack() -> None:
|
|
28
|
+
if not any(isinstance(mp, _PathHackMetaFinder) for mp in sys.meta_path):
|
|
29
|
+
sys.meta_path.insert(0, _PathHackMetaFinder())
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
_PTH_FILE_NAME = f'omlish-{"-".join(__package__.split(".")[1:])}-pathhack.pth'
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _install_pth_file() -> None:
|
|
36
|
+
sp = site.getsitepackages()[0]
|
|
37
|
+
if os.path.isfile(fp := os.path.join(sp, _PTH_FILE_NAME)):
|
|
38
|
+
return
|
|
39
|
+
|
|
40
|
+
with open(fp, 'w') as f:
|
|
41
|
+
f.write(f'import {__name__}; {__name__}._activate_path_hack()')
|
|
42
|
+
|
|
43
|
+
_activate_path_hack()
|
|
File without changes
|