omdev 0.0.0.dev396__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.dev396/omdev.egg-info → omdev-0.0.0.dev397}/PKG-INFO +2 -2
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/.manifests.json +1 -1
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataclasses/codegen.py +1 -2
- omdev-0.0.0.dev397/omdev/tools/prof.py +133 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/pyproject.toml +3 -2
- omdev-0.0.0.dev396/omdev/tools/prof.py +0 -62
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/LICENSE +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/README.md +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/intellij/open.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/building.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/ci.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/antlr/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/antlr/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/antlr/consts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/antlr/gen.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/resources/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev396 → omdev-0.0.0.dev397}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev396 → 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"
|
@@ -7,7 +7,6 @@ TODO:
|
|
7
7
|
- !! manifests for dataclass config?
|
8
8
|
- more sparse / diffuse intent, not package-level
|
9
9
|
"""
|
10
|
-
import json
|
11
10
|
import logging
|
12
11
|
import os.path
|
13
12
|
import typing as ta
|
@@ -78,7 +77,7 @@ class DataclassCodeGen:
|
|
78
77
|
for dp, _, fns in os.walk(root_dir):
|
79
78
|
if PACKAGE_CONFIG_FILE_NAME in fns:
|
80
79
|
with open(os.path.join(dp, PACKAGE_CONFIG_FILE_NAME)) as f:
|
81
|
-
config = PackageConfig(
|
80
|
+
config = PackageConfig.loads(f.read())
|
82
81
|
pkg_parts = dp.split(os.sep)
|
83
82
|
trie[pkg_parts] = config
|
84
83
|
|
@@ -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"
|
@@ -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
|
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
|