omdev 0.0.0.dev355__tar.gz → 0.0.0.dev357__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.dev355/omdev.egg-info → omdev-0.0.0.dev357}/PKG-INFO +2 -2
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/.manifests.json +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/dataserver.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/repositories.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/clicli.py +9 -2
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/cli.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/default.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/inject.py +5 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/inspect.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/inject.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/running.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/standalone.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/pyenv/inject.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/pyenv/provider.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/pyenv/pyenv.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/resolvers.py +3 -0
- omdev-0.0.0.dev357/omdev/interp/uv/inject.py +24 -0
- omdev-0.0.0.dev357/omdev/interp/uv/provider.py +40 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/uv/uv.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/magic.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/prepare.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/styles.py +3 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/git.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/imports.py +3 -3
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/lite.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/manifests.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/scripts.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/ci.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/interp.py +143 -11
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/pyproject.py +151 -11
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/cli.py +14 -6
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/parsing.py +4 -4
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/processing.py +18 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/rendering.py +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/pyproject.toml +2 -2
- omdev-0.0.0.dev355/omdev/interp/uv/inject.py +0 -12
- omdev-0.0.0.dev355/omdev/interp/uv/provider.py +0 -21
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/LICENSE +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/README.md +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/antlr/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/antlr/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/antlr/consts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/antlr/gen.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/intellij.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/resources/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev355 → omdev-0.0.0.dev357}/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.dev357
|
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.13
|
14
14
|
License-File: LICENSE
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omlish==0.0.0.dev357
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -91,11 +91,17 @@ class CliCli(ap.Cli):
|
|
91
91
|
ap.arg('--local', action='store_true'),
|
92
92
|
ap.arg('--no-deps', action='store_true'),
|
93
93
|
ap.arg('--dry-run', action='store_true'),
|
94
|
+
ap.arg('--version'),
|
94
95
|
ap.arg('extra_deps', nargs='*'),
|
95
96
|
)
|
96
97
|
def reinstall(self) -> None:
|
97
98
|
latest_version = _parse_latest_version_str(lookup_latest_package_version(__package__.split('.')[0]))
|
98
99
|
|
100
|
+
if self.args.version is not None:
|
101
|
+
target_version: str = self.args.version
|
102
|
+
else:
|
103
|
+
target_version = latest_version
|
104
|
+
|
99
105
|
#
|
100
106
|
|
101
107
|
dep_set: set[str] = set(self.args.extra_deps or [])
|
@@ -142,6 +148,7 @@ class CliCli(ap.Cli):
|
|
142
148
|
|
143
149
|
print(f'Current version: {__about__.__version__}')
|
144
150
|
print(f'Latest version: {latest_version}')
|
151
|
+
print(f'Target version: {target_version}')
|
145
152
|
print()
|
146
153
|
|
147
154
|
#
|
@@ -163,7 +170,7 @@ class CliCli(ap.Cli):
|
|
163
170
|
reco_cmd = ' '.join([
|
164
171
|
'curl -LsSf',
|
165
172
|
f"'{url}'" if (qu := shlex.quote(url)) == url else qu,
|
166
|
-
f'| python3 - --version {shlex.quote(
|
173
|
+
f'| python3 - --version {shlex.quote(target_version)}',
|
167
174
|
*deps,
|
168
175
|
])
|
169
176
|
print(f'Recovery command:\n\n{reco_cmd}\n')
|
@@ -178,7 +185,7 @@ class CliCli(ap.Cli):
|
|
178
185
|
sys.executable,
|
179
186
|
sys.executable,
|
180
187
|
'-c', install_src,
|
181
|
-
'--version',
|
188
|
+
'--version', target_version,
|
182
189
|
*deps,
|
183
190
|
)
|
184
191
|
|
@@ -15,6 +15,10 @@ from .pyenv.provider import PyenvInterpProvider
|
|
15
15
|
from .resolvers import InterpResolver
|
16
16
|
from .resolvers import InterpResolverProviders
|
17
17
|
from .uv.inject import bind_interp_uv
|
18
|
+
from .uv.provider import UvInterpProvider
|
19
|
+
|
20
|
+
|
21
|
+
##
|
18
22
|
|
19
23
|
|
20
24
|
def bind_interp() -> InjectorBindings:
|
@@ -36,6 +40,7 @@ def bind_interp() -> InjectorBindings:
|
|
36
40
|
injector.provide(c)
|
37
41
|
for c in [
|
38
42
|
PyenvInterpProvider,
|
43
|
+
UvInterpProvider,
|
39
44
|
RunningInterpProvider,
|
40
45
|
SystemInterpProvider,
|
41
46
|
]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007 UP045
|
2
|
+
import typing as ta
|
3
|
+
|
4
|
+
from omlish.lite.inject import InjectorBindingOrBindings
|
5
|
+
from omlish.lite.inject import InjectorBindings
|
6
|
+
from omlish.lite.inject import inj
|
7
|
+
|
8
|
+
from ..providers.base import InterpProvider
|
9
|
+
from .provider import UvInterpProvider
|
10
|
+
from .uv import Uv
|
11
|
+
|
12
|
+
|
13
|
+
##
|
14
|
+
|
15
|
+
|
16
|
+
def bind_interp_uv() -> InjectorBindings:
|
17
|
+
lst: ta.List[InjectorBindingOrBindings] = [
|
18
|
+
inj.bind(Uv, singleton=True),
|
19
|
+
|
20
|
+
inj.bind(UvInterpProvider, singleton=True),
|
21
|
+
inj.bind(InterpProvider, to_key=UvInterpProvider, array=True),
|
22
|
+
]
|
23
|
+
|
24
|
+
return inj.as_bindings(*lst)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007 UP045
|
2
|
+
"""
|
3
|
+
uv run pip
|
4
|
+
uv run --python 3.11.6 pip
|
5
|
+
uv venv --python 3.11.6 --seed barf
|
6
|
+
python3 -m venv barf && barf/bin/pip install uv && barf/bin/uv venv --python 3.11.6 --seed barf2
|
7
|
+
"""
|
8
|
+
import logging
|
9
|
+
import typing as ta
|
10
|
+
|
11
|
+
from ..inspect import InterpInspector
|
12
|
+
from ..providers.base import InterpProvider
|
13
|
+
from ..types import Interp
|
14
|
+
from ..types import InterpSpecifier
|
15
|
+
from ..types import InterpVersion
|
16
|
+
from .uv import Uv
|
17
|
+
|
18
|
+
|
19
|
+
##
|
20
|
+
|
21
|
+
|
22
|
+
class UvInterpProvider(InterpProvider):
|
23
|
+
def __init__(
|
24
|
+
self,
|
25
|
+
*,
|
26
|
+
pyenv: Uv,
|
27
|
+
inspector: InterpInspector,
|
28
|
+
log: ta.Optional[logging.Logger] = None,
|
29
|
+
) -> None:
|
30
|
+
super().__init__()
|
31
|
+
|
32
|
+
self._pyenv = pyenv
|
33
|
+
self._inspector = inspector
|
34
|
+
self._log = log
|
35
|
+
|
36
|
+
async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
|
37
|
+
return []
|
38
|
+
|
39
|
+
async def get_installed_version(self, version: InterpVersion) -> Interp:
|
40
|
+
raise NotImplementedError
|
@@ -25,7 +25,7 @@ class GitBlacklistPrecheck(Precheck['GitBlacklistPrecheck.Config']):
|
|
25
25
|
def __init__(self, config: Config = Config()) -> None:
|
26
26
|
super().__init__(config)
|
27
27
|
|
28
|
-
async def run(self) -> ta.AsyncGenerator[Precheck.Violation
|
28
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
|
29
29
|
for f in self._config.files:
|
30
30
|
proc = await asyncio.create_subprocess_exec('git', 'status', '-s', f)
|
31
31
|
await proc.communicate()
|
@@ -35,7 +35,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
|
|
35
35
|
self._headers_cache = headers_cache
|
36
36
|
self._ast_cache = ast_cache
|
37
37
|
|
38
|
-
async def _run_py_file(self, py_file: str, src_root: str) -> ta.AsyncGenerator[Precheck.Violation
|
38
|
+
async def _run_py_file(self, py_file: str, src_root: str) -> ta.AsyncGenerator[Precheck.Violation]:
|
39
39
|
if isinstance(header_lines := self._headers_cache.get_file_headers(py_file), Exception):
|
40
40
|
return
|
41
41
|
if any(hl.src.strip() == '# ruff: noqa' for hl in header_lines):
|
@@ -58,7 +58,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
|
|
58
58
|
|
59
59
|
return
|
60
60
|
|
61
|
-
async def _run_src_root(self, src_root: str) -> ta.AsyncGenerator[Precheck.Violation
|
61
|
+
async def _run_src_root(self, src_root: str) -> ta.AsyncGenerator[Precheck.Violation]:
|
62
62
|
py_files = [
|
63
63
|
os.path.join(e.root, f)
|
64
64
|
for e in self._dir_walk_cache.list_dir(src_root)
|
@@ -70,7 +70,7 @@ class RootRelativeImportPrecheck(Precheck['RootRelativeImportPrecheck.Config']):
|
|
70
70
|
async for v in self._run_py_file(py_file, src_root):
|
71
71
|
yield v
|
72
72
|
|
73
|
-
async def run(self) -> ta.AsyncGenerator[Precheck.Violation
|
73
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
|
74
74
|
for src_root in self._context.src_roots:
|
75
75
|
async for v in self._run_src_root(src_root):
|
76
76
|
yield v
|
@@ -157,7 +157,7 @@ class LitePython8Precheck(Precheck['LitePython8Precheck.Config']):
|
|
157
157
|
else:
|
158
158
|
raise RuntimeError(f'Unknown target kind: {tgt.kind}')
|
159
159
|
|
160
|
-
async def run(self) -> ta.AsyncGenerator[Precheck.Violation
|
160
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
|
161
161
|
tgts = await self._collect_targets()
|
162
162
|
|
163
163
|
sem = asyncio.Semaphore(self._config.concurrency)
|
@@ -20,7 +20,7 @@ class ManifestsPrecheck(Precheck['ManifestsPrecheck.Config']):
|
|
20
20
|
|
21
21
|
self._context = context
|
22
22
|
|
23
|
-
async def run(self) -> ta.AsyncGenerator[Precheck.Violation
|
23
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
|
24
24
|
for src_root in self._context.src_roots:
|
25
25
|
try:
|
26
26
|
MANIFEST_LOADER.load(src_root)
|
@@ -26,7 +26,7 @@ class ScriptDepsPrecheck(Precheck['ScriptDepsPrecheck.Config']):
|
|
26
26
|
|
27
27
|
self._context = context
|
28
28
|
|
29
|
-
async def run(self) -> ta.AsyncGenerator[Precheck.Violation
|
29
|
+
async def run(self) -> ta.AsyncGenerator[Precheck.Violation]:
|
30
30
|
for fp in magic.find_magic_files(
|
31
31
|
magic.PY_MAGIC_STYLE,
|
32
32
|
self._context.src_roots,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# @omlish-generated
|
6
6
|
# @omlish-amalg-output ../interp/cli.py
|
7
7
|
# @omlish-git-diff-omit
|
8
|
-
# ruff: noqa: N802 UP006 UP007 UP036 UP045
|
8
|
+
# ruff: noqa: N802 UP006 UP007 UP036 UP043 UP045
|
9
9
|
"""
|
10
10
|
TODO:
|
11
11
|
- partial best-matches - '3.12'
|
@@ -34,6 +34,7 @@ import shlex
|
|
34
34
|
import shutil
|
35
35
|
import subprocess
|
36
36
|
import sys
|
37
|
+
import tempfile
|
37
38
|
import threading
|
38
39
|
import time
|
39
40
|
import types
|
@@ -4020,16 +4021,6 @@ class Interp:
|
|
4020
4021
|
version: InterpVersion
|
4021
4022
|
|
4022
4023
|
|
4023
|
-
########################################
|
4024
|
-
# ../uv/inject.py
|
4025
|
-
|
4026
|
-
|
4027
|
-
def bind_interp_uv() -> InjectorBindings:
|
4028
|
-
lst: ta.List[InjectorBindingOrBindings] = []
|
4029
|
-
|
4030
|
-
return inj.as_bindings(*lst)
|
4031
|
-
|
4032
|
-
|
4033
4024
|
########################################
|
4034
4025
|
# ../../../omlish/logs/standard.py
|
4035
4026
|
"""
|
@@ -4435,6 +4426,9 @@ class BaseSubprocesses(abc.ABC): # noqa
|
|
4435
4426
|
# ../resolvers.py
|
4436
4427
|
|
4437
4428
|
|
4429
|
+
##
|
4430
|
+
|
4431
|
+
|
4438
4432
|
@dc.dataclass(frozen=True)
|
4439
4433
|
class InterpResolverProviders:
|
4440
4434
|
providers: ta.Sequence[ta.Tuple[str, InterpProvider]]
|
@@ -4829,6 +4823,9 @@ asyncio_subprocesses = AsyncioSubprocesses()
|
|
4829
4823
|
# ../inspect.py
|
4830
4824
|
|
4831
4825
|
|
4826
|
+
##
|
4827
|
+
|
4828
|
+
|
4832
4829
|
@dc.dataclass(frozen=True)
|
4833
4830
|
class InterpInspection:
|
4834
4831
|
exe: str
|
@@ -4938,6 +4935,9 @@ TODO:
|
|
4938
4935
|
"""
|
4939
4936
|
|
4940
4937
|
|
4938
|
+
##
|
4939
|
+
|
4940
|
+
|
4941
4941
|
class Pyenv:
|
4942
4942
|
def __init__(
|
4943
4943
|
self,
|
@@ -5005,10 +5005,74 @@ class Pyenv:
|
|
5005
5005
|
return True
|
5006
5006
|
|
5007
5007
|
|
5008
|
+
########################################
|
5009
|
+
# ../uv/uv.py
|
5010
|
+
|
5011
|
+
|
5012
|
+
##
|
5013
|
+
|
5014
|
+
|
5015
|
+
@dc.dataclass(frozen=True)
|
5016
|
+
class UvConfig:
|
5017
|
+
ignore_path: bool = False
|
5018
|
+
pip_bootstrap: bool = True
|
5019
|
+
|
5020
|
+
|
5021
|
+
class Uv:
|
5022
|
+
def __init__(
|
5023
|
+
self,
|
5024
|
+
config: UvConfig = UvConfig(),
|
5025
|
+
*,
|
5026
|
+
log: ta.Optional[logging.Logger] = None,
|
5027
|
+
) -> None:
|
5028
|
+
super().__init__()
|
5029
|
+
|
5030
|
+
self._config = config
|
5031
|
+
self._log = log
|
5032
|
+
|
5033
|
+
self._bootstrap_dir: ta.Optional[str] = None
|
5034
|
+
|
5035
|
+
def delete_bootstrap_dir(self) -> bool:
|
5036
|
+
if (bs := self._bootstrap_dir) is None:
|
5037
|
+
return False
|
5038
|
+
|
5039
|
+
shutil.rmtree(bs)
|
5040
|
+
self._bootstrap_dir = None
|
5041
|
+
return True
|
5042
|
+
|
5043
|
+
@async_cached_nullary
|
5044
|
+
async def uv_exe(self) -> ta.Optional[str]:
|
5045
|
+
if not self._config.ignore_path and (uv := shutil.which('uv')):
|
5046
|
+
return uv
|
5047
|
+
|
5048
|
+
if self._config.pip_bootstrap:
|
5049
|
+
if (bd := self._bootstrap_dir) is None:
|
5050
|
+
bd = self._bootstrap_dir = tempfile.mkdtemp()
|
5051
|
+
|
5052
|
+
if self._log is not None:
|
5053
|
+
self._log.info(f'Bootstrapping uv into %s', bd)
|
5054
|
+
|
5055
|
+
vn = 'uv-bootstrap'
|
5056
|
+
await asyncio_subprocesses.check_call(os.path.realpath(sys.executable), '-m', 'venv', vn, cwd=bd)
|
5057
|
+
|
5058
|
+
vx = os.path.join(bd, vn, 'bin', 'python3')
|
5059
|
+
await asyncio_subprocesses.check_call(vx, '-m', 'pip', 'install', 'uv', cwd=bd)
|
5060
|
+
|
5061
|
+
ux = os.path.join(bd, vn, 'bin', 'uv')
|
5062
|
+
check.state(os.path.isfile(ux))
|
5063
|
+
|
5064
|
+
return ux
|
5065
|
+
|
5066
|
+
return None
|
5067
|
+
|
5068
|
+
|
5008
5069
|
########################################
|
5009
5070
|
# ../providers/running.py
|
5010
5071
|
|
5011
5072
|
|
5073
|
+
##
|
5074
|
+
|
5075
|
+
|
5012
5076
|
class RunningInterpProvider(InterpProvider):
|
5013
5077
|
@cached_nullary
|
5014
5078
|
def version(self) -> InterpVersion:
|
@@ -5415,10 +5479,47 @@ class PyenvVersionInstaller:
|
|
5415
5479
|
return exe
|
5416
5480
|
|
5417
5481
|
|
5482
|
+
########################################
|
5483
|
+
# ../uv/provider.py
|
5484
|
+
"""
|
5485
|
+
uv run pip
|
5486
|
+
uv run --python 3.11.6 pip
|
5487
|
+
uv venv --python 3.11.6 --seed barf
|
5488
|
+
python3 -m venv barf && barf/bin/pip install uv && barf/bin/uv venv --python 3.11.6 --seed barf2
|
5489
|
+
"""
|
5490
|
+
|
5491
|
+
|
5492
|
+
##
|
5493
|
+
|
5494
|
+
|
5495
|
+
class UvInterpProvider(InterpProvider):
|
5496
|
+
def __init__(
|
5497
|
+
self,
|
5498
|
+
*,
|
5499
|
+
pyenv: Uv,
|
5500
|
+
inspector: InterpInspector,
|
5501
|
+
log: ta.Optional[logging.Logger] = None,
|
5502
|
+
) -> None:
|
5503
|
+
super().__init__()
|
5504
|
+
|
5505
|
+
self._pyenv = pyenv
|
5506
|
+
self._inspector = inspector
|
5507
|
+
self._log = log
|
5508
|
+
|
5509
|
+
async def get_installed_versions(self, spec: InterpSpecifier) -> ta.Sequence[InterpVersion]:
|
5510
|
+
return []
|
5511
|
+
|
5512
|
+
async def get_installed_version(self, version: InterpVersion) -> Interp:
|
5513
|
+
raise NotImplementedError
|
5514
|
+
|
5515
|
+
|
5418
5516
|
########################################
|
5419
5517
|
# ../providers/inject.py
|
5420
5518
|
|
5421
5519
|
|
5520
|
+
##
|
5521
|
+
|
5522
|
+
|
5422
5523
|
def bind_interp_providers() -> InjectorBindings:
|
5423
5524
|
lst: ta.List[InjectorBindingOrBindings] = [
|
5424
5525
|
inj.bind_array(InterpProvider),
|
@@ -5438,6 +5539,9 @@ def bind_interp_providers() -> InjectorBindings:
|
|
5438
5539
|
# ../pyenv/provider.py
|
5439
5540
|
|
5440
5541
|
|
5542
|
+
##
|
5543
|
+
|
5544
|
+
|
5441
5545
|
class PyenvInterpProvider(InterpProvider):
|
5442
5546
|
@dc.dataclass(frozen=True)
|
5443
5547
|
class Options:
|
@@ -5565,10 +5669,31 @@ class PyenvInterpProvider(InterpProvider):
|
|
5565
5669
|
return Interp(exe, version)
|
5566
5670
|
|
5567
5671
|
|
5672
|
+
########################################
|
5673
|
+
# ../uv/inject.py
|
5674
|
+
|
5675
|
+
|
5676
|
+
##
|
5677
|
+
|
5678
|
+
|
5679
|
+
def bind_interp_uv() -> InjectorBindings:
|
5680
|
+
lst: ta.List[InjectorBindingOrBindings] = [
|
5681
|
+
inj.bind(Uv, singleton=True),
|
5682
|
+
|
5683
|
+
inj.bind(UvInterpProvider, singleton=True),
|
5684
|
+
inj.bind(InterpProvider, to_key=UvInterpProvider, array=True),
|
5685
|
+
]
|
5686
|
+
|
5687
|
+
return inj.as_bindings(*lst)
|
5688
|
+
|
5689
|
+
|
5568
5690
|
########################################
|
5569
5691
|
# ../pyenv/inject.py
|
5570
5692
|
|
5571
5693
|
|
5694
|
+
##
|
5695
|
+
|
5696
|
+
|
5572
5697
|
def bind_interp_pyenv() -> InjectorBindings:
|
5573
5698
|
lst: ta.List[InjectorBindingOrBindings] = [
|
5574
5699
|
inj.bind(Pyenv, singleton=True),
|
@@ -5584,6 +5709,9 @@ def bind_interp_pyenv() -> InjectorBindings:
|
|
5584
5709
|
# ../inject.py
|
5585
5710
|
|
5586
5711
|
|
5712
|
+
##
|
5713
|
+
|
5714
|
+
|
5587
5715
|
def bind_interp() -> InjectorBindings:
|
5588
5716
|
lst: ta.List[InjectorBindingOrBindings] = [
|
5589
5717
|
bind_interp_providers(),
|
@@ -5603,6 +5731,7 @@ def bind_interp() -> InjectorBindings:
|
|
5603
5731
|
injector.provide(c)
|
5604
5732
|
for c in [
|
5605
5733
|
PyenvInterpProvider,
|
5734
|
+
UvInterpProvider,
|
5606
5735
|
RunningInterpProvider,
|
5607
5736
|
SystemInterpProvider,
|
5608
5737
|
]
|
@@ -5625,6 +5754,9 @@ def bind_interp() -> InjectorBindings:
|
|
5625
5754
|
# cli.py
|
5626
5755
|
|
5627
5756
|
|
5757
|
+
##
|
5758
|
+
|
5759
|
+
|
5628
5760
|
class InterpCli(ArgparseCli):
|
5629
5761
|
@cached_nullary
|
5630
5762
|
def injector(self) -> Injector:
|