omdev 0.0.0.dev292__tar.gz → 0.0.0.dev294__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.dev292/omdev.egg-info → omdev-0.0.0.dev294}/PKG-INFO +2 -2
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/base.py +5 -7
- omdev-0.0.0.dev294/omdev/precheck/caches.py +77 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/git.py +2 -3
- omdev-0.0.0.dev294/omdev/precheck/imports.py +76 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/lite.py +3 -1
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/main.py +73 -26
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/manifests.py +3 -1
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/scripts.py +8 -2
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ptk/__init__.py +2 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev.egg-info/SOURCES.txt +2 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/pyproject.toml +2 -2
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/LICENSE +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/README.md +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/.manifests.json +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/ci.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/intellij.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev292 → omdev-0.0.0.dev294}/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.dev294
|
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.dev294
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -2,6 +2,9 @@ import abc
|
|
2
2
|
import dataclasses as dc
|
3
3
|
import typing as ta
|
4
4
|
|
5
|
+
from omlish import lang
|
6
|
+
from omlish.configs import all as cfgs
|
7
|
+
|
5
8
|
|
6
9
|
PrecheckConfigT = ta.TypeVar('PrecheckConfigT', bound='Precheck.Config')
|
7
10
|
|
@@ -17,16 +20,11 @@ class PrecheckContext:
|
|
17
20
|
##
|
18
21
|
|
19
22
|
|
20
|
-
class Precheck(
|
23
|
+
class Precheck(cfgs.Configurable[PrecheckConfigT], lang.Abstract):
|
21
24
|
@dc.dataclass(frozen=True)
|
22
|
-
class Config:
|
25
|
+
class Config(cfgs.Configurable.Config):
|
23
26
|
pass
|
24
27
|
|
25
|
-
def __init__(self, context: PrecheckContext, config: PrecheckConfigT) -> None:
|
26
|
-
super().__init__()
|
27
|
-
self._context = context
|
28
|
-
self._config = config
|
29
|
-
|
30
28
|
@dc.dataclass(frozen=True)
|
31
29
|
class Violation:
|
32
30
|
pc: 'Precheck'
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import ast
|
2
|
+
import os
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
from omlish import dataclasses as dc
|
6
|
+
from omlish import lang
|
7
|
+
from omlish.text.filecache import TextFileCache
|
8
|
+
|
9
|
+
from ..py.srcheaders import PyHeaderLine
|
10
|
+
from ..py.srcheaders import get_py_header_lines
|
11
|
+
from ..tokens import all as tks
|
12
|
+
|
13
|
+
|
14
|
+
##
|
15
|
+
|
16
|
+
|
17
|
+
class DirWalkCache:
|
18
|
+
@dc.dataclass(frozen=True)
|
19
|
+
class Entry:
|
20
|
+
root: str
|
21
|
+
dirs: ta.Sequence[str]
|
22
|
+
files: ta.Sequence[str]
|
23
|
+
|
24
|
+
@lang.cached_function
|
25
|
+
def list_dir(self, path: str) -> ta.Sequence[Entry]:
|
26
|
+
return [
|
27
|
+
self.Entry(root, list(dirs), list(files))
|
28
|
+
for root, dirs, files in os.walk(path)
|
29
|
+
]
|
30
|
+
|
31
|
+
|
32
|
+
##
|
33
|
+
|
34
|
+
|
35
|
+
@dc.dataclass(frozen=True)
|
36
|
+
class AstCache:
|
37
|
+
_tfc: TextFileCache = dc.field(repr=False)
|
38
|
+
|
39
|
+
@lang.cached_function
|
40
|
+
def get_file_ast(self, path: str) -> ast.AST | Exception:
|
41
|
+
try:
|
42
|
+
tfe = self._tfc.get_entry(path)
|
43
|
+
return ast.parse(tfe.text(), path)
|
44
|
+
except Exception as e: # noqa
|
45
|
+
return e
|
46
|
+
|
47
|
+
|
48
|
+
##
|
49
|
+
|
50
|
+
|
51
|
+
@dc.dataclass(frozen=True)
|
52
|
+
class TokensCache:
|
53
|
+
_tfc: TextFileCache = dc.field(repr=False)
|
54
|
+
|
55
|
+
@lang.cached_function
|
56
|
+
def get_file_tokens(self, path: str) -> tks.Tokens | Exception:
|
57
|
+
try:
|
58
|
+
tfe = self._tfc.get_entry(path)
|
59
|
+
return tks.src_to_tokens(tfe.text())
|
60
|
+
except Exception as e: # noqa
|
61
|
+
return e
|
62
|
+
|
63
|
+
|
64
|
+
##
|
65
|
+
|
66
|
+
|
67
|
+
@dc.dataclass(frozen=True)
|
68
|
+
class HeadersCache:
|
69
|
+
_tfc: TextFileCache = dc.field(repr=False)
|
70
|
+
|
71
|
+
@lang.cached_function
|
72
|
+
def get_file_headers(self, path: str) -> ta.Sequence[PyHeaderLine] | Exception:
|
73
|
+
try:
|
74
|
+
tfe = self._tfc.get_entry(path)
|
75
|
+
return get_py_header_lines(tfe.text())
|
76
|
+
except Exception as e: # noqa
|
77
|
+
return e
|
@@ -3,7 +3,6 @@ import dataclasses as dc
|
|
3
3
|
import typing as ta
|
4
4
|
|
5
5
|
from .base import Precheck
|
6
|
-
from .base import PrecheckContext
|
7
6
|
|
8
7
|
|
9
8
|
##
|
@@ -23,8 +22,8 @@ class GitBlacklistPrecheck(Precheck['GitBlacklistPrecheck.Config']):
|
|
23
22
|
'secrets.yml',
|
24
23
|
)
|
25
24
|
|
26
|
-
def __init__(self,
|
27
|
-
super().__init__(
|
25
|
+
def __init__(self, config: Config = Config()) -> None:
|
26
|
+
super().__init__(config)
|
28
27
|
|
29
28
|
async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
30
29
|
for f in self._config.files:
|
@@ -0,0 +1,76 @@
|
|
1
|
+
import ast
|
2
|
+
import dataclasses as dc
|
3
|
+
import os.path
|
4
|
+
import typing as ta
|
5
|
+
|
6
|
+
from .base import Precheck
|
7
|
+
from .base import PrecheckContext
|
8
|
+
from .caches import AstCache
|
9
|
+
from .caches import DirWalkCache
|
10
|
+
from .caches import HeadersCache
|
11
|
+
|
12
|
+
|
13
|
+
##
|
14
|
+
|
15
|
+
|
16
|
+
class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
|
17
|
+
@dc.dataclass(frozen=True)
|
18
|
+
class Config(Precheck.Config):
|
19
|
+
pass
|
20
|
+
|
21
|
+
def __init__(
|
22
|
+
self,
|
23
|
+
context: PrecheckContext,
|
24
|
+
config: Config = Config(),
|
25
|
+
*,
|
26
|
+
dir_walk_cache: DirWalkCache,
|
27
|
+
headers_cache: HeadersCache,
|
28
|
+
ast_cache: AstCache,
|
29
|
+
) -> None:
|
30
|
+
super().__init__(config)
|
31
|
+
|
32
|
+
self._context = context
|
33
|
+
|
34
|
+
self._dir_walk_cache = dir_walk_cache
|
35
|
+
self._headers_cache = headers_cache
|
36
|
+
self._ast_cache = ast_cache
|
37
|
+
|
38
|
+
async def _run_py_file(self, py_file: str, src_root: str) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
39
|
+
if isinstance(header_lines := self._headers_cache.get_file_headers(py_file), Exception):
|
40
|
+
return
|
41
|
+
if any(hl.src.strip() == '# ruff: noqa' for hl in header_lines):
|
42
|
+
return
|
43
|
+
|
44
|
+
py_file_ast = self._ast_cache.get_file_ast(py_file)
|
45
|
+
if not isinstance(py_file_ast, ast.Module):
|
46
|
+
return
|
47
|
+
|
48
|
+
for cur_node in py_file_ast.body:
|
49
|
+
if isinstance(cur_node, ast.Import):
|
50
|
+
imp_alias: ast.alias
|
51
|
+
for imp_alias in cur_node.names:
|
52
|
+
if imp_alias.name.split('.')[0] == src_root:
|
53
|
+
yield Precheck.Violation(self, f'Root relative import in file {py_file}: {imp_alias.name!r}')
|
54
|
+
|
55
|
+
elif isinstance(cur_node, ast.ImportFrom):
|
56
|
+
if cur_node.level == 0 and cur_node.module and cur_node.module.split('.')[0] == src_root:
|
57
|
+
yield Precheck.Violation(self, f'Root relative import in file {py_file}: {cur_node.module!r}')
|
58
|
+
|
59
|
+
return
|
60
|
+
|
61
|
+
async def _run_src_root(self, src_root: str) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
62
|
+
py_files = [
|
63
|
+
os.path.join(e.root, f)
|
64
|
+
for e in self._dir_walk_cache.list_dir(src_root)
|
65
|
+
for f in e.files
|
66
|
+
if f.endswith('.py')
|
67
|
+
]
|
68
|
+
|
69
|
+
for py_file in py_files:
|
70
|
+
async for v in self._run_py_file(py_file, src_root):
|
71
|
+
yield v
|
72
|
+
|
73
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
74
|
+
for src_root in self._context.src_roots:
|
75
|
+
async for v in self._run_src_root(src_root):
|
76
|
+
yield v
|
@@ -29,7 +29,9 @@ class LitePython8Precheck(Precheck['LitePython8Precheck.Config']):
|
|
29
29
|
concurrency: int = 4
|
30
30
|
|
31
31
|
def __init__(self, context: PrecheckContext, config: Config = Config()) -> None:
|
32
|
-
super().__init__(
|
32
|
+
super().__init__(config)
|
33
|
+
|
34
|
+
self._context = context
|
33
35
|
|
34
36
|
#
|
35
37
|
|
@@ -25,11 +25,18 @@ import os.path
|
|
25
25
|
import sys
|
26
26
|
import typing as ta
|
27
27
|
|
28
|
+
from omlish import inject as inj
|
28
29
|
from omlish.logs import all as logs
|
29
30
|
|
30
31
|
from .base import Precheck
|
31
32
|
from .base import PrecheckContext
|
33
|
+
from .caches import AstCache
|
34
|
+
from .caches import DirWalkCache
|
35
|
+
from .caches import HeadersCache
|
36
|
+
from .caches import TextFileCache
|
37
|
+
from .caches import TokensCache
|
32
38
|
from .git import GitBlacklistPrecheck
|
39
|
+
from .imports import RootRelativeImportPrecheck
|
33
40
|
from .lite import LitePython8Precheck
|
34
41
|
from .manifests import ManifestsPrecheck
|
35
42
|
from .scripts import ScriptDepsPrecheck
|
@@ -41,6 +48,36 @@ log = logging.getLogger(__name__)
|
|
41
48
|
##
|
42
49
|
|
43
50
|
|
51
|
+
def bind_main(
|
52
|
+
ctx: PrecheckContext,
|
53
|
+
pc_cfgs: ta.Iterable[Precheck.Config],
|
54
|
+
) -> inj.Elements:
|
55
|
+
lst: list[inj.Elemental] = [
|
56
|
+
inj.bind(ctx),
|
57
|
+
|
58
|
+
inj.set_binder[Precheck](),
|
59
|
+
|
60
|
+
inj.bind(AstCache, singleton=True),
|
61
|
+
inj.bind(DirWalkCache, singleton=True),
|
62
|
+
inj.bind(HeadersCache, singleton=True),
|
63
|
+
inj.bind(TextFileCache, singleton=True),
|
64
|
+
inj.bind(TokensCache, singleton=True),
|
65
|
+
]
|
66
|
+
|
67
|
+
#
|
68
|
+
|
69
|
+
for pc_cfg in pc_cfgs:
|
70
|
+
lst.extend([
|
71
|
+
inj.bind(pc_cfg),
|
72
|
+
inj.bind(pc_cfg.configurable_cls, eager=True, singleton=True),
|
73
|
+
inj.set_binder[Precheck]().bind(pc_cfg.configurable_cls),
|
74
|
+
])
|
75
|
+
|
76
|
+
#
|
77
|
+
|
78
|
+
return inj.as_elements(*lst)
|
79
|
+
|
80
|
+
|
44
81
|
def _check_cmd(args) -> None:
|
45
82
|
if not os.path.isfile('pyproject.toml'):
|
46
83
|
raise RuntimeError('must run in project root')
|
@@ -49,34 +86,44 @@ def _check_cmd(args) -> None:
|
|
49
86
|
src_roots=args.roots,
|
50
87
|
)
|
51
88
|
|
52
|
-
|
53
|
-
GitBlacklistPrecheck(
|
54
|
-
|
55
|
-
|
56
|
-
|
89
|
+
pc_cfgs: list[Precheck.Config] = [
|
90
|
+
GitBlacklistPrecheck.Config(),
|
91
|
+
LitePython8Precheck.Config(),
|
92
|
+
ManifestsPrecheck.Config(),
|
93
|
+
RootRelativeImportPrecheck.Config(),
|
94
|
+
ScriptDepsPrecheck.Config(),
|
57
95
|
]
|
58
96
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
97
|
+
with inj.create_managed_injector(bind_main(
|
98
|
+
ctx,
|
99
|
+
pc_cfgs,
|
100
|
+
)) as injector:
|
101
|
+
async def run() -> list[Precheck.Violation]:
|
102
|
+
vs: list[Precheck.Violation] = []
|
103
|
+
|
104
|
+
pcs = sorted(
|
105
|
+
injector[ta.AbstractSet[Precheck]],
|
106
|
+
key=lambda pc: type(pc).__name__,
|
107
|
+
)
|
108
|
+
|
109
|
+
for pc in pcs:
|
110
|
+
log.info('Running precheck: %s', type(pc).__name__)
|
111
|
+
async for v in pc.run():
|
112
|
+
vs.append(v)
|
113
|
+
print('*** VIOLATION ***')
|
114
|
+
print(f'Seq: {len(vs)}')
|
115
|
+
print(f'Precheck: {v.pc}')
|
116
|
+
print(f'Message:')
|
117
|
+
print(v.msg.strip())
|
118
|
+
print()
|
119
|
+
|
120
|
+
return vs
|
121
|
+
|
122
|
+
vs = asyncio.run(run())
|
123
|
+
|
124
|
+
if vs:
|
125
|
+
print(f'{len(vs)} violations found')
|
126
|
+
sys.exit(1)
|
80
127
|
|
81
128
|
|
82
129
|
##
|
@@ -16,7 +16,9 @@ class ManifestsPrecheck(Precheck['ManifestsPrecheck.Config']):
|
|
16
16
|
pass
|
17
17
|
|
18
18
|
def __init__(self, context: PrecheckContext, config: Config = Config()) -> None:
|
19
|
-
super().__init__(
|
19
|
+
super().__init__(config)
|
20
|
+
|
21
|
+
self._context = context
|
20
22
|
|
21
23
|
async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
22
24
|
for src_root in self._context.src_roots:
|
@@ -17,8 +17,14 @@ class ScriptDepsPrecheck(Precheck['ScriptDepsPrecheck.Config']):
|
|
17
17
|
class Config(Precheck.Config):
|
18
18
|
pass
|
19
19
|
|
20
|
-
def __init__(
|
21
|
-
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
context: PrecheckContext,
|
23
|
+
config: Config = Config(),
|
24
|
+
) -> None:
|
25
|
+
super().__init__(config)
|
26
|
+
|
27
|
+
self._context = context
|
22
28
|
|
23
29
|
async def run(self) -> ta.AsyncGenerator[Precheck.Violation, None]:
|
24
30
|
for fp in magic.find_magic_files(
|
@@ -2,6 +2,7 @@
|
|
2
2
|
# flake8: noqa: F401
|
3
3
|
|
4
4
|
from prompt_toolkit import Application
|
5
|
+
from prompt_toolkit import prompt
|
5
6
|
from prompt_toolkit.application import get_app
|
6
7
|
from prompt_toolkit.application import get_app_session
|
7
8
|
from prompt_toolkit.application import run_in_terminal
|
@@ -21,6 +22,7 @@ from prompt_toolkit.filters import is_searching
|
|
21
22
|
from prompt_toolkit.filters import to_filter
|
22
23
|
from prompt_toolkit.filters import vi_insert_mode
|
23
24
|
from prompt_toolkit.filters import vi_navigation_mode
|
25
|
+
from prompt_toolkit.formatted_text import ANSI
|
24
26
|
from prompt_toolkit.formatted_text import HTML
|
25
27
|
from prompt_toolkit.formatted_text import AnyFormattedText
|
26
28
|
from prompt_toolkit.formatted_text import FormattedText
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev294
|
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.dev294
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -202,7 +202,9 @@ omdev/packaging/wheelfile.py
|
|
202
202
|
omdev/precheck/__init__.py
|
203
203
|
omdev/precheck/__main__.py
|
204
204
|
omdev/precheck/base.py
|
205
|
+
omdev/precheck/caches.py
|
205
206
|
omdev/precheck/git.py
|
207
|
+
omdev/precheck/imports.py
|
206
208
|
omdev/precheck/lite.py
|
207
209
|
omdev/precheck/main.py
|
208
210
|
omdev/precheck/manifests.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.dev294'
|
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.dev294',
|
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
|