omdev 0.0.0.dev524__tar.gz → 0.0.0.dev525__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.dev524/omdev.egg-info → omdev-0.0.0.dev525}/PKG-INFO +4 -4
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/__about__.py +1 -1
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/gen.py +2 -1
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/docker-dev.sh +5 -1
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/python.sh +1 -1
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/ci.py +157 -12
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/interp.py +149 -8
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/io/streams.py +49 -24
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/logs.py +2 -2
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/pyproject.py +49 -11
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/parsing.py +10 -5
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525/omdev.egg-info}/PKG-INFO +4 -4
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/requires.txt +3 -3
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/pyproject.toml +4 -4
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/LICENSE +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/README.md +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/README.md +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/info.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/configs/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/rustup.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/dockerdev/resources/xu +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/intellij/open.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/base.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/formats.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/messages.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/messages/parsing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/formats.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/numerics.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/numerics/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/LICENSE +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/consts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/errors.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/message.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/nuh.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/parsing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/rendering.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/tags.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/irc/protocol/utils.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/building.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/reprs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev524 → omdev-0.0.0.dev525}/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.dev525
|
|
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.dev525
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=26.1; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
@@ -27,7 +27,7 @@ Requires-Dist: mypy~=1.19; extra == "all"
|
|
|
27
27
|
Requires-Dist: gprof2dot~=2025.4; extra == "all"
|
|
28
28
|
Requires-Dist: segno~=1.6; extra == "all"
|
|
29
29
|
Requires-Dist: rich~=14.3; extra == "all"
|
|
30
|
-
Requires-Dist: textual~=
|
|
30
|
+
Requires-Dist: textual~=8.0; extra == "all"
|
|
31
31
|
Requires-Dist: textual-dev~=1.8; extra == "all"
|
|
32
32
|
Requires-Dist: textual-speedups~=0.2; extra == "all"
|
|
33
33
|
Provides-Extra: black
|
|
@@ -48,7 +48,7 @@ Provides-Extra: qr
|
|
|
48
48
|
Requires-Dist: segno~=1.6; extra == "qr"
|
|
49
49
|
Provides-Extra: tui
|
|
50
50
|
Requires-Dist: rich~=14.3; extra == "tui"
|
|
51
|
-
Requires-Dist: textual~=
|
|
51
|
+
Requires-Dist: textual~=8.0; extra == "tui"
|
|
52
52
|
Requires-Dist: textual-dev~=1.8; extra == "tui"
|
|
53
53
|
Requires-Dist: textual-speedups~=0.2; extra == "tui"
|
|
54
54
|
Dynamic: license-file
|
|
@@ -7,7 +7,11 @@ else
|
|
|
7
7
|
TTY_ENV_ARGS=""
|
|
8
8
|
fi
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
SCRIPT_PATH=$(cd -- "$(dirname -- "$0")" && pwd)
|
|
11
|
+
SCRIPT_PATH="$SCRIPT_PATH/$(basename -- "$0")"
|
|
12
|
+
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
|
|
13
|
+
|
|
14
|
+
SERVICE_NAME="$(basename "$SCRIPT_DIR")-dev"
|
|
11
15
|
if ! [ $# -eq 0 ] ; then
|
|
12
16
|
if [ "$1" = "--amd64" ] ; then
|
|
13
17
|
SERVICE_NAME="$SERVICE_NAME-amd64"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
4
|
if [ -z "${VENV}" ] ; then
|
|
5
|
-
if [ $(uname) = "Linux" ] && grep -E '^overlay / .*/(docker|desktop-containerd)/' /proc/mounts > /dev/null ; then
|
|
5
|
+
if [ $(uname) = "Linux" ] && grep -E '^overlay / .*/(docker|desktop-containerd|var/lib/containerd)/' /proc/mounts > /dev/null ; then
|
|
6
6
|
VENV=docker
|
|
7
7
|
else
|
|
8
8
|
VENV=default
|
|
@@ -107,6 +107,7 @@ def __omlish_amalg__(): # noqa
|
|
|
107
107
|
dict(path='../../omlish/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
|
|
108
108
|
dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
|
|
109
109
|
dict(path='../../omlish/lite/strings.py', sha1='89831ecbc34ad80e118a865eceb390ed399dc4d6'),
|
|
110
|
+
dict(path='../../omlish/lite/typing.py', sha1='9d6caabc7b31534109e3f2e249d21f8610c9c079'),
|
|
110
111
|
dict(path='../../omlish/logs/levels.py', sha1='91405563d082a5eba874da82aac89d83ce7b6152'),
|
|
111
112
|
dict(path='../../omlish/logs/std/filters.py', sha1='f36aab646d84d31e295b33aaaaa6f8b67ff38b3d'),
|
|
112
113
|
dict(path='../../omlish/logs/std/proxy.py', sha1='3e7301a2aa351127f9c85f61b2f85dcc3f15aafb'),
|
|
@@ -124,11 +125,11 @@ def __omlish_amalg__(): # noqa
|
|
|
124
125
|
dict(path='../oci/pack/unpacking.py', sha1='f43dee9a2eee79cbbb90f0721ed234a2bc35daa7'),
|
|
125
126
|
dict(path='../../omlish/argparse/cli.py', sha1='f4dc3cd353d14386b5da0306768700e396afd2b3'),
|
|
126
127
|
dict(path='../../omlish/http/coro/io.py', sha1='6ccbbf6a1a6a702ce0f1dc24b4057e8264ef4641'),
|
|
127
|
-
dict(path='../../omlish/http/parsing.py', sha1='
|
|
128
|
+
dict(path='../../omlish/http/parsing.py', sha1='58579597eaf70a8ee409c2814481b3002a6acea1'),
|
|
128
129
|
dict(path='../../omlish/lite/marshal.py', sha1='96348f5f2a26dc27d842d33cc3927e9da163436b'),
|
|
129
130
|
dict(path='../../omlish/lite/maybes.py', sha1='04d2fcbea17028a5e6b8e7a7fb742375495ed233'),
|
|
130
131
|
dict(path='../../omlish/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
|
|
131
|
-
dict(path='../../omlish/lite/timeouts.py', sha1='
|
|
132
|
+
dict(path='../../omlish/lite/timeouts.py', sha1='2f19c808e582877f999d7ea7dde0acd6382266a2'),
|
|
132
133
|
dict(path='../../omlish/logs/infos.py', sha1='4dd104bd468a8c438601dd0bbda619b47d2f1620'),
|
|
133
134
|
dict(path='../../omlish/logs/metrics/base.py', sha1='95120732c745ceec5333f81553761ab6ff4bb3fb'),
|
|
134
135
|
dict(path='../../omlish/logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
|
|
@@ -157,7 +158,7 @@ def __omlish_amalg__(): # noqa
|
|
|
157
158
|
dict(path='../oci/pack/packing.py', sha1='7585c3dea6b8a62b6ca63fe78968497db915ea57'),
|
|
158
159
|
dict(path='../../omlish/http/coro/server/server.py', sha1='7c98ff3073835079b4170c1235332f1c620cbf52'),
|
|
159
160
|
dict(path='../../omlish/logs/base.py', sha1='eaa2ce213235815e2f86c50df6c41cfe26a43ba2'),
|
|
160
|
-
dict(path='../../omlish/logs/std/records.py', sha1='
|
|
161
|
+
dict(path='../../omlish/logs/std/records.py', sha1='67e552537d9268d4df6939b8a92be885fda35238'),
|
|
161
162
|
dict(path='../../omlish/secrets/tempssl.py', sha1='360d4cd98483357bcf013e156dafd92fd37ed220'),
|
|
162
163
|
dict(path='../../omlish/sockets/server/server.py', sha1='89204da9ea77577418ff7d2910aea0d593c765f3'),
|
|
163
164
|
dict(path='../../omlish/sockets/server/ssl.py', sha1='790dfd208f4d267c826d491d4eb5deeda5ebdddc'),
|
|
@@ -225,6 +226,11 @@ CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
|
|
225
226
|
ExitStackedT = ta.TypeVar('ExitStackedT', bound='ExitStacked')
|
|
226
227
|
AsyncExitStackedT = ta.TypeVar('AsyncExitStackedT', bound='AsyncExitStacked')
|
|
227
228
|
|
|
229
|
+
# ../../omlish/lite/typing.py
|
|
230
|
+
A0 = ta.TypeVar('A0')
|
|
231
|
+
A1 = ta.TypeVar('A1')
|
|
232
|
+
A2 = ta.TypeVar('A2')
|
|
233
|
+
|
|
228
234
|
# ../../omlish/logs/levels.py
|
|
229
235
|
LogLevel = int # ta.TypeAlias
|
|
230
236
|
|
|
@@ -242,7 +248,7 @@ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
|
|
242
248
|
U = ta.TypeVar('U')
|
|
243
249
|
|
|
244
250
|
# ../../omlish/lite/timeouts.py
|
|
245
|
-
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
|
|
251
|
+
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], 'CanFloat', float, int, bool, None] # ta.TypeAlias # noqa
|
|
246
252
|
|
|
247
253
|
# ../../omlish/logs/infos.py
|
|
248
254
|
LoggingMsgFn = ta.Callable[[], ta.Union[str, tuple]] # ta.TypeAlias
|
|
@@ -2494,6 +2500,118 @@ def format_num_bytes(num_bytes: int) -> str:
|
|
|
2494
2500
|
return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
|
|
2495
2501
|
|
|
2496
2502
|
|
|
2503
|
+
########################################
|
|
2504
|
+
# ../../../omlish/lite/typing.py
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
##
|
|
2508
|
+
# A workaround for typing deficiencies (like `Argument 2 to NewType(...) must be subclassable`).
|
|
2509
|
+
#
|
|
2510
|
+
# Note that this problem doesn't happen at runtime - it happens in mypy:
|
|
2511
|
+
#
|
|
2512
|
+
# mypy <(echo "import typing as ta; MyCallback = ta.NewType('MyCallback', ta.Callable[[], None])")
|
|
2513
|
+
# /dev/fd/11:1:22: error: Argument 2 to NewType(...) must be subclassable (got "Callable[[], None]") [valid-newtype]
|
|
2514
|
+
#
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
@dc.dataclass(frozen=True)
|
|
2518
|
+
class AnyFunc(ta.Generic[T]):
|
|
2519
|
+
fn: ta.Callable[..., T]
|
|
2520
|
+
|
|
2521
|
+
def __call__(self, *args: ta.Any, **kwargs: ta.Any) -> T:
|
|
2522
|
+
return self.fn(*args, **kwargs)
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
@dc.dataclass(frozen=True)
|
|
2526
|
+
class Func0(ta.Generic[T]):
|
|
2527
|
+
fn: ta.Callable[[], T]
|
|
2528
|
+
|
|
2529
|
+
def __call__(self) -> T:
|
|
2530
|
+
return self.fn()
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
@dc.dataclass(frozen=True)
|
|
2534
|
+
class Func1(ta.Generic[A0, T]):
|
|
2535
|
+
fn: ta.Callable[[A0], T]
|
|
2536
|
+
|
|
2537
|
+
def __call__(self, a0: A0) -> T:
|
|
2538
|
+
return self.fn(a0)
|
|
2539
|
+
|
|
2540
|
+
|
|
2541
|
+
@dc.dataclass(frozen=True)
|
|
2542
|
+
class Func2(ta.Generic[A0, A1, T]):
|
|
2543
|
+
fn: ta.Callable[[A0, A1], T]
|
|
2544
|
+
|
|
2545
|
+
def __call__(self, a0: A0, a1: A1) -> T:
|
|
2546
|
+
return self.fn(a0, a1)
|
|
2547
|
+
|
|
2548
|
+
|
|
2549
|
+
@dc.dataclass(frozen=True)
|
|
2550
|
+
class Func3(ta.Generic[A0, A1, A2, T]):
|
|
2551
|
+
fn: ta.Callable[[A0, A1, A2], T]
|
|
2552
|
+
|
|
2553
|
+
def __call__(self, a0: A0, a1: A1, a2: A2) -> T:
|
|
2554
|
+
return self.fn(a0, a1, a2)
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
##
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
@dc.dataclass(frozen=True)
|
|
2561
|
+
class CachedFunc0(ta.Generic[T]):
|
|
2562
|
+
fn: ta.Callable[[], T]
|
|
2563
|
+
|
|
2564
|
+
def __call__(self) -> T:
|
|
2565
|
+
try:
|
|
2566
|
+
return object.__getattribute__(self, '_value')
|
|
2567
|
+
except AttributeError:
|
|
2568
|
+
pass
|
|
2569
|
+
|
|
2570
|
+
value = self.fn()
|
|
2571
|
+
object.__setattr__(self, '_value', value)
|
|
2572
|
+
return value
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
@dc.dataclass(frozen=True)
|
|
2576
|
+
class AsyncCachedFunc0(ta.Generic[T]):
|
|
2577
|
+
fn: ta.Callable[[], ta.Awaitable[T]]
|
|
2578
|
+
|
|
2579
|
+
async def __call__(self) -> T:
|
|
2580
|
+
try:
|
|
2581
|
+
return object.__getattribute__(self, '_value')
|
|
2582
|
+
except AttributeError:
|
|
2583
|
+
pass
|
|
2584
|
+
|
|
2585
|
+
value = await self.fn()
|
|
2586
|
+
object.__setattr__(self, '_value', value)
|
|
2587
|
+
return value
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
##
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
_TYPING_ANNOTATIONS_ATTR = '__annotate__' if sys.version_info >= (3, 14) else '__annotations__'
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
def typing_annotations_attr() -> str:
|
|
2597
|
+
return _TYPING_ANNOTATIONS_ATTR
|
|
2598
|
+
|
|
2599
|
+
|
|
2600
|
+
##
|
|
2601
|
+
|
|
2602
|
+
|
|
2603
|
+
@ta.runtime_checkable
|
|
2604
|
+
class CanInt(ta.Protocol):
|
|
2605
|
+
def __int__(self) -> int:
|
|
2606
|
+
...
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
@ta.runtime_checkable
|
|
2610
|
+
class CanFloat(ta.Protocol):
|
|
2611
|
+
def __float__(self) -> float:
|
|
2612
|
+
...
|
|
2613
|
+
|
|
2614
|
+
|
|
2497
2615
|
########################################
|
|
2498
2616
|
# ../../../omlish/logs/levels.py
|
|
2499
2617
|
|
|
@@ -4186,12 +4304,16 @@ class ParsedHttpHeaders:
|
|
|
4186
4304
|
self._order.append(name)
|
|
4187
4305
|
self._entries[name].append(value)
|
|
4188
4306
|
|
|
4307
|
+
@property
|
|
4308
|
+
def entries(self) -> ta.Mapping[str, ta.Sequence[str]]:
|
|
4309
|
+
return self._entries
|
|
4310
|
+
|
|
4189
4311
|
def __contains__(self, name: ta.Any) -> bool:
|
|
4190
4312
|
if not isinstance(name, str):
|
|
4191
4313
|
return False
|
|
4192
4314
|
return name.lower() in self._entries
|
|
4193
4315
|
|
|
4194
|
-
# Headers where duplicate values are comma-combined per RFC 7230 §3.2.2.
|
|
4316
|
+
# Headers where duplicate values are comma-combined per RFC 7230 §3.2.2. Set-Cookie is the notable exception.
|
|
4195
4317
|
_NO_COMBINE_HEADERS: ta.ClassVar[ta.FrozenSet[str]] = frozenset({
|
|
4196
4318
|
'set-cookie',
|
|
4197
4319
|
})
|
|
@@ -6940,27 +7062,38 @@ class Timeout(Abstract):
|
|
|
6940
7062
|
obj: TimeoutLike,
|
|
6941
7063
|
default: ta.Union[TimeoutLike, ta.Type[_NOT_SPECIFIED]] = _NOT_SPECIFIED,
|
|
6942
7064
|
) -> 'Timeout':
|
|
7065
|
+
if isinstance(obj, bool):
|
|
7066
|
+
if obj:
|
|
7067
|
+
obj = Timeout.DEFAULT
|
|
7068
|
+
else:
|
|
7069
|
+
obj = None
|
|
7070
|
+
|
|
6943
7071
|
if obj is None:
|
|
6944
7072
|
return InfiniteTimeout()
|
|
6945
7073
|
|
|
6946
|
-
|
|
7074
|
+
if isinstance(obj, Timeout):
|
|
6947
7075
|
return obj
|
|
6948
7076
|
|
|
6949
|
-
|
|
7077
|
+
if isinstance(obj, (float, int)):
|
|
6950
7078
|
return DeadlineTimeout(cls._now() + obj)
|
|
6951
7079
|
|
|
6952
|
-
|
|
7080
|
+
# if isinstance(obj, CanInt):
|
|
7081
|
+
# return DeadlineTimeout(cls._now() + int(obj))
|
|
7082
|
+
|
|
7083
|
+
if isinstance(obj, CanFloat):
|
|
7084
|
+
return DeadlineTimeout(cls._now() + float(obj))
|
|
7085
|
+
|
|
7086
|
+
if isinstance(obj, ta.Iterable):
|
|
6953
7087
|
return CompositeTimeout(*[Timeout.of(c) for c in obj])
|
|
6954
7088
|
|
|
6955
|
-
|
|
7089
|
+
if obj is Timeout.DEFAULT:
|
|
6956
7090
|
if default is Timeout._NOT_SPECIFIED or default is Timeout.DEFAULT:
|
|
6957
7091
|
raise RuntimeError('Must specify a default timeout')
|
|
6958
7092
|
|
|
6959
7093
|
else:
|
|
6960
7094
|
return Timeout.of(default) # type: ignore[arg-type]
|
|
6961
7095
|
|
|
6962
|
-
|
|
6963
|
-
raise TypeError(obj)
|
|
7096
|
+
raise TypeError(obj)
|
|
6964
7097
|
|
|
6965
7098
|
@classmethod
|
|
6966
7099
|
def of_deadline(cls, deadline: float) -> 'DeadlineTimeout':
|
|
@@ -6982,6 +7115,9 @@ class DeadlineTimeout(Timeout):
|
|
|
6982
7115
|
self.deadline = deadline
|
|
6983
7116
|
self.exc = exc
|
|
6984
7117
|
|
|
7118
|
+
def __repr__(self) -> str:
|
|
7119
|
+
return f'{type(self).__name__}({self.deadline!r}, {self.exc!r})'
|
|
7120
|
+
|
|
6985
7121
|
@property
|
|
6986
7122
|
def can_expire(self) -> bool:
|
|
6987
7123
|
return True
|
|
@@ -7002,6 +7138,9 @@ class DeadlineTimeout(Timeout):
|
|
|
7002
7138
|
|
|
7003
7139
|
|
|
7004
7140
|
class InfiniteTimeout(Timeout):
|
|
7141
|
+
def __repr__(self) -> str:
|
|
7142
|
+
return f'{type(self).__name__}()'
|
|
7143
|
+
|
|
7005
7144
|
@property
|
|
7006
7145
|
def can_expire(self) -> bool:
|
|
7007
7146
|
return False
|
|
@@ -7025,6 +7164,9 @@ class CompositeTimeout(Timeout):
|
|
|
7025
7164
|
|
|
7026
7165
|
self.children = children
|
|
7027
7166
|
|
|
7167
|
+
def __repr__(self) -> str:
|
|
7168
|
+
return f'{type(self).__name__}({self.children!r})'
|
|
7169
|
+
|
|
7028
7170
|
@property
|
|
7029
7171
|
def can_expire(self) -> bool:
|
|
7030
7172
|
return any(c.can_expire for c in self.children)
|
|
@@ -7055,6 +7197,9 @@ class PredicateTimeout(Timeout):
|
|
|
7055
7197
|
self.expired_fn = expired_fn
|
|
7056
7198
|
self.exc = exc
|
|
7057
7199
|
|
|
7200
|
+
def __repr__(self) -> str:
|
|
7201
|
+
return f'{type(self).__name__}({self.expired_fn!r}, {self.exc!r})'
|
|
7202
|
+
|
|
7058
7203
|
@property
|
|
7059
7204
|
def can_expire(self) -> bool:
|
|
7060
7205
|
return True
|
|
@@ -12432,7 +12577,7 @@ class LoggingContextInfoRecordAdapters:
|
|
|
12432
12577
|
pathname=(str, _UNKNOWN_PATH_NAME),
|
|
12433
12578
|
|
|
12434
12579
|
# Source line number where the logging call was issued (if available). Unmodified by ctor. May default to 0
|
|
12435
|
-
#
|
|
12580
|
+
# by Logger.findCaller / Logger._log.
|
|
12436
12581
|
lineno=(int, 0),
|
|
12437
12582
|
|
|
12438
12583
|
# Name of function containing the logging call. Set by ctor to `func` arg, unmodified. May default to
|
|
@@ -60,6 +60,7 @@ def __omlish_amalg__(): # noqa
|
|
|
60
60
|
dict(path='../../omlish/lite/json.py', sha1='57eeddc4d23a17931e00284ffa5cb6e3ce089486'),
|
|
61
61
|
dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
|
|
62
62
|
dict(path='../../omlish/lite/strings.py', sha1='89831ecbc34ad80e118a865eceb390ed399dc4d6'),
|
|
63
|
+
dict(path='../../omlish/lite/typing.py', sha1='9d6caabc7b31534109e3f2e249d21f8610c9c079'),
|
|
63
64
|
dict(path='../../omlish/logs/levels.py', sha1='91405563d082a5eba874da82aac89d83ce7b6152'),
|
|
64
65
|
dict(path='../../omlish/logs/std/filters.py', sha1='f36aab646d84d31e295b33aaaaa6f8b67ff38b3d'),
|
|
65
66
|
dict(path='../../omlish/logs/std/proxy.py', sha1='3e7301a2aa351127f9c85f61b2f85dcc3f15aafb'),
|
|
@@ -67,7 +68,7 @@ def __omlish_amalg__(): # noqa
|
|
|
67
68
|
dict(path='../../omlish/argparse/cli.py', sha1='f4dc3cd353d14386b5da0306768700e396afd2b3'),
|
|
68
69
|
dict(path='../../omlish/lite/maybes.py', sha1='04d2fcbea17028a5e6b8e7a7fb742375495ed233'),
|
|
69
70
|
dict(path='../../omlish/lite/runtime.py', sha1='2e752a27ae2bf89b1bb79b4a2da522a3ec360c70'),
|
|
70
|
-
dict(path='../../omlish/lite/timeouts.py', sha1='
|
|
71
|
+
dict(path='../../omlish/lite/timeouts.py', sha1='2f19c808e582877f999d7ea7dde0acd6382266a2'),
|
|
71
72
|
dict(path='../../omlish/logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
|
|
72
73
|
dict(path='../../omlish/logs/std/json.py', sha1='2a75553131e4d5331bb0cedde42aa183f403fc3b'),
|
|
73
74
|
dict(path='types.py', sha1='caf068a6e81fb6e221d777b341ac5777d92b8091'),
|
|
@@ -123,6 +124,11 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
|
123
124
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
|
124
125
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
|
125
126
|
|
|
127
|
+
# ../../omlish/lite/typing.py
|
|
128
|
+
A0 = ta.TypeVar('A0')
|
|
129
|
+
A1 = ta.TypeVar('A1')
|
|
130
|
+
A2 = ta.TypeVar('A2')
|
|
131
|
+
|
|
126
132
|
# ../../omlish/logs/levels.py
|
|
127
133
|
LogLevel = int # ta.TypeAlias
|
|
128
134
|
|
|
@@ -138,7 +144,7 @@ ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
|
|
138
144
|
U = ta.TypeVar('U')
|
|
139
145
|
|
|
140
146
|
# ../../omlish/lite/timeouts.py
|
|
141
|
-
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], float, None] # ta.TypeAlias
|
|
147
|
+
TimeoutLike = ta.Union['Timeout', ta.Type['Timeout.DEFAULT'], ta.Iterable['TimeoutLike'], 'CanFloat', float, int, bool, None] # ta.TypeAlias # noqa
|
|
142
148
|
|
|
143
149
|
# ../../omlish/asyncs/asyncio/timeouts.py
|
|
144
150
|
AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
|
@@ -1600,6 +1606,118 @@ def format_num_bytes(num_bytes: int) -> str:
|
|
|
1600
1606
|
return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
|
|
1601
1607
|
|
|
1602
1608
|
|
|
1609
|
+
########################################
|
|
1610
|
+
# ../../../omlish/lite/typing.py
|
|
1611
|
+
|
|
1612
|
+
|
|
1613
|
+
##
|
|
1614
|
+
# A workaround for typing deficiencies (like `Argument 2 to NewType(...) must be subclassable`).
|
|
1615
|
+
#
|
|
1616
|
+
# Note that this problem doesn't happen at runtime - it happens in mypy:
|
|
1617
|
+
#
|
|
1618
|
+
# mypy <(echo "import typing as ta; MyCallback = ta.NewType('MyCallback', ta.Callable[[], None])")
|
|
1619
|
+
# /dev/fd/11:1:22: error: Argument 2 to NewType(...) must be subclassable (got "Callable[[], None]") [valid-newtype]
|
|
1620
|
+
#
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
@dc.dataclass(frozen=True)
|
|
1624
|
+
class AnyFunc(ta.Generic[T]):
|
|
1625
|
+
fn: ta.Callable[..., T]
|
|
1626
|
+
|
|
1627
|
+
def __call__(self, *args: ta.Any, **kwargs: ta.Any) -> T:
|
|
1628
|
+
return self.fn(*args, **kwargs)
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
@dc.dataclass(frozen=True)
|
|
1632
|
+
class Func0(ta.Generic[T]):
|
|
1633
|
+
fn: ta.Callable[[], T]
|
|
1634
|
+
|
|
1635
|
+
def __call__(self) -> T:
|
|
1636
|
+
return self.fn()
|
|
1637
|
+
|
|
1638
|
+
|
|
1639
|
+
@dc.dataclass(frozen=True)
|
|
1640
|
+
class Func1(ta.Generic[A0, T]):
|
|
1641
|
+
fn: ta.Callable[[A0], T]
|
|
1642
|
+
|
|
1643
|
+
def __call__(self, a0: A0) -> T:
|
|
1644
|
+
return self.fn(a0)
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
@dc.dataclass(frozen=True)
|
|
1648
|
+
class Func2(ta.Generic[A0, A1, T]):
|
|
1649
|
+
fn: ta.Callable[[A0, A1], T]
|
|
1650
|
+
|
|
1651
|
+
def __call__(self, a0: A0, a1: A1) -> T:
|
|
1652
|
+
return self.fn(a0, a1)
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
@dc.dataclass(frozen=True)
|
|
1656
|
+
class Func3(ta.Generic[A0, A1, A2, T]):
|
|
1657
|
+
fn: ta.Callable[[A0, A1, A2], T]
|
|
1658
|
+
|
|
1659
|
+
def __call__(self, a0: A0, a1: A1, a2: A2) -> T:
|
|
1660
|
+
return self.fn(a0, a1, a2)
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
##
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
@dc.dataclass(frozen=True)
|
|
1667
|
+
class CachedFunc0(ta.Generic[T]):
|
|
1668
|
+
fn: ta.Callable[[], T]
|
|
1669
|
+
|
|
1670
|
+
def __call__(self) -> T:
|
|
1671
|
+
try:
|
|
1672
|
+
return object.__getattribute__(self, '_value')
|
|
1673
|
+
except AttributeError:
|
|
1674
|
+
pass
|
|
1675
|
+
|
|
1676
|
+
value = self.fn()
|
|
1677
|
+
object.__setattr__(self, '_value', value)
|
|
1678
|
+
return value
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
@dc.dataclass(frozen=True)
|
|
1682
|
+
class AsyncCachedFunc0(ta.Generic[T]):
|
|
1683
|
+
fn: ta.Callable[[], ta.Awaitable[T]]
|
|
1684
|
+
|
|
1685
|
+
async def __call__(self) -> T:
|
|
1686
|
+
try:
|
|
1687
|
+
return object.__getattribute__(self, '_value')
|
|
1688
|
+
except AttributeError:
|
|
1689
|
+
pass
|
|
1690
|
+
|
|
1691
|
+
value = await self.fn()
|
|
1692
|
+
object.__setattr__(self, '_value', value)
|
|
1693
|
+
return value
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
##
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
_TYPING_ANNOTATIONS_ATTR = '__annotate__' if sys.version_info >= (3, 14) else '__annotations__'
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
def typing_annotations_attr() -> str:
|
|
1703
|
+
return _TYPING_ANNOTATIONS_ATTR
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
##
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
@ta.runtime_checkable
|
|
1710
|
+
class CanInt(ta.Protocol):
|
|
1711
|
+
def __int__(self) -> int:
|
|
1712
|
+
...
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
@ta.runtime_checkable
|
|
1716
|
+
class CanFloat(ta.Protocol):
|
|
1717
|
+
def __float__(self) -> float:
|
|
1718
|
+
...
|
|
1719
|
+
|
|
1720
|
+
|
|
1603
1721
|
########################################
|
|
1604
1722
|
# ../../../omlish/logs/levels.py
|
|
1605
1723
|
|
|
@@ -2956,27 +3074,38 @@ class Timeout(Abstract):
|
|
|
2956
3074
|
obj: TimeoutLike,
|
|
2957
3075
|
default: ta.Union[TimeoutLike, ta.Type[_NOT_SPECIFIED]] = _NOT_SPECIFIED,
|
|
2958
3076
|
) -> 'Timeout':
|
|
3077
|
+
if isinstance(obj, bool):
|
|
3078
|
+
if obj:
|
|
3079
|
+
obj = Timeout.DEFAULT
|
|
3080
|
+
else:
|
|
3081
|
+
obj = None
|
|
3082
|
+
|
|
2959
3083
|
if obj is None:
|
|
2960
3084
|
return InfiniteTimeout()
|
|
2961
3085
|
|
|
2962
|
-
|
|
3086
|
+
if isinstance(obj, Timeout):
|
|
2963
3087
|
return obj
|
|
2964
3088
|
|
|
2965
|
-
|
|
3089
|
+
if isinstance(obj, (float, int)):
|
|
2966
3090
|
return DeadlineTimeout(cls._now() + obj)
|
|
2967
3091
|
|
|
2968
|
-
|
|
3092
|
+
# if isinstance(obj, CanInt):
|
|
3093
|
+
# return DeadlineTimeout(cls._now() + int(obj))
|
|
3094
|
+
|
|
3095
|
+
if isinstance(obj, CanFloat):
|
|
3096
|
+
return DeadlineTimeout(cls._now() + float(obj))
|
|
3097
|
+
|
|
3098
|
+
if isinstance(obj, ta.Iterable):
|
|
2969
3099
|
return CompositeTimeout(*[Timeout.of(c) for c in obj])
|
|
2970
3100
|
|
|
2971
|
-
|
|
3101
|
+
if obj is Timeout.DEFAULT:
|
|
2972
3102
|
if default is Timeout._NOT_SPECIFIED or default is Timeout.DEFAULT:
|
|
2973
3103
|
raise RuntimeError('Must specify a default timeout')
|
|
2974
3104
|
|
|
2975
3105
|
else:
|
|
2976
3106
|
return Timeout.of(default) # type: ignore[arg-type]
|
|
2977
3107
|
|
|
2978
|
-
|
|
2979
|
-
raise TypeError(obj)
|
|
3108
|
+
raise TypeError(obj)
|
|
2980
3109
|
|
|
2981
3110
|
@classmethod
|
|
2982
3111
|
def of_deadline(cls, deadline: float) -> 'DeadlineTimeout':
|
|
@@ -2998,6 +3127,9 @@ class DeadlineTimeout(Timeout):
|
|
|
2998
3127
|
self.deadline = deadline
|
|
2999
3128
|
self.exc = exc
|
|
3000
3129
|
|
|
3130
|
+
def __repr__(self) -> str:
|
|
3131
|
+
return f'{type(self).__name__}({self.deadline!r}, {self.exc!r})'
|
|
3132
|
+
|
|
3001
3133
|
@property
|
|
3002
3134
|
def can_expire(self) -> bool:
|
|
3003
3135
|
return True
|
|
@@ -3018,6 +3150,9 @@ class DeadlineTimeout(Timeout):
|
|
|
3018
3150
|
|
|
3019
3151
|
|
|
3020
3152
|
class InfiniteTimeout(Timeout):
|
|
3153
|
+
def __repr__(self) -> str:
|
|
3154
|
+
return f'{type(self).__name__}()'
|
|
3155
|
+
|
|
3021
3156
|
@property
|
|
3022
3157
|
def can_expire(self) -> bool:
|
|
3023
3158
|
return False
|
|
@@ -3041,6 +3176,9 @@ class CompositeTimeout(Timeout):
|
|
|
3041
3176
|
|
|
3042
3177
|
self.children = children
|
|
3043
3178
|
|
|
3179
|
+
def __repr__(self) -> str:
|
|
3180
|
+
return f'{type(self).__name__}({self.children!r})'
|
|
3181
|
+
|
|
3044
3182
|
@property
|
|
3045
3183
|
def can_expire(self) -> bool:
|
|
3046
3184
|
return any(c.can_expire for c in self.children)
|
|
@@ -3071,6 +3209,9 @@ class PredicateTimeout(Timeout):
|
|
|
3071
3209
|
self.expired_fn = expired_fn
|
|
3072
3210
|
self.exc = exc
|
|
3073
3211
|
|
|
3212
|
+
def __repr__(self) -> str:
|
|
3213
|
+
return f'{type(self).__name__}({self.expired_fn!r}, {self.exc!r})'
|
|
3214
|
+
|
|
3074
3215
|
@property
|
|
3075
3216
|
def can_expire(self) -> bool:
|
|
3076
3217
|
return True
|