omdev 0.0.0.dev352__tar.gz → 0.0.0.dev354__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.
Potentially problematic release.
This version of omdev might be problematic. Click here for more details.
- {omdev-0.0.0.dev352/omdev.egg-info → omdev-0.0.0.dev354}/PKG-INFO +3 -3
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/.manifests.json +1 -1
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/clicli.py +12 -2
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/install.py +22 -7
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/ci.py +33 -7
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354/omdev.egg-info}/PKG-INFO +3 -3
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/pyproject.toml +3 -3
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/LICENSE +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/README.md +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/antlr/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/antlr/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/antlr/consts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/antlr/gen.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/intellij.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/resources/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev352 → omdev-0.0.0.dev354}/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.dev354
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -10,9 +10,9 @@ Classifier: Development Status :: 2 - Pre-Alpha
|
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
|
-
Requires-Python: >=3.
|
|
13
|
+
Requires-Python: >=3.13
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev354
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
import os
|
|
3
|
+
import re
|
|
3
4
|
import shlex
|
|
4
5
|
import subprocess
|
|
5
6
|
import sys
|
|
@@ -23,6 +24,15 @@ from .types import CliModule
|
|
|
23
24
|
DEFAULT_REINSTALL_URL = 'https://raw.githubusercontent.com/wrmsr/omlish/master/omdev/cli/install.py'
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
_VALID_VERSION_STR = re.compile(r'\d+(\.\d+(\.\d+(\.dev\d+)?)?)?')
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _parse_latest_version_str(s: str) -> str:
|
|
31
|
+
if not _VALID_VERSION_STR.fullmatch(s):
|
|
32
|
+
raise ValueError(f'Invalid version string: {s}')
|
|
33
|
+
return s
|
|
34
|
+
|
|
35
|
+
|
|
26
36
|
class CliCli(ap.Cli):
|
|
27
37
|
|
|
28
38
|
#
|
|
@@ -84,7 +94,7 @@ class CliCli(ap.Cli):
|
|
|
84
94
|
ap.arg('extra_deps', nargs='*'),
|
|
85
95
|
)
|
|
86
96
|
def reinstall(self) -> None:
|
|
87
|
-
latest_version = lookup_latest_package_version(__package__.split('.')[0])
|
|
97
|
+
latest_version = _parse_latest_version_str(lookup_latest_package_version(__package__.split('.')[0]))
|
|
88
98
|
|
|
89
99
|
#
|
|
90
100
|
|
|
@@ -153,7 +163,7 @@ class CliCli(ap.Cli):
|
|
|
153
163
|
reco_cmd = ' '.join([
|
|
154
164
|
'curl -LsSf',
|
|
155
165
|
f"'{url}'" if (qu := shlex.quote(url)) == url else qu,
|
|
156
|
-
'| python3 -',
|
|
166
|
+
f'| python3 - --version {shlex.quote(latest_version)}',
|
|
157
167
|
*deps,
|
|
158
168
|
])
|
|
159
169
|
print(f'Recovery command:\n\n{reco_cmd}\n')
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
# ruff: noqa: UP045
|
|
2
3
|
# @omlish-lite
|
|
3
4
|
# @omlish-script
|
|
4
5
|
"""
|
|
@@ -19,17 +20,29 @@ import typing as ta
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
DEFAULT_CLI_PKG = 'omdev-cli'
|
|
22
|
-
DEFAULT_PY_VER = '3.
|
|
23
|
+
DEFAULT_PY_VER = '3.13'
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
@dc.dataclass(frozen=True)
|
|
26
27
|
class InstallOpts:
|
|
27
28
|
cli_pkg: str = DEFAULT_CLI_PKG
|
|
29
|
+
cli_ver: ta.Optional[str] = None
|
|
30
|
+
|
|
28
31
|
py_ver: str = DEFAULT_PY_VER
|
|
29
32
|
|
|
30
33
|
extras: ta.Sequence[str] = dc.field(default_factory=list)
|
|
31
34
|
|
|
32
35
|
|
|
36
|
+
def _format_install_cli_pkg(opts: InstallOpts) -> str:
|
|
37
|
+
spec = opts.cli_pkg
|
|
38
|
+
if (ver := opts.cli_ver) is not None:
|
|
39
|
+
if any(c in ver for c in '=<>!~'):
|
|
40
|
+
spec += ver
|
|
41
|
+
else:
|
|
42
|
+
spec = f'{spec}=={ver}'
|
|
43
|
+
return spec
|
|
44
|
+
|
|
45
|
+
|
|
33
46
|
class InstallManager(abc.ABC):
|
|
34
47
|
@abc.abstractmethod
|
|
35
48
|
def is_available(self) -> bool:
|
|
@@ -74,7 +87,7 @@ class UvxInstallManager(InstallManager):
|
|
|
74
87
|
'--refresh',
|
|
75
88
|
'--prerelease=allow',
|
|
76
89
|
f'--python={opts.py_ver}',
|
|
77
|
-
opts
|
|
90
|
+
_format_install_cli_pkg(opts),
|
|
78
91
|
*itertools.chain.from_iterable(['--with', e] for e in (opts.extras or [])),
|
|
79
92
|
])
|
|
80
93
|
|
|
@@ -113,7 +126,7 @@ class PipxInstallManager(InstallManager):
|
|
|
113
126
|
'pipx',
|
|
114
127
|
'install',
|
|
115
128
|
f'--python={opts.py_ver}',
|
|
116
|
-
opts
|
|
129
|
+
_format_install_cli_pkg(opts),
|
|
117
130
|
*itertools.chain.from_iterable(['--preinstall', e] for e in (opts.extras or [])),
|
|
118
131
|
])
|
|
119
132
|
|
|
@@ -140,8 +153,9 @@ def _main() -> None:
|
|
|
140
153
|
|
|
141
154
|
parser = argparse.ArgumentParser()
|
|
142
155
|
parser.add_argument('-c', '--cli', default=DEFAULT_CLI_PKG)
|
|
143
|
-
parser.add_argument('-
|
|
144
|
-
parser.add_argument('-
|
|
156
|
+
parser.add_argument('-V', '--version')
|
|
157
|
+
parser.add_argument('-p', '--python', default=DEFAULT_PY_VER)
|
|
158
|
+
parser.add_argument('-m', '--manager')
|
|
145
159
|
parser.add_argument('extra', nargs='*')
|
|
146
160
|
args = parser.parse_args()
|
|
147
161
|
|
|
@@ -150,10 +164,10 @@ def _main() -> None:
|
|
|
150
164
|
|
|
151
165
|
cli = cli.lower().replace('_', '-')
|
|
152
166
|
|
|
153
|
-
if not (py := args.
|
|
167
|
+
if not (py := args.python):
|
|
154
168
|
raise ValueError(f'Must specify py')
|
|
155
169
|
|
|
156
|
-
if mgr := args.
|
|
170
|
+
if mgr := args.manager:
|
|
157
171
|
if (im := INSTALL_MANAGERS.get(mgr)) is None:
|
|
158
172
|
raise ValueError(f'Unsupported mgr: {mgr}')
|
|
159
173
|
if not im.is_available():
|
|
@@ -171,6 +185,7 @@ def _main() -> None:
|
|
|
171
185
|
|
|
172
186
|
im.install(InstallOpts(
|
|
173
187
|
cli_pkg=cli,
|
|
188
|
+
cli_ver=args.version,
|
|
174
189
|
py_ver=py,
|
|
175
190
|
extras=args.extra,
|
|
176
191
|
))
|
|
@@ -9450,7 +9450,11 @@ class CoroHttpServer:
|
|
|
9450
9450
|
|
|
9451
9451
|
#
|
|
9452
9452
|
|
|
9453
|
-
|
|
9453
|
+
@dc.dataclass(frozen=True)
|
|
9454
|
+
class CoroHandleResult:
|
|
9455
|
+
close_reason: ta.Literal['response', 'internal', None] = None
|
|
9456
|
+
|
|
9457
|
+
def coro_handle(self) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
|
9454
9458
|
return self._coro_run_handler(self._coro_handle_one())
|
|
9455
9459
|
|
|
9456
9460
|
class Close(Exception): # noqa
|
|
@@ -9463,7 +9467,7 @@ class CoroHttpServer:
|
|
|
9463
9467
|
ta.Optional[bytes],
|
|
9464
9468
|
None,
|
|
9465
9469
|
],
|
|
9466
|
-
) -> ta.Generator[Io, ta.Optional[bytes],
|
|
9470
|
+
) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
|
9467
9471
|
i: ta.Optional[bytes]
|
|
9468
9472
|
o: ta.Any = next(gen)
|
|
9469
9473
|
while True:
|
|
@@ -9487,7 +9491,9 @@ class CoroHttpServer:
|
|
|
9487
9491
|
|
|
9488
9492
|
o.close()
|
|
9489
9493
|
if o.close_connection:
|
|
9490
|
-
|
|
9494
|
+
return self.CoroHandleResult(
|
|
9495
|
+
close_reason='response',
|
|
9496
|
+
)
|
|
9491
9497
|
o = None
|
|
9492
9498
|
|
|
9493
9499
|
else:
|
|
@@ -9496,9 +9502,11 @@ class CoroHttpServer:
|
|
|
9496
9502
|
try:
|
|
9497
9503
|
o = gen.send(i)
|
|
9498
9504
|
except self.Close:
|
|
9499
|
-
return
|
|
9505
|
+
return self.CoroHandleResult(
|
|
9506
|
+
close_reason='internal',
|
|
9507
|
+
)
|
|
9500
9508
|
except StopIteration:
|
|
9501
|
-
|
|
9509
|
+
return self.CoroHandleResult()
|
|
9502
9510
|
|
|
9503
9511
|
except Exception: # noqa
|
|
9504
9512
|
if hasattr(o, 'close'):
|
|
@@ -10813,16 +10821,32 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
|
10813
10821
|
self,
|
|
10814
10822
|
server_factory: CoroHttpServerFactory,
|
|
10815
10823
|
*,
|
|
10824
|
+
keep_alive: bool = False,
|
|
10816
10825
|
log_handler: ta.Optional[ta.Callable[[CoroHttpServer, CoroHttpServer.AnyLogIo], None]] = None,
|
|
10817
10826
|
) -> None:
|
|
10818
10827
|
super().__init__()
|
|
10819
10828
|
|
|
10820
10829
|
self._server_factory = server_factory
|
|
10830
|
+
self._keep_alive = keep_alive
|
|
10821
10831
|
self._log_handler = log_handler
|
|
10822
10832
|
|
|
10823
10833
|
def __call__(self, client_address: SocketAddress, fp: SocketIoPair) -> None:
|
|
10824
10834
|
server = self._server_factory(client_address)
|
|
10825
10835
|
|
|
10836
|
+
if self._keep_alive:
|
|
10837
|
+
for i in itertools.count(): # noqa
|
|
10838
|
+
res = self._handle_one(server, fp)
|
|
10839
|
+
if res.close_reason is not None:
|
|
10840
|
+
break
|
|
10841
|
+
|
|
10842
|
+
else:
|
|
10843
|
+
self._handle_one(server, fp)
|
|
10844
|
+
|
|
10845
|
+
def _handle_one(
|
|
10846
|
+
self,
|
|
10847
|
+
server: CoroHttpServer,
|
|
10848
|
+
fp: SocketIoPair,
|
|
10849
|
+
) -> CoroHttpServer.CoroHandleResult:
|
|
10826
10850
|
gen = server.coro_handle()
|
|
10827
10851
|
|
|
10828
10852
|
o = next(gen)
|
|
@@ -10851,8 +10875,8 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
|
10851
10875
|
o = gen.send(i)
|
|
10852
10876
|
else:
|
|
10853
10877
|
o = next(gen)
|
|
10854
|
-
except StopIteration:
|
|
10855
|
-
|
|
10878
|
+
except StopIteration as e:
|
|
10879
|
+
return check.isinstance(e.value, CoroHttpServer.CoroHandleResult)
|
|
10856
10880
|
|
|
10857
10881
|
|
|
10858
10882
|
########################################
|
|
@@ -11666,6 +11690,7 @@ def make_simple_http_server(
|
|
|
11666
11690
|
handler: HttpHandler,
|
|
11667
11691
|
*,
|
|
11668
11692
|
server_version: HttpProtocolVersion = HttpProtocolVersions.HTTP_1_1,
|
|
11693
|
+
keep_alive: bool = False,
|
|
11669
11694
|
ssl_context: ta.Optional['ssl.SSLContext'] = None,
|
|
11670
11695
|
ignore_ssl_errors: bool = False,
|
|
11671
11696
|
executor: ta.Optional[cf.Executor] = None,
|
|
@@ -11687,6 +11712,7 @@ def make_simple_http_server(
|
|
|
11687
11712
|
|
|
11688
11713
|
socket_handler = CoroHttpServerSocketHandler(
|
|
11689
11714
|
server_factory,
|
|
11715
|
+
keep_alive=keep_alive,
|
|
11690
11716
|
)
|
|
11691
11717
|
|
|
11692
11718
|
#
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev354
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -10,9 +10,9 @@ Classifier: Development Status :: 2 - Pre-Alpha
|
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
|
-
Requires-Python: >=3.
|
|
13
|
+
Requires-Python: >=3.13
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev354
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -11,8 +11,8 @@ authors = [
|
|
|
11
11
|
]
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
13
13
|
license = {text = 'BSD-3-Clause'}
|
|
14
|
-
requires-python = '>=3.
|
|
15
|
-
version = '0.0.0.
|
|
14
|
+
requires-python = '>=3.13'
|
|
15
|
+
version = '0.0.0.dev354'
|
|
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.dev354',
|
|
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
|
|
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
|