omdev 0.0.0.dev395__tar.gz → 0.0.0.dev397__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.dev395/omdev.egg-info → omdev-0.0.0.dev397}/PKG-INFO +2 -2
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/.manifests.json +13 -1
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/manifests.py +9 -8
- omdev-0.0.0.dev397/omdev/dataclasses/__main__.py +11 -0
- omdev-0.0.0.dev397/omdev/dataclasses/cli.py +28 -0
- omdev-0.0.0.dev397/omdev/dataclasses/codegen.py +95 -0
- omdev-0.0.0.dev397/omdev/tools/pawk/__init__.py +0 -0
- omdev-0.0.0.dev397/omdev/tools/prof.py +133 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev.egg-info/SOURCES.txt +4 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/pyproject.toml +3 -2
- omdev-0.0.0.dev395/omdev/tools/prof.py +0 -62
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/LICENSE +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/README.md +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev395/omdev/git → omdev-0.0.0.dev397/omdev/dataclasses}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev395/omdev/home → omdev-0.0.0.dev397/omdev/git}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev395/omdev/interp/providers → omdev-0.0.0.dev397/omdev/home}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/intellij/open.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev395/omdev/interp/pyenv → omdev-0.0.0.dev397/omdev/interp/providers}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev395/omdev/interp/uv → omdev-0.0.0.dev397/omdev/interp/pyenv}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev395/omdev/manifests → omdev-0.0.0.dev397/omdev/interp/uv}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev395/omdev/mypy → omdev-0.0.0.dev397/omdev/manifests}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/manifests/building.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev395/omdev/oci → omdev-0.0.0.dev397/omdev/mypy}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev395/omdev/oci/pack → omdev-0.0.0.dev397/omdev/oci}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev395/omdev/packaging → omdev-0.0.0.dev397/omdev/oci/pack}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev395/omdev/precheck → omdev-0.0.0.dev397/omdev/packaging}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev395/omdev/ptk/apps → omdev-0.0.0.dev397/omdev/precheck}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev395/omdev/py/scripts → omdev-0.0.0.dev397/omdev/ptk/apps}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev395/omdev/py/tools → omdev-0.0.0.dev397/omdev/py/scripts}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev395/omdev/pyproject/resources → omdev-0.0.0.dev397/omdev/py/tools}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev395/omdev/tokens → omdev-0.0.0.dev397/omdev/pyproject/resources}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/ci.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/antlr → omdev-0.0.0.dev397/omdev/tokens}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/git → omdev-0.0.0.dev397/omdev/tools/antlr}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/antlr/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/antlr/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/antlr/consts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/antlr/gen.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/json → omdev-0.0.0.dev397/omdev/tools/git}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/jsonview → omdev-0.0.0.dev397/omdev/tools/json}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/jsonview/resources → omdev-0.0.0.dev397/omdev/tools/jsonview}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev395/omdev/tools/pawk → omdev-0.0.0.dev397/omdev/tools/jsonview/resources}/__init__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev395 → omdev-0.0.0.dev397}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev397
|
4
4
|
Summary: omdev
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
17
|
+
Requires-Dist: omlish==0.0.0.dev397
|
18
18
|
Provides-Extra: all
|
19
19
|
Requires-Dist: black~=25.1; extra == "all"
|
20
20
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -59,6 +59,18 @@
|
|
59
59
|
}
|
60
60
|
}
|
61
61
|
},
|
62
|
+
{
|
63
|
+
"module": ".dataclasses.__main__",
|
64
|
+
"attr": "_CLI_MODULE",
|
65
|
+
"file": "omdev/dataclasses/__main__.py",
|
66
|
+
"line": 4,
|
67
|
+
"value": {
|
68
|
+
"$.cli.types.CliModule": {
|
69
|
+
"cmd_name": "dataclasses",
|
70
|
+
"mod_name": "omdev.dataclasses.__main__"
|
71
|
+
}
|
72
|
+
}
|
73
|
+
},
|
62
74
|
{
|
63
75
|
"module": ".imgur",
|
64
76
|
"attr": "_FOO_CLI_MODULE",
|
@@ -503,7 +515,7 @@
|
|
503
515
|
"module": ".tools.prof",
|
504
516
|
"attr": "_CLI_MODULE",
|
505
517
|
"file": "omdev/tools/prof.py",
|
506
|
-
"line":
|
518
|
+
"line": 128,
|
507
519
|
"value": {
|
508
520
|
"$.cli.types.CliModule": {
|
509
521
|
"cmd_name": "prof",
|
@@ -2,7 +2,6 @@ import datetime
|
|
2
2
|
|
3
3
|
from omlish import __about__ as about
|
4
4
|
from omlish import cached
|
5
|
-
from omlish import check
|
6
5
|
from omlish import dataclasses as dc
|
7
6
|
|
8
7
|
from ...git.revisions import get_git_revision
|
@@ -14,11 +13,11 @@ from .specs import Spec
|
|
14
13
|
|
15
14
|
|
16
15
|
@cached.function
|
17
|
-
def _lib_revision() -> str:
|
16
|
+
def _lib_revision() -> str | None:
|
18
17
|
if (rev := about.__revision__) is not None:
|
19
18
|
return rev # type: ignore
|
20
19
|
|
21
|
-
return
|
20
|
+
return get_git_revision()
|
22
21
|
|
23
22
|
|
24
23
|
##
|
@@ -28,13 +27,15 @@ def _lib_revision() -> str:
|
|
28
27
|
class Manifest:
|
29
28
|
spec: Spec
|
30
29
|
|
31
|
-
|
32
|
-
end_at: datetime.datetime = dc.field(kw_only=True)
|
30
|
+
_: dc.KW_ONLY
|
33
31
|
|
34
|
-
|
35
|
-
|
32
|
+
start_at: datetime.datetime = dc.field()
|
33
|
+
end_at: datetime.datetime = dc.field()
|
36
34
|
|
37
|
-
|
35
|
+
lib_version: str = dc.field(default_factory=lambda: about.__version__)
|
36
|
+
lib_revision: str | None = dc.field(default_factory=_lib_revision)
|
37
|
+
|
38
|
+
serialization_version: int = dc.field(default=SERIALIZATION_VERSION)
|
38
39
|
|
39
40
|
@dc.validate
|
40
41
|
def _validate_serialization_versions(self) -> bool:
|
@@ -0,0 +1,28 @@
|
|
1
|
+
from omlish.argparse import all as ap
|
2
|
+
from omlish.logs.standard import configure_standard_logging
|
3
|
+
|
4
|
+
from .codegen import DataclassCodeGen
|
5
|
+
|
6
|
+
|
7
|
+
##
|
8
|
+
|
9
|
+
|
10
|
+
class Cli(ap.Cli):
|
11
|
+
@ap.cmd(
|
12
|
+
ap.arg('roots', metavar='root', nargs='+'),
|
13
|
+
)
|
14
|
+
def codegen(self) -> None:
|
15
|
+
DataclassCodeGen().run(self.args.roots)
|
16
|
+
|
17
|
+
|
18
|
+
##
|
19
|
+
|
20
|
+
|
21
|
+
def _main() -> None:
|
22
|
+
configure_standard_logging()
|
23
|
+
|
24
|
+
Cli().cli_run_and_exit()
|
25
|
+
|
26
|
+
|
27
|
+
if __name__ == '__main__':
|
28
|
+
_main()
|
@@ -0,0 +1,95 @@
|
|
1
|
+
"""
|
2
|
+
TODO:
|
3
|
+
- subdir conf files override parents, codegen those separately, don't duplicate
|
4
|
+
- refactor dc gen to just Execute and Codegen
|
5
|
+
- need to bubble up imports, preamble, deduped
|
6
|
+
- still need plan repr / cmp
|
7
|
+
- !! manifests for dataclass config?
|
8
|
+
- more sparse / diffuse intent, not package-level
|
9
|
+
"""
|
10
|
+
import logging
|
11
|
+
import os.path
|
12
|
+
import typing as ta
|
13
|
+
|
14
|
+
from omlish import check
|
15
|
+
from omlish import collections as col
|
16
|
+
from omlish import lang
|
17
|
+
from omlish.dataclasses.impl.configs import PACKAGE_CONFIG_FILE_NAME
|
18
|
+
from omlish.dataclasses.impl.configs import PackageConfig
|
19
|
+
from omlish.dataclasses.impl.generation.compilation import OpCompiler
|
20
|
+
from omlish.dataclasses.impl.generation.processor import Codegen as CodegenProcessingOption
|
21
|
+
from omlish.dataclasses.impl.generation.processor import GeneratorProcessor
|
22
|
+
from omlish.dataclasses.impl.processing.base import ProcessingContext
|
23
|
+
from omlish.dataclasses.impl.processing.driving import processing_options_context
|
24
|
+
|
25
|
+
|
26
|
+
log = logging.getLogger(__name__)
|
27
|
+
|
28
|
+
|
29
|
+
##
|
30
|
+
|
31
|
+
|
32
|
+
class DataclassCodeGen:
|
33
|
+
def __init__(self) -> None:
|
34
|
+
super().__init__()
|
35
|
+
|
36
|
+
def run_package_config(
|
37
|
+
self,
|
38
|
+
pkg_root: str,
|
39
|
+
config: PackageConfig,
|
40
|
+
) -> None:
|
41
|
+
if not config.codegen:
|
42
|
+
return
|
43
|
+
|
44
|
+
log.info('Running codegen on package: %s', pkg_root)
|
45
|
+
|
46
|
+
sub_pkgs = sorted(lang.yield_importable(
|
47
|
+
pkg_root,
|
48
|
+
recursive=True,
|
49
|
+
include_special=True,
|
50
|
+
))
|
51
|
+
|
52
|
+
for sub_pkg in sub_pkgs:
|
53
|
+
def callback(
|
54
|
+
ctx: ProcessingContext,
|
55
|
+
prepared: GeneratorProcessor.Prepared,
|
56
|
+
comp: OpCompiler.CompileResult,
|
57
|
+
) -> None:
|
58
|
+
print(ctx.cls)
|
59
|
+
print(prepared.plans)
|
60
|
+
print(comp.src)
|
61
|
+
|
62
|
+
with processing_options_context(CodegenProcessingOption(callback)):
|
63
|
+
print(f'{sub_pkg=}')
|
64
|
+
try:
|
65
|
+
__import__(sub_pkg)
|
66
|
+
except ImportError as e:
|
67
|
+
print(repr(e))
|
68
|
+
|
69
|
+
def build_config_trie(
|
70
|
+
self,
|
71
|
+
root_dirs: ta.Iterable[str],
|
72
|
+
) -> col.Trie[str, PackageConfig]:
|
73
|
+
check.not_isinstance(root_dirs, str)
|
74
|
+
|
75
|
+
trie: col.Trie[str, PackageConfig] = col.Trie()
|
76
|
+
for root_dir in root_dirs:
|
77
|
+
for dp, _, fns in os.walk(root_dir):
|
78
|
+
if PACKAGE_CONFIG_FILE_NAME in fns:
|
79
|
+
with open(os.path.join(dp, PACKAGE_CONFIG_FILE_NAME)) as f:
|
80
|
+
config = PackageConfig.loads(f.read())
|
81
|
+
pkg_parts = dp.split(os.sep)
|
82
|
+
trie[pkg_parts] = config
|
83
|
+
|
84
|
+
return trie
|
85
|
+
|
86
|
+
def run(
|
87
|
+
self,
|
88
|
+
root_dirs: ta.Iterable[str],
|
89
|
+
) -> None:
|
90
|
+
check.not_isinstance(root_dirs, str)
|
91
|
+
|
92
|
+
config_trie = self.build_config_trie(root_dirs)
|
93
|
+
|
94
|
+
for pkg_parts, pkg_config in config_trie.iter_items(sort_children=True):
|
95
|
+
self.run_package_config('.'.join(pkg_parts), pkg_config)
|
File without changes
|
@@ -0,0 +1,133 @@
|
|
1
|
+
"""
|
2
|
+
TODO:
|
3
|
+
- a general purpose profile tool lol - or is this for / in bootstrap?
|
4
|
+
"""
|
5
|
+
import os.path
|
6
|
+
import shutil
|
7
|
+
import subprocess
|
8
|
+
import sys
|
9
|
+
import tempfile
|
10
|
+
|
11
|
+
from omlish.argparse import all as ap
|
12
|
+
|
13
|
+
from ..cli import CliModule
|
14
|
+
|
15
|
+
|
16
|
+
##
|
17
|
+
|
18
|
+
|
19
|
+
def pstats_to_pdf(
|
20
|
+
pstats_file: str,
|
21
|
+
pdf_file: str,
|
22
|
+
) -> None:
|
23
|
+
dot = subprocess.check_output([
|
24
|
+
sys.executable,
|
25
|
+
'-m', 'gprof2dot',
|
26
|
+
'-f', 'pstats',
|
27
|
+
pstats_file,
|
28
|
+
])
|
29
|
+
|
30
|
+
pdf = subprocess.check_output(
|
31
|
+
['dot', '-Tpdf'],
|
32
|
+
input=dot,
|
33
|
+
)
|
34
|
+
|
35
|
+
with open(pdf_file, 'wb') as f:
|
36
|
+
f.write(pdf)
|
37
|
+
|
38
|
+
|
39
|
+
class Cli(ap.Cli):
|
40
|
+
@ap.cmd(
|
41
|
+
ap.arg('pstats-file'),
|
42
|
+
ap.arg('pdf-file', nargs='?'),
|
43
|
+
ap.arg('-w', '--write', action='store_true'),
|
44
|
+
ap.arg('-o', '--open', action='store_true'),
|
45
|
+
ap.arg('-O', '--overwrite', action='store_true'),
|
46
|
+
)
|
47
|
+
def pstats_pdf(self) -> None:
|
48
|
+
pdf_file = self.args.pdf_file
|
49
|
+
if pdf_file is None and self.args.write:
|
50
|
+
pdf_file = self.args.pstats_file + '.pdf'
|
51
|
+
|
52
|
+
if pdf_file is not None:
|
53
|
+
if os.path.exists(pdf_file) and not self.args.overwrite:
|
54
|
+
raise OSError(f'File exists: {pdf_file}')
|
55
|
+
else:
|
56
|
+
pdf_file = tempfile.mktemp(suffix=os.path.basename(self.args.pstats_file) + '.pdf') # noqa
|
57
|
+
|
58
|
+
pstats_to_pdf(
|
59
|
+
self.args.pstats_file,
|
60
|
+
self.args.pdf_file,
|
61
|
+
)
|
62
|
+
|
63
|
+
print(pdf_file)
|
64
|
+
|
65
|
+
if self.args.open:
|
66
|
+
subprocess.check_call(['open', pdf_file])
|
67
|
+
|
68
|
+
@ap.cmd(
|
69
|
+
ap.arg('src'),
|
70
|
+
ap.arg('out-file', nargs='?'),
|
71
|
+
ap.arg('-p', '--pdf', action='store_true'),
|
72
|
+
ap.arg('-o', '--open', action='store_true'),
|
73
|
+
ap.arg('-O', '--overwrite', action='store_true'),
|
74
|
+
)
|
75
|
+
def pstats_exec(self) -> None:
|
76
|
+
if self.args.out_file is not None:
|
77
|
+
if os.path.exists(self.args.out_file) and not self.args.overwrite:
|
78
|
+
raise OSError(f'File exists: {self.args.out_file}')
|
79
|
+
|
80
|
+
tmp_dir = tempfile.mkdtemp()
|
81
|
+
|
82
|
+
src_file = os.path.join(tmp_dir, 'pstats_exec.py')
|
83
|
+
with open(src_file, 'w') as f:
|
84
|
+
f.write(self.args.src)
|
85
|
+
|
86
|
+
pstats_file = os.path.join(tmp_dir, 'prof.pstats')
|
87
|
+
|
88
|
+
# TODO: --python - and handle env vars, unset venv and pythonpath stuff - helper for this, scrub env
|
89
|
+
# - share with execstat, -x
|
90
|
+
subprocess.check_call([
|
91
|
+
sys.executable,
|
92
|
+
'-m', 'cProfile',
|
93
|
+
'-o', pstats_file,
|
94
|
+
os.path.abspath(src_file),
|
95
|
+
])
|
96
|
+
|
97
|
+
if self.args.pdf:
|
98
|
+
out_file = os.path.join(tmp_dir, 'pstats.pdf')
|
99
|
+
|
100
|
+
pstats_to_pdf(
|
101
|
+
pstats_file,
|
102
|
+
out_file,
|
103
|
+
)
|
104
|
+
|
105
|
+
else:
|
106
|
+
out_file = pstats_file
|
107
|
+
|
108
|
+
if self.args.out_file is not None:
|
109
|
+
shutil.move(out_file, self.args.out_file)
|
110
|
+
out_file = self.args.out_file
|
111
|
+
|
112
|
+
print(out_file)
|
113
|
+
|
114
|
+
if self.args.open:
|
115
|
+
if self.args.pdf:
|
116
|
+
subprocess.check_call(['open', out_file])
|
117
|
+
|
118
|
+
else:
|
119
|
+
# Alt: python -i <setup.py> where setup.py is 'import pstats; stats = pstats.Stats(<out_file>)'
|
120
|
+
os.execl(
|
121
|
+
sys.executable,
|
122
|
+
sys.executable,
|
123
|
+
'-m', 'pstats',
|
124
|
+
out_file,
|
125
|
+
)
|
126
|
+
|
127
|
+
|
128
|
+
# @omlish-manifest
|
129
|
+
_CLI_MODULE = CliModule('prof', __name__)
|
130
|
+
|
131
|
+
|
132
|
+
if __name__ == '__main__':
|
133
|
+
Cli()()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev397
|
4
4
|
Summary: omdev
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Requires-Python: >=3.13
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
17
|
+
Requires-Dist: omlish==0.0.0.dev397
|
18
18
|
Provides-Extra: all
|
19
19
|
Requires-Dist: black~=25.1; extra == "all"
|
20
20
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -135,6 +135,10 @@ omdev/cmdlog/__main__.py
|
|
135
135
|
omdev/cmdlog/_cmdlog.py
|
136
136
|
omdev/cmdlog/cli.py
|
137
137
|
omdev/cmdlog/cmdlog.py
|
138
|
+
omdev/dataclasses/__init__.py
|
139
|
+
omdev/dataclasses/__main__.py
|
140
|
+
omdev/dataclasses/cli.py
|
141
|
+
omdev/dataclasses/codegen.py
|
138
142
|
omdev/dataserver/__init__.py
|
139
143
|
omdev/dataserver/handlers.py
|
140
144
|
omdev/dataserver/http.py
|
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
13
13
|
license = 'BSD-3-Clause'
|
14
14
|
readme = 'README.md'
|
15
15
|
requires-python = '>=3.13'
|
16
|
-
version = '0.0.0.
|
16
|
+
version = '0.0.0.dev397'
|
17
17
|
classifiers = [
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
19
19
|
'Intended Audience :: Developers',
|
@@ -24,7 +24,7 @@ classifiers = [
|
|
24
24
|
]
|
25
25
|
description = 'omdev'
|
26
26
|
dependencies = [
|
27
|
-
'omlish == 0.0.0.
|
27
|
+
'omlish == 0.0.0.dev397',
|
28
28
|
]
|
29
29
|
|
30
30
|
[project.optional-dependencies]
|
@@ -89,6 +89,7 @@ exclude = [
|
|
89
89
|
'*.cu',
|
90
90
|
'*.g4',
|
91
91
|
'*.h',
|
92
|
+
'.dataclasses.json',
|
92
93
|
'.manifests.json',
|
93
94
|
'LICENSE',
|
94
95
|
'LICENSE.txt',
|
@@ -1,62 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
TODO:
|
3
|
-
- a general purpose profile tool lol - or is this for / in bootstrap?
|
4
|
-
"""
|
5
|
-
import os.path
|
6
|
-
import subprocess
|
7
|
-
import sys
|
8
|
-
import tempfile
|
9
|
-
|
10
|
-
from omlish.argparse import all as ap
|
11
|
-
|
12
|
-
from ..cli import CliModule
|
13
|
-
|
14
|
-
|
15
|
-
##
|
16
|
-
|
17
|
-
|
18
|
-
class Cli(ap.Cli):
|
19
|
-
@ap.cmd(
|
20
|
-
ap.arg('file'),
|
21
|
-
ap.arg('out-file', nargs='?'),
|
22
|
-
ap.arg('-w', '--write', action='store_true'),
|
23
|
-
ap.arg('-o', '--open', action='store_true'),
|
24
|
-
ap.arg('-O', '--overwrite', action='store_true'),
|
25
|
-
)
|
26
|
-
def pstats_pdf(self) -> None:
|
27
|
-
out_file = self.args.out_file
|
28
|
-
if out_file is None and self.args.write:
|
29
|
-
out_file = self.args.file + '.pdf'
|
30
|
-
|
31
|
-
if out_file is not None:
|
32
|
-
if os.path.exists(out_file) and not self.args.overwrite:
|
33
|
-
raise OSError(f'File exists: {out_file}')
|
34
|
-
else:
|
35
|
-
out_file = tempfile.mktemp(suffix=os.path.basename(self.args.file) + '.pdf') # noqa
|
36
|
-
|
37
|
-
dot = subprocess.check_output([
|
38
|
-
sys.executable,
|
39
|
-
'-m', 'gprof2dot',
|
40
|
-
'-f', 'pstats',
|
41
|
-
self.args.file,
|
42
|
-
])
|
43
|
-
|
44
|
-
pdf = subprocess.check_output(
|
45
|
-
['dot', '-Tpdf'],
|
46
|
-
input=dot,
|
47
|
-
)
|
48
|
-
|
49
|
-
with open(out_file, 'wb') as f:
|
50
|
-
f.write(pdf)
|
51
|
-
print(out_file)
|
52
|
-
|
53
|
-
if self.args.open:
|
54
|
-
subprocess.check_call(['open', out_file])
|
55
|
-
|
56
|
-
|
57
|
-
# @omlish-manifest
|
58
|
-
_CLI_MODULE = CliModule('prof', __name__)
|
59
|
-
|
60
|
-
|
61
|
-
if __name__ == '__main__':
|
62
|
-
Cli()()
|
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
|