omdev 0.0.25__tar.gz → 0.0.27__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.25/omdev.egg-info → omdev-0.0.27}/PKG-INFO +9 -9
- {omdev-0.0.25 → omdev-0.0.27}/omdev/.omlish-manifests.json +0 -14
- {omdev-0.0.25 → omdev-0.0.27}/omdev/__about__.py +3 -3
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/marshal.py +1 -1
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/wheelfile.py +1 -1
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/ci.py +81 -72
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/interp.py +1 -19
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/io/pipelines.py +51 -40
- omdev-0.0.25/omdev/scripts/lib/io/streams.py → omdev-0.0.27/omdev/scripts/lib/io/streambufs.py +2 -2
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/pidfiles.py +1 -19
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/pyproject.py +5 -23
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/parsing.py +3 -3
- {omdev-0.0.25 → omdev-0.0.27/omdev.egg-info}/PKG-INFO +9 -9
- {omdev-0.0.25 → omdev-0.0.27}/omdev.egg-info/SOURCES.txt +1 -4
- {omdev-0.0.25 → omdev-0.0.27}/omdev.egg-info/requires.txt +8 -8
- {omdev-0.0.25 → omdev-0.0.27}/pyproject.toml +9 -9
- omdev-0.0.25/omdev/supervisor/__main__.py +0 -11
- omdev-0.0.25/omdev/supervisor/cli.py +0 -120
- omdev-0.0.25/omdev/tui/textual/altdevtools/tools/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/MANIFEST.in +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/README.md +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/README.md +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/info.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/build.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/ci.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/compose.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/consts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/shell.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/ci/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/install.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/main.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/managers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cli/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmake.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/diffs/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/build.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/chgrp.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/workdir.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/scripts/install-pi +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/resources/shift-uid.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/run.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/dockerdev/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/git/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/git/magic.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/git/revisions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/git/shallow.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/git/status.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/paths.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/secrets.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/home/shadow.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/imgur.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/intellij/open.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/default.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/java/xml.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/find.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/magic.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/magic/styles.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/building.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/manifests/main.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/mypy/report.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/names.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pip.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/base.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/git.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/main.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/classdot.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/findimports.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/reprs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tools/fixdocstrings.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/py.typed +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/formats/goyaml.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/messages/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/messages/base.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/messages/formats.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/messages/messages.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/messages/parsing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/numerics/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/numerics/formats.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/numerics/numerics.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/numerics/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/consts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/errors.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/message.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/nuh.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/parsing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/rendering.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/tags.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/irc/protocol/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/analysis.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/config.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/errors.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/generator.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/ir.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/names.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/rendering.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/transforms.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/jsonschema/codegen/typing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/building.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/compression.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/data.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/datarefs.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/dataserver.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/loading.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/media.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/pack/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/pack/packing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/pack/repositories.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/pack/unpacking.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/repositories.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/specs/oci/tars.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tagstrings.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/diff.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/doc.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/docker.py +0 -0
- {omdev-0.0.25/omdev/supervisor → omdev-0.0.27/omdev/tools/git}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.25/omdev/tools/git → omdev-0.0.27/omdev/tools/json}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.25/omdev/tools/json → omdev-0.0.27/omdev/tools/jsonview}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.25/omdev/tools/jsonview → omdev-0.0.27/omdev/tools/pawk}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/pip.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/prof.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/qr.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/shell.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.25/omdev/tools/pawk → omdev-0.0.27/omdev/tui}/__init__.py +0 -0
- {omdev-0.0.25/omdev/tui → omdev-0.0.27/omdev/tui/apps}/__init__.py +0 -0
- {omdev-0.0.25/omdev/tui/apps → omdev-0.0.27/omdev/tui/apps/edit}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.25/omdev/tui/apps/edit → omdev-0.0.27/omdev/tui/apps/irc}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.25/omdev/tui/apps/irc → omdev-0.0.27/omdev/tui/apps/jtree}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.25/omdev/tui/apps/jtree → omdev-0.0.27/omdev/tui/apps/markdown}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/rich/trirule.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/actionmenu.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/client.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/borders.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/colors.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/colors.tcss +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/easing.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/easing.tcss +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/previews/keys.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/protocol.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/redirect_output.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/renderables.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/server.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/service.py +0 -0
- {omdev-0.0.25/omdev/tui/apps/markdown → omdev-0.0.27/omdev/tui/textual/altdevtools/tools}/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/altdevtools/tools/diagnose.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/dom2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.25 → omdev-0.0.27}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.27
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,10 +14,10 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
14
|
Requires-Python: >=3.14
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.27
|
|
18
18
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: ominfra==0.0.
|
|
20
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: ominfra==0.0.27; extra == "all"
|
|
20
|
+
Requires-Dist: omllm==0.0.27; extra == "all"
|
|
21
21
|
Requires-Dist: black~=26.5; extra == "all"
|
|
22
22
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
23
23
|
Requires-Dist: pcpp~=1.30; extra == "all"
|
|
@@ -25,7 +25,7 @@ Requires-Dist: docutils~=0.23; extra == "all"
|
|
|
25
25
|
Requires-Dist: markdown-it-py~=4.2; extra == "all"
|
|
26
26
|
Requires-Dist: mdit-py-plugins~=0.6; extra == "all"
|
|
27
27
|
Requires-Dist: pygments~=2.20; extra == "all"
|
|
28
|
-
Requires-Dist: mypy~=2.
|
|
28
|
+
Requires-Dist: mypy~=2.3; extra == "all"
|
|
29
29
|
Requires-Dist: gprof2dot~=2025.4; extra == "all"
|
|
30
30
|
Requires-Dist: segno~=1.6; extra == "all"
|
|
31
31
|
Requires-Dist: rich~=15.0; extra == "all"
|
|
@@ -33,9 +33,9 @@ Requires-Dist: textual~=8.2; extra == "all"
|
|
|
33
33
|
Requires-Dist: textual-dev~=1.8; extra == "all"
|
|
34
34
|
Requires-Dist: textual-speedups~=0.2; extra == "all"
|
|
35
35
|
Provides-Extra: ominfra
|
|
36
|
-
Requires-Dist: ominfra==0.0.
|
|
37
|
-
Provides-Extra:
|
|
38
|
-
Requires-Dist:
|
|
36
|
+
Requires-Dist: ominfra==0.0.27; extra == "ominfra"
|
|
37
|
+
Provides-Extra: omllm
|
|
38
|
+
Requires-Dist: omllm==0.0.27; extra == "omllm"
|
|
39
39
|
Provides-Extra: black
|
|
40
40
|
Requires-Dist: black~=26.5; extra == "black"
|
|
41
41
|
Provides-Extra: c
|
|
@@ -47,7 +47,7 @@ Requires-Dist: markdown-it-py~=4.2; extra == "doc"
|
|
|
47
47
|
Requires-Dist: mdit-py-plugins~=0.6; extra == "doc"
|
|
48
48
|
Requires-Dist: pygments~=2.20; extra == "doc"
|
|
49
49
|
Provides-Extra: mypy
|
|
50
|
-
Requires-Dist: mypy~=2.
|
|
50
|
+
Requires-Dist: mypy~=2.3; extra == "mypy"
|
|
51
51
|
Provides-Extra: prof
|
|
52
52
|
Requires-Dist: gprof2dot~=2025.4; extra == "prof"
|
|
53
53
|
Provides-Extra: qr
|
|
@@ -339,20 +339,6 @@
|
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
341
|
},
|
|
342
|
-
{
|
|
343
|
-
"module": ".supervisor.__main__",
|
|
344
|
-
"attr": "_CLI_MODULE",
|
|
345
|
-
"file": "omdev/supervisor/__main__.py",
|
|
346
|
-
"line": 4,
|
|
347
|
-
"value": {
|
|
348
|
-
"!.cli.types.CliModule": {
|
|
349
|
-
"name": [
|
|
350
|
-
"supervisor"
|
|
351
|
-
],
|
|
352
|
-
"module": "omdev.supervisor.__main__"
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
342
|
{
|
|
357
343
|
"module": ".tools.cloc",
|
|
358
344
|
"attr": "_CLI_MODULE",
|
|
@@ -16,8 +16,8 @@ class Project(ProjectBase):
|
|
|
16
16
|
f'ominfra == {__version__}',
|
|
17
17
|
],
|
|
18
18
|
|
|
19
|
-
'
|
|
20
|
-
f'
|
|
19
|
+
'omllm': [
|
|
20
|
+
f'omllm == {__version__}',
|
|
21
21
|
],
|
|
22
22
|
|
|
23
23
|
#
|
|
@@ -41,7 +41,7 @@ class Project(ProjectBase):
|
|
|
41
41
|
],
|
|
42
42
|
|
|
43
43
|
'mypy': [
|
|
44
|
-
'mypy ~= 2.
|
|
44
|
+
'mypy ~= 2.3',
|
|
45
45
|
],
|
|
46
46
|
|
|
47
47
|
'prof': [
|
|
@@ -45,7 +45,7 @@ class RequiresMarkerListMarshaler(msh.Marshaler):
|
|
|
45
45
|
|
|
46
46
|
class RequiresMarkerListMarshalerFactory(msh.MarshalerFactory):
|
|
47
47
|
def make_marshaler(self, ctx: msh.MarshalFactoryContext, rty: rfl.Type) -> ta.Callable[[], msh.Marshaler] | None:
|
|
48
|
-
if rty is not MarshalRequiresMarkerList:
|
|
48
|
+
if rty.runtime_object is not MarshalRequiresMarkerList:
|
|
49
49
|
return None
|
|
50
50
|
return lambda: RequiresMarkerListMarshaler(
|
|
51
51
|
ctx.make_marshaler(RequiresMarkerItem),
|
|
@@ -129,7 +129,7 @@ class WheelFile(zipfile.ZipFile):
|
|
|
129
129
|
def open( # type: ignore # noqa
|
|
130
130
|
self,
|
|
131
131
|
name_or_info: ta.Union[str, zipfile.ZipInfo],
|
|
132
|
-
mode:
|
|
132
|
+
mode: ta.Literal['r', 'w'] = 'r',
|
|
133
133
|
pwd: ta.Optional[bytes] = None,
|
|
134
134
|
) -> ta.IO[bytes]:
|
|
135
135
|
def _update_crc(newdata: bytes) -> None:
|
|
@@ -101,9 +101,9 @@ def __omlish_amalg__(): # noqa
|
|
|
101
101
|
dict(path='../../omlish/http/urllib.py', sha1='25431c5bdc7dd5cbecfcb8c0bdffaabf8c1691b9'),
|
|
102
102
|
dict(path='../../omlish/http/versions.py', sha1='5b1659b81eb197c6880fbe78684a1348595ec804'),
|
|
103
103
|
dict(path='../../omlish/io/pipelines/errors.py', sha1='231f62c44c201a261f2a781bcc0060e997ecf33c'),
|
|
104
|
-
dict(path='../../omlish/io/
|
|
104
|
+
dict(path='../../omlish/io/streambufs/errors.py', sha1='67ca85fd8741b5bfefe76c872ce1c30c18fab06f'),
|
|
105
105
|
dict(path='../../omlish/lite/abstract.py', sha1='a2fc3f3697fa8de5247761e9d554e70176f37aac'),
|
|
106
|
-
dict(path='../../omlish/lite/asyncs.py', sha1='
|
|
106
|
+
dict(path='../../omlish/lite/asyncs.py', sha1='6bd4b8ecc310ac1df19bafaf6eb85a1a284f65d5'),
|
|
107
107
|
dict(path='../../omlish/lite/bytes.py', sha1='b1833c50941b1177ed8e8c267259f7de7dbf1b96'),
|
|
108
108
|
dict(path='../../omlish/lite/cached.py', sha1='0c33cf961ac8f0727284303c7a30c5ea98f714f2'),
|
|
109
109
|
dict(path='../../omlish/lite/check.py', sha1='62b9ccea94c4f7bcef97e7adae8674b8cb11d4af'),
|
|
@@ -134,10 +134,10 @@ def __omlish_amalg__(): # noqa
|
|
|
134
134
|
dict(path='../../omlish/argparse/parsers.py', sha1='51044d7b7d1b1ca27173be2d3c007d574827a188'),
|
|
135
135
|
dict(path='../../omlish/formats/yaml/goyaml/errors.py', sha1='c4dda09d78bc14d9824e45e3d5d434185ee5598b'),
|
|
136
136
|
dict(path='../../omlish/http/headers.py', sha1='aa2182505c9b09e2b658df8f8b3d927bc5fae13b'),
|
|
137
|
-
dict(path='../../omlish/http/parsing.py', sha1='
|
|
137
|
+
dict(path='../../omlish/http/parsing.py', sha1='1adee35518ee930557f2c3b19fd4253df98a5b3c'),
|
|
138
138
|
dict(path='../../omlish/http/pipelines/compression/codings.py', sha1='b88bf055dff1b040ecde17d98484559e9078b8cf'), # noqa
|
|
139
139
|
dict(path='../../omlish/io/pipelines/core.py', sha1='cec21cacb85a0f443ea4caa021b33184d3816cf2'),
|
|
140
|
-
dict(path='../../omlish/io/
|
|
140
|
+
dict(path='../../omlish/io/streambufs/types.py', sha1='6a3167bf66a0a8817e19115b9c31973b2ff77788'),
|
|
141
141
|
dict(path='../../omlish/lite/json.py', sha1='01124e62093ebd4078602f16df0ec04cb724a612'),
|
|
142
142
|
dict(path='../../omlish/lite/marshal.py', sha1='66bc88d705df274e9fa1168d2aab20c7e3935cf6'),
|
|
143
143
|
dict(path='../../omlish/lite/maybes.py', sha1='5ac5f92e5610c6795b0a228c38e7bcd272bf6305'),
|
|
@@ -163,11 +163,11 @@ def __omlish_amalg__(): # noqa
|
|
|
163
163
|
dict(path='../../omlish/http/simple/types.py', sha1='8e31b8c442603b396523884ff554d3df6e7f4c1a'),
|
|
164
164
|
dict(path='../../omlish/io/pipelines/bytes/buffering.py', sha1='c19bddb05ef9449aa1a1c228901cab0d2d927946'),
|
|
165
165
|
dict(path='../../omlish/io/pipelines/drivers/metadata.py', sha1='44e49cb87136933ffe867087897eab5004034a93'), # noqa
|
|
166
|
-
dict(path='../../omlish/io/pipelines/flow/types.py', sha1='
|
|
166
|
+
dict(path='../../omlish/io/pipelines/flow/types.py', sha1='4353968e5bd490f4121eadf9e391076bd2673f28'),
|
|
167
167
|
dict(path='../../omlish/io/pipelines/sched/types.py', sha1='854b3f0f8ed5da2132a516f787b9019f5cb4eef5'),
|
|
168
|
-
dict(path='../../omlish/io/
|
|
169
|
-
dict(path='../../omlish/io/
|
|
170
|
-
dict(path='../../omlish/io/
|
|
168
|
+
dict(path='../../omlish/io/streambufs/base.py', sha1='bdeaff419684dec34fd0dc59808a9686131992bc'),
|
|
169
|
+
dict(path='../../omlish/io/streambufs/framing.py', sha1='dc2d7f638b042619fd3d95789c71532a29fd5fe4'),
|
|
170
|
+
dict(path='../../omlish/io/streambufs/utils.py', sha1='5162329f6dc70d88a94c743bae4ea19dec6fcea7'),
|
|
171
171
|
dict(path='../../omlish/lite/inject.py', sha1='172296edc98b32e51fdaa44ccc0a05b56e94f3ba'),
|
|
172
172
|
dict(path='../../omlish/logs/contexts.py', sha1='2f5881193a0c19c89c399ab0e0b5072c4048a60c'),
|
|
173
173
|
dict(path='../../omlish/logs/std/json.py', sha1='2a75553131e4d5331bb0cedde42aa183f403fc3b'),
|
|
@@ -176,7 +176,7 @@ def __omlish_amalg__(): # noqa
|
|
|
176
176
|
dict(path='../../omlish/sockets/handlers/simple.py', sha1='78e1a4c419c8f82d10577f19654a3d8ce28d757f'),
|
|
177
177
|
dict(path='../../omlish/sockets/handlers/ssl.py', sha1='94c0acedffe5b581419a7a92c2f1c4e4a58b7a83'),
|
|
178
178
|
dict(path='../../omlish/sockets/handlers/threading.py', sha1='24d7815c7bf8fcf3480267020785a3edc90b32f9'),
|
|
179
|
-
dict(path='../../omlish/subprocesses/run.py', sha1='
|
|
179
|
+
dict(path='../../omlish/subprocesses/run.py', sha1='9b7e1265cd59c58d30d8915f96ba84f80797ef42'),
|
|
180
180
|
dict(path='../../omlish/subprocesses/wrap.py', sha1='8a9b7d2255481fae15c05f5624b0cdc0766f4b3f'),
|
|
181
181
|
dict(path='../dataserver/handlers.py', sha1='ce0a208cbd7f66b26b9539ec6d5e7ef1041a4886'),
|
|
182
182
|
dict(path='../dataserver/routes.py', sha1='97379cba6a531ca1bde33de0eb432bd9b36791c1'),
|
|
@@ -185,15 +185,15 @@ def __omlish_amalg__(): # noqa
|
|
|
185
185
|
dict(path='../../omlish/formats/yaml/goyaml/ast.py', sha1='5ae8fa62a717986ac45024d5988b626850ed1786'),
|
|
186
186
|
dict(path='../../omlish/formats/yaml/goyaml/scanning.py', sha1='9c7bb51121f85ac499f8f907fbc3ce20a07f3e1d'),
|
|
187
187
|
dict(path='../../omlish/http/pipelines/chunking.py', sha1='7e25a89726210c96b93b4d1c676fdd8347ba82c5'),
|
|
188
|
-
dict(path='../../omlish/http/pipelines/compression/compressors.py', sha1='
|
|
189
|
-
dict(path='../../omlish/http/pipelines/compression/decompressors.py', sha1='
|
|
188
|
+
dict(path='../../omlish/http/pipelines/compression/compressors.py', sha1='0abf43a23ccd37537eb225f98ec0058026ce28b7'), # noqa
|
|
189
|
+
dict(path='../../omlish/http/pipelines/compression/decompressors.py', sha1='650380a2bad2ee5cdbe92088b7f606709095bcb5'), # noqa
|
|
190
190
|
dict(path='../../omlish/http/pipelines/encoders.py', sha1='fdcc3953e2a7f9ba4c1fddba9c365da113c77b45'),
|
|
191
191
|
dict(path='../../omlish/http/pipelines/requests.py', sha1='a0115429e52527073df8638f692aeca95803d3a7'),
|
|
192
192
|
dict(path='../../omlish/http/pipelines/responses.py', sha1='49c0a85b1fb7571dc52e0362f2b9eb68a2a4ee34'),
|
|
193
193
|
dict(path='../../omlish/http/simple/handlers.py', sha1='f15e127ac962f4577e06adfdb3c05a19fa896e89'),
|
|
194
194
|
dict(path='../../omlish/io/pipelines/handlers/decoders.py', sha1='c7a5db7b3989f8b5c952e255f9e6c8fc91fa6236'), # noqa
|
|
195
|
-
dict(path='../../omlish/io/
|
|
196
|
-
dict(path='../../omlish/io/
|
|
195
|
+
dict(path='../../omlish/io/streambufs/direct.py', sha1='8f031ad9167bef9a359f9859f234751dd9823a8c'),
|
|
196
|
+
dict(path='../../omlish/io/streambufs/scanning.py', sha1='33a75b7c6fee3d0a3f06dd86a03e83d2027e0f77'),
|
|
197
197
|
dict(path='../../omlish/logs/base.py', sha1='76bd4fff7a943cfdf0f992fb14d0cb7d89fc3fc6'),
|
|
198
198
|
dict(path='../../omlish/logs/std/records.py', sha1='67e552537d9268d4df6939b8a92be885fda35238'),
|
|
199
199
|
dict(path='../../omlish/logs/std/standard.py', sha1='472f1f0623d6bcd301612551432afa7e3a661a34'),
|
|
@@ -205,7 +205,7 @@ def __omlish_amalg__(): # noqa
|
|
|
205
205
|
dict(path='../specs/oci/loading.py', sha1='64d806ffad8d24087ccc29f759f672e6d795bee2'),
|
|
206
206
|
dict(path='../../omlish/formats/yaml/goyaml/parsing.py', sha1='78c28c2b865c57077b071543361920db142242d0'),
|
|
207
207
|
dict(path='../../omlish/http/pipelines/servers/responses.py', sha1='d2bc2464c242a7206edc015a7d9c88a7e21802ed'), # noqa
|
|
208
|
-
dict(path='../../omlish/io/
|
|
208
|
+
dict(path='../../omlish/io/streambufs/segmented.py', sha1='9bd6ccc359c933d113d97324d1dde6b6924066dc'),
|
|
209
209
|
dict(path='../../omlish/logs/asyncs.py', sha1='8376df395029a9d0957e2338adede895a9364215'),
|
|
210
210
|
dict(path='../../omlish/logs/std/loggers.py', sha1='dbdfc66188e6accb75d03454e43221d3fba0f011'),
|
|
211
211
|
dict(path='../../omlish/subprocesses/asyncs.py', sha1='bba44d524c24c6ac73168aee6343488414e5bf48'),
|
|
@@ -214,14 +214,14 @@ def __omlish_amalg__(): # noqa
|
|
|
214
214
|
dict(path='../specs/oci/dataserver.py', sha1='49c8cde4810c4185a57696e84ce933978a3ed3a1'),
|
|
215
215
|
dict(path='../../omlish/asyncs/asyncio/subprocesses.py', sha1='b6b5f9ae3fd0b9c83593bad2e04a08f726e5904d'),
|
|
216
216
|
dict(path='../../omlish/formats/yaml/goyaml/decoding.py', sha1='5047d6c283348c2cd4265c955bb94651e971addd'),
|
|
217
|
-
dict(path='../../omlish/http/pipelines/aggregators.py', sha1='
|
|
218
|
-
dict(path='../../omlish/io/pipelines/bytes/decoders.py', sha1='
|
|
217
|
+
dict(path='../../omlish/http/pipelines/aggregators.py', sha1='dbffeb4a48b42edafea05abe1123b5e9862511bb'),
|
|
218
|
+
dict(path='../../omlish/io/pipelines/bytes/decoders.py', sha1='ed307472f3d443f38eb33c66e0cdde9f9f1f7a00'),
|
|
219
219
|
dict(path='../../omlish/logs/modules.py', sha1='dd7d5f8e63fe8829dfb49460f3929ab64b68ee14'),
|
|
220
220
|
dict(path='cache.py', sha1='9353e5c3b73bed47258680fd15ac49417113f0ca'),
|
|
221
221
|
dict(path='docker/cmds.py', sha1='5528c384f68f9003732bfaf6be302e84747909dd'),
|
|
222
222
|
dict(path='utils.py', sha1='b7b7b439b1077771f2bd7c7c74ed422ea2663014'),
|
|
223
|
-
dict(path='../../omlish/http/pipelines/decoders.py', sha1='
|
|
224
|
-
dict(path='../../omlish/io/pipelines/drivers/sync.py', sha1='
|
|
223
|
+
dict(path='../../omlish/http/pipelines/decoders.py', sha1='d13e61a6e4ed6824b552b7b8dc3818eba43a6ce6'),
|
|
224
|
+
dict(path='../../omlish/io/pipelines/drivers/sync.py', sha1='a276abbb87270f8fc9c18685866b17c5f6415e32'),
|
|
225
225
|
dict(path='../../omlish/lite/timing.py', sha1='af5022f5a508939f1b433ed0514ede340fd0d672'),
|
|
226
226
|
dict(path='compose.py', sha1='d2bec1385701979c7ff9913456b72d8c7b31f70b'),
|
|
227
227
|
dict(path='docker/cache.py', sha1='1c30c907c44e7cc12cd985ccb88b1f6b65558899'),
|
|
@@ -236,7 +236,7 @@ def __omlish_amalg__(): # noqa
|
|
|
236
236
|
dict(path='docker/imagepulling.py', sha1='d6b1ca1ecb9aa5c593a25e6deb78e942c75ebcb4'),
|
|
237
237
|
dict(path='github/api/v1/client.py', sha1='6ddd600cd8a7ff72a6a3408ded14240bafab6944'),
|
|
238
238
|
dict(path='github/api/v2/client.py', sha1='e28f27c07011487d5a3f4ae32fdfa1a857d02459'),
|
|
239
|
-
dict(path='../../omlish/http/simple/pipelines/handlers.py', sha1='
|
|
239
|
+
dict(path='../../omlish/http/simple/pipelines/handlers.py', sha1='78f2e8f745cc126e57ff3bf65189a7144d4150bb'), # noqa
|
|
240
240
|
dict(path='ci.py', sha1='87b82e2bd86aa886764f1e0067251b056e359650'),
|
|
241
241
|
dict(path='github/cache.py', sha1='d91f9c87d167574e94c99817e6c3a0f75925dfb9'),
|
|
242
242
|
dict(path='github/cli.py', sha1='4f63c026d5d00b04a579ee9186a6264094eeae9d'),
|
|
@@ -345,7 +345,7 @@ AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
|
|
345
345
|
SimpleHttpHandler = ta.Callable[['SimpleHttpHandlerRequest'], 'SimpleHttpHandlerResponse'] # ta.TypeAlias
|
|
346
346
|
SimpleHttpHandlerResponseData = ta.Union[Bytes, 'SimpleHttpHandlerResponseStreamedData'] # ta.TypeAlias # noqa
|
|
347
347
|
|
|
348
|
-
# ../../omlish/io/
|
|
348
|
+
# ../../omlish/io/streambufs/utils.py
|
|
349
349
|
CanByteStreamBuffer = ta.Union[BytesLike, 'ByteStreamBufferLike'] # ta.TypeAlias
|
|
350
350
|
|
|
351
351
|
# ../../omlish/lite/inject.py
|
|
@@ -957,7 +957,7 @@ class FlowControlValidationIoPipelineError(IoPipelineError):
|
|
|
957
957
|
|
|
958
958
|
|
|
959
959
|
########################################
|
|
960
|
-
# ../../../omlish/io/
|
|
960
|
+
# ../../../omlish/io/streambufs/errors.py
|
|
961
961
|
|
|
962
962
|
|
|
963
963
|
##
|
|
@@ -1227,7 +1227,7 @@ def sync_await(aw: ta.Awaitable[T]) -> T:
|
|
|
1227
1227
|
except StopIteration:
|
|
1228
1228
|
pass
|
|
1229
1229
|
|
|
1230
|
-
if ret is missing or cr.cr_await is not None or cr.cr_running:
|
|
1230
|
+
if ret is missing or cr.cr_await is not None or cr.cr_running: # type: ignore[attr-defined]
|
|
1231
1231
|
raise SyncAwaitCoroutineNotTerminatedError('Not terminated')
|
|
1232
1232
|
|
|
1233
1233
|
finally:
|
|
@@ -4924,6 +4924,7 @@ class SemanticHeaderHttpParseErrorCode(enum.Enum):
|
|
|
4924
4924
|
INVALID_AUTHORIZATION = enum.auto()
|
|
4925
4925
|
TE_WITHOUT_CHUNKED_LAST = enum.auto()
|
|
4926
4926
|
TE_IN_HTTP10 = enum.auto()
|
|
4927
|
+
INVALID_TE = enum.auto()
|
|
4927
4928
|
|
|
4928
4929
|
|
|
4929
4930
|
class EncodingHttpParseErrorCode(enum.Enum):
|
|
@@ -5203,14 +5204,14 @@ class HttpParser:
|
|
|
5203
5204
|
"""Strictness knobs. Defaults are maximally strict."""
|
|
5204
5205
|
|
|
5205
5206
|
allow_obs_fold: bool = False
|
|
5206
|
-
|
|
5207
|
+
dangerous_allow_space_before_colon: bool = False # DANGEROUS - upstreams may not handle well
|
|
5207
5208
|
allow_multiple_content_lengths: bool = False
|
|
5208
5209
|
allow_content_length_with_te: bool = False
|
|
5209
5210
|
allow_bare_lf: bool = False
|
|
5210
5211
|
allow_missing_host: bool = False
|
|
5211
5212
|
allow_multiple_hosts: bool = False
|
|
5212
5213
|
allow_unknown_transfer_encoding: bool = False
|
|
5213
|
-
|
|
5214
|
+
reject_empty_header_values: bool = False
|
|
5214
5215
|
allow_bare_cr_in_value: bool = False
|
|
5215
5216
|
allow_te_without_chunked_in_response: bool = False
|
|
5216
5217
|
allow_transfer_encoding_http10: bool = False
|
|
@@ -5879,7 +5880,7 @@ class _HttpParseContext:
|
|
|
5879
5880
|
|
|
5880
5881
|
# Check for space before colon
|
|
5881
5882
|
if name_bytes[-1] in self._OWS_CHARS:
|
|
5882
|
-
if not self.config.
|
|
5883
|
+
if not self.config.dangerous_allow_space_before_colon:
|
|
5883
5884
|
raise HeaderFieldHttpParseError(
|
|
5884
5885
|
code=HeaderFieldHttpParseErrorCode.SPACE_BEFORE_COLON,
|
|
5885
5886
|
message='Whitespace between field-name and colon',
|
|
@@ -5930,7 +5931,7 @@ class _HttpParseContext:
|
|
|
5930
5931
|
value_stripped = self._strip_ows(value_bytes)
|
|
5931
5932
|
|
|
5932
5933
|
# Check for empty value
|
|
5933
|
-
if not value_stripped and
|
|
5934
|
+
if not value_stripped and self.config.reject_empty_header_values:
|
|
5934
5935
|
raise HeaderFieldHttpParseError(
|
|
5935
5936
|
code=HeaderFieldHttpParseErrorCode.INVALID_FIELD_VALUE,
|
|
5936
5937
|
message='Empty header field value not allowed',
|
|
@@ -6050,7 +6051,10 @@ class _HttpParseContext:
|
|
|
6050
6051
|
for part in v.split(','):
|
|
6051
6052
|
stripped = part.strip()
|
|
6052
6053
|
|
|
6053
|
-
|
|
6054
|
+
# NOTE: must be ASCII digits only. str.isdigit() is True for non-ASCII numerics present in the
|
|
6055
|
+
# latin-1-decoded value (e.g. superscripts U+00B2/B3/B9), but int() rejects those with a ValueError -
|
|
6056
|
+
# which would escape as an uncaught exception rather than a clean parse error.
|
|
6057
|
+
if not (stripped.isascii() and stripped.isdigit()):
|
|
6054
6058
|
raise SemanticHeaderHttpParseError(
|
|
6055
6059
|
code=SemanticHeaderHttpParseErrorCode.INVALID_CONTENT_LENGTH,
|
|
6056
6060
|
message=f'Content-Length value is not a valid non-negative integer: {stripped!r}',
|
|
@@ -6410,16 +6414,28 @@ class _HttpParseContext:
|
|
|
6410
6414
|
if q_str is not None:
|
|
6411
6415
|
q = float(q_str) # caller wraps ValueError
|
|
6412
6416
|
|
|
6417
|
+
# float() also accepts 'nan'/'inf'/overflowing exponents; reject those and any out-of-range value. The
|
|
6418
|
+
# chained comparison is False for NaN and +/-inf, so this single check covers non-finite and range at once.
|
|
6419
|
+
# (RFC 9110 qvalue is 0 <= q <= 1.)
|
|
6420
|
+
if not (0.0 <= q <= 1.0):
|
|
6421
|
+
raise ValueError(f'q-value out of range [0, 1]: {q_str!r}')
|
|
6422
|
+
|
|
6413
6423
|
return token, q, params
|
|
6414
6424
|
|
|
6415
6425
|
def _prepare_te(self, headers: ParsedHttpHeaders, prepared: PreparedParsedHttpHeaders) -> None:
|
|
6416
6426
|
if 'te' not in headers:
|
|
6417
6427
|
return
|
|
6418
6428
|
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6429
|
+
try:
|
|
6430
|
+
codings = [
|
|
6431
|
+
self._split_header_element(p)[0]
|
|
6432
|
+
for p in self._parse_comma_list(headers['te'])
|
|
6433
|
+
]
|
|
6434
|
+
except ValueError:
|
|
6435
|
+
raise SemanticHeaderHttpParseError(
|
|
6436
|
+
code=SemanticHeaderHttpParseErrorCode.INVALID_TE,
|
|
6437
|
+
message=f'Invalid q-value in TE header: {headers["te"]!r}',
|
|
6438
|
+
) from None
|
|
6423
6439
|
|
|
6424
6440
|
prepared.te = [c for c in codings if c]
|
|
6425
6441
|
|
|
@@ -8681,7 +8697,7 @@ class IoPipeline:
|
|
|
8681
8697
|
|
|
8682
8698
|
|
|
8683
8699
|
########################################
|
|
8684
|
-
# ../../../omlish/io/
|
|
8700
|
+
# ../../../omlish/io/streambufs/types.py
|
|
8685
8701
|
|
|
8686
8702
|
|
|
8687
8703
|
##
|
|
@@ -13526,25 +13542,36 @@ class IoPipelineFlowMessages(NamespaceClass):
|
|
|
13526
13542
|
):
|
|
13527
13543
|
pass
|
|
13528
13544
|
|
|
13545
|
+
##
|
|
13546
|
+
# TODO / WIP:
|
|
13547
|
+
# - Level-triggered writability, edge-notified: emitters send one message per *transition*, never repeats.
|
|
13548
|
+
# ReadyForOutput means 'output may flow'; PauseOutput means 'stop producing output'.
|
|
13549
|
+
# - They flow INBOUND (transport -> app), originated by the transport head (or a dedicated watermark handler
|
|
13550
|
+
# watching an OutboundBytesBufferingIoPipelineHandler) from its unflushed backlog vs high/low watermarks.
|
|
13551
|
+
# - Handlers that buffer outbound data (ssl, compression, ...) do not forward these blindly: they combine the
|
|
13552
|
+
# transport-side signal with their own buffer level and re-announce the COMBINED value inbound, again only on
|
|
13553
|
+
# change. Pass-through handlers just propagate.
|
|
13554
|
+
# - The implied initial state is writable; a pipeline that never sends either message behaves as if ReadyForOutput
|
|
13555
|
+
# were always in effect. As with the other flow messages, these are only ever sent when an IoPipelineFlow service
|
|
13556
|
+
# is present.
|
|
13557
|
+
|
|
13529
13558
|
#
|
|
13530
13559
|
|
|
13531
|
-
|
|
13532
|
-
|
|
13533
|
-
#
|
|
13534
|
-
|
|
13535
|
-
|
|
13536
|
-
|
|
13537
|
-
|
|
13538
|
-
# pass
|
|
13560
|
+
@ta.final
|
|
13561
|
+
@dc.dataclass(frozen=True)
|
|
13562
|
+
class ReadyForOutput( # ~ Netty `ChannelInboundInvoker::fireChannelWritabilityChanged` # noqa
|
|
13563
|
+
IoPipelineMessages.MayPropagate,
|
|
13564
|
+
IoPipelineMessages.NeverOutbound,
|
|
13565
|
+
):
|
|
13566
|
+
pass
|
|
13539
13567
|
|
|
13540
|
-
|
|
13541
|
-
|
|
13542
|
-
#
|
|
13543
|
-
|
|
13544
|
-
|
|
13545
|
-
|
|
13546
|
-
|
|
13547
|
-
# pass
|
|
13568
|
+
@ta.final
|
|
13569
|
+
@dc.dataclass(frozen=True)
|
|
13570
|
+
class PauseOutput( # ~ Netty `ChannelInboundInvoker::fireChannelWritabilityChanged` # noqa
|
|
13571
|
+
IoPipelineMessages.MayPropagate,
|
|
13572
|
+
IoPipelineMessages.NeverOutbound,
|
|
13573
|
+
):
|
|
13574
|
+
pass
|
|
13548
13575
|
|
|
13549
13576
|
|
|
13550
13577
|
##
|
|
@@ -13631,7 +13658,7 @@ class IoPipelineScheduling(Abstract):
|
|
|
13631
13658
|
|
|
13632
13659
|
|
|
13633
13660
|
########################################
|
|
13634
|
-
# ../../../omlish/io/
|
|
13661
|
+
# ../../../omlish/io/streambufs/base.py
|
|
13635
13662
|
|
|
13636
13663
|
|
|
13637
13664
|
##
|
|
@@ -13644,7 +13671,7 @@ class BaseByteStreamBufferLike(ByteStreamBufferLike, Abstract):
|
|
|
13644
13671
|
|
|
13645
13672
|
|
|
13646
13673
|
########################################
|
|
13647
|
-
# ../../../omlish/io/
|
|
13674
|
+
# ../../../omlish/io/streambufs/framing.py
|
|
13648
13675
|
|
|
13649
13676
|
|
|
13650
13677
|
##
|
|
@@ -13979,7 +14006,7 @@ class LengthFieldByteStreamFrameDecoder:
|
|
|
13979
14006
|
|
|
13980
14007
|
|
|
13981
14008
|
########################################
|
|
13982
|
-
# ../../../omlish/io/
|
|
14009
|
+
# ../../../omlish/io/streambufs/utils.py
|
|
13983
14010
|
|
|
13984
14011
|
|
|
13985
14012
|
##
|
|
@@ -16017,17 +16044,6 @@ class SubprocessRun:
|
|
|
16017
16044
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
|
16018
16045
|
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
|
16019
16046
|
|
|
16020
|
-
_DEFAULT_MAYSYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractMaysyncSubprocesses
|
|
16021
|
-
|
|
16022
|
-
async def maysync_run(
|
|
16023
|
-
self,
|
|
16024
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
16025
|
-
**kwargs: ta.Any,
|
|
16026
|
-
) -> SubprocessRunOutput:
|
|
16027
|
-
if maysync_subprocesses is None:
|
|
16028
|
-
maysync_subprocesses = self._DEFAULT_MAYSYNC_SUBPROCESSES
|
|
16029
|
-
return await check.not_none(maysync_subprocesses).run_(self.replace(**kwargs))
|
|
16030
|
-
|
|
16031
16047
|
|
|
16032
16048
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
|
16033
16049
|
|
|
@@ -16060,13 +16076,6 @@ class SubprocessRunnable(Abstract, ta.Generic[T]):
|
|
|
16060
16076
|
) -> T:
|
|
16061
16077
|
return self.handle_run_output(await self.make_run().async_run(async_subprocesses, **kwargs))
|
|
16062
16078
|
|
|
16063
|
-
async def maysync_run(
|
|
16064
|
-
self,
|
|
16065
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
16066
|
-
**kwargs: ta.Any,
|
|
16067
|
-
) -> T:
|
|
16068
|
-
return self.handle_run_output(await self.make_run().maysync_run(maysync_subprocesses, **kwargs))
|
|
16069
|
-
|
|
16070
16079
|
|
|
16071
16080
|
########################################
|
|
16072
16081
|
# ../../../omlish/subprocesses/wrap.py
|
|
@@ -22127,7 +22136,7 @@ class FnMessageToMessageDecoderIoPipelineHandler(MessageToMessageDecoderIoPipeli
|
|
|
22127
22136
|
|
|
22128
22137
|
|
|
22129
22138
|
########################################
|
|
22130
|
-
# ../../../omlish/io/
|
|
22139
|
+
# ../../../omlish/io/streambufs/direct.py
|
|
22131
22140
|
|
|
22132
22141
|
|
|
22133
22142
|
##
|
|
@@ -22294,7 +22303,7 @@ def empty_byte_stream_buffer_view() -> ByteStreamBufferView:
|
|
|
22294
22303
|
|
|
22295
22304
|
|
|
22296
22305
|
########################################
|
|
22297
|
-
# ../../../omlish/io/
|
|
22306
|
+
# ../../../omlish/io/streambufs/scanning.py
|
|
22298
22307
|
|
|
22299
22308
|
|
|
22300
22309
|
##
|
|
@@ -26697,7 +26706,7 @@ class IoPipelineHttpResponseCompressor(IoPipelineHttpResponseObjects, IoPipeline
|
|
|
26697
26706
|
|
|
26698
26707
|
|
|
26699
26708
|
########################################
|
|
26700
|
-
# ../../../omlish/io/
|
|
26709
|
+
# ../../../omlish/io/streambufs/segmented.py
|
|
26701
26710
|
|
|
26702
26711
|
|
|
26703
26712
|
##
|
|
@@ -77,7 +77,7 @@ def __omlish_amalg__(): # noqa
|
|
|
77
77
|
dict(path='../../omlish/asyncs/asyncio/timeouts.py', sha1='4d31b02b3c39b8f2fa7e94db36552fde6942e36a'),
|
|
78
78
|
dict(path='../../omlish/lite/inject.py', sha1='172296edc98b32e51fdaa44ccc0a05b56e94f3ba'),
|
|
79
79
|
dict(path='../../omlish/logs/std/json.py', sha1='2a75553131e4d5331bb0cedde42aa183f403fc3b'),
|
|
80
|
-
dict(path='../../omlish/subprocesses/run.py', sha1='
|
|
80
|
+
dict(path='../../omlish/subprocesses/run.py', sha1='9b7e1265cd59c58d30d8915f96ba84f80797ef42'),
|
|
81
81
|
dict(path='../../omlish/subprocesses/wrap.py', sha1='8a9b7d2255481fae15c05f5624b0cdc0766f4b3f'),
|
|
82
82
|
dict(path='providers/base.py', sha1='f5d068c21f230d742e9015b033cd6320f4c68898'),
|
|
83
83
|
dict(path='../../omlish/logs/std/standard.py', sha1='472f1f0623d6bcd301612551432afa7e3a661a34'),
|
|
@@ -4790,17 +4790,6 @@ class SubprocessRun:
|
|
|
4790
4790
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
|
4791
4791
|
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
|
4792
4792
|
|
|
4793
|
-
_DEFAULT_MAYSYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractMaysyncSubprocesses
|
|
4794
|
-
|
|
4795
|
-
async def maysync_run(
|
|
4796
|
-
self,
|
|
4797
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
4798
|
-
**kwargs: ta.Any,
|
|
4799
|
-
) -> SubprocessRunOutput:
|
|
4800
|
-
if maysync_subprocesses is None:
|
|
4801
|
-
maysync_subprocesses = self._DEFAULT_MAYSYNC_SUBPROCESSES
|
|
4802
|
-
return await check.not_none(maysync_subprocesses).run_(self.replace(**kwargs))
|
|
4803
|
-
|
|
4804
4793
|
|
|
4805
4794
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
|
4806
4795
|
|
|
@@ -4833,13 +4822,6 @@ class SubprocessRunnable(Abstract, ta.Generic[T]):
|
|
|
4833
4822
|
) -> T:
|
|
4834
4823
|
return self.handle_run_output(await self.make_run().async_run(async_subprocesses, **kwargs))
|
|
4835
4824
|
|
|
4836
|
-
async def maysync_run(
|
|
4837
|
-
self,
|
|
4838
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
4839
|
-
**kwargs: ta.Any,
|
|
4840
|
-
) -> T:
|
|
4841
|
-
return self.handle_run_output(await self.make_run().maysync_run(maysync_subprocesses, **kwargs))
|
|
4842
|
-
|
|
4843
4825
|
|
|
4844
4826
|
########################################
|
|
4845
4827
|
# ../../../omlish/subprocesses/wrap.py
|