omdev 0.0.9__tar.gz → 0.0.11__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.9/omdev.egg-info → omdev-0.0.11}/PKG-INFO +8 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/.omlish-manifests.json +14 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/__about__.py +10 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/cli.py +2 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/cli.py +2 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/cli.py +2 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/cli.py +2 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/cli.py +2 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/ci.py +202 -162
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/interp.py +199 -159
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/pyproject.py +199 -159
- omdev-0.0.11/omdev/supervisor/__main__.py +11 -0
- omdev-0.0.11/omdev/supervisor/cli.py +23 -0
- omdev-0.0.11/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11/omdev.egg-info}/PKG-INFO +8 -2
- {omdev-0.0.9 → omdev-0.0.11}/omdev.egg-info/SOURCES.txt +3 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev.egg-info/requires.txt +9 -1
- {omdev-0.0.9 → omdev-0.0.11}/pyproject.toml +10 -2
- {omdev-0.0.9 → omdev-0.0.11}/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/MANIFEST.in +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/README.md +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/README.md +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/info.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/build.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/ci.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/compose.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/consts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/shell.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/ci/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/install.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/main.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/managers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cli/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmake.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/diffs/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/git/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/git/magic.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/git/revisions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/git/shallow.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/git/status.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/home/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/home/paths.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/home/secrets.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/home/shadow.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/imgur.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/intellij/open.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/default.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/messages/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/messages/base.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/messages/formats.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/messages/messages.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/messages/parsing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/numerics/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/numerics/formats.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/numerics/numerics.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/numerics/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/consts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/errors.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/message.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/nuh.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/parsing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/rendering.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/tags.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/irc/protocol/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/java/xml.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/find.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/magic.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/magic/styles.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/building.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/manifests/main.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/mypy/report.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/building.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/compression.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/data.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/loading.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/media.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/oci/tars.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/names.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pip.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/base.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/git.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/main.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/classdot.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/findimports.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/reprs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/formats/goyaml.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/io/pipelines.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/io/streams.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.9/omdev/tools/git → omdev-0.0.11/omdev/supervisor}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tagstrings.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/diff.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/doc.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/docker.py +0 -0
- {omdev-0.0.9/omdev/tools/json → omdev-0.0.11/omdev/tools/git}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.9/omdev/tools/jsonview → omdev-0.0.11/omdev/tools/json}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.9/omdev/tools/pawk → omdev-0.0.11/omdev/tools/jsonview}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.9/omdev/tui → omdev-0.0.11/omdev/tools/pawk}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/pip.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/prof.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/qr.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/shell.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.9/omdev/tui/apps → omdev-0.0.11/omdev/tui}/__init__.py +0 -0
- {omdev-0.0.9/omdev/tui/apps/edit → omdev-0.0.11/omdev/tui/apps}/__init__.py +0 -0
- {omdev-0.0.9/omdev/tui/apps/irc → omdev-0.0.11/omdev/tui/apps/edit}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.9/omdev/tui/apps/jtree → omdev-0.0.11/omdev/tui/apps/irc}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.9/omdev/tui/apps/markdown → omdev-0.0.11/omdev/tui/apps/jtree}/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.9 → omdev-0.0.11}/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.11
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,8 +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.11
|
|
18
18
|
Provides-Extra: all
|
|
19
|
+
Requires-Dist: ominfra==0.0.11; extra == "all"
|
|
20
|
+
Requires-Dist: ommlds==0.0.11; extra == "all"
|
|
19
21
|
Requires-Dist: black~=26.3; extra == "all"
|
|
20
22
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
21
23
|
Requires-Dist: pcpp~=1.30; extra == "all"
|
|
@@ -30,6 +32,10 @@ Requires-Dist: rich~=15.0; extra == "all"
|
|
|
30
32
|
Requires-Dist: textual~=8.2; extra == "all"
|
|
31
33
|
Requires-Dist: textual-dev~=1.8; extra == "all"
|
|
32
34
|
Requires-Dist: textual-speedups~=0.2; extra == "all"
|
|
35
|
+
Provides-Extra: ominfra
|
|
36
|
+
Requires-Dist: ominfra==0.0.11; extra == "ominfra"
|
|
37
|
+
Provides-Extra: ommlds
|
|
38
|
+
Requires-Dist: ommlds==0.0.11; extra == "ommlds"
|
|
33
39
|
Provides-Extra: black
|
|
34
40
|
Requires-Dist: black~=26.3; extra == "black"
|
|
35
41
|
Provides-Extra: c
|
|
@@ -337,6 +337,20 @@
|
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
339
|
},
|
|
340
|
+
{
|
|
341
|
+
"module": ".supervisor.__main__",
|
|
342
|
+
"attr": "_CLI_MODULE",
|
|
343
|
+
"file": "omdev/supervisor/__main__.py",
|
|
344
|
+
"line": 4,
|
|
345
|
+
"value": {
|
|
346
|
+
"!.cli.types.CliModule": {
|
|
347
|
+
"name": [
|
|
348
|
+
"supervisor"
|
|
349
|
+
],
|
|
350
|
+
"module": "omdev.supervisor.__main__"
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
},
|
|
340
354
|
{
|
|
341
355
|
"module": ".tools.cloc",
|
|
342
356
|
"attr": "_CLI_MODULE",
|
|
@@ -23,8 +23,8 @@ import sys
|
|
|
23
23
|
import typing as ta
|
|
24
24
|
|
|
25
25
|
from omlish.argparse.cli import ArgparseCli
|
|
26
|
-
from omlish.argparse.
|
|
27
|
-
from omlish.argparse.
|
|
26
|
+
from omlish.argparse.parsers import argparse_arg
|
|
27
|
+
from omlish.argparse.parsers import argparse_cmd
|
|
28
28
|
from omlish.lite.check import check
|
|
29
29
|
from omlish.lite.inject import inj
|
|
30
30
|
from omlish.logs.modules import get_module_logger
|
|
@@ -6,8 +6,8 @@ See:
|
|
|
6
6
|
import dataclasses as dc
|
|
7
7
|
|
|
8
8
|
from omlish.argparse.cli import ArgparseCli
|
|
9
|
-
from omlish.argparse.
|
|
10
|
-
from omlish.argparse.
|
|
9
|
+
from omlish.argparse.parsers import argparse_arg
|
|
10
|
+
from omlish.argparse.parsers import argparse_cmd
|
|
11
11
|
from omlish.lite.json import json_dumps_pretty
|
|
12
12
|
|
|
13
13
|
from .api.v1.client import GithubCacheServiceV1Client
|
|
@@ -10,8 +10,8 @@ import asyncio
|
|
|
10
10
|
import typing as ta
|
|
11
11
|
|
|
12
12
|
from omlish.argparse.cli import ArgparseCli
|
|
13
|
-
from omlish.argparse.
|
|
14
|
-
from omlish.argparse.
|
|
13
|
+
from omlish.argparse.parsers import argparse_arg
|
|
14
|
+
from omlish.argparse.parsers import argparse_cmd
|
|
15
15
|
from omlish.lite.cached import cached_nullary
|
|
16
16
|
from omlish.lite.check import check
|
|
17
17
|
from omlish.lite.inject import Injector
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import typing as ta
|
|
3
3
|
|
|
4
4
|
from omlish.argparse.cli import ArgparseCli
|
|
5
|
-
from omlish.argparse.
|
|
6
|
-
from omlish.argparse.
|
|
5
|
+
from omlish.argparse.parsers import argparse_arg
|
|
6
|
+
from omlish.argparse.parsers import argparse_cmd
|
|
7
7
|
|
|
8
8
|
from .find import find_magic_files
|
|
9
9
|
from .find import find_magic_py_modules
|
|
@@ -32,8 +32,8 @@ import sys
|
|
|
32
32
|
import typing as ta
|
|
33
33
|
|
|
34
34
|
from omlish.argparse.cli import ArgparseCli
|
|
35
|
-
from omlish.argparse.
|
|
36
|
-
from omlish.argparse.
|
|
35
|
+
from omlish.argparse.parsers import argparse_arg
|
|
36
|
+
from omlish.argparse.parsers import argparse_cmd
|
|
37
37
|
from omlish.asyncs.asyncio.subprocesses import asyncio_subprocesses
|
|
38
38
|
from omlish.formats.toml.parser import toml_loads
|
|
39
39
|
from omlish.lite.cached import cached_nullary
|
|
@@ -129,7 +129,7 @@ def __omlish_amalg__(): # noqa
|
|
|
129
129
|
dict(path='github/bootstrap.py', sha1='9bf24b05603cd1a82db8be8b645bbad3e0d3f22f'),
|
|
130
130
|
dict(path='../oci/datarefs.py', sha1='793ce5f2774e052b28d04b226a5f1eff6eec0a72'),
|
|
131
131
|
dict(path='../oci/pack/unpacking.py', sha1='f43dee9a2eee79cbbb90f0721ed234a2bc35daa7'),
|
|
132
|
-
dict(path='../../omlish/argparse/
|
|
132
|
+
dict(path='../../omlish/argparse/parsers.py', sha1='f874eb5c45e22156b2e9a762cfb68a2311b6d1f8'),
|
|
133
133
|
dict(path='../../omlish/formats/yaml/goyaml/errors.py', sha1='c4dda09d78bc14d9824e45e3d5d434185ee5598b'),
|
|
134
134
|
dict(path='../../omlish/http/headers.py', sha1='fa6777687a0573176750f358a4b7163d704c7e5b'),
|
|
135
135
|
dict(path='../../omlish/http/parsing.py', sha1='2ee187993274e697332c7df7b46a98382f4cee2a'),
|
|
@@ -152,6 +152,7 @@ def __omlish_amalg__(): # noqa
|
|
|
152
152
|
dict(path='../oci/data.py', sha1='6c8b30260f3418505d0053d6a9cf8473196069d2'),
|
|
153
153
|
dict(path='../oci/repositories.py', sha1='f224ea10f5d0f9d3719bc9fe867c7e1d2ccffbf3'),
|
|
154
154
|
dict(path='../oci/tars.py', sha1='3ed00e97a494bd92c6a6149d22d51469bc0af384'),
|
|
155
|
+
dict(path='../../omlish/argparse/cli.py', sha1='aef500dd2d8f5a65c4c04ede11355ac8eb513f2e'),
|
|
155
156
|
dict(path='../../omlish/asyncs/asyncio/sockets.py', sha1='8d24dae988a30bb73f167a9ab62d4fc9eef4ad06'),
|
|
156
157
|
dict(path='../../omlish/asyncs/asyncio/timeouts.py', sha1='4d31b02b3c39b8f2fa7e94db36552fde6942e36a'),
|
|
157
158
|
dict(path='../../omlish/formats/yaml/goyaml/tokens.py', sha1='e9744c171d982ea8b4a6ace5f937926d51d5ec30'),
|
|
@@ -234,14 +235,14 @@ def __omlish_amalg__(): # noqa
|
|
|
234
235
|
dict(path='../../omlish/http/simple/pipelines/handlers.py', sha1='a6064bcd6dedec75072edc3a10f0f082c83dbb37'), # noqa
|
|
235
236
|
dict(path='ci.py', sha1='87b82e2bd86aa886764f1e0067251b056e359650'),
|
|
236
237
|
dict(path='github/cache.py', sha1='d91f9c87d167574e94c99817e6c3a0f75925dfb9'),
|
|
237
|
-
dict(path='github/cli.py', sha1='
|
|
238
|
+
dict(path='github/cli.py', sha1='4f63c026d5d00b04a579ee9186a6264094eeae9d'),
|
|
238
239
|
dict(path='../../omlish/http/simple/pipelines/sync.py', sha1='097922607bca8c85ee0a4d35d306dab661f11b3e'),
|
|
239
240
|
dict(path='docker/dataserver.py', sha1='fa09a10352255ec3de2d87344de8c8324ad8679e'),
|
|
240
241
|
dict(path='github/inject.py', sha1='99c0dd7c55767e7c49f70b7edac25da67f718b2e'),
|
|
241
242
|
dict(path='docker/cacheserved/cache.py', sha1='4f8c5c2b7451b8f0d7cccb12060ff609af4f44e8'),
|
|
242
243
|
dict(path='docker/inject.py', sha1='69acac65fae413cb58c1f9aa739d2cc1c3ffa09d'),
|
|
243
244
|
dict(path='inject.py', sha1='e86b16d79a113a4f387e68ed0db1d067bcada93a'),
|
|
244
|
-
dict(path='cli.py', sha1='
|
|
245
|
+
dict(path='cli.py', sha1='b392df23b6eaf1a0b5223db07a3c4bcd1d1fe0a2'),
|
|
245
246
|
],
|
|
246
247
|
)
|
|
247
248
|
|
|
@@ -285,8 +286,8 @@ SocketAddress = ta.Any # ta.TypeAlias
|
|
|
285
286
|
GithubCacheServiceV2RequestT = ta.TypeVar('GithubCacheServiceV2RequestT')
|
|
286
287
|
GithubCacheServiceV2ResponseT = ta.TypeVar('GithubCacheServiceV2ResponseT')
|
|
287
288
|
|
|
288
|
-
# ../../omlish/argparse/
|
|
289
|
-
ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
|
289
|
+
# ../../omlish/argparse/parsers.py
|
|
290
|
+
ArgparseCmdFn = ta.Callable[[], ta.Union[ta.Optional[int], ta.Awaitable[ta.Optional[int]]]] # ta.TypeAlias
|
|
290
291
|
|
|
291
292
|
# ../../omlish/formats/yaml/goyaml/errors.py
|
|
292
293
|
YamlErrorOr = ta.Union['YamlError', T] # ta.TypeAlias
|
|
@@ -3984,19 +3985,7 @@ class OciLayerUnpacker(ExitStacked):
|
|
|
3984
3985
|
|
|
3985
3986
|
|
|
3986
3987
|
########################################
|
|
3987
|
-
# ../../../omlish/argparse/
|
|
3988
|
-
"""
|
|
3989
|
-
FIXME:
|
|
3990
|
-
- exit_on_error lol
|
|
3991
|
-
|
|
3992
|
-
TODO:
|
|
3993
|
-
- default command
|
|
3994
|
-
- auto match all underscores to hyphens
|
|
3995
|
-
- pre-run, post-run hooks
|
|
3996
|
-
- exitstack?
|
|
3997
|
-
- suggestion - difflib.get_close_matches
|
|
3998
|
-
- add_argument_group - group kw on ArgparseKwarg?
|
|
3999
|
-
"""
|
|
3988
|
+
# ../../../omlish/argparse/parsers.py
|
|
4000
3989
|
|
|
4001
3990
|
|
|
4002
3991
|
##
|
|
@@ -4041,6 +4030,7 @@ class ArgparseCmd:
|
|
|
4041
4030
|
aliases: ta.Optional[ta.Sequence[str]] = None
|
|
4042
4031
|
parent: ta.Optional['ArgparseCmd'] = None
|
|
4043
4032
|
accepts_unknown: bool = False
|
|
4033
|
+
default: bool = False
|
|
4044
4034
|
|
|
4045
4035
|
def __post_init__(self) -> None:
|
|
4046
4036
|
def check_name(s: str) -> None:
|
|
@@ -4064,7 +4054,7 @@ class ArgparseCmd:
|
|
|
4064
4054
|
return self
|
|
4065
4055
|
return dc.replace(self, fn=self.fn.__get__(instance, owner)) # noqa
|
|
4066
4056
|
|
|
4067
|
-
def __call__(self, *args, **kwargs) -> ta.Optional[int]:
|
|
4057
|
+
def __call__(self, *args, **kwargs) -> ta.Union[ta.Optional[int], ta.Awaitable[ta.Optional[int]]]:
|
|
4068
4058
|
return self.fn(*args, **kwargs)
|
|
4069
4059
|
|
|
4070
4060
|
|
|
@@ -4074,12 +4064,14 @@ def argparse_cmd(
|
|
|
4074
4064
|
aliases: ta.Optional[ta.Iterable[str]] = None,
|
|
4075
4065
|
parent: ta.Optional[ArgparseCmd] = None,
|
|
4076
4066
|
accepts_unknown: bool = False,
|
|
4067
|
+
default: bool = False,
|
|
4077
4068
|
) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
|
|
4078
4069
|
for arg in args:
|
|
4079
4070
|
check.isinstance(arg, ArgparseArg)
|
|
4080
4071
|
check.isinstance(name, (str, type(None)))
|
|
4081
4072
|
check.isinstance(parent, (ArgparseCmd, type(None)))
|
|
4082
4073
|
check.not_isinstance(aliases, str)
|
|
4074
|
+
check.isinstance(default, bool)
|
|
4083
4075
|
|
|
4084
4076
|
def inner(fn):
|
|
4085
4077
|
return ArgparseCmd(
|
|
@@ -4089,6 +4081,7 @@ def argparse_cmd(
|
|
|
4089
4081
|
aliases=tuple(aliases) if aliases is not None else None,
|
|
4090
4082
|
parent=parent,
|
|
4091
4083
|
accepts_unknown=accepts_unknown,
|
|
4084
|
+
default=default,
|
|
4092
4085
|
)
|
|
4093
4086
|
|
|
4094
4087
|
return inner
|
|
@@ -4112,186 +4105,129 @@ def _get_argparse_arg_ann_kwargs(ann: ta.Any) -> ta.Mapping[str, ta.Any]:
|
|
|
4112
4105
|
raise TypeError(ann)
|
|
4113
4106
|
|
|
4114
4107
|
|
|
4115
|
-
class
|
|
4108
|
+
class _ArgparseParserClassAnnotationBox:
|
|
4116
4109
|
def __init__(self, annotations: ta.Mapping[str, ta.Any]) -> None:
|
|
4117
4110
|
super().__init__()
|
|
4118
4111
|
|
|
4119
4112
|
self.__annotations__ = annotations # type: ignore
|
|
4120
4113
|
|
|
4121
4114
|
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4115
|
+
def configure_argparse_parser_class_parser(
|
|
4116
|
+
cls: type,
|
|
4117
|
+
parser: ta.Optional[argparse.ArgumentParser] = None,
|
|
4118
|
+
) -> argparse.ArgumentParser:
|
|
4119
|
+
ns = cls.__dict__
|
|
4120
|
+
objs = {}
|
|
4121
|
+
mro = cls.__mro__[::-1]
|
|
4122
|
+
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
|
4123
|
+
bseen = set() # type: ignore
|
|
4124
|
+
for k, v in bns.items():
|
|
4125
|
+
if isinstance(v, (ArgparseCmd, ArgparseArg)):
|
|
4126
|
+
check.not_in(v, bseen)
|
|
4127
|
+
bseen.add(v)
|
|
4128
|
+
objs[k] = v
|
|
4129
|
+
elif k in objs:
|
|
4130
|
+
del [k]
|
|
4129
4131
|
|
|
4130
4132
|
#
|
|
4131
4133
|
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
objs = {}
|
|
4137
|
-
mro = cls.__mro__[::-1]
|
|
4138
|
-
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
|
4139
|
-
bseen = set() # type: ignore
|
|
4140
|
-
for k, v in bns.items():
|
|
4141
|
-
if isinstance(v, (ArgparseCmd, ArgparseArg)):
|
|
4142
|
-
check.not_in(v, bseen)
|
|
4143
|
-
bseen.add(v)
|
|
4144
|
-
objs[k] = v
|
|
4145
|
-
elif k in objs:
|
|
4146
|
-
del [k]
|
|
4147
|
-
|
|
4148
|
-
#
|
|
4149
|
-
|
|
4150
|
-
anns = ta.get_type_hints(_ArgparseCliAnnotationBox({
|
|
4151
|
-
**{k: v for bcls in reversed(mro) for k, v in getattr(bcls, '__annotations__', {}).items()},
|
|
4152
|
-
**ns.get('__annotations__', {}),
|
|
4153
|
-
}), globalns=ns.get('__globals__', {}))
|
|
4154
|
-
|
|
4155
|
-
#
|
|
4134
|
+
anns = ta.get_type_hints(_ArgparseParserClassAnnotationBox({
|
|
4135
|
+
**{k: v for bcls in reversed(mro) for k, v in getattr(bcls, '__annotations__', {}).items()},
|
|
4136
|
+
**ns.get('__annotations__', {}),
|
|
4137
|
+
}), globalns=ns.get('__globals__', {}))
|
|
4156
4138
|
|
|
4157
|
-
|
|
4158
|
-
parser = check.isinstance(ns['_parser'], argparse.ArgumentParser)
|
|
4159
|
-
else:
|
|
4160
|
-
parser = argparse.ArgumentParser()
|
|
4161
|
-
setattr(cls, '_parser', parser)
|
|
4139
|
+
#
|
|
4162
4140
|
|
|
4163
|
-
|
|
4141
|
+
if parser is None:
|
|
4142
|
+
parser = argparse.ArgumentParser()
|
|
4164
4143
|
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
for att, obj in objs.items():
|
|
4168
|
-
if isinstance(obj, ArgparseCmd):
|
|
4169
|
-
if obj.parent is not None:
|
|
4170
|
-
raise NotImplementedError
|
|
4171
|
-
|
|
4172
|
-
for cn in [obj.name, *(obj.aliases or [])]:
|
|
4173
|
-
subparser = subparsers.add_parser(cn)
|
|
4174
|
-
|
|
4175
|
-
for arg in (obj.args or []):
|
|
4176
|
-
if (
|
|
4177
|
-
len(arg.args) == 1 and
|
|
4178
|
-
isinstance(arg.args[0], str) and
|
|
4179
|
-
not (n := check.isinstance(arg.args[0], str)).startswith('-') and
|
|
4180
|
-
'metavar' not in arg.kwargs
|
|
4181
|
-
):
|
|
4182
|
-
subparser.add_argument(
|
|
4183
|
-
n.replace('-', '_'),
|
|
4184
|
-
**arg.kwargs,
|
|
4185
|
-
metavar=n,
|
|
4186
|
-
)
|
|
4187
|
-
else:
|
|
4188
|
-
subparser.add_argument(*arg.args, **arg.kwargs)
|
|
4144
|
+
#
|
|
4189
4145
|
|
|
4190
|
-
|
|
4146
|
+
subparsers = parser.add_subparsers()
|
|
4191
4147
|
|
|
4192
|
-
|
|
4193
|
-
if obj.group is not None:
|
|
4194
|
-
# FIXME: add_argument_group
|
|
4195
|
-
raise NotImplementedError
|
|
4148
|
+
default_cmd: ta.Optional[ArgparseCmd] = None
|
|
4196
4149
|
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4150
|
+
for att, obj in objs.items():
|
|
4151
|
+
if isinstance(obj, ArgparseCmd):
|
|
4152
|
+
if obj.parent is not None:
|
|
4153
|
+
raise NotImplementedError
|
|
4200
4154
|
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4155
|
+
if obj.default:
|
|
4156
|
+
if default_cmd:
|
|
4157
|
+
raise TypeError(f'Already have a default command: {default_cmd}, {obj}')
|
|
4158
|
+
default_cmd = obj
|
|
4159
|
+
|
|
4160
|
+
for cn in [obj.name, *(obj.aliases or [])]:
|
|
4161
|
+
subparser = subparsers.add_parser(cn)
|
|
4162
|
+
|
|
4163
|
+
for arg in (obj.args or []):
|
|
4164
|
+
if (
|
|
4165
|
+
len(arg.args) == 1 and
|
|
4166
|
+
isinstance(arg.args[0], str) and
|
|
4167
|
+
not (n := check.isinstance(arg.args[0], str)).startswith('-') and
|
|
4168
|
+
'metavar' not in arg.kwargs
|
|
4169
|
+
):
|
|
4170
|
+
subparser.add_argument(
|
|
4171
|
+
n.replace('-', '_'),
|
|
4172
|
+
**arg.kwargs,
|
|
4173
|
+
metavar=n,
|
|
4174
|
+
)
|
|
4204
4175
|
else:
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
parser.add_argument(*obj.args, **obj.kwargs)
|
|
4208
|
-
|
|
4209
|
-
else:
|
|
4210
|
-
raise TypeError(obj)
|
|
4176
|
+
subparser.add_argument(*arg.args, **arg.kwargs)
|
|
4211
4177
|
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
_parser: ta.ClassVar[argparse.ArgumentParser]
|
|
4178
|
+
subparser.set_defaults(_cmd=obj)
|
|
4215
4179
|
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4180
|
+
elif isinstance(obj, ArgparseArg):
|
|
4181
|
+
if obj.group is not None:
|
|
4182
|
+
# FIXME: add_argument_group
|
|
4183
|
+
raise NotImplementedError
|
|
4219
4184
|
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4185
|
+
if att in anns:
|
|
4186
|
+
ann_kwargs = _get_argparse_arg_ann_kwargs(anns[att])
|
|
4187
|
+
obj.kwargs = {**ann_kwargs, **obj.kwargs}
|
|
4223
4188
|
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4189
|
+
if not obj.dest:
|
|
4190
|
+
if 'dest' in obj.kwargs:
|
|
4191
|
+
obj.dest = obj.kwargs['dest']
|
|
4192
|
+
else:
|
|
4193
|
+
obj.dest = obj.kwargs['dest'] = att # type: ignore
|
|
4227
4194
|
|
|
4228
|
-
|
|
4229
|
-
def unknown_args(self) -> ta.Sequence[str]:
|
|
4230
|
-
return self._unknown_args
|
|
4195
|
+
parser.add_argument(*obj.args, **obj.kwargs)
|
|
4231
4196
|
|
|
4232
|
-
|
|
4197
|
+
else:
|
|
4198
|
+
raise TypeError(obj)
|
|
4233
4199
|
|
|
4234
|
-
|
|
4235
|
-
|
|
4200
|
+
if default_cmd is not None:
|
|
4201
|
+
parser.set_defaults(_cmd=default_cmd)
|
|
4236
4202
|
|
|
4237
|
-
|
|
4238
|
-
cmd = getattr(self.args, '_cmd', None)
|
|
4203
|
+
return parser
|
|
4239
4204
|
|
|
4240
|
-
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
|
4241
|
-
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
|
4242
|
-
if (parser := self.get_parser()).exit_on_error: # noqa
|
|
4243
|
-
parser.error(msg)
|
|
4244
|
-
else:
|
|
4245
|
-
raise argparse.ArgumentError(None, msg)
|
|
4246
4205
|
|
|
4247
|
-
|
|
4248
|
-
self.get_parser().print_help()
|
|
4249
|
-
return None
|
|
4206
|
+
##
|
|
4250
4207
|
|
|
4251
|
-
return self._bind_cli_cmd(cmd)
|
|
4252
4208
|
|
|
4253
|
-
|
|
4209
|
+
class ArgparseParserClass(Abstract):
|
|
4210
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
|
4211
|
+
super().__init_subclass__(**kwargs)
|
|
4254
4212
|
|
|
4255
|
-
|
|
4256
|
-
if (fn := self.prepare_cli_run()) is None:
|
|
4257
|
-
return 0
|
|
4213
|
+
ns = cls.__dict__
|
|
4258
4214
|
|
|
4259
|
-
|
|
4215
|
+
if '_parser' in ns:
|
|
4216
|
+
parser = check.isinstance(ns['_parser'], argparse.ArgumentParser)
|
|
4217
|
+
else:
|
|
4218
|
+
parser = argparse.ArgumentParser()
|
|
4260
4219
|
|
|
4261
|
-
|
|
4262
|
-
rc = self.cli_run()
|
|
4263
|
-
if not isinstance(rc, int):
|
|
4264
|
-
rc = 0
|
|
4265
|
-
raise SystemExit(rc)
|
|
4220
|
+
configure_argparse_parser_class_parser(cls, parser)
|
|
4266
4221
|
|
|
4267
|
-
|
|
4268
|
-
if exit:
|
|
4269
|
-
return self.cli_run_and_exit()
|
|
4270
|
-
else:
|
|
4271
|
-
return self.cli_run()
|
|
4222
|
+
setattr(cls, '_parser', parser)
|
|
4272
4223
|
|
|
4273
4224
|
#
|
|
4274
4225
|
|
|
4275
|
-
|
|
4276
|
-
self,
|
|
4277
|
-
*,
|
|
4278
|
-
force_async: bool = False,
|
|
4279
|
-
) -> ta.Optional[int]:
|
|
4280
|
-
if (fn := self.prepare_cli_run()) is None:
|
|
4281
|
-
return 0
|
|
4282
|
-
|
|
4283
|
-
if force_async:
|
|
4284
|
-
is_async = True
|
|
4285
|
-
else:
|
|
4286
|
-
tfn = fn
|
|
4287
|
-
if isinstance(tfn, ArgparseCmd):
|
|
4288
|
-
tfn = tfn.fn
|
|
4289
|
-
is_async = inspect.iscoroutinefunction(tfn)
|
|
4226
|
+
_parser: ta.ClassVar[argparse.ArgumentParser]
|
|
4290
4227
|
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
return fn()
|
|
4228
|
+
@classmethod
|
|
4229
|
+
def get_parser(cls) -> argparse.ArgumentParser:
|
|
4230
|
+
return cls._parser
|
|
4295
4231
|
|
|
4296
4232
|
|
|
4297
4233
|
########################################
|
|
@@ -11625,6 +11561,110 @@ def write_oci_data_tar_file(
|
|
|
11625
11561
|
return tgw.info()
|
|
11626
11562
|
|
|
11627
11563
|
|
|
11564
|
+
########################################
|
|
11565
|
+
# ../../../omlish/argparse/cli.py
|
|
11566
|
+
"""
|
|
11567
|
+
FIXME:
|
|
11568
|
+
- exit_on_error lol
|
|
11569
|
+
|
|
11570
|
+
TODO:
|
|
11571
|
+
- default command
|
|
11572
|
+
- auto match all underscores to hyphens
|
|
11573
|
+
- pre-run, post-run hooks
|
|
11574
|
+
- exitstack?
|
|
11575
|
+
- suggestion - difflib.get_close_matches
|
|
11576
|
+
- add_argument_group - group kw on ArgparseKwarg?
|
|
11577
|
+
"""
|
|
11578
|
+
|
|
11579
|
+
|
|
11580
|
+
##
|
|
11581
|
+
|
|
11582
|
+
|
|
11583
|
+
class ArgparseCli(ArgparseParserClass, Abstract):
|
|
11584
|
+
def __init__(self, argv: ta.Optional[ta.Sequence[str]] = None) -> None:
|
|
11585
|
+
super().__init__()
|
|
11586
|
+
|
|
11587
|
+
self._argv = argv if argv is not None else sys.argv[1:]
|
|
11588
|
+
|
|
11589
|
+
self._args, self._unknown_args = self.get_parser().parse_known_args(self._argv)
|
|
11590
|
+
|
|
11591
|
+
@property
|
|
11592
|
+
def argv(self) -> ta.Sequence[str]:
|
|
11593
|
+
return self._argv
|
|
11594
|
+
|
|
11595
|
+
@property
|
|
11596
|
+
def args(self) -> argparse.Namespace:
|
|
11597
|
+
return self._args
|
|
11598
|
+
|
|
11599
|
+
@property
|
|
11600
|
+
def unknown_args(self) -> ta.Sequence[str]:
|
|
11601
|
+
return self._unknown_args
|
|
11602
|
+
|
|
11603
|
+
#
|
|
11604
|
+
|
|
11605
|
+
def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
|
|
11606
|
+
return cmd.__get__(self, type(self))
|
|
11607
|
+
|
|
11608
|
+
def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
|
|
11609
|
+
cmd = getattr(self.args, '_cmd', None)
|
|
11610
|
+
|
|
11611
|
+
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
|
11612
|
+
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
|
11613
|
+
if (parser := self.get_parser()).exit_on_error: # noqa
|
|
11614
|
+
parser.error(msg)
|
|
11615
|
+
else:
|
|
11616
|
+
raise argparse.ArgumentError(None, msg)
|
|
11617
|
+
|
|
11618
|
+
if cmd is None:
|
|
11619
|
+
self.get_parser().print_help()
|
|
11620
|
+
return None
|
|
11621
|
+
|
|
11622
|
+
return self._bind_cli_cmd(cmd)
|
|
11623
|
+
|
|
11624
|
+
#
|
|
11625
|
+
|
|
11626
|
+
def cli_run(self) -> ta.Optional[int]:
|
|
11627
|
+
if (fn := self.prepare_cli_run()) is None:
|
|
11628
|
+
return 0
|
|
11629
|
+
|
|
11630
|
+
return check.isinstance(fn(), (int, None))
|
|
11631
|
+
|
|
11632
|
+
def cli_run_and_exit(self) -> ta.NoReturn:
|
|
11633
|
+
rc = self.cli_run()
|
|
11634
|
+
if not isinstance(rc, int):
|
|
11635
|
+
rc = 0
|
|
11636
|
+
raise SystemExit(rc)
|
|
11637
|
+
|
|
11638
|
+
def __call__(self, *, exit: bool = False) -> ta.Optional[int]: # noqa
|
|
11639
|
+
if exit:
|
|
11640
|
+
return self.cli_run_and_exit()
|
|
11641
|
+
else:
|
|
11642
|
+
return self.cli_run()
|
|
11643
|
+
|
|
11644
|
+
#
|
|
11645
|
+
|
|
11646
|
+
async def async_cli_run(
|
|
11647
|
+
self,
|
|
11648
|
+
*,
|
|
11649
|
+
force_async: bool = False,
|
|
11650
|
+
) -> ta.Optional[int]:
|
|
11651
|
+
if (fn := self.prepare_cli_run()) is None:
|
|
11652
|
+
return 0
|
|
11653
|
+
|
|
11654
|
+
if force_async:
|
|
11655
|
+
is_async = True
|
|
11656
|
+
else:
|
|
11657
|
+
tfn = fn
|
|
11658
|
+
if isinstance(tfn, ArgparseCmd):
|
|
11659
|
+
tfn = tfn.fn
|
|
11660
|
+
is_async = inspect.iscoroutinefunction(tfn)
|
|
11661
|
+
|
|
11662
|
+
if is_async:
|
|
11663
|
+
return await fn()
|
|
11664
|
+
else:
|
|
11665
|
+
return fn()
|
|
11666
|
+
|
|
11667
|
+
|
|
11628
11668
|
########################################
|
|
11629
11669
|
# ../../../omlish/asyncs/asyncio/sockets.py
|
|
11630
11670
|
|