omdev 0.0.0.dev62__tar.gz → 0.0.0.dev64__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.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

Files changed (137) hide show
  1. {omdev-0.0.0.dev62/omdev.egg-info → omdev-0.0.0.dev64}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/.manifests.json +1 -1
  3. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/main.py +25 -13
  4. omdev-0.0.0.dev64/omdev/cli/managers.py +54 -0
  5. omdev-0.0.0.dev64/omdev/cli/pathhack.py +43 -0
  6. omdev-0.0.0.dev64/omdev/pycharm/__init__.py +0 -0
  7. omdev-0.0.0.dev64/omdev/pycharm/runhack.py +1338 -0
  8. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/pyproject.py +21 -20
  9. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/dockertools.py +54 -1
  10. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64/omdev.egg-info}/PKG-INFO +2 -2
  11. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev.egg-info/SOURCES.txt +3 -0
  12. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev.egg-info/requires.txt +1 -1
  13. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/pyproject.toml +2 -2
  14. omdev-0.0.0.dev62/omdev/cli/managers.py +0 -95
  15. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/LICENSE +0 -0
  16. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/MANIFEST.in +0 -0
  17. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/README.rst +0 -0
  18. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/__about__.py +0 -0
  19. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/__init__.py +0 -0
  20. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/amalg/__init__.py +0 -0
  21. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/amalg/__main__.py +0 -0
  22. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/amalg/amalg.py +0 -0
  23. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/antlr/__init__.py +0 -0
  24. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/antlr/_antlr/__init__.py +0 -0
  25. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/antlr/consts.py +0 -0
  26. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/antlr/gen.py +0 -0
  27. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/bracepy.py +0 -0
  28. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/__init__.py +0 -0
  29. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/__init__.py +0 -0
  30. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/cache.py +0 -0
  31. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/contexts.py +0 -0
  32. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/currents.py +0 -0
  33. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/fns.py +0 -0
  34. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/resolvers.py +0 -0
  35. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/storage.py +0 -0
  36. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/compute/types.py +0 -0
  37. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/__init__.py +0 -0
  38. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/actions.py +0 -0
  39. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/cache.py +0 -0
  40. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/consts.py +0 -0
  41. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/defaults.py +0 -0
  42. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/manifests.py +0 -0
  43. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cache/data/specs.py +0 -0
  44. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/__init__.py +0 -0
  45. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_boilerplate.cc +0 -0
  46. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/LICENSE +0 -0
  47. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/__init__.py +0 -0
  48. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/build_ext.py +0 -0
  49. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  50. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  51. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/compilers/options.py +0 -0
  52. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  53. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/dir_util.py +0 -0
  54. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/errors.py +0 -0
  55. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/extension.py +0 -0
  56. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/file_util.py +0 -0
  57. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/modified.py +0 -0
  58. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/spawn.py +0 -0
  59. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/sysconfig.py +0 -0
  60. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/util.py +0 -0
  61. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/_distutils/version.py +0 -0
  62. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/build.py +0 -0
  63. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/cmake.py +0 -0
  64. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/importhook.py +0 -0
  65. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/magic.py +0 -0
  66. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cexts/scan.py +0 -0
  67. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/classdot.py +0 -0
  68. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/__init__.py +0 -0
  69. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/__main__.py +0 -0
  70. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/clicli.py +0 -0
  71. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/install.py +0 -0
  72. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cli/types.py +0 -0
  73. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/cmake.py +0 -0
  74. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/findimports.py +0 -0
  75. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/findmagic.py +0 -0
  76. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/git.py +0 -0
  77. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/__init__.py +0 -0
  78. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/__main__.py +0 -0
  79. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/cli.py +0 -0
  80. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/inspect.py +0 -0
  81. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/providers.py +0 -0
  82. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/pyenv.py +0 -0
  83. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/resolvers.py +0 -0
  84. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/standalone.py +0 -0
  85. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/system.py +0 -0
  86. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/interp/types.py +0 -0
  87. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/manifests/__init__.py +0 -0
  88. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/manifests/build.py +0 -0
  89. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/manifests/load.py +0 -0
  90. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/manifests/types.py +0 -0
  91. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/mypy/__init__.py +0 -0
  92. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/mypy/debug.py +0 -0
  93. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/packaging/__init__.py +0 -0
  94. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/packaging/names.py +0 -0
  95. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/packaging/requires.py +0 -0
  96. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/packaging/specifiers.py +0 -0
  97. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/packaging/versions.py +0 -0
  98. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/__init__.py +0 -0
  99. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/__main__.py +0 -0
  100. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/base.py +0 -0
  101. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/git.py +0 -0
  102. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/lite.py +0 -0
  103. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/precheck.py +0 -0
  104. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/precheck/scripts.py +0 -0
  105. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/__init__.py +0 -0
  106. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/__main__.py +0 -0
  107. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/cexts.py +0 -0
  108. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/cli.py +0 -0
  109. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/configs.py +0 -0
  110. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/pkg.py +0 -0
  111. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/pyproject/reqs.py +0 -0
  112. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/revisions.py +0 -0
  113. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/__init__.py +0 -0
  114. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/bumpversion.py +0 -0
  115. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/execrss.py +0 -0
  116. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/exectime.py +0 -0
  117. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/importtrace.py +0 -0
  118. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/scripts/interp.py +0 -0
  119. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/secrets.py +0 -0
  120. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tokens.py +0 -0
  121. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/toml/__init__.py +0 -0
  122. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/toml/parser.py +0 -0
  123. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/toml/writer.py +0 -0
  124. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/__init__.py +0 -0
  125. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/gittools.py +0 -0
  126. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/importscan.py +0 -0
  127. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/mkrelimp.py +0 -0
  128. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/nbtools.py +0 -0
  129. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/piptools.py +0 -0
  130. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/proftools.py +0 -0
  131. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/rst.py +0 -0
  132. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/tools/sqlrepl.py +0 -0
  133. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev/wheelfile.py +0 -0
  134. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev.egg-info/dependency_links.txt +0 -0
  135. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev.egg-info/entry_points.txt +0 -0
  136. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/omdev.egg-info/top_level.txt +0 -0
  137. {omdev-0.0.0.dev62 → omdev-0.0.0.dev64}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev62
