omdev 0.0.24__tar.gz → 0.0.26__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.24/omdev.egg-info → omdev-0.0.26}/PKG-INFO +8 -8
- {omdev-0.0.24 → omdev-0.0.26}/omdev/__about__.py +1 -1
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/_dumping.py +20 -7
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/cli.py +3 -1
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/codegen.py +8 -17
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/dumping.py +19 -6
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/marshal.py +1 -1
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/wheelfile.py +1 -1
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/ci.py +55 -46
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/interp.py +1 -19
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/io/pipelines.py +29 -18
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/pidfiles.py +1 -19
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/pyproject.py +3 -21
- {omdev-0.0.24 → omdev-0.0.26/omdev.egg-info}/PKG-INFO +8 -8
- {omdev-0.0.24 → omdev-0.0.26}/omdev.egg-info/requires.txt +7 -7
- {omdev-0.0.24 → omdev-0.0.26}/pyproject.toml +8 -8
- {omdev-0.0.24 → omdev-0.0.26}/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/MANIFEST.in +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/README.md +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/README.md +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/info.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/build.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/ci.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/compose.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/consts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/shell.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/ci/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/install.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/managers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cli/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmake.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/diffs/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/build.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/chgrp.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/workdir.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/scripts/install-pi +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/resources/shift-uid.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/run.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/dockerdev/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/git/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/git/magic.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/git/revisions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/git/shallow.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/git/status.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/paths.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/secrets.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/home/shadow.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/imgur.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/intellij/open.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/default.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/java/xml.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/find.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/magic.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/magic/styles.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/building.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/manifests/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/mypy/report.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/names.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pip.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/base.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/git.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/classdot.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/findimports.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/reprs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tools/fixdocstrings.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/py.typed +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/formats/goyaml.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/io/streams.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/messages/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/messages/base.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/messages/formats.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/messages/messages.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/messages/parsing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/numerics/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/numerics/formats.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/numerics/numerics.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/numerics/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/consts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/errors.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/message.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/nuh.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/parsing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/tags.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/irc/protocol/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/analysis.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/config.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/errors.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/generator.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/ir.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/names.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/transforms.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/jsonschema/codegen/typing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/building.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/compression.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/data.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/datarefs.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/dataserver.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/loading.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/media.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/pack/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/pack/packing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/pack/repositories.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/pack/unpacking.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/repositories.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/specs/oci/tars.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/supervisor/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/supervisor/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/supervisor/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tagstrings.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/diff.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/doc.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/docker.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/pip.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/prof.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/qr.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/shell.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/rich/trirule.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/actionmenu.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/client.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/borders.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/colors.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/colors.tcss +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/easing.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/easing.tcss +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/previews/keys.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/protocol.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/redirect_output.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/renderables.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/server.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/service.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/tools/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/altdevtools/tools/diagnose.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/dom2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.24 → omdev-0.0.26}/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.26
|
|
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.26
|
|
18
18
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: ominfra==0.0.
|
|
20
|
-
Requires-Dist: ommlds==0.0.
|
|
19
|
+
Requires-Dist: ominfra==0.0.26; extra == "all"
|
|
20
|
+
Requires-Dist: ommlds==0.0.26; 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.2; 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.
|
|
36
|
+
Requires-Dist: ominfra==0.0.26; extra == "ominfra"
|
|
37
37
|
Provides-Extra: ommlds
|
|
38
|
-
Requires-Dist: ommlds==0.0.
|
|
38
|
+
Requires-Dist: ommlds==0.0.26; extra == "ommlds"
|
|
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.2; extra == "mypy"
|
|
51
51
|
Provides-Extra: prof
|
|
52
52
|
Requires-Dist: gprof2dot~=2025.4; extra == "prof"
|
|
53
53
|
Provides-Extra: qr
|
|
@@ -21,6 +21,7 @@ import json
|
|
|
21
21
|
import os.path
|
|
22
22
|
import sys
|
|
23
23
|
import threading
|
|
24
|
+
import traceback
|
|
24
25
|
import types
|
|
25
26
|
import typing as ta
|
|
26
27
|
import uuid
|
|
@@ -45,7 +46,7 @@ def __omlish_amalg__(): # noqa
|
|
|
45
46
|
dict(path='../../omlish/lite/strings.py', sha1='89631bb5cfd6496176db71ab3abd58b89872068b'),
|
|
46
47
|
dict(path='../../omlish/lite/json.py', sha1='01124e62093ebd4078602f16df0ec04cb724a612'),
|
|
47
48
|
dict(path='../../omlish/lite/marshal.py', sha1='66bc88d705df274e9fa1168d2aab20c7e3935cf6'),
|
|
48
|
-
dict(path='dumping.py', sha1='
|
|
49
|
+
dict(path='dumping.py', sha1='3a116abfd0a6c5abc2e2ad3f2ff48ce8c114ac07'),
|
|
49
50
|
],
|
|
50
51
|
)
|
|
51
52
|
|
|
@@ -1985,6 +1986,7 @@ class _DataclassCodegenDumper:
|
|
|
1985
1986
|
init_file_path: str,
|
|
1986
1987
|
out_file_path: str,
|
|
1987
1988
|
cfg_pkg_name: ta.Optional[str] = None,
|
|
1989
|
+
debug: bool = False,
|
|
1988
1990
|
) -> None:
|
|
1989
1991
|
from omlish.dataclasses.impl.configs import PACKAGE_CONFIG_CACHE # noqa
|
|
1990
1992
|
from omlish.dataclasses.impl.generation.compilation import OpCompiler # noqa
|
|
@@ -1992,6 +1994,8 @@ class _DataclassCodegenDumper:
|
|
|
1992
1994
|
from omlish.dataclasses.impl.generation.ops import OpRef # noqa
|
|
1993
1995
|
from omlish.dataclasses.impl.generation.processor import Codegen # noqa
|
|
1994
1996
|
from omlish.dataclasses.impl.generation.processor import GeneratorProcessor # noqa
|
|
1997
|
+
from omlish.dataclasses.impl.generation.processor import ProcessingOption # noqa
|
|
1998
|
+
from omlish.dataclasses.impl.generation.processor import Verbosity # noqa
|
|
1995
1999
|
from omlish.dataclasses.impl.processing.base import ProcessingContext # noqa
|
|
1996
2000
|
from omlish.dataclasses.impl.processing.driving import processing_options_context # noqa
|
|
1997
2001
|
|
|
@@ -2060,7 +2064,7 @@ class _DataclassCodegenDumper:
|
|
|
2060
2064
|
try:
|
|
2061
2065
|
__import__(spec)
|
|
2062
2066
|
except Exception as e: # noqa
|
|
2063
|
-
import_errors[spec] =
|
|
2067
|
+
import_errors[spec] = ''.join(traceback.format_exc())
|
|
2064
2068
|
|
|
2065
2069
|
finally:
|
|
2066
2070
|
cur_module = None
|
|
@@ -2113,11 +2117,20 @@ class _DataclassCodegenDumper:
|
|
|
2113
2117
|
|
|
2114
2118
|
#
|
|
2115
2119
|
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2120
|
+
proc_opts: list[ProcessingOption] = []
|
|
2121
|
+
|
|
2122
|
+
proc_opts.append(Codegen(
|
|
2123
|
+
style='aot',
|
|
2124
|
+
force=True,
|
|
2125
|
+
callback=callback,
|
|
2126
|
+
))
|
|
2127
|
+
|
|
2128
|
+
if debug:
|
|
2129
|
+
proc_opts.append(Verbosity(
|
|
2130
|
+
debug=True,
|
|
2131
|
+
))
|
|
2132
|
+
|
|
2133
|
+
with processing_options_context(*proc_opts):
|
|
2121
2134
|
process_dir(os.path.dirname(init_file_path))
|
|
2122
2135
|
|
|
2123
2136
|
#
|
|
@@ -13,6 +13,7 @@ class Cli(ap.Cli):
|
|
|
13
13
|
ap.arg('--dump-inline', action='store_true'),
|
|
14
14
|
ap.arg('--dry-run', action='store_true'),
|
|
15
15
|
ap.arg('--print-code', action='store_true'),
|
|
16
|
+
ap.arg('--debug', action='store_true'),
|
|
16
17
|
ap.arg('-j', '--jobs', type=int),
|
|
17
18
|
)
|
|
18
19
|
def codegen(self) -> None:
|
|
@@ -20,8 +21,9 @@ class Cli(ap.Cli):
|
|
|
20
21
|
|
|
21
22
|
asyncio.run(DataclassCodeGen(
|
|
22
23
|
dump_inline=self.args.dump_inline,
|
|
23
|
-
print_code=self.args.print_code,
|
|
24
24
|
dry_run=self.args.dry_run,
|
|
25
|
+
print_code=self.args.print_code,
|
|
26
|
+
debug=self.args.debug,
|
|
25
27
|
).run(
|
|
26
28
|
self.args.roots,
|
|
27
29
|
**(dict(concurrency=self.args.jobs) if self.args.jobs is not None else {}),
|
|
@@ -74,16 +74,18 @@ class DataclassCodeGen:
|
|
|
74
74
|
*,
|
|
75
75
|
target_line_width: int | None = None,
|
|
76
76
|
dump_inline: bool = False,
|
|
77
|
-
print_code: bool = False,
|
|
78
77
|
dry_run: bool = False,
|
|
78
|
+
print_code: bool = False,
|
|
79
|
+
debug: bool = False,
|
|
79
80
|
subprocess_kwargs: ta.Mapping[str, ta.Any] | None = None,
|
|
80
81
|
) -> None:
|
|
81
82
|
super().__init__()
|
|
82
83
|
|
|
83
84
|
self._target_line_width = target_line_width or self.DEFAULT_TARGET_LINE_WIDTH
|
|
84
85
|
self._dump_inline = dump_inline
|
|
85
|
-
self._print_code = print_code
|
|
86
86
|
self._dry_run = dry_run
|
|
87
|
+
self._print_code = print_code
|
|
88
|
+
self._debug = debug
|
|
87
89
|
self._subprocess_kwargs = subprocess_kwargs
|
|
88
90
|
|
|
89
91
|
#
|
|
@@ -203,6 +205,7 @@ class DataclassCodeGen:
|
|
|
203
205
|
init_file_path=cfg_pkg.init_file_path,
|
|
204
206
|
out_file_path=out_file_path,
|
|
205
207
|
cfg_pkg_name=cfg_pkg.name,
|
|
208
|
+
**(dict(debug=True) if self._debug else {}),
|
|
206
209
|
)
|
|
207
210
|
|
|
208
211
|
start_time = time.time()
|
|
@@ -235,6 +238,9 @@ class DataclassCodeGen:
|
|
|
235
238
|
) -> None:
|
|
236
239
|
gen_file_path = os.path.join(os.path.dirname(cfg_pkg.init_file_path), '_dataclasses.py')
|
|
237
240
|
|
|
241
|
+
for err_mod, err_str in output.import_errors.items():
|
|
242
|
+
log.error(lambda: f'Failed to import {err_mod}: {err_str}')
|
|
243
|
+
|
|
238
244
|
if os.path.isfile(gen_file_path):
|
|
239
245
|
if not _is_generated_py_file(gen_file_path):
|
|
240
246
|
raise RuntimeError(f'Refusing to overwrite non-generated file: {gen_file_path!r}')
|
|
@@ -315,21 +321,6 @@ class DataclassCodeGen:
|
|
|
315
321
|
f' plan_repr_sha1={pr_sha1!r},',
|
|
316
322
|
])
|
|
317
323
|
|
|
318
|
-
op_ref_idents = [r.ident for r in x.refs if r.kind == 'op']
|
|
319
|
-
if op_ref_idents:
|
|
320
|
-
lines.extend([
|
|
321
|
-
f' op_ref_idents=(',
|
|
322
|
-
*[
|
|
323
|
-
f' {r!r},'
|
|
324
|
-
for r in sorted(op_ref_idents)
|
|
325
|
-
],
|
|
326
|
-
f' ),',
|
|
327
|
-
])
|
|
328
|
-
else:
|
|
329
|
-
lines.append(
|
|
330
|
-
' op_ref_idents=(),',
|
|
331
|
-
)
|
|
332
|
-
|
|
333
324
|
lines.extend([
|
|
334
325
|
f' cls_names=(',
|
|
335
326
|
*[
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# @omlish-amalg _dumping.py
|
|
4
4
|
import dataclasses as dc
|
|
5
5
|
import os.path
|
|
6
|
+
import traceback
|
|
6
7
|
import typing as ta
|
|
7
8
|
|
|
8
9
|
from omlish.lite.check import check
|
|
@@ -57,6 +58,7 @@ class _DataclassCodegenDumper:
|
|
|
57
58
|
init_file_path: str,
|
|
58
59
|
out_file_path: str,
|
|
59
60
|
cfg_pkg_name: ta.Optional[str] = None,
|
|
61
|
+
debug: bool = False,
|
|
60
62
|
) -> None:
|
|
61
63
|
from omlish.dataclasses.impl.configs import PACKAGE_CONFIG_CACHE # noqa
|
|
62
64
|
from omlish.dataclasses.impl.generation.compilation import OpCompiler # noqa
|
|
@@ -64,6 +66,8 @@ class _DataclassCodegenDumper:
|
|
|
64
66
|
from omlish.dataclasses.impl.generation.ops import OpRef # noqa
|
|
65
67
|
from omlish.dataclasses.impl.generation.processor import Codegen # noqa
|
|
66
68
|
from omlish.dataclasses.impl.generation.processor import GeneratorProcessor # noqa
|
|
69
|
+
from omlish.dataclasses.impl.generation.processor import ProcessingOption # noqa
|
|
70
|
+
from omlish.dataclasses.impl.generation.processor import Verbosity # noqa
|
|
67
71
|
from omlish.dataclasses.impl.processing.base import ProcessingContext # noqa
|
|
68
72
|
from omlish.dataclasses.impl.processing.driving import processing_options_context # noqa
|
|
69
73
|
|
|
@@ -132,7 +136,7 @@ class _DataclassCodegenDumper:
|
|
|
132
136
|
try:
|
|
133
137
|
__import__(spec)
|
|
134
138
|
except Exception as e: # noqa
|
|
135
|
-
import_errors[spec] =
|
|
139
|
+
import_errors[spec] = ''.join(traceback.format_exc())
|
|
136
140
|
|
|
137
141
|
finally:
|
|
138
142
|
cur_module = None
|
|
@@ -185,11 +189,20 @@ class _DataclassCodegenDumper:
|
|
|
185
189
|
|
|
186
190
|
#
|
|
187
191
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
192
|
+
proc_opts: list[ProcessingOption] = []
|
|
193
|
+
|
|
194
|
+
proc_opts.append(Codegen(
|
|
195
|
+
style='aot',
|
|
196
|
+
force=True,
|
|
197
|
+
callback=callback,
|
|
198
|
+
))
|
|
199
|
+
|
|
200
|
+
if debug:
|
|
201
|
+
proc_opts.append(Verbosity(
|
|
202
|
+
debug=True,
|
|
203
|
+
))
|
|
204
|
+
|
|
205
|
+
with processing_options_context(*proc_opts):
|
|
193
206
|
process_dir(os.path.dirname(init_file_path))
|
|
194
207
|
|
|
195
208
|
#
|
|
@@ -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:
|
|
@@ -134,7 +134,7 @@ 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
140
|
dict(path='../../omlish/io/streams/types.py', sha1='6a3167bf66a0a8817e19115b9c31973b2ff77788'),
|
|
@@ -163,7 +163,7 @@ 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
168
|
dict(path='../../omlish/io/streams/base.py', sha1='bdeaff419684dec34fd0dc59808a9686131992bc'),
|
|
169
169
|
dict(path='../../omlish/io/streams/framing.py', sha1='dc2d7f638b042619fd3d95789c71532a29fd5fe4'),
|
|
@@ -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'),
|
|
@@ -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
|
|
|
@@ -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
|
##
|
|
@@ -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
|
|
@@ -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
|
|
@@ -52,7 +52,7 @@ def __omlish_amalg__(): # noqa
|
|
|
52
52
|
dict(path='asyncs.py', sha1='a78bd64bada44716809c19e95d6ca4a96f3a28d7'),
|
|
53
53
|
dict(path='bytes/buffering.py', sha1='c19bddb05ef9449aa1a1c228901cab0d2d927946'),
|
|
54
54
|
dict(path='drivers/metadata.py', sha1='44e49cb87136933ffe867087897eab5004034a93'),
|
|
55
|
-
dict(path='flow/types.py', sha1='
|
|
55
|
+
dict(path='flow/types.py', sha1='4353968e5bd490f4121eadf9e391076bd2673f28'),
|
|
56
56
|
dict(path='handlers/fns.py', sha1='6dd1901ebdbdb31caeffab06d239f1c41e3f2726'),
|
|
57
57
|
dict(path='handlers/queues.py', sha1='f49d19c5dd7de77299bedbfb3a77a36479fd1edf'),
|
|
58
58
|
dict(path='sched/types.py', sha1='854b3f0f8ed5da2132a516f787b9019f5cb4eef5'),
|
|
@@ -4145,25 +4145,36 @@ class IoPipelineFlowMessages(NamespaceClass):
|
|
|
4145
4145
|
):
|
|
4146
4146
|
pass
|
|
4147
4147
|
|
|
4148
|
+
##
|
|
4149
|
+
# TODO / WIP:
|
|
4150
|
+
# - Level-triggered writability, edge-notified: emitters send one message per *transition*, never repeats.
|
|
4151
|
+
# ReadyForOutput means 'output may flow'; PauseOutput means 'stop producing output'.
|
|
4152
|
+
# - They flow INBOUND (transport -> app), originated by the transport head (or a dedicated watermark handler
|
|
4153
|
+
# watching an OutboundBytesBufferingIoPipelineHandler) from its unflushed backlog vs high/low watermarks.
|
|
4154
|
+
# - Handlers that buffer outbound data (ssl, compression, ...) do not forward these blindly: they combine the
|
|
4155
|
+
# transport-side signal with their own buffer level and re-announce the COMBINED value inbound, again only on
|
|
4156
|
+
# change. Pass-through handlers just propagate.
|
|
4157
|
+
# - The implied initial state is writable; a pipeline that never sends either message behaves as if ReadyForOutput
|
|
4158
|
+
# were always in effect. As with the other flow messages, these are only ever sent when an IoPipelineFlow service
|
|
4159
|
+
# is present.
|
|
4160
|
+
|
|
4148
4161
|
#
|
|
4149
4162
|
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
#
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
#
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
# ):
|
|
4166
|
-
# pass
|
|
4163
|
+
@ta.final
|
|
4164
|
+
@dc.dataclass(frozen=True)
|
|
4165
|
+
class ReadyForOutput( # ~ Netty `ChannelInboundInvoker::fireChannelWritabilityChanged` # noqa
|
|
4166
|
+
IoPipelineMessages.MayPropagate,
|
|
4167
|
+
IoPipelineMessages.NeverOutbound,
|
|
4168
|
+
):
|
|
4169
|
+
pass
|
|
4170
|
+
|
|
4171
|
+
@ta.final
|
|
4172
|
+
@dc.dataclass(frozen=True)
|
|
4173
|
+
class PauseOutput( # ~ Netty `ChannelInboundInvoker::fireChannelWritabilityChanged` # noqa
|
|
4174
|
+
IoPipelineMessages.MayPropagate,
|
|
4175
|
+
IoPipelineMessages.NeverOutbound,
|
|
4176
|
+
):
|
|
4177
|
+
pass
|
|
4167
4178
|
|
|
4168
4179
|
|
|
4169
4180
|
##
|
|
@@ -72,7 +72,7 @@ def __omlish_amalg__(): # noqa
|
|
|
72
72
|
dict(path='../../logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
|
|
73
73
|
dict(path='../../argparse/cli.py', sha1='aef500dd2d8f5a65c4c04ede11355ac8eb513f2e'),
|
|
74
74
|
dict(path='../../lite/args.py', sha1='ae96b0baeb376617a63c0e64632ab2c5ff4171a8'),
|
|
75
|
-
dict(path='../../subprocesses/run.py', sha1='
|
|
75
|
+
dict(path='../../subprocesses/run.py', sha1='9b7e1265cd59c58d30d8915f96ba84f80797ef42'),
|
|
76
76
|
dict(path='../../subprocesses/wrap.py', sha1='8a9b7d2255481fae15c05f5624b0cdc0766f4b3f'),
|
|
77
77
|
dict(path='../../diag/cmds/lslocks.py', sha1='b1e09c9374f9007cb19c2c5009937e7d2f4c0a7b'),
|
|
78
78
|
dict(path='../../diag/cmds/lsof.py', sha1='0a58d3c05ce0038690ce8c5b64dd96e7b21b5853'),
|
|
@@ -3700,17 +3700,6 @@ class SubprocessRun:
|
|
|
3700
3700
|
async_subprocesses = self._DEFAULT_ASYNC_SUBPROCESSES
|
|
3701
3701
|
return await check.not_none(async_subprocesses).run_(self.replace(**kwargs))
|
|
3702
3702
|
|
|
3703
|
-
_DEFAULT_MAYSYNC_SUBPROCESSES: ta.ClassVar[ta.Optional[ta.Any]] = None # AbstractMaysyncSubprocesses
|
|
3704
|
-
|
|
3705
|
-
async def maysync_run(
|
|
3706
|
-
self,
|
|
3707
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
3708
|
-
**kwargs: ta.Any,
|
|
3709
|
-
) -> SubprocessRunOutput:
|
|
3710
|
-
if maysync_subprocesses is None:
|
|
3711
|
-
maysync_subprocesses = self._DEFAULT_MAYSYNC_SUBPROCESSES
|
|
3712
|
-
return await check.not_none(maysync_subprocesses).run_(self.replace(**kwargs))
|
|
3713
|
-
|
|
3714
3703
|
|
|
3715
3704
|
SubprocessRun._FIELD_NAMES = frozenset(fld.name for fld in dc.fields(SubprocessRun)) # noqa
|
|
3716
3705
|
|
|
@@ -3743,13 +3732,6 @@ class SubprocessRunnable(Abstract, ta.Generic[T]):
|
|
|
3743
3732
|
) -> T:
|
|
3744
3733
|
return self.handle_run_output(await self.make_run().async_run(async_subprocesses, **kwargs))
|
|
3745
3734
|
|
|
3746
|
-
async def maysync_run(
|
|
3747
|
-
self,
|
|
3748
|
-
maysync_subprocesses: ta.Optional[ta.Any] = None, # AbstractMaysyncSubprocesses
|
|
3749
|
-
**kwargs: ta.Any,
|
|
3750
|
-
) -> T:
|
|
3751
|
-
return self.handle_run_output(await self.make_run().maysync_run(maysync_subprocesses, **kwargs))
|
|
3752
|
-
|
|
3753
3735
|
|
|
3754
3736
|
########################################
|
|
3755
3737
|
# ../../../subprocesses/wrap.py
|