omdev 0.0.0.dev38__tar.gz → 0.0.0.dev40__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 (125) hide show
  1. {omdev-0.0.0.dev38/omdev.egg-info → omdev-0.0.0.dev40}/PKG-INFO +2 -2
  2. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/README.rst +8 -0
  3. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/.manifests.json +1 -1
  4. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cli/install.py +12 -13
  5. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cli/main.py +53 -10
  6. omdev-0.0.0.dev40/omdev/cli/types.py +17 -0
  7. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/piptools.py +1 -0
  8. omdev-0.0.0.dev40/omdev/tools/proftools.py +4 -0
  9. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40/omdev.egg-info}/PKG-INFO +2 -2
  10. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev.egg-info/SOURCES.txt +1 -0
  11. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev.egg-info/requires.txt +1 -1
  12. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/pyproject.toml +2 -2
  13. omdev-0.0.0.dev38/omdev/cli/types.py +0 -7
  14. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/LICENSE +0 -0
  15. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/MANIFEST.in +0 -0
  16. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/__about__.py +0 -0
  17. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/__init__.py +0 -0
  18. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/amalg/__init__.py +0 -0
  19. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/amalg/__main__.py +0 -0
  20. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/amalg/amalg.py +0 -0
  21. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/bracepy.py +0 -0
  22. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/__init__.py +0 -0
  23. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/__init__.py +0 -0
  24. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/cache.py +0 -0
  25. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/contexts.py +0 -0
  26. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/currents.py +0 -0
  27. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/fns.py +0 -0
  28. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/resolvers.py +0 -0
  29. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/storage.py +0 -0
  30. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/compute/types.py +0 -0
  31. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/__init__.py +0 -0
  32. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/actions.py +0 -0
  33. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/cache.py +0 -0
  34. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/consts.py +0 -0
  35. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/defaults.py +0 -0
  36. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/manifests.py +0 -0
  37. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cache/data/specs.py +0 -0
  38. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/__init__.py +0 -0
  39. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_boilerplate.cc +0 -0
  40. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/LICENSE +0 -0
  41. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/__init__.py +0 -0
  42. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/build_ext.py +0 -0
  43. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
  44. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
  45. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/compilers/options.py +0 -0
  46. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
  47. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/dir_util.py +0 -0
  48. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/errors.py +0 -0
  49. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/extension.py +0 -0
  50. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/file_util.py +0 -0
  51. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/modified.py +0 -0
  52. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/spawn.py +0 -0
  53. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/sysconfig.py +0 -0
  54. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/util.py +0 -0
  55. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/_distutils/version.py +0 -0
  56. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/build.py +0 -0
  57. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/cmake.py +0 -0
  58. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/importhook.py +0 -0
  59. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/magic.py +0 -0
  60. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cexts/scan.py +0 -0
  61. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/classdot.py +0 -0
  62. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cli/__init__.py +0 -0
  63. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cli/__main__.py +0 -0
  64. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/cmake.py +0 -0
  65. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/findimports.py +0 -0
  66. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/findmagic.py +0 -0
  67. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/git.py +0 -0
  68. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/__init__.py +0 -0
  69. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/__main__.py +0 -0
  70. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/cli.py +0 -0
  71. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/inspect.py +0 -0
  72. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/providers.py +0 -0
  73. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/pyenv.py +0 -0
  74. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/resolvers.py +0 -0
  75. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/standalone.py +0 -0
  76. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/system.py +0 -0
  77. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/interp/types.py +0 -0
  78. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/manifests/__init__.py +0 -0
  79. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/manifests/build.py +0 -0
  80. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/manifests/load.py +0 -0
  81. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/manifests/types.py +0 -0
  82. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/mypy/__init__.py +0 -0
  83. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/mypy/debug.py +0 -0
  84. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/packaging/__init__.py +0 -0
  85. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/packaging/names.py +0 -0
  86. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/packaging/requires.py +0 -0
  87. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/packaging/specifiers.py +0 -0
  88. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/packaging/versions.py +0 -0
  89. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/__init__.py +0 -0
  90. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/__main__.py +0 -0
  91. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/base.py +0 -0
  92. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/git.py +0 -0
  93. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/lite.py +0 -0
  94. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/precheck.py +0 -0
  95. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/precheck/scripts.py +0 -0
  96. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/__init__.py +0 -0
  97. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/__main__.py +0 -0
  98. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/cexts.py +0 -0
  99. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/cli.py +0 -0
  100. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/configs.py +0 -0
  101. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/pkg.py +0 -0
  102. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/pyproject/reqs.py +0 -0
  103. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/revisions.py +0 -0
  104. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/scripts/__init__.py +0 -0
  105. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/scripts/bumpversion.py +0 -0
  106. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/scripts/execrss.py +0 -0
  107. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/scripts/interp.py +0 -0
  108. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/scripts/pyproject.py +0 -0
  109. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/secrets.py +0 -0
  110. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tokens.py +0 -0
  111. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/toml/__init__.py +0 -0
  112. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/toml/parser.py +0 -0
  113. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/toml/writer.py +0 -0
  114. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/__init__.py +0 -0
  115. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/dockertools.py +0 -0
  116. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/gittools.py +0 -0
  117. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/importscan.py +0 -0
  118. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/importtrace.py +0 -0
  119. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/rst.py +0 -0
  120. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/tools/sqlrepl.py +0 -0
  121. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev/wheelfile.py +0 -0
  122. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev.egg-info/dependency_links.txt +0 -0
  123. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev.egg-info/entry_points.txt +0 -0
  124. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/omdev.egg-info/top_level.txt +0 -0
  125. {omdev-0.0.0.dev38 → omdev-0.0.0.dev40}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev38