3
+ Version: 0.0.0.dev64
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.dev62
15
+ Requires-Dist: omlish==0.0.0.dev64
16
16
  Provides-Extra: all
17
17
  Requires-Dist: pycparser~=2.22; extra == "all"
18
18
  Requires-Dist: cffi~=1.17; extra == "all"
@@ -123,7 +123,7 @@
123
123
  "module": ".tools.dockertools",
124
124
  "attr": "_CLI_MODULE",
125
125
  "file": "omdev/tools/dockertools.py",
126
- "line": 183,
126
+ "line": 236,
127
127
  "value": {
128
128
  "$.cli.types.CliModule": {
129
129
  "cmd_name": "docker",
@@ -41,6 +41,7 @@ _CLI_FUNCS: ta.Sequence[CliFunc] = [
41
41
  def _build_arg_parser() -> argparse.ArgumentParser:
42
42
  parser = argparse.ArgumentParser()
43
43
  parser.add_argument('--cli-pkg-root', action='append')
44
+ parser.add_argument('--cli-debug', action='store_true')
44
45
  parser.add_argument('cmd', nargs='?')
45
46
  parser.add_argument('args', nargs=argparse.REMAINDER)
46
47
  return parser
@@ -132,23 +133,34 @@ def _select_cmd(args: ta.Any, cmds: ta.Mapping[str, CliCmd]) -> CliCmd | int:
132
133
  def _main() -> ta.Any:
133
134
  parser = _build_arg_parser()
134
135
  args = parser.parse_args()
135
- cmds = _build_cmd_dct(args)
136
- sel = _select_cmd(args, cmds)
137
136
 
138
- match sel:
139
- case int():
140
- return sel
137
+ def inner():
138
+ cmds = _build_cmd_dct(args)
139
+ sel = _select_cmd(args, cmds)
141
140
 
142
- case CliModule() as cm:
143
- sys.argv = [args.cmd, *(args.args or ())]
144
- runpy._run_module_as_main(cm.mod_name) # type: ignore # noqa
145
- return 0
141
+ match sel:
142
+ case int():
143
+ return sel
146
144
 
147
- case CliFunc() as cf:
148
- return cf.fn(*(args.args or ()))
145
+ case CliModule() as cm:
146
+ sys.argv = [args.cmd, *(args.args or ())]
147
+ runpy._run_module_as_main(cm.mod_name) # type: ignore # noqa
148
+ return 0
149
149
 
150
- case _:
151
- raise TypeError(sel)
150
+ case CliFunc() as cf:
151
+ return cf.fn(*(args.args or ()))
152
+
153
+ case _:
154
+ raise TypeError(sel)
155
+
156
+ if args.cli_debug:
157
+ from omlish.diag.debug import debugging_on_exception
158
+
159
+ with debugging_on_exception():
160
+ return inner()
161
+
162
+ else:
163
+ return inner()
152
164
 
153
165
 
154
166
  if __name__ == '__main__':
@@ -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