omdev 0.0.0.dev40__tar.gz → 0.0.0.dev41__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.
- {omdev-0.0.0.dev40/omdev.egg-info → omdev-0.0.0.dev41}/PKG-INFO +2 -2
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/.manifests.json +48 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cli/main.py +3 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/git.py +9 -5
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/manifests/load.py +30 -14
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/cli.py +28 -15
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/pkg.py +38 -41
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/scripts/execrss.py +7 -0
- omdev-0.0.0.dev41/omdev/scripts/exectime.py +24 -0
- {omdev-0.0.0.dev40/omdev/tools → omdev-0.0.0.dev41/omdev/scripts}/importtrace.py +7 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/scripts/pyproject.py +74 -61
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/importscan.py +6 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev.egg-info/SOURCES.txt +2 -1
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/pyproject.toml +2 -2
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/LICENSE +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/README.rst +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/amalg/amalg.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/findmagic.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/providers.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/pyenv.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/standalone.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/system.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/manifests/types.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/precheck.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tokens.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/toml/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/toml/parser.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/toml/writer.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/dockertools.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/gittools.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/piptools.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/proftools.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/rst.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev40 → omdev-0.0.0.dev41}/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.dev41
|
|
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.dev41
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
18
18
|
Requires-Dist: cffi~=1.17; extra == "all"
|
|
@@ -71,6 +71,42 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
"module": ".scripts.execrss",
|
|
76
|
+
"attr": "_CLI_MODULE",
|
|
77
|
+
"file": "omdev/scripts/execrss.py",
|
|
78
|
+
"line": 11,
|
|
79
|
+
"value": {
|
|
80
|
+
"$.cli.types.CliModule": {
|
|
81
|
+
"cmd_name": "execrss",
|
|
82
|
+
"mod_name": "omdev.scripts.execrss"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"module": ".scripts.exectime",
|
|
88
|
+
"attr": "_CLI_MODULE",
|
|
89
|
+
"file": "omdev/scripts/exectime.py",
|
|
90
|
+
"line": 7,
|
|
91
|
+
"value": {
|
|
92
|
+
"$.cli.types.CliModule": {
|
|
93
|
+
"cmd_name": "exectime",
|
|
94
|
+
"mod_name": "omdev.scripts.exectime"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"module": ".scripts.importtrace",
|
|
100
|
+
"attr": "_CLI_MODULE",
|
|
101
|
+
"file": "omdev/scripts/importtrace.py",
|
|
102
|
+
"line": 481,
|
|
103
|
+
"value": {
|
|
104
|
+
"$.cli.types.CliModule": {
|
|
105
|
+
"cmd_name": "importtrace",
|
|
106
|
+
"mod_name": "omdev.scripts.importtrace"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
74
110
|
{
|
|
75
111
|
"module": ".tools.dockertools",
|
|
76
112
|
"attr": "_CLI_MODULE",
|
|
@@ -95,6 +131,18 @@
|
|
|
95
131
|
}
|
|
96
132
|
}
|
|
97
133
|
},
|
|
134
|
+
{
|
|
135
|
+
"module": ".tools.importscan",
|
|
136
|
+
"attr": "_CLI_MODULE",
|
|
137
|
+
"file": "omdev/tools/importscan.py",
|
|
138
|
+
"line": 165,
|
|
139
|
+
"value": {
|
|
140
|
+
"$.cli.types.CliModule": {
|
|
141
|
+
"cmd_name": "importscan",
|
|
142
|
+
"mod_name": "omdev.tools.importscan"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
},
|
|
98
146
|
{
|
|
99
147
|
"module": ".tools.piptools",
|
|
100
148
|
"attr": "_CLI_MODULE",
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
TODO:
|
|
3
|
+
- cache ldr.discover() somehow if in uvx/pipx - very slow
|
|
4
|
+
- <venv-root>/.omdev-cli-manifest-cache.json - {pkg_name: manifests_json}
|
|
3
5
|
- allow manually specifying manifest packages
|
|
4
6
|
- https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#creating-executable-scripts
|
|
5
7
|
- https://packaging.python.org/en/latest/specifications/entry-points/#entry-points
|
|
@@ -46,6 +48,7 @@ def _main() -> None:
|
|
|
46
48
|
ldr = ManifestLoader.from_entry_point(globals())
|
|
47
49
|
|
|
48
50
|
pkgs = ldr.discover()
|
|
51
|
+
|
|
49
52
|
if not pkgs:
|
|
50
53
|
pkgs = []
|
|
51
54
|
for n in os.listdir(os.getcwd()):
|
|
@@ -73,11 +73,15 @@ def get_git_revision(
|
|
|
73
73
|
if cwd is None:
|
|
74
74
|
cwd = os.getcwd()
|
|
75
75
|
|
|
76
|
-
if subprocess.run(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
if subprocess.run( # noqa
|
|
77
|
+
[
|
|
78
|
+
'git',
|
|
79
|
+
'rev-parse',
|
|
80
|
+
'--is-inside-work-tree',
|
|
81
|
+
],
|
|
82
|
+
stdout=subprocess.PIPE,
|
|
83
|
+
stderr=subprocess.PIPE,
|
|
84
|
+
).returncode:
|
|
81
85
|
return None
|
|
82
86
|
|
|
83
87
|
has_untracked = bool(subprocess.check_output([
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Should be kept somewhat lightweight - used in cli entrypoints.
|
|
3
|
+
|
|
4
|
+
TODO:
|
|
5
|
+
- persisted caching support - {pkg_name: manifests}
|
|
6
|
+
"""
|
|
1
7
|
# ruff: noqa: UP006 UP007
|
|
2
8
|
import dataclasses as dc
|
|
3
9
|
import importlib.machinery
|
|
4
|
-
import importlib.metadata
|
|
5
10
|
import importlib.resources
|
|
6
11
|
import json
|
|
7
12
|
import typing as ta
|
|
@@ -74,19 +79,7 @@ class ManifestLoader:
|
|
|
74
79
|
self._cls_cache[key] = cls
|
|
75
80
|
return cls
|
|
76
81
|
|
|
77
|
-
def
|
|
78
|
-
try:
|
|
79
|
-
return self._raw_cache[pkg_name]
|
|
80
|
-
except KeyError:
|
|
81
|
-
pass
|
|
82
|
-
|
|
83
|
-
t = importlib.resources.files(pkg_name).joinpath('.manifests.json')
|
|
84
|
-
if not t.is_file():
|
|
85
|
-
self._raw_cache[pkg_name] = None
|
|
86
|
-
return None
|
|
87
|
-
|
|
88
|
-
src = t.read_text('utf-8')
|
|
89
|
-
obj = json.loads(src)
|
|
82
|
+
def load_contents(self, obj: ta.Any, pkg_name: str) -> ta.Sequence[Manifest]:
|
|
90
83
|
if not isinstance(obj, (list, tuple)):
|
|
91
84
|
raise TypeError(obj)
|
|
92
85
|
|
|
@@ -105,6 +98,26 @@ class ManifestLoader:
|
|
|
105
98
|
|
|
106
99
|
lst.append(m)
|
|
107
100
|
|
|
101
|
+
return lst
|
|
102
|
+
|
|
103
|
+
def load_raw(self, pkg_name: str) -> ta.Optional[ta.Sequence[Manifest]]:
|
|
104
|
+
try:
|
|
105
|
+
return self._raw_cache[pkg_name]
|
|
106
|
+
except KeyError:
|
|
107
|
+
pass
|
|
108
|
+
|
|
109
|
+
t = importlib.resources.files(pkg_name).joinpath('.manifests.json')
|
|
110
|
+
if not t.is_file():
|
|
111
|
+
self._raw_cache[pkg_name] = None
|
|
112
|
+
return None
|
|
113
|
+
|
|
114
|
+
src = t.read_text('utf-8')
|
|
115
|
+
obj = json.loads(src)
|
|
116
|
+
if not isinstance(obj, (list, tuple)):
|
|
117
|
+
raise TypeError(obj)
|
|
118
|
+
|
|
119
|
+
lst = self.load_contents(obj, pkg_name)
|
|
120
|
+
|
|
108
121
|
self._raw_cache[pkg_name] = lst
|
|
109
122
|
return lst
|
|
110
123
|
|
|
@@ -143,6 +156,9 @@ class ManifestLoader:
|
|
|
143
156
|
ENTRY_POINT_GROUP = 'omlish.manifests'
|
|
144
157
|
|
|
145
158
|
def discover(self) -> ta.Sequence[str]:
|
|
159
|
+
# This is a fat dep so do it late.
|
|
160
|
+
import importlib.metadata
|
|
161
|
+
|
|
146
162
|
return [
|
|
147
163
|
ep.value
|
|
148
164
|
for ep in importlib.metadata.entry_points(group=self.ENTRY_POINT_GROUP)
|
|
@@ -47,6 +47,7 @@ from ..toml.parser import toml_loads
|
|
|
47
47
|
from .configs import PyprojectConfig
|
|
48
48
|
from .configs import PyprojectConfigPreparer
|
|
49
49
|
from .configs import VenvConfig
|
|
50
|
+
from .pkg import BasePyprojectPackageGenerator
|
|
50
51
|
from .pkg import PyprojectPackageGenerator
|
|
51
52
|
from .reqs import RequirementsRewriter
|
|
52
53
|
|
|
@@ -338,25 +339,36 @@ def _pkg_cmd(args) -> None:
|
|
|
338
339
|
if run_build:
|
|
339
340
|
os.makedirs(build_output_dir, exist_ok=True)
|
|
340
341
|
|
|
341
|
-
|
|
342
|
+
pgs: ta.List[BasePyprojectPackageGenerator] = [
|
|
343
|
+
PyprojectPackageGenerator(
|
|
344
|
+
dir_name,
|
|
345
|
+
pkgs_root,
|
|
346
|
+
)
|
|
347
|
+
for dir_name in run.cfg().pkgs
|
|
348
|
+
]
|
|
349
|
+
pgs = list(itertools.chain.from_iterable([pg, *pg.children()] for pg in pgs))
|
|
350
|
+
|
|
351
|
+
num_threads = args.jobs or max(mp.cpu_count() // 2, 1)
|
|
352
|
+
futs: ta.List[cf.Future]
|
|
342
353
|
with cf.ThreadPoolExecutor(num_threads) as ex:
|
|
343
|
-
futs = [
|
|
344
|
-
ex.submit(functools.partial(
|
|
345
|
-
PyprojectPackageGenerator(
|
|
346
|
-
dir_name,
|
|
347
|
-
pkgs_root,
|
|
348
|
-
).gen,
|
|
349
|
-
PyprojectPackageGenerator.GenOpts(
|
|
350
|
-
run_build=run_build,
|
|
351
|
-
build_output_dir=build_output_dir,
|
|
352
|
-
add_revision=add_revision,
|
|
353
|
-
),
|
|
354
|
-
))
|
|
355
|
-
for dir_name in run.cfg().pkgs
|
|
356
|
-
]
|
|
354
|
+
futs = [ex.submit(pg.gen) for pg in pgs]
|
|
357
355
|
for fut in futs:
|
|
358
356
|
fut.result()
|
|
359
357
|
|
|
358
|
+
if run_build:
|
|
359
|
+
futs = [
|
|
360
|
+
ex.submit(functools.partial(
|
|
361
|
+
pg.build,
|
|
362
|
+
build_output_dir,
|
|
363
|
+
BasePyprojectPackageGenerator.BuildOpts(
|
|
364
|
+
add_revision=add_revision,
|
|
365
|
+
),
|
|
366
|
+
))
|
|
367
|
+
for pg in pgs
|
|
368
|
+
]
|
|
369
|
+
for fut in futs:
|
|
370
|
+
fut.result()
|
|
371
|
+
|
|
360
372
|
else:
|
|
361
373
|
raise Exception(f'unknown subcommand: {cmd}')
|
|
362
374
|
|
|
@@ -380,6 +392,7 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
380
392
|
parser_resolve = subparsers.add_parser('pkg')
|
|
381
393
|
parser_resolve.add_argument('-b', '--build', action='store_true')
|
|
382
394
|
parser_resolve.add_argument('-r', '--revision', action='store_true')
|
|
395
|
+
parser_resolve.add_argument('-j', '--jobs', type=int)
|
|
383
396
|
parser_resolve.add_argument('cmd', nargs='?')
|
|
384
397
|
parser_resolve.add_argument('args', nargs=argparse.REMAINDER)
|
|
385
398
|
parser_resolve.set_defaults(func=_pkg_cmd)
|
|
@@ -186,12 +186,33 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
186
186
|
|
|
187
187
|
#
|
|
188
188
|
|
|
189
|
-
def
|
|
189
|
+
def children(self) -> ta.Sequence['BasePyprojectPackageGenerator']:
|
|
190
|
+
return []
|
|
191
|
+
|
|
192
|
+
#
|
|
193
|
+
|
|
194
|
+
def gen(self) -> str:
|
|
195
|
+
log.info('Generating pyproject package: %s -> %s (%s)', self._dir_name, self._pkgs_root, self._pkg_suffix)
|
|
196
|
+
|
|
197
|
+
self._pkg_dir()
|
|
198
|
+
self._write_git_ignore()
|
|
199
|
+
self._symlink_source_dir()
|
|
200
|
+
self._write_file_contents()
|
|
201
|
+
self._symlink_standard_files()
|
|
202
|
+
|
|
203
|
+
return self._pkg_dir()
|
|
204
|
+
|
|
205
|
+
#
|
|
206
|
+
|
|
207
|
+
@dc.dataclass(frozen=True)
|
|
208
|
+
class BuildOpts:
|
|
209
|
+
add_revision: bool = False
|
|
210
|
+
test: bool = False
|
|
211
|
+
|
|
212
|
+
def build(
|
|
190
213
|
self,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
add_revision: bool = False,
|
|
194
|
-
test: bool = False,
|
|
214
|
+
output_dir: ta.Optional[str] = None,
|
|
215
|
+
opts: BuildOpts = BuildOpts(),
|
|
195
216
|
) -> None:
|
|
196
217
|
subprocess_check_call(
|
|
197
218
|
sys.executable,
|
|
@@ -202,10 +223,10 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
202
223
|
|
|
203
224
|
dist_dir = os.path.join(self._pkg_dir(), 'dist')
|
|
204
225
|
|
|
205
|
-
if add_revision:
|
|
226
|
+
if opts.add_revision:
|
|
206
227
|
GitRevisionAdder().add_to(dist_dir)
|
|
207
228
|
|
|
208
|
-
if test:
|
|
229
|
+
if opts.test:
|
|
209
230
|
for fn in os.listdir(dist_dir):
|
|
210
231
|
tmp_dir = tempfile.mkdtemp()
|
|
211
232
|
|
|
@@ -224,34 +245,9 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
224
245
|
cwd=tmp_dir,
|
|
225
246
|
)
|
|
226
247
|
|
|
227
|
-
if
|
|
248
|
+
if output_dir is not None:
|
|
228
249
|
for fn in os.listdir(dist_dir):
|
|
229
|
-
shutil.copyfile(os.path.join(dist_dir, fn), os.path.join(
|
|
230
|
-
|
|
231
|
-
#
|
|
232
|
-
|
|
233
|
-
@dc.dataclass(frozen=True)
|
|
234
|
-
class GenOpts:
|
|
235
|
-
run_build: bool = False
|
|
236
|
-
build_output_dir: ta.Optional[str] = None
|
|
237
|
-
add_revision: bool = False
|
|
238
|
-
|
|
239
|
-
def gen(self, opts: GenOpts = GenOpts()) -> str:
|
|
240
|
-
log.info('Generating pyproject package: %s -> %s (%s)', self._dir_name, self._pkgs_root, self._pkg_suffix)
|
|
241
|
-
|
|
242
|
-
self._pkg_dir()
|
|
243
|
-
self._write_git_ignore()
|
|
244
|
-
self._symlink_source_dir()
|
|
245
|
-
self._write_file_contents()
|
|
246
|
-
self._symlink_standard_files()
|
|
247
|
-
|
|
248
|
-
if opts.run_build:
|
|
249
|
-
self._run_build(
|
|
250
|
-
opts.build_output_dir,
|
|
251
|
-
add_revision=opts.add_revision,
|
|
252
|
-
)
|
|
253
|
-
|
|
254
|
-
return self._pkg_dir()
|
|
250
|
+
shutil.copyfile(os.path.join(dist_dir, fn), os.path.join(output_dir, fn))
|
|
255
251
|
|
|
256
252
|
|
|
257
253
|
#
|
|
@@ -377,24 +373,25 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
|
|
|
377
373
|
|
|
378
374
|
#
|
|
379
375
|
|
|
380
|
-
|
|
381
|
-
|
|
376
|
+
@cached_nullary
|
|
377
|
+
def children(self) -> ta.Sequence[BasePyprojectPackageGenerator]:
|
|
378
|
+
out: ta.List[BasePyprojectPackageGenerator] = []
|
|
382
379
|
|
|
383
380
|
if self.build_specs().setuptools.get('cexts'):
|
|
384
|
-
_PyprojectCextPackageGenerator(
|
|
381
|
+
out.append(_PyprojectCextPackageGenerator(
|
|
385
382
|
self._dir_name,
|
|
386
383
|
self._pkgs_root,
|
|
387
384
|
pkg_suffix='-cext',
|
|
388
|
-
)
|
|
385
|
+
))
|
|
389
386
|
|
|
390
387
|
if self.build_specs().pyproject.get('cli_scripts'):
|
|
391
|
-
_PyprojectCliPackageGenerator(
|
|
388
|
+
out.append(_PyprojectCliPackageGenerator(
|
|
392
389
|
self._dir_name,
|
|
393
390
|
self._pkgs_root,
|
|
394
391
|
pkg_suffix='-cli',
|
|
395
|
-
)
|
|
392
|
+
))
|
|
396
393
|
|
|
397
|
-
return
|
|
394
|
+
return out
|
|
398
395
|
|
|
399
396
|
|
|
400
397
|
#
|
|
@@ -8,6 +8,13 @@ def _get_rss() -> int:
|
|
|
8
8
|
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
# @omlish-manifest
|
|
12
|
+
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
|
13
|
+
'cmd_name': 'execrss',
|
|
14
|
+
'mod_name': __name__,
|
|
15
|
+
}}
|
|
16
|
+
|
|
17
|
+
|
|
11
18
|
def _main() -> None:
|
|
12
19
|
[src] = sys.argv[1:]
|
|
13
20
|
start = _get_rss()
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# @omlish-script
|
|
3
|
+
import sys
|
|
4
|
+
import time
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# @omlish-manifest
|
|
8
|
+
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
|
9
|
+
'cmd_name': 'exectime',
|
|
10
|
+
'mod_name': __name__,
|
|
11
|
+
}}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _main() -> None:
|
|
15
|
+
[src] = sys.argv[1:]
|
|
16
|
+
co = compile(src, '<string>', 'exec')
|
|
17
|
+
start = time.time_ns()
|
|
18
|
+
exec(co)
|
|
19
|
+
end = time.time_ns()
|
|
20
|
+
print(end - start)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
if __name__ == '__main__':
|
|
24
|
+
_main()
|
|
@@ -478,6 +478,13 @@ class SqliteWriter:
|
|
|
478
478
|
##
|
|
479
479
|
|
|
480
480
|
|
|
481
|
+
# @omlish-manifest
|
|
482
|
+
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
|
483
|
+
'cmd_name': 'importtrace',
|
|
484
|
+
'mod_name': __name__,
|
|
485
|
+
}}
|
|
486
|
+
|
|
487
|
+
|
|
481
488
|
def _main() -> None:
|
|
482
489
|
if sys.version_info < REQUIRED_PYTHON_VERSION:
|
|
483
490
|
raise EnvironmentError(f'Requires python {REQUIRED_PYTHON_VERSION}, got {sys.version_info} from {sys.executable}') # noqa
|
|
@@ -242,11 +242,15 @@ def get_git_revision(
|
|
|
242
242
|
if cwd is None:
|
|
243
243
|
cwd = os.getcwd()
|
|
244
244
|
|
|
245
|
-
if subprocess.run(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
245
|
+
if subprocess.run( # noqa
|
|
246
|
+
[
|
|
247
|
+
'git',
|
|
248
|
+
'rev-parse',
|
|
249
|
+
'--is-inside-work-tree',
|
|
250
|
+
],
|
|
251
|
+
stdout=subprocess.PIPE,
|
|
252
|
+
stderr=subprocess.PIPE,
|
|
253
|
+
).returncode:
|
|
250
254
|
return None
|
|
251
255
|
|
|
252
256
|
has_untracked = bool(subprocess.check_output([
|
|
@@ -3879,12 +3883,33 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
3879
3883
|
|
|
3880
3884
|
#
|
|
3881
3885
|
|
|
3882
|
-
def
|
|
3886
|
+
def children(self) -> ta.Sequence['BasePyprojectPackageGenerator']:
|
|
3887
|
+
return []
|
|
3888
|
+
|
|
3889
|
+
#
|
|
3890
|
+
|
|
3891
|
+
def gen(self) -> str:
|
|
3892
|
+
log.info('Generating pyproject package: %s -> %s (%s)', self._dir_name, self._pkgs_root, self._pkg_suffix)
|
|
3893
|
+
|
|
3894
|
+
self._pkg_dir()
|
|
3895
|
+
self._write_git_ignore()
|
|
3896
|
+
self._symlink_source_dir()
|
|
3897
|
+
self._write_file_contents()
|
|
3898
|
+
self._symlink_standard_files()
|
|
3899
|
+
|
|
3900
|
+
return self._pkg_dir()
|
|
3901
|
+
|
|
3902
|
+
#
|
|
3903
|
+
|
|
3904
|
+
@dc.dataclass(frozen=True)
|
|
3905
|
+
class BuildOpts:
|
|
3906
|
+
add_revision: bool = False
|
|
3907
|
+
test: bool = False
|
|
3908
|
+
|
|
3909
|
+
def build(
|
|
3883
3910
|
self,
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
add_revision: bool = False,
|
|
3887
|
-
test: bool = False,
|
|
3911
|
+
output_dir: ta.Optional[str] = None,
|
|
3912
|
+
opts: BuildOpts = BuildOpts(),
|
|
3888
3913
|
) -> None:
|
|
3889
3914
|
subprocess_check_call(
|
|
3890
3915
|
sys.executable,
|
|
@@ -3895,10 +3920,10 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
3895
3920
|
|
|
3896
3921
|
dist_dir = os.path.join(self._pkg_dir(), 'dist')
|
|
3897
3922
|
|
|
3898
|
-
if add_revision:
|
|
3923
|
+
if opts.add_revision:
|
|
3899
3924
|
GitRevisionAdder().add_to(dist_dir)
|
|
3900
3925
|
|
|
3901
|
-
if test:
|
|
3926
|
+
if opts.test:
|
|
3902
3927
|
for fn in os.listdir(dist_dir):
|
|
3903
3928
|
tmp_dir = tempfile.mkdtemp()
|
|
3904
3929
|
|
|
@@ -3917,34 +3942,9 @@ class BasePyprojectPackageGenerator(abc.ABC):
|
|
|
3917
3942
|
cwd=tmp_dir,
|
|
3918
3943
|
)
|
|
3919
3944
|
|
|
3920
|
-
if
|
|
3945
|
+
if output_dir is not None:
|
|
3921
3946
|
for fn in os.listdir(dist_dir):
|
|
3922
|
-
shutil.copyfile(os.path.join(dist_dir, fn), os.path.join(
|
|
3923
|
-
|
|
3924
|
-
#
|
|
3925
|
-
|
|
3926
|
-
@dc.dataclass(frozen=True)
|
|
3927
|
-
class GenOpts:
|
|
3928
|
-
run_build: bool = False
|
|
3929
|
-
build_output_dir: ta.Optional[str] = None
|
|
3930
|
-
add_revision: bool = False
|
|
3931
|
-
|
|
3932
|
-
def gen(self, opts: GenOpts = GenOpts()) -> str:
|
|
3933
|
-
log.info('Generating pyproject package: %s -> %s (%s)', self._dir_name, self._pkgs_root, self._pkg_suffix)
|
|
3934
|
-
|
|
3935
|
-
self._pkg_dir()
|
|
3936
|
-
self._write_git_ignore()
|
|
3937
|
-
self._symlink_source_dir()
|
|
3938
|
-
self._write_file_contents()
|
|
3939
|
-
self._symlink_standard_files()
|
|
3940
|
-
|
|
3941
|
-
if opts.run_build:
|
|
3942
|
-
self._run_build(
|
|
3943
|
-
opts.build_output_dir,
|
|
3944
|
-
add_revision=opts.add_revision,
|
|
3945
|
-
)
|
|
3946
|
-
|
|
3947
|
-
return self._pkg_dir()
|
|
3947
|
+
shutil.copyfile(os.path.join(dist_dir, fn), os.path.join(output_dir, fn))
|
|
3948
3948
|
|
|
3949
3949
|
|
|
3950
3950
|
#
|
|
@@ -4070,24 +4070,25 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
|
|
|
4070
4070
|
|
|
4071
4071
|
#
|
|
4072
4072
|
|
|
4073
|
-
|
|
4074
|
-
|
|
4073
|
+
@cached_nullary
|
|
4074
|
+
def children(self) -> ta.Sequence[BasePyprojectPackageGenerator]:
|
|
4075
|
+
out: ta.List[BasePyprojectPackageGenerator] = []
|
|
4075
4076
|
|
|
4076
4077
|
if self.build_specs().setuptools.get('cexts'):
|
|
4077
|
-
_PyprojectCextPackageGenerator(
|
|
4078
|
+
out.append(_PyprojectCextPackageGenerator(
|
|
4078
4079
|
self._dir_name,
|
|
4079
4080
|
self._pkgs_root,
|
|
4080
4081
|
pkg_suffix='-cext',
|
|
4081
|
-
)
|
|
4082
|
+
))
|
|
4082
4083
|
|
|
4083
4084
|
if self.build_specs().pyproject.get('cli_scripts'):
|
|
4084
|
-
_PyprojectCliPackageGenerator(
|
|
4085
|
+
out.append(_PyprojectCliPackageGenerator(
|
|
4085
4086
|
self._dir_name,
|
|
4086
4087
|
self._pkgs_root,
|
|
4087
4088
|
pkg_suffix='-cli',
|
|
4088
|
-
)
|
|
4089
|
+
))
|
|
4089
4090
|
|
|
4090
|
-
return
|
|
4091
|
+
return out
|
|
4091
4092
|
|
|
4092
4093
|
|
|
4093
4094
|
#
|
|
@@ -5275,25 +5276,36 @@ def _pkg_cmd(args) -> None:
|
|
|
5275
5276
|
if run_build:
|
|
5276
5277
|
os.makedirs(build_output_dir, exist_ok=True)
|
|
5277
5278
|
|
|
5278
|
-
|
|
5279
|
+
pgs: ta.List[BasePyprojectPackageGenerator] = [
|
|
5280
|
+
PyprojectPackageGenerator(
|
|
5281
|
+
dir_name,
|
|
5282
|
+
pkgs_root,
|
|
5283
|
+
)
|
|
5284
|
+
for dir_name in run.cfg().pkgs
|
|
5285
|
+
]
|
|
5286
|
+
pgs = list(itertools.chain.from_iterable([pg, *pg.children()] for pg in pgs))
|
|
5287
|
+
|
|
5288
|
+
num_threads = args.jobs or max(mp.cpu_count() // 2, 1)
|
|
5289
|
+
futs: ta.List[cf.Future]
|
|
5279
5290
|
with cf.ThreadPoolExecutor(num_threads) as ex:
|
|
5280
|
-
futs = [
|
|
5281
|
-
ex.submit(functools.partial(
|
|
5282
|
-
PyprojectPackageGenerator(
|
|
5283
|
-
dir_name,
|
|
5284
|
-
pkgs_root,
|
|
5285
|
-
).gen,
|
|
5286
|
-
PyprojectPackageGenerator.GenOpts(
|
|
5287
|
-
run_build=run_build,
|
|
5288
|
-
build_output_dir=build_output_dir,
|
|
5289
|
-
add_revision=add_revision,
|
|
5290
|
-
),
|
|
5291
|
-
))
|
|
5292
|
-
for dir_name in run.cfg().pkgs
|
|
5293
|
-
]
|
|
5291
|
+
futs = [ex.submit(pg.gen) for pg in pgs]
|
|
5294
5292
|
for fut in futs:
|
|
5295
5293
|
fut.result()
|
|
5296
5294
|
|
|
5295
|
+
if run_build:
|
|
5296
|
+
futs = [
|
|
5297
|
+
ex.submit(functools.partial(
|
|
5298
|
+
pg.build,
|
|
5299
|
+
build_output_dir,
|
|
5300
|
+
BasePyprojectPackageGenerator.BuildOpts(
|
|
5301
|
+
add_revision=add_revision,
|
|
5302
|
+
),
|
|
5303
|
+
))
|
|
5304
|
+
for pg in pgs
|
|
5305
|
+
]
|
|
5306
|
+
for fut in futs:
|
|
5307
|
+
fut.result()
|
|
5308
|
+
|
|
5297
5309
|
else:
|
|
5298
5310
|
raise Exception(f'unknown subcommand: {cmd}')
|
|
5299
5311
|
|
|
@@ -5317,6 +5329,7 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
5317
5329
|
parser_resolve = subparsers.add_parser('pkg')
|
|
5318
5330
|
parser_resolve.add_argument('-b', '--build', action='store_true')
|
|
5319
5331
|
parser_resolve.add_argument('-r', '--revision', action='store_true')
|
|
5332
|
+
parser_resolve.add_argument('-j', '--jobs', type=int)
|
|
5320
5333
|
parser_resolve.add_argument('cmd', nargs='?')
|
|
5321
5334
|
parser_resolve.add_argument('args', nargs=argparse.REMAINDER)
|
|
5322
5335
|
parser_resolve.set_defaults(func=_pkg_cmd)
|
|
@@ -17,6 +17,8 @@ import typing as ta
|
|
|
17
17
|
from omlish import concurrent as cu
|
|
18
18
|
from omlish import lang
|
|
19
19
|
|
|
20
|
+
from ..cli import CliModule
|
|
21
|
+
|
|
20
22
|
|
|
21
23
|
##
|
|
22
24
|
|
|
@@ -160,6 +162,10 @@ def run(
|
|
|
160
162
|
##
|
|
161
163
|
|
|
162
164
|
|
|
165
|
+
# @omlish-manifest
|
|
166
|
+
_CLI_MODULE = CliModule('importscan', __name__)
|
|
167
|
+
|
|
168
|
+
|
|
163
169
|
def _main() -> None:
|
|
164
170
|
parser = argparse.ArgumentParser()
|
|
165
171
|
parser.add_argument('-j', '--jobs', type=int)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev41
|
|
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.dev41
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
18
18
|
Requires-Dist: cffi~=1.17; extra == "all"
|
|
@@ -106,6 +106,8 @@ omdev/pyproject/reqs.py
|
|
|
106
106
|
omdev/scripts/__init__.py
|
|
107
107
|
omdev/scripts/bumpversion.py
|
|
108
108
|
omdev/scripts/execrss.py
|
|
109
|
+
omdev/scripts/exectime.py
|
|
110
|
+
omdev/scripts/importtrace.py
|
|
109
111
|
omdev/scripts/interp.py
|
|
110
112
|
omdev/scripts/pyproject.py
|
|
111
113
|
omdev/toml/__init__.py
|
|
@@ -115,7 +117,6 @@ omdev/tools/__init__.py
|
|
|
115
117
|
omdev/tools/dockertools.py
|
|
116
118
|
omdev/tools/gittools.py
|
|
117
119
|
omdev/tools/importscan.py
|
|
118
|
-
omdev/tools/importtrace.py
|
|
119
120
|
omdev/tools/piptools.py
|
|
120
121
|
omdev/tools/proftools.py
|
|
121
122
|
omdev/tools/rst.py
|
|
@@ -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.
|
|
15
|
+
version = '0.0.0.dev41'
|
|
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.
|
|
25
|
+
'omlish == 0.0.0.dev41',
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|