omdev 0.0.0.dev315__tar.gz → 0.0.0.dev316__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.dev315/omdev.egg-info → omdev-0.0.0.dev316}/PKG-INFO +2 -2
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/ci.py +177 -19
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/interp.py +176 -19
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/pyproject.py +176 -19
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/pyproject.toml +2 -2
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/LICENSE +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/README.md +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/.manifests.json +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/confirm.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/LICENSE +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/border.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/markdown.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/parser.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/styles.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/tags.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/ptk/markdown/utils.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tokens/all.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tokens/utils.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/antlr/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/antlr/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/antlr/consts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/antlr/gen.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/intellij.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev315 → omdev-0.0.0.dev316}/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.dev316
|
4
4
|
Summary: omdev
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
13
13
|
Requires-Python: >=3.12
|
14
14
|
License-File: LICENSE
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
15
|
+
Requires-Dist: omlish==0.0.0.dev316
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -41,6 +41,7 @@ import gzip
|
|
41
41
|
import hashlib
|
42
42
|
import heapq
|
43
43
|
import html
|
44
|
+
import http
|
44
45
|
import http.client
|
45
46
|
import http.server
|
46
47
|
import inspect
|
@@ -98,6 +99,9 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
98
99
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
99
100
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
100
101
|
|
102
|
+
# ../../omlish/lite/maybes.py
|
103
|
+
U = ta.TypeVar('U')
|
104
|
+
|
101
105
|
# ../../omlish/lite/timeouts.py
|
102
106
|
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
|
103
107
|
|
@@ -122,7 +126,6 @@ ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
|
|
122
126
|
AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
|
123
127
|
|
124
128
|
# ../../omlish/lite/inject.py
|
125
|
-
U = ta.TypeVar('U')
|
126
129
|
InjectorKeyCls = ta.Union[type, ta.NewType]
|
127
130
|
InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
|
128
131
|
InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
|
@@ -1145,7 +1148,13 @@ log = logging.getLogger(__name__)
|
|
1145
1148
|
##
|
1146
1149
|
|
1147
1150
|
|
1151
|
+
@functools.total_ordering
|
1148
1152
|
class Maybe(ta.Generic[T]):
|
1153
|
+
class ValueNotPresentError(BaseException):
|
1154
|
+
pass
|
1155
|
+
|
1156
|
+
#
|
1157
|
+
|
1149
1158
|
@property
|
1150
1159
|
@abc.abstractmethod
|
1151
1160
|
def present(self) -> bool:
|
@@ -1155,9 +1164,102 @@ class Maybe(ta.Generic[T]):
|
|
1155
1164
|
def must(self) -> T:
|
1156
1165
|
raise NotImplementedError
|
1157
1166
|
|
1167
|
+
#
|
1168
|
+
|
1169
|
+
@abc.abstractmethod
|
1170
|
+
def __repr__(self) -> str:
|
1171
|
+
raise NotImplementedError
|
1172
|
+
|
1173
|
+
@abc.abstractmethod
|
1174
|
+
def __hash__(self) -> int:
|
1175
|
+
raise NotImplementedError
|
1176
|
+
|
1177
|
+
@abc.abstractmethod
|
1178
|
+
def __eq__(self, other) -> bool:
|
1179
|
+
raise NotImplementedError
|
1180
|
+
|
1181
|
+
@abc.abstractmethod
|
1182
|
+
def __lt__(self, other) -> bool:
|
1183
|
+
raise NotImplementedError
|
1184
|
+
|
1185
|
+
#
|
1186
|
+
|
1187
|
+
@ta.final
|
1188
|
+
def __ne__(self, other):
|
1189
|
+
return not (self == other)
|
1190
|
+
|
1191
|
+
@ta.final
|
1192
|
+
def __iter__(self) -> ta.Iterator[T]:
|
1193
|
+
if self.present:
|
1194
|
+
yield self.must()
|
1195
|
+
|
1196
|
+
@ta.final
|
1197
|
+
def __bool__(self) -> ta.NoReturn:
|
1198
|
+
raise TypeError
|
1199
|
+
|
1200
|
+
#
|
1201
|
+
|
1202
|
+
@ta.final
|
1203
|
+
def if_present(self, consumer: ta.Callable[[T], None]) -> None:
|
1204
|
+
if self.present:
|
1205
|
+
consumer(self.must())
|
1206
|
+
|
1207
|
+
@ta.final
|
1208
|
+
def filter(self, predicate: ta.Callable[[T], bool]) -> 'Maybe[T]':
|
1209
|
+
if self.present and predicate(self.must()):
|
1210
|
+
return self
|
1211
|
+
else:
|
1212
|
+
return Maybe.empty()
|
1213
|
+
|
1214
|
+
@ta.final
|
1215
|
+
def map(self, mapper: ta.Callable[[T], U]) -> 'Maybe[U]':
|
1216
|
+
if self.present:
|
1217
|
+
return Maybe.just(mapper(self.must()))
|
1218
|
+
else:
|
1219
|
+
return Maybe.empty()
|
1220
|
+
|
1221
|
+
@ta.final
|
1222
|
+
def flat_map(self, mapper: ta.Callable[[T], 'Maybe[U]']) -> 'Maybe[U]':
|
1223
|
+
if self.present:
|
1224
|
+
if not isinstance(v := mapper(self.must()), Maybe):
|
1225
|
+
raise TypeError(v)
|
1226
|
+
return v
|
1227
|
+
else:
|
1228
|
+
return Maybe.empty()
|
1229
|
+
|
1230
|
+
@ta.final
|
1231
|
+
def or_else(self, other: ta.Union[T, U]) -> ta.Union[T, U]:
|
1232
|
+
if self.present:
|
1233
|
+
return self.must()
|
1234
|
+
else:
|
1235
|
+
return other
|
1236
|
+
|
1237
|
+
@ta.final
|
1238
|
+
def or_else_get(self, supplier: ta.Callable[[], ta.Union[T, U]]) -> ta.Union[T, U]:
|
1239
|
+
if self.present:
|
1240
|
+
return self.must()
|
1241
|
+
else:
|
1242
|
+
return supplier()
|
1243
|
+
|
1244
|
+
@ta.final
|
1245
|
+
def or_else_raise(self, exception_supplier: ta.Callable[[], Exception]) -> T:
|
1246
|
+
if self.present:
|
1247
|
+
return self.must()
|
1248
|
+
else:
|
1249
|
+
raise exception_supplier()
|
1250
|
+
|
1251
|
+
#
|
1252
|
+
|
1253
|
+
@classmethod
|
1254
|
+
def of_optional(cls, v: ta.Optional[T]) -> 'Maybe[T]':
|
1255
|
+
if v is not None:
|
1256
|
+
return cls.just(v)
|
1257
|
+
else:
|
1258
|
+
return cls.empty()
|
1259
|
+
|
1158
1260
|
@classmethod
|
1159
1261
|
def just(cls, v: T) -> 'Maybe[T]':
|
1160
|
-
return
|
1262
|
+
return _JustMaybe(v)
|
1161
1263
|
|
1162
1264
|
_empty: ta.ClassVar['Maybe']
|
1163
1265
|
|
@@ -1166,36 +1268,79 @@ class Maybe(ta.Generic[T]):
|
|
1166
1268
|
return Maybe._empty
|
1167
1269
|
|
1168
1270
|
|
1169
|
-
|
1170
|
-
__slots__ = ()
|
1271
|
+
##
|
1171
1272
|
|
1172
|
-
|
1173
|
-
|
1273
|
+
|
1274
|
+
class _Maybe(Maybe[T], abc.ABC):
|
1275
|
+
def __lt__(self, other):
|
1276
|
+
if not isinstance(other, _Maybe):
|
1277
|
+
return NotImplemented
|
1278
|
+
sp = self.present
|
1279
|
+
op = other.present
|
1280
|
+
if self.present and other.present:
|
1281
|
+
return self.must() < other.must()
|
1282
|
+
else:
|
1283
|
+
return op and not sp
|
1284
|
+
|
1285
|
+
|
1286
|
+
class _JustMaybe(_Maybe[T]):
|
1287
|
+
__slots__ = ('_v', '_hash')
|
1288
|
+
|
1289
|
+
def __init__(self, v: T) -> None:
|
1290
|
+
super().__init__()
|
1291
|
+
|
1292
|
+
self._v = v
|
1174
1293
|
|
1175
1294
|
@property
|
1176
1295
|
def present(self) -> bool:
|
1177
|
-
return
|
1296
|
+
return True
|
1178
1297
|
|
1179
1298
|
def must(self) -> T:
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1299
|
+
return self._v
|
1300
|
+
|
1301
|
+
#
|
1302
|
+
|
1303
|
+
def __repr__(self) -> str:
|
1304
|
+
return f'just({self._v!r})'
|
1305
|
+
|
1306
|
+
def __hash__(self) -> int:
|
1307
|
+
try:
|
1308
|
+
return self._hash # type: ignore[has-type]
|
1309
|
+
except AttributeError:
|
1310
|
+
pass
|
1311
|
+
h = self._hash = hash((_JustMaybe, self._v))
|
1312
|
+
return h
|
1183
1313
|
|
1314
|
+
def __eq__(self, other):
|
1315
|
+
return (
|
1316
|
+
self.__class__ is other.__class__ and
|
1317
|
+
self._v == other._v # noqa
|
1318
|
+
)
|
1184
1319
|
|
1185
|
-
Maybe._empty = tuple.__new__(_Maybe, ()) # noqa
|
1186
1320
|
|
1321
|
+
class _EmptyMaybe(_Maybe[T]):
|
1322
|
+
__slots__ = ()
|
1187
1323
|
|
1188
|
-
|
1324
|
+
@property
|
1325
|
+
def present(self) -> bool:
|
1326
|
+
return False
|
1189
1327
|
|
1328
|
+
def must(self) -> T:
|
1329
|
+
raise Maybe.ValueNotPresentError
|
1190
1330
|
|
1191
|
-
|
1192
|
-
def as_maybe(obj: ta.Any) -> Maybe:
|
1193
|
-
raise TypeError(obj)
|
1331
|
+
#
|
1194
1332
|
|
1333
|
+
def __repr__(self) -> str:
|
1334
|
+
return 'empty()'
|
1195
1335
|
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1336
|
+
def __hash__(self) -> int:
|
1337
|
+
return hash(_EmptyMaybe)
|
1338
|
+
|
1339
|
+
def __eq__(self, other):
|
1340
|
+
return self.__class__ is other.__class__
|
1341
|
+
|
1342
|
+
|
1343
|
+
Maybe._empty = _EmptyMaybe() # noqa
|
1199
1344
|
|
1200
1345
|
|
1201
1346
|
########################################
|
@@ -1587,9 +1732,16 @@ class PredicateTimeout(Timeout):
|
|
1587
1732
|
# ../../../omlish/logs/filters.py
|
1588
1733
|
|
1589
1734
|
|
1735
|
+
##
|
1736
|
+
|
1737
|
+
|
1590
1738
|
class TidLogFilter(logging.Filter):
|
1591
1739
|
def filter(self, record):
|
1592
|
-
|
1740
|
+
# FIXME: handle better - missing from wasm and cosmos
|
1741
|
+
if hasattr(threading, 'get_native_id'):
|
1742
|
+
record.tid = threading.get_native_id()
|
1743
|
+
else:
|
1744
|
+
record.tid = '?'
|
1593
1745
|
return True
|
1594
1746
|
|
1595
1747
|
|
@@ -1597,6 +1749,9 @@ class TidLogFilter(logging.Filter):
|
|
1597
1749
|
# ../../../omlish/logs/proxy.py
|
1598
1750
|
|
1599
1751
|
|
1752
|
+
##
|
1753
|
+
|
1754
|
+
|
1600
1755
|
class ProxyLogFilterer(logging.Filterer):
|
1601
1756
|
def __init__(self, underlying: logging.Filterer) -> None: # noqa
|
1602
1757
|
self._underlying = underlying
|
@@ -5114,6 +5269,9 @@ TODO:
|
|
5114
5269
|
"""
|
5115
5270
|
|
5116
5271
|
|
5272
|
+
##
|
5273
|
+
|
5274
|
+
|
5117
5275
|
class JsonLogFormatter(logging.Formatter):
|
5118
5276
|
KEYS: ta.Mapping[str, bool] = {
|
5119
5277
|
'name': False,
|
@@ -71,6 +71,9 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
71
71
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
72
72
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
73
73
|
|
74
|
+
# ../../omlish/lite/maybes.py
|
75
|
+
U = ta.TypeVar('U')
|
76
|
+
|
74
77
|
# ../../omlish/lite/timeouts.py
|
75
78
|
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
|
76
79
|
|
@@ -86,7 +89,6 @@ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
|
86
89
|
AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
87
90
|
|
88
91
|
# ../../omlish/lite/inject.py
|
89
|
-
U = ta.TypeVar('U')
|
90
92
|
InjectorKeyCls = ta.Union[type, ta.NewType]
|
91
93
|
InjectorProviderFn = ta.Callable[['Injector'], ta.Any]
|
92
94
|
InjectorProviderFnMap = ta.Mapping['InjectorKey', 'InjectorProviderFn']
|
@@ -1088,7 +1090,13 @@ json_dumps_compact: ta.Callable[..., str] = functools.partial(json.dumps, **JSON
|
|
1088
1090
|
##
|
1089
1091
|
|
1090
1092
|
|
1093
|
+
@functools.total_ordering
|
1091
1094
|
class Maybe(ta.Generic[T]):
|
1095
|
+
class ValueNotPresentError(BaseException):
|
1096
|
+
pass
|
1097
|
+
|
1098
|
+
#
|
1099
|
+
|
1092
1100
|
@property
|
1093
1101
|
@abc.abstractmethod
|
1094
1102
|
def present(self) -> bool:
|
@@ -1098,9 +1106,102 @@ class Maybe(ta.Generic[T]):
|
|
1098
1106
|
def must(self) -> T:
|
1099
1107
|
raise NotImplementedError
|
1100
1108
|
|
1109
|
+
#
|
1110
|
+
|
1111
|
+
@abc.abstractmethod
|
1112
|
+
def __repr__(self) -> str:
|
1113
|
+
raise NotImplementedError
|
1114
|
+
|
1115
|
+
@abc.abstractmethod
|
1116
|
+
def __hash__(self) -> int:
|
1117
|
+
raise NotImplementedError
|
1118
|
+
|
1119
|
+
@abc.abstractmethod
|
1120
|
+
def __eq__(self, other) -> bool:
|
1121
|
+
raise NotImplementedError
|
1122
|
+
|
1123
|
+
@abc.abstractmethod
|
1124
|
+
def __lt__(self, other) -> bool:
|
1125
|
+
raise NotImplementedError
|
1126
|
+
|
1127
|
+
#
|
1128
|
+
|
1129
|
+
@ta.final
|
1130
|
+
def __ne__(self, other):
|
1131
|
+
return not (self == other)
|
1132
|
+
|
1133
|
+
@ta.final
|
1134
|
+
def __iter__(self) -> ta.Iterator[T]:
|
1135
|
+
if self.present:
|
1136
|
+
yield self.must()
|
1137
|
+
|
1138
|
+
@ta.final
|
1139
|
+
def __bool__(self) -> ta.NoReturn:
|
1140
|
+
raise TypeError
|
1141
|
+
|
1142
|
+
#
|
1143
|
+
|
1144
|
+
@ta.final
|
1145
|
+
def if_present(self, consumer: ta.Callable[[T], None]) -> None:
|
1146
|
+
if self.present:
|
1147
|
+
consumer(self.must())
|
1148
|
+
|
1149
|
+
@ta.final
|
1150
|
+
def filter(self, predicate: ta.Callable[[T], bool]) -> 'Maybe[T]':
|
1151
|
+
if self.present and predicate(self.must()):
|
1152
|
+
return self
|
1153
|
+
else:
|
1154
|
+
return Maybe.empty()
|
1155
|
+
|
1156
|
+
@ta.final
|
1157
|
+
def map(self, mapper: ta.Callable[[T], U]) -> 'Maybe[U]':
|
1158
|
+
if self.present:
|
1159
|
+
return Maybe.just(mapper(self.must()))
|
1160
|
+
else:
|
1161
|
+
return Maybe.empty()
|
1162
|
+
|
1163
|
+
@ta.final
|
1164
|
+
def flat_map(self, mapper: ta.Callable[[T], 'Maybe[U]']) -> 'Maybe[U]':
|
1165
|
+
if self.present:
|
1166
|
+
if not isinstance(v := mapper(self.must()), Maybe):
|
1167
|
+
raise TypeError(v)
|
1168
|
+
return v
|
1169
|
+
else:
|
1170
|
+
return Maybe.empty()
|
1171
|
+
|
1172
|
+
@ta.final
|
1173
|
+
def or_else(self, other: ta.Union[T, U]) -> ta.Union[T, U]:
|
1174
|
+
if self.present:
|
1175
|
+
return self.must()
|
1176
|
+
else:
|
1177
|
+
return other
|
1178
|
+
|
1179
|
+
@ta.final
|
1180
|
+
def or_else_get(self, supplier: ta.Callable[[], ta.Union[T, U]]) -> ta.Union[T, U]:
|
1181
|
+
if self.present:
|
1182
|
+
return self.must()
|
1183
|
+
else:
|
1184
|
+
return supplier()
|
1185
|
+
|
1186
|
+
@ta.final
|
1187
|
+
def or_else_raise(self, exception_supplier: ta.Callable[[], Exception]) -> T:
|
1188
|
+
if self.present:
|
1189
|
+
return self.must()
|
1190
|
+
else:
|
1191
|
+
raise exception_supplier()
|
1192
|
+
|
1193
|
+
#
|
1194
|
+
|
1195
|
+
@classmethod
|
1196
|
+
def of_optional(cls, v: ta.Optional[T]) -> 'Maybe[T]':
|
1197
|
+
if v is not None:
|
1198
|
+
return cls.just(v)
|
1199
|
+
else:
|
1200
|
+
return cls.empty()
|
1201
|
+
|
1101
1202
|
@classmethod
|
1102
1203
|
def just(cls, v: T) -> 'Maybe[T]':
|
1103
|
-
return
|
1204
|
+
return _JustMaybe(v)
|
1104
1205
|
|
1105
1206
|
_empty: ta.ClassVar['Maybe']
|
1106
1207
|
|
@@ -1109,36 +1210,79 @@ class Maybe(ta.Generic[T]):
|
|
1109
1210
|
return Maybe._empty
|
1110
1211
|
|
1111
1212
|
|
1112
|
-
|
1113
|
-
|
1213
|
+
##
|
1214
|
+
|
1215
|
+
|
1216
|
+
class _Maybe(Maybe[T], abc.ABC):
|
1217
|
+
def __lt__(self, other):
|
1218
|
+
if not isinstance(other, _Maybe):
|
1219
|
+
return NotImplemented
|
1220
|
+
sp = self.present
|
1221
|
+
op = other.present
|
1222
|
+
if self.present and other.present:
|
1223
|
+
return self.must() < other.must()
|
1224
|
+
else:
|
1225
|
+
return op and not sp
|
1114
1226
|
|
1115
|
-
|
1116
|
-
|
1227
|
+
|
1228
|
+
class _JustMaybe(_Maybe[T]):
|
1229
|
+
__slots__ = ('_v', '_hash')
|
1230
|
+
|
1231
|
+
def __init__(self, v: T) -> None:
|
1232
|
+
super().__init__()
|
1233
|
+
|
1234
|
+
self._v = v
|
1117
1235
|
|
1118
1236
|
@property
|
1119
1237
|
def present(self) -> bool:
|
1120
|
-
return
|
1238
|
+
return True
|
1121
1239
|
|
1122
1240
|
def must(self) -> T:
|
1123
|
-
|
1124
|
-
raise ValueError
|
1125
|
-
return self[0]
|
1241
|
+
return self._v
|
1126
1242
|
|
1243
|
+
#
|
1127
1244
|
|
1128
|
-
|
1245
|
+
def __repr__(self) -> str:
|
1246
|
+
return f'just({self._v!r})'
|
1129
1247
|
|
1248
|
+
def __hash__(self) -> int:
|
1249
|
+
try:
|
1250
|
+
return self._hash # type: ignore[has-type]
|
1251
|
+
except AttributeError:
|
1252
|
+
pass
|
1253
|
+
h = self._hash = hash((_JustMaybe, self._v))
|
1254
|
+
return h
|
1130
1255
|
|
1131
|
-
|
1256
|
+
def __eq__(self, other):
|
1257
|
+
return (
|
1258
|
+
self.__class__ is other.__class__ and
|
1259
|
+
self._v == other._v # noqa
|
1260
|
+
)
|
1132
1261
|
|
1133
1262
|
|
1134
|
-
|
1135
|
-
|
1136
|
-
raise TypeError(obj)
|
1263
|
+
class _EmptyMaybe(_Maybe[T]):
|
1264
|
+
__slots__ = ()
|
1137
1265
|
|
1266
|
+
@property
|
1267
|
+
def present(self) -> bool:
|
1268
|
+
return False
|
1269
|
+
|
1270
|
+
def must(self) -> T:
|
1271
|
+
raise Maybe.ValueNotPresentError
|
1272
|
+
|
1273
|
+
#
|
1274
|
+
|
1275
|
+
def __repr__(self) -> str:
|
1276
|
+
return 'empty()'
|
1277
|
+
|
1278
|
+
def __hash__(self) -> int:
|
1279
|
+
return hash(_EmptyMaybe)
|
1138
1280
|
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1281
|
+
def __eq__(self, other):
|
1282
|
+
return self.__class__ is other.__class__
|
1283
|
+
|
1284
|
+
|
1285
|
+
Maybe._empty = _EmptyMaybe() # noqa
|
1142
1286
|
|
1143
1287
|
|
1144
1288
|
########################################
|
@@ -1530,9 +1674,16 @@ class PredicateTimeout(Timeout):
|
|
1530
1674
|
# ../../../omlish/logs/filters.py
|
1531
1675
|
|
1532
1676
|
|
1677
|
+
##
|
1678
|
+
|
1679
|
+
|
1533
1680
|
class TidLogFilter(logging.Filter):
|
1534
1681
|
def filter(self, record):
|
1535
|
-
|
1682
|
+
# FIXME: handle better - missing from wasm and cosmos
|
1683
|
+
if hasattr(threading, 'get_native_id'):
|
1684
|
+
record.tid = threading.get_native_id()
|
1685
|
+
else:
|
1686
|
+
record.tid = '?'
|
1536
1687
|
return True
|
1537
1688
|
|
1538
1689
|
|
@@ -1540,6 +1691,9 @@ class TidLogFilter(logging.Filter):
|
|
1540
1691
|
# ../../../omlish/logs/proxy.py
|
1541
1692
|
|
1542
1693
|
|
1694
|
+
##
|
1695
|
+
|
1696
|
+
|
1543
1697
|
class ProxyLogFilterer(logging.Filterer):
|
1544
1698
|
def __init__(self, underlying: logging.Filterer) -> None: # noqa
|
1545
1699
|
self._underlying = underlying
|
@@ -3579,6 +3733,9 @@ TODO:
|
|
3579
3733
|
"""
|
3580
3734
|
|
3581
3735
|
|
3736
|
+
##
|
3737
|
+
|
3738
|
+
|
3582
3739
|
class JsonLogFormatter(logging.Formatter):
|
3583
3740
|
KEYS: ta.Mapping[str, bool] = {
|
3584
3741
|
'name': False,
|