3
+ Version: 0.0.0.dev40
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.dev38
15
+ Requires-Dist: omlish==0.0.0.dev40
16
16
  Provides-Extra: all
17
17
  Requires-Dist: pycparser~=2.22; extra == "all"
18
18
  Requires-Dist: cffi~=1.17; extra == "all"
@@ -11,3 +11,11 @@ Core packages installable from git via:
11
11
 
12
12
  Core packages have no required dependencies, but numerous optional ones - see their respective ``pyproject.toml`` files
13
13
  for details.
14
+
15
+ The cli is installable through uvx or pipx via:
16
+
17
+ .. code-block::
18
+
19
+ curl -LsSf https://raw.githubusercontent.com/wrmsr/omlish/master/omdev/cli/install.py | python3 -
20
+
21
+ Additional deps to be injected may be appended to the command.
@@ -99,7 +99,7 @@
99
99
  "module": ".tools.piptools",
100
100
  "attr": "_CLI_MODULE",
101
101
  "file": "omdev/tools/piptools.py",
102
- "line": 87,
102
+ "line": 88,
103
103
  "value": {
104
104
  "$.cli.types.CliModule": {
105
105
  "cmd_name": "pip",
@@ -46,7 +46,7 @@ class InstallMgr(abc.ABC):
46
46
  raise NotImplementedError
47
47
 
48
48
 
49
- class UvInstallMgr(InstallMgr):
49
+ class UvxInstallMgr(InstallMgr):
50
50
  def is_available(self) -> bool:
51
51
  return bool(shutil.which('uv'))
52
52
 
@@ -110,7 +110,7 @@ class PipxInstallMgr(InstallMgr):
110
110
 
111
111
 
112
112
  INSTALL_MGRS = {
113
- 'uv': UvInstallMgr(),
113
+ 'uvx': UvxInstallMgr(),
114
114
  'pipx': PipxInstallMgr(),
115
115
  }
116
116
 
@@ -132,18 +132,17 @@ def _main() -> None:
132
132
  if not (py := args.py):
133
133
  raise ValueError(f'Must specify py')
134
134
 
135
- if not (mgr := args.mgr):
136
- if shutil.which('uv'):
137
- mgr = 'uv'
138
- elif shutil.which('pipx'):
139
- mgr = 'pipx'
135
+ if mgr := args.mgr:
136
+ if (im := INSTALL_MGRS.get(mgr)) is None:
137
+ raise ValueError(f'Unsupported mgr: {mgr}')
138
+ if not im.is_available():
139
+ raise ValueError(f'Unavailable mgr: {mgr}')
140
+ else:
141
+ for im in INSTALL_MGRS.values():
142
+ if im.is_available():
143
+ break
140
144
  else:
141
- raise RuntimeError("Can't find package manager")
142
-
143
- if (im := INSTALL_MGRS.get(mgr)) is None:
144
- raise ValueError(f'Unsupported mgr: {mgr}')
145
- if not im.is_available():
146
- raise ValueError(f'Unavailable mgr: {mgr}')
145
+ raise RuntimeError("Can't find install manager")
147
146
 
148
147
  for m in INSTALL_MGRS.values():
149
148
  if m.is_available():
@@ -9,14 +9,39 @@ import os
9
9
  import runpy
10
10
  import sys
11
11
 
12
+ from omlish import __about__
12
13
  from omlish import check
13
14
 
14
15
  from ..manifests.load import ManifestLoader
16
+ from .types import CliCmd
17
+ from .types import CliFunc
15
18
  from .types import CliModule
16
19
 
17
20
 
21
+ ##
22
+
23
+
24
+ def _print_version() -> None:
25
+ print(__about__.__version__)
26
+
27
+
28
+ def _print_revision() -> None:
29
+ print(__about__.__revision__)
30
+
31
+
32
+ _CLI_FUNCS = [
33
+ CliFunc('version', _print_version),
34
+ CliFunc('revision', _print_revision),
35
+ ]
36
+
37
+
38
+ ##
39
+
40
+
18
41
  def _main() -> None:
19
- cms: list[CliModule] = []
42
+ ccs: list[CliCmd] = []
43
+
44
+ #
20
45
 
21
46
  ldr = ManifestLoader.from_entry_point(globals())
22
47
 
@@ -28,13 +53,21 @@ def _main() -> None:
28
53
  pkgs.append(n)
29
54
 
30
55
  for m in ldr.load(*pkgs, only=[CliModule]):
31
- cms.append(check.isinstance(m.value, CliModule))
56
+ ccs.append(check.isinstance(m.value, CliModule))
57
+
58
+ #
59
+
60
+ ccs.extend(_CLI_FUNCS)
61
+
62
+ #
63
+
64
+ dct: dict[str, CliCmd] = {}
65
+ for cc in ccs:
66
+ if cc.cmd_name in dct:
67
+ raise NameError(cc)
68
+ dct[cc.cmd_name] = cc
32
69
 
33
- dct: dict[str, CliModule] = {}
34
- for cm in cms:
35
- if cm.cmd_name in dct:
36
- raise NameError(cm)
37
- dct[cm.cmd_name] = cm
70
+ #
38
71
 
39
72
  parser = argparse.ArgumentParser()
40
73
  parser.add_argument('cmd', nargs='?', choices=dct.keys())
@@ -45,9 +78,19 @@ def _main() -> None:
45
78
  parser.print_help()
46
79
  return
47
80
 
48
- cm = dct[args.cmd]
49
- sys.argv = [cm.cmd_name, *(args.args or ())]
50
- runpy._run_module_as_main(cm.mod_name) # type: ignore # noqa
81
+ #
82
+
83
+ cc = dct[args.cmd]
84
+
85
+ if isinstance(cc, CliModule):
86
+ sys.argv = [cc.cmd_name, *(args.args or ())]
87
+ runpy._run_module_as_main(cc.mod_name) # type: ignore # noqa
88
+
89
+ elif isinstance(cc, CliFunc):
90
+ cc.fn(*(args.args or ()))
91
+
92
+ else:
93
+ raise TypeError(cc)
51
94
 
52
95
 
53
96
  if __name__ == '__main__':
@@ -0,0 +1,17 @@
1
+ import dataclasses as dc
2
+ import typing as ta
3
+
4
+
5
+ @dc.dataclass(frozen=True)
6
+ class CliCmd:
7
+ cmd_name: str
8
+
9
+
10
+ @dc.dataclass(frozen=True)
11
+ class CliModule(CliCmd):
12
+ mod_name: str
13
+
14
+
15
+ @dc.dataclass(frozen=True)
16
+ class CliFunc(CliCmd):
17
+ fn: ta.Callable
@@ -56,6 +56,7 @@ class Cli(ap.Cli):
56
56
  ap.arg('path', nargs='*'),
57
57
  )
58
58
  def list_root_dists(self) -> None:
59
+ # FIXME: track req extras - tuple[str, str] with ('pkg', '') as 'bare'?
59
60
  paths = self.args.path or sys.path
60
61
 
61
62
  dists: set[str] = set()
@@ -0,0 +1,4 @@
1
+ """
2
+ TODO:
3
+ - rm prof.pstats.pdf ; ./python -m gprof2dot -f pstats prof.pstats | dot -Tpdf -o prof.pstats.pdf && open prof.pstats.pdf
4
+ """ # noqa
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev38
3
+ Version: 0.0.0.dev40
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.dev38
15
+ Requires-Dist: omlish==0.0.0.dev40
16
16
  Provides-Extra: all
17
17
  Requires-Dist: pycparser~=2.22; extra == "all"
18
18
  Requires-Dist: cffi~=1.17; extra == "all"
@@ -117,5 +117,6 @@ omdev/tools/gittools.py
117
117
  omdev/tools/importscan.py
118
118
  omdev/tools/importtrace.py
119
119
  omdev/tools/piptools.py
120
+ omdev/tools/proftools.py
120
121
  omdev/tools/rst.py
121
122
  omdev/tools/sqlrepl.py
@@ -1,4 +1,4 @@
1
- omlish==0.0.0.dev38
1
+ omlish==0.0.0.dev40
2
2
 
3
3
  [all]
4
4
  pycparser~=2.22
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '~=3.12'
15
- version = '0.0.0.dev38'
15
+ version = '0.0.0.dev40'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
@@ -22,7 +22,7 @@ classifiers = [
22
22
  ]
23
23
  description = 'omdev'
24
24
  dependencies = [
25
- 'omlish == 0.0.0.dev38',
25
+ 'omlish == 0.0.0.dev40',
26
26
  ]
27
27
 
28
28
  [project.optional-dependencies]
@@ -1,7 +0,0 @@
1
- import dataclasses as dc
2
-
3
-
4
- @dc.dataclass(frozen=True)
5
- class CliModule:
6
- cmd_name: str
7
- mod_name: str
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes