omdev 0.0.0.dev440__tar.gz → 0.0.0.dev442__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.dev440/omdev.egg-info → omdev-0.0.0.dev442}/PKG-INFO +2 -2
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/venvs.py +1 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/_dumping.py +56 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/requires.py +6 -6
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/reqs.py +31 -9
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/venvs.py +8 -1
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/ci.py +149 -47
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/interp.py +56 -2
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/lib/inject.py +0 -2
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/pyproject.py +579 -12
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/pyproject.toml +2 -2
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/LICENSE +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/README.md +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/intellij/open.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/building.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/resources/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev440 → omdev-0.0.0.dev442}/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.dev442
|
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.dev442
|
18
18
|
Provides-Extra: all
|
19
19
|
Requires-Dist: black~=25.1; extra == "all"
|
20
20
|
Requires-Dist: pycparser~=2.23; extra == "all"
|
@@ -227,6 +227,62 @@ def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
|
227
227
|
return _AsyncCachedNullary(fn)
|
228
228
|
|
229
229
|
|
230
|
+
##
|
231
|
+
|
232
|
+
|
233
|
+
cached_property = functools.cached_property
|
234
|
+
|
235
|
+
|
236
|
+
class _cached_property: # noqa
|
237
|
+
"""Backported to pick up https://github.com/python/cpython/commit/056dfc71dce15f81887f0bd6da09d6099d71f979 ."""
|
238
|
+
|
239
|
+
def __init__(self, func):
|
240
|
+
self.func = func
|
241
|
+
self.attrname = None # noqa
|
242
|
+
self.__doc__ = func.__doc__
|
243
|
+
self.__module__ = func.__module__
|
244
|
+
|
245
|
+
_NOT_FOUND = object()
|
246
|
+
|
247
|
+
def __set_name__(self, owner, name):
|
248
|
+
if self.attrname is None:
|
249
|
+
self.attrname = name # noqa
|
250
|
+
elif name != self.attrname:
|
251
|
+
raise TypeError(
|
252
|
+
f'Cannot assign the same cached_property to two different names ({self.attrname!r} and {name!r}).',
|
253
|
+
)
|
254
|
+
|
255
|
+
def __get__(self, instance, owner=None):
|
256
|
+
if instance is None:
|
257
|
+
return self
|
258
|
+
if self.attrname is None:
|
259
|
+
raise TypeError('Cannot use cached_property instance without calling __set_name__ on it.')
|
260
|
+
|
261
|
+
try:
|
262
|
+
cache = instance.__dict__
|
263
|
+
except AttributeError: # not all objects have __dict__ (e.g. class defines slots)
|
264
|
+
raise TypeError(
|
265
|
+
f"No '__dict__' attribute on {type(instance).__name__!r} instance to cache {self.attrname!r} property.",
|
266
|
+
) from None
|
267
|
+
|
268
|
+
val = cache.get(self.attrname, self._NOT_FOUND)
|
269
|
+
|
270
|
+
if val is self._NOT_FOUND:
|
271
|
+
val = self.func(instance)
|
272
|
+
try:
|
273
|
+
cache[self.attrname] = val
|
274
|
+
except TypeError:
|
275
|
+
raise TypeError(
|
276
|
+
f"The '__dict__' attribute on {type(instance).__name__!r} instance does not support item "
|
277
|
+
f"assignment for caching {self.attrname!r} property.",
|
278
|
+
) from None
|
279
|
+
|
280
|
+
return val
|
281
|
+
|
282
|
+
|
283
|
+
globals()['cached_property'] = _cached_property
|
284
|
+
|
285
|
+
|
230
286
|
########################################
|
231
287
|
# ../../../omlish/lite/check.py
|
232
288
|
"""
|
@@ -33,6 +33,12 @@ from omlish.lite.check import check
|
|
33
33
|
from .specifiers import Specifier
|
34
34
|
|
35
35
|
|
36
|
+
RequiresMarkerVar = ta.Union['RequiresVariable', 'RequiresValue'] # ta.TypeAlias
|
37
|
+
|
38
|
+
RequiresMarkerAtom = ta.Union['RequiresMarkerItem', ta.Sequence['RequiresMarkerAtom']] # ta.TypeAlias
|
39
|
+
RequiresMarkerList = ta.Sequence[ta.Union['RequiresMarkerList', 'RequiresMarkerAtom', str]] # ta.TypeAlias
|
40
|
+
|
41
|
+
|
36
42
|
##
|
37
43
|
|
38
44
|
|
@@ -229,12 +235,6 @@ class RequiresOp(RequiresNode):
|
|
229
235
|
return str(self)
|
230
236
|
|
231
237
|
|
232
|
-
RequiresMarkerVar = ta.Union['RequiresVariable', 'RequiresValue']
|
233
|
-
|
234
|
-
RequiresMarkerAtom = ta.Union['RequiresMarkerItem', ta.Sequence['RequiresMarkerAtom']]
|
235
|
-
RequiresMarkerList = ta.Sequence[ta.Union['RequiresMarkerList', 'RequiresMarkerAtom', str]]
|
236
|
-
|
237
|
-
|
238
238
|
class RequiresMarkerItem(ta.NamedTuple):
|
239
239
|
l: ta.Union[RequiresVariable, RequiresValue]
|
240
240
|
op: RequiresOp
|
@@ -4,12 +4,16 @@ TODO:
|
|
4
4
|
"""
|
5
5
|
# ruff: noqa: UP007 UP045
|
6
6
|
import os.path
|
7
|
+
import re
|
7
8
|
import tempfile
|
8
9
|
import typing as ta
|
9
10
|
|
10
11
|
from omlish.lite.cached import cached_nullary
|
11
12
|
from omlish.logs.modules import get_module_logger
|
12
13
|
|
14
|
+
from ..packaging.requires import RequiresParserSyntaxError
|
15
|
+
from ..packaging.requires import parse_requirement
|
16
|
+
|
13
17
|
|
14
18
|
log = get_module_logger(globals()) # noqa
|
15
19
|
|
@@ -20,11 +24,14 @@ log = get_module_logger(globals()) # noqa
|
|
20
24
|
class RequirementsRewriter:
|
21
25
|
def __init__(
|
22
26
|
self,
|
27
|
+
*,
|
23
28
|
venv: ta.Optional[str] = None,
|
29
|
+
only_pats: ta.Optional[ta.Sequence[re.Pattern]] = None,
|
24
30
|
) -> None:
|
25
31
|
super().__init__()
|
26
32
|
|
27
33
|
self._venv = venv
|
34
|
+
self._only_pats = only_pats
|
28
35
|
|
29
36
|
@cached_nullary
|
30
37
|
def _tmp_dir(self) -> str:
|
@@ -40,17 +47,32 @@ class RequirementsRewriter:
|
|
40
47
|
out_lines = []
|
41
48
|
|
42
49
|
for l in in_lines:
|
43
|
-
if
|
44
|
-
lp, _, rp = l.partition(self.VENV_MAGIC)
|
45
|
-
rp = rp.partition('#')[0]
|
50
|
+
if l.split('#')[0].strip():
|
46
51
|
omit = False
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
+
|
53
|
+
if self.VENV_MAGIC in l:
|
54
|
+
lp, _, rp = l.partition(self.VENV_MAGIC)
|
55
|
+
rp = rp.partition('#')[0]
|
56
|
+
for v in rp.split():
|
57
|
+
if v[0] == '!':
|
58
|
+
if self._venv is not None and self._venv == v[1:]:
|
59
|
+
omit = True
|
60
|
+
break
|
61
|
+
else:
|
62
|
+
raise NotImplementedError
|
63
|
+
|
64
|
+
if (
|
65
|
+
not omit and
|
66
|
+
(ops := self._only_pats) is not None and
|
67
|
+
not l.strip().startswith('-')
|
68
|
+
):
|
69
|
+
try:
|
70
|
+
pr = parse_requirement(l.split('#')[0].strip())
|
71
|
+
except RequiresParserSyntaxError:
|
72
|
+
pass
|
52
73
|
else:
|
53
|
-
|
74
|
+
if not any(op.fullmatch(pr.name) for op in ops):
|
75
|
+
omit = True
|
54
76
|
|
55
77
|
if omit:
|
56
78
|
out_lines.append('# OMITTED: ' + l)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
import glob
|
3
3
|
import os.path
|
4
|
+
import re
|
4
5
|
import typing as ta
|
5
6
|
|
6
7
|
from omlish.lite.cached import async_cached_nullary
|
@@ -42,7 +43,13 @@ class Venv:
|
|
42
43
|
|
43
44
|
@cached_nullary
|
44
45
|
def _iv(self) -> InterpVenv:
|
45
|
-
rr = RequirementsRewriter(
|
46
|
+
rr = RequirementsRewriter(
|
47
|
+
venv=self._name,
|
48
|
+
only_pats=(
|
49
|
+
[re.compile(p) for p in self._cfg.requires_pats]
|
50
|
+
if self._cfg.requires_pats is not None else None
|
51
|
+
),
|
52
|
+
)
|
46
53
|
|
47
54
|
return InterpVenv(
|
48
55
|
self.dir_name,
|
@@ -670,6 +670,62 @@ def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
|
670
670
|
return _AsyncCachedNullary(fn)
|
671
671
|
|
672
672
|
|
673
|
+
##
|
674
|
+
|
675
|
+
|
676
|
+
cached_property = functools.cached_property
|
677
|
+
|
678
|
+
|
679
|
+
class _cached_property: # noqa
|
680
|
+
"""Backported to pick up https://github.com/python/cpython/commit/056dfc71dce15f81887f0bd6da09d6099d71f979 ."""
|
681
|
+
|
682
|
+
def __init__(self, func):
|
683
|
+
self.func = func
|
684
|
+
self.attrname = None # noqa
|
685
|
+
self.__doc__ = func.__doc__
|
686
|
+
self.__module__ = func.__module__
|
687
|
+
|
688
|
+
_NOT_FOUND = object()
|
689
|
+
|
690
|
+
def __set_name__(self, owner, name):
|
691
|
+
if self.attrname is None:
|
692
|
+
self.attrname = name # noqa
|
693
|
+
elif name != self.attrname:
|
694
|
+
raise TypeError(
|
695
|
+
f'Cannot assign the same cached_property to two different names ({self.attrname!r} and {name!r}).',
|
696
|
+
)
|
697
|
+
|
698
|
+
def __get__(self, instance, owner=None):
|
699
|
+
if instance is None:
|
700
|
+
return self
|
701
|
+
if self.attrname is None:
|
702
|
+
raise TypeError('Cannot use cached_property instance without calling __set_name__ on it.')
|
703
|
+
|
704
|
+
try:
|
705
|
+
cache = instance.__dict__
|
706
|
+
except AttributeError: # not all objects have __dict__ (e.g. class defines slots)
|
707
|
+
raise TypeError(
|
708
|
+
f"No '__dict__' attribute on {type(instance).__name__!r} instance to cache {self.attrname!r} property.",
|
709
|
+
) from None
|
710
|
+
|
711
|
+
val = cache.get(self.attrname, self._NOT_FOUND)
|
712
|
+
|
713
|
+
if val is self._NOT_FOUND:
|
714
|
+
val = self.func(instance)
|
715
|
+
try:
|
716
|
+
cache[self.attrname] = val
|
717
|
+
except TypeError:
|
718
|
+
raise TypeError(
|
719
|
+
f"The '__dict__' attribute on {type(instance).__name__!r} instance does not support item "
|
720
|
+
f"assignment for caching {self.attrname!r} property.",
|
721
|
+
) from None
|
722
|
+
|
723
|
+
return val
|
724
|
+
|
725
|
+
|
726
|
+
globals()['cached_property'] = _cached_property
|
727
|
+
|
728
|
+
|
673
729
|
########################################
|
674
730
|
# ../../../omlish/lite/check.py
|
675
731
|
"""
|
@@ -1366,6 +1422,17 @@ aclosing = AsyncClosingManager
|
|
1366
1422
|
##
|
1367
1423
|
|
1368
1424
|
|
1425
|
+
def dataclass_shallow_astuple(o: ta.Any) -> ta.Tuple[ta.Any, ...]:
|
1426
|
+
return tuple(getattr(o, f.name) for f in dc.fields(o))
|
1427
|
+
|
1428
|
+
|
1429
|
+
def dataclass_shallow_asdict(o: ta.Any) -> ta.Dict[str, ta.Any]:
|
1430
|
+
return {f.name: getattr(o, f.name) for f in dc.fields(o)}
|
1431
|
+
|
1432
|
+
|
1433
|
+
##
|
1434
|
+
|
1435
|
+
|
1369
1436
|
def is_immediate_dataclass(cls: type) -> bool:
|
1370
1437
|
if not isinstance(cls, type):
|
1371
1438
|
raise TypeError(cls)
|
@@ -3254,6 +3321,70 @@ class ArgparseCli:
|
|
3254
3321
|
return fn()
|
3255
3322
|
|
3256
3323
|
|
3324
|
+
########################################
|
3325
|
+
# ../../../omlish/http/coro/io.py
|
3326
|
+
|
3327
|
+
|
3328
|
+
##
|
3329
|
+
|
3330
|
+
|
3331
|
+
class CoroHttpIo:
|
3332
|
+
def __new__(cls, *args, **kwargs): # noqa
|
3333
|
+
raise TypeError
|
3334
|
+
|
3335
|
+
def __init_subclass__(cls, **kwargs): # noqa
|
3336
|
+
raise TypeError
|
3337
|
+
|
3338
|
+
#
|
3339
|
+
|
3340
|
+
MAX_LINE: ta.ClassVar[int] = 65536
|
3341
|
+
|
3342
|
+
#
|
3343
|
+
|
3344
|
+
class Io(Abstract):
|
3345
|
+
pass
|
3346
|
+
|
3347
|
+
#
|
3348
|
+
|
3349
|
+
class AnyLogIo(Io, Abstract):
|
3350
|
+
pass
|
3351
|
+
|
3352
|
+
#
|
3353
|
+
|
3354
|
+
@dc.dataclass(frozen=True)
|
3355
|
+
class ConnectIo(Io):
|
3356
|
+
args: ta.Tuple[ta.Any, ...]
|
3357
|
+
kwargs: ta.Optional[ta.Dict[str, ta.Any]] = None
|
3358
|
+
|
3359
|
+
#
|
3360
|
+
|
3361
|
+
class CloseIo(Io):
|
3362
|
+
pass
|
3363
|
+
|
3364
|
+
#
|
3365
|
+
|
3366
|
+
class AnyReadIo(Io): # noqa
|
3367
|
+
pass
|
3368
|
+
|
3369
|
+
@dc.dataclass(frozen=True)
|
3370
|
+
class ReadIo(AnyReadIo):
|
3371
|
+
sz: ta.Optional[int]
|
3372
|
+
|
3373
|
+
@dc.dataclass(frozen=True)
|
3374
|
+
class ReadLineIo(AnyReadIo):
|
3375
|
+
sz: int
|
3376
|
+
|
3377
|
+
@dc.dataclass(frozen=True)
|
3378
|
+
class PeekIo(AnyReadIo):
|
3379
|
+
sz: int
|
3380
|
+
|
3381
|
+
#
|
3382
|
+
|
3383
|
+
@dc.dataclass(frozen=True)
|
3384
|
+
class WriteIo(Io):
|
3385
|
+
data: bytes
|
3386
|
+
|
3387
|
+
|
3257
3388
|
########################################
|
3258
3389
|
# ../../../omlish/http/parsing.py
|
3259
3390
|
# PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
|
@@ -4587,8 +4718,6 @@ class _JustMaybe(_Maybe[T]):
|
|
4587
4718
|
__slots__ = ('_v', '_hash')
|
4588
4719
|
|
4589
4720
|
def __init__(self, v: T) -> None:
|
4590
|
-
super().__init__()
|
4591
|
-
|
4592
4721
|
self._v = v
|
4593
4722
|
|
4594
4723
|
@property
|
@@ -9247,48 +9376,21 @@ class CoroHttpServer:
|
|
9247
9376
|
|
9248
9377
|
#
|
9249
9378
|
|
9250
|
-
class Io(Abstract):
|
9251
|
-
pass
|
9252
|
-
|
9253
|
-
#
|
9254
|
-
|
9255
|
-
class AnyLogIo(Io):
|
9256
|
-
pass
|
9257
|
-
|
9258
9379
|
@dc.dataclass(frozen=True)
|
9259
|
-
class ParsedRequestLogIo(AnyLogIo):
|
9380
|
+
class ParsedRequestLogIo(CoroHttpIo.AnyLogIo):
|
9260
9381
|
request: ParsedHttpRequest
|
9261
9382
|
|
9262
9383
|
@dc.dataclass(frozen=True)
|
9263
|
-
class ErrorLogIo(AnyLogIo):
|
9384
|
+
class ErrorLogIo(CoroHttpIo.AnyLogIo):
|
9264
9385
|
error: 'CoroHttpServer.Error'
|
9265
9386
|
|
9266
9387
|
#
|
9267
9388
|
|
9268
|
-
class AnyReadIo(Io): # noqa
|
9269
|
-
pass
|
9270
|
-
|
9271
|
-
@dc.dataclass(frozen=True)
|
9272
|
-
class ReadIo(AnyReadIo):
|
9273
|
-
sz: int
|
9274
|
-
|
9275
|
-
@dc.dataclass(frozen=True)
|
9276
|
-
class ReadLineIo(AnyReadIo):
|
9277
|
-
sz: int
|
9278
|
-
|
9279
|
-
#
|
9280
|
-
|
9281
|
-
@dc.dataclass(frozen=True)
|
9282
|
-
class WriteIo(Io):
|
9283
|
-
data: bytes
|
9284
|
-
|
9285
|
-
#
|
9286
|
-
|
9287
9389
|
@dc.dataclass(frozen=True)
|
9288
9390
|
class CoroHandleResult:
|
9289
9391
|
close_reason: ta.Literal['response', 'internal', None] = None
|
9290
9392
|
|
9291
|
-
def coro_handle(self) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
9393
|
+
def coro_handle(self) -> ta.Generator[CoroHttpIo.Io, ta.Optional[bytes], CoroHandleResult]:
|
9292
9394
|
return self._coro_run_handler(self._coro_handle_one())
|
9293
9395
|
|
9294
9396
|
class Close(Exception): # noqa
|
@@ -9297,20 +9399,20 @@ class CoroHttpServer:
|
|
9297
9399
|
def _coro_run_handler(
|
9298
9400
|
self,
|
9299
9401
|
gen: ta.Generator[
|
9300
|
-
ta.Union[AnyLogIo, AnyReadIo, _Response],
|
9402
|
+
ta.Union[CoroHttpIo.AnyLogIo, CoroHttpIo.AnyReadIo, _Response],
|
9301
9403
|
ta.Optional[bytes],
|
9302
9404
|
None,
|
9303
9405
|
],
|
9304
|
-
) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
9406
|
+
) -> ta.Generator[CoroHttpIo.Io, ta.Optional[bytes], CoroHandleResult]:
|
9305
9407
|
i: ta.Optional[bytes]
|
9306
9408
|
o: ta.Any = next(gen)
|
9307
9409
|
while True:
|
9308
9410
|
try:
|
9309
|
-
if isinstance(o,
|
9411
|
+
if isinstance(o, CoroHttpIo.AnyLogIo):
|
9310
9412
|
i = None
|
9311
9413
|
yield o
|
9312
9414
|
|
9313
|
-
elif isinstance(o,
|
9415
|
+
elif isinstance(o, CoroHttpIo.AnyReadIo):
|
9314
9416
|
i = check.isinstance((yield o), bytes)
|
9315
9417
|
|
9316
9418
|
elif isinstance(o, self._Response):
|
@@ -9318,10 +9420,10 @@ class CoroHttpServer:
|
|
9318
9420
|
|
9319
9421
|
r = self._preprocess_response(o)
|
9320
9422
|
hb = self._build_response_head_bytes(r)
|
9321
|
-
check.none((yield
|
9423
|
+
check.none((yield CoroHttpIo.WriteIo(hb)))
|
9322
9424
|
|
9323
9425
|
for b in self._yield_response_data(r):
|
9324
|
-
yield
|
9426
|
+
yield CoroHttpIo.WriteIo(b)
|
9325
9427
|
|
9326
9428
|
o.close()
|
9327
9429
|
if o.close_connection:
|
@@ -9349,7 +9451,7 @@ class CoroHttpServer:
|
|
9349
9451
|
raise
|
9350
9452
|
|
9351
9453
|
def _coro_handle_one(self) -> ta.Generator[
|
9352
|
-
ta.Union[AnyLogIo, AnyReadIo, _Response],
|
9454
|
+
ta.Union[CoroHttpIo.AnyLogIo, CoroHttpIo.AnyReadIo, _Response],
|
9353
9455
|
ta.Optional[bytes],
|
9354
9456
|
None,
|
9355
9457
|
]:
|
@@ -9359,7 +9461,7 @@ class CoroHttpServer:
|
|
9359
9461
|
sz = next(gen)
|
9360
9462
|
while True:
|
9361
9463
|
try:
|
9362
|
-
line = check.isinstance((yield
|
9464
|
+
line = check.isinstance((yield CoroHttpIo.ReadLineIo(sz)), bytes)
|
9363
9465
|
sz = gen.send(line)
|
9364
9466
|
except StopIteration as e:
|
9365
9467
|
parsed = e.value
|
@@ -9398,7 +9500,7 @@ class CoroHttpServer:
|
|
9398
9500
|
|
9399
9501
|
request_data: ta.Optional[bytes]
|
9400
9502
|
if (cl := parsed.headers.get('Content-Length')) is not None:
|
9401
|
-
request_data = check.isinstance((yield
|
9503
|
+
request_data = check.isinstance((yield CoroHttpIo.ReadIo(int(cl))), bytes)
|
9402
9504
|
else:
|
9403
9505
|
request_data = None
|
9404
9506
|
|
@@ -11443,7 +11545,7 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
11443
11545
|
server_factory: CoroHttpServerFactory,
|
11444
11546
|
*,
|
11445
11547
|
keep_alive: bool = False,
|
11446
|
-
log_handler: ta.Optional[ta.Callable[[CoroHttpServer,
|
11548
|
+
log_handler: ta.Optional[ta.Callable[[CoroHttpServer, CoroHttpIo.AnyLogIo], None]] = None,
|
11447
11549
|
) -> None:
|
11448
11550
|
super().__init__()
|
11449
11551
|
|
@@ -11472,18 +11574,18 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
11472
11574
|
|
11473
11575
|
o = next(gen)
|
11474
11576
|
while True:
|
11475
|
-
if isinstance(o,
|
11577
|
+
if isinstance(o, CoroHttpIo.AnyLogIo):
|
11476
11578
|
i = None
|
11477
11579
|
if self._log_handler is not None:
|
11478
11580
|
self._log_handler(server, o)
|
11479
11581
|
|
11480
|
-
elif isinstance(o,
|
11481
|
-
i = fp.r.read(o.sz)
|
11582
|
+
elif isinstance(o, CoroHttpIo.ReadIo):
|
11583
|
+
i = fp.r.read(check.not_none(o.sz))
|
11482
11584
|
|
11483
|
-
elif isinstance(o,
|
11585
|
+
elif isinstance(o, CoroHttpIo.ReadLineIo):
|
11484
11586
|
i = fp.r.readline(o.sz)
|
11485
11587
|
|
11486
|
-
elif isinstance(o,
|
11588
|
+
elif isinstance(o, CoroHttpIo.WriteIo):
|
11487
11589
|
i = None
|
11488
11590
|
fp.w.write(o.data)
|
11489
11591
|
fp.w.flush()
|
@@ -686,6 +686,62 @@ def async_cached_nullary(fn): # ta.Callable[..., T]) -> ta.Callable[..., T]:
|
|
686
686
|
return _AsyncCachedNullary(fn)
|
687
687
|
|
688
688
|
|
689
|
+
##
|
690
|
+
|
691
|
+
|
692
|
+
cached_property = functools.cached_property
|
693
|
+
|
694
|
+
|
695
|
+
class _cached_property: # noqa
|
696
|
+
"""Backported to pick up https://github.com/python/cpython/commit/056dfc71dce15f81887f0bd6da09d6099d71f979 ."""
|
697
|
+
|
698
|
+
def __init__(self, func):
|
699
|
+
self.func = func
|
700
|
+
self.attrname = None # noqa
|
701
|
+
self.__doc__ = func.__doc__
|
702
|
+
self.__module__ = func.__module__
|
703
|
+
|
704
|
+
_NOT_FOUND = object()
|
705
|
+
|
706
|
+
def __set_name__(self, owner, name):
|
707
|
+
if self.attrname is None:
|
708
|
+
self.attrname = name # noqa
|
709
|
+
elif name != self.attrname:
|
710
|
+
raise TypeError(
|
711
|
+
f'Cannot assign the same cached_property to two different names ({self.attrname!r} and {name!r}).',
|
712
|
+
)
|
713
|
+
|
714
|
+
def __get__(self, instance, owner=None):
|
715
|
+
if instance is None:
|
716
|
+
return self
|
717
|
+
if self.attrname is None:
|
718
|
+
raise TypeError('Cannot use cached_property instance without calling __set_name__ on it.')
|
719
|
+
|
720
|
+
try:
|
721
|
+
cache = instance.__dict__
|
722
|
+
except AttributeError: # not all objects have __dict__ (e.g. class defines slots)
|
723
|
+
raise TypeError(
|
724
|
+
f"No '__dict__' attribute on {type(instance).__name__!r} instance to cache {self.attrname!r} property.",
|
725
|
+
) from None
|
726
|
+
|
727
|
+
val = cache.get(self.attrname, self._NOT_FOUND)
|
728
|
+
|
729
|
+
if val is self._NOT_FOUND:
|
730
|
+
val = self.func(instance)
|
731
|
+
try:
|
732
|
+
cache[self.attrname] = val
|
733
|
+
except TypeError:
|
734
|
+
raise TypeError(
|
735
|
+
f"The '__dict__' attribute on {type(instance).__name__!r} instance does not support item "
|
736
|
+
f"assignment for caching {self.attrname!r} property.",
|
737
|
+
) from None
|
738
|
+
|
739
|
+
return val
|
740
|
+
|
741
|
+
|
742
|
+
globals()['cached_property'] = _cached_property
|
743
|
+
|
744
|
+
|
689
745
|
########################################
|
690
746
|
# ../../../omlish/lite/check.py
|
691
747
|
"""
|
@@ -2574,8 +2630,6 @@ class _JustMaybe(_Maybe[T]):
|
|
2574
2630
|
__slots__ = ('_v', '_hash')
|
2575
2631
|
|
2576
2632
|
def __init__(self, v: T) -> None:
|
2577
|
-
super().__init__()
|
2578
|
-
|
2579
2633
|
self._v = v
|
2580
2634
|
|
2581
2635
|
@property
|