omdev 0.0.0.dev556__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {omdev-0.0.0.dev556/omdev.egg-info → omdev-0.0.2}/PKG-INFO +4 -4
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/.omlish-manifests.json +1 -1
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/clicli.py +74 -15
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/install.py +1 -2
- omdev-0.0.2/omdev/dockerdev/resources/.python-versions.json +19 -0
- omdev-0.0.2/omdev/dockerdev/resources/configs/.sqliterc +4 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/depsets/system.toml +1 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/attrdoc.py +1 -1
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/scripts/bumpversion.py +8 -3
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tools/pipdepup.py +1 -1
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/ci.py +3 -3
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/io/pipelines.py +63 -71
- {omdev-0.0.0.dev556 → omdev-0.0.2/omdev.egg-info}/PKG-INFO +4 -4
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev.egg-info/SOURCES.txt +1 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev556 → omdev-0.0.2}/pyproject.toml +4 -4
- omdev-0.0.0.dev556/omdev/dockerdev/resources/.python-versions.json +0 -17
- {omdev-0.0.0.dev556 → omdev-0.0.2}/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/README.md +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/README.md +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/info.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/diffs/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/intellij/open.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/messages/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/messages/base.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/messages/formats.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/messages/messages.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/messages/parsing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/numerics/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/numerics/formats.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/numerics/numerics.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/numerics/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/consts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/errors.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/message.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/nuh.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/parsing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/rendering.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/tags.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/irc/protocol/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/java/xml.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/building.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/mypy/report.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/classdot.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/findimports.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/reprs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/formats/goyaml.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/io/streams.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/shell.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev556 → omdev-0.0.2}/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.2
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -10,11 +10,11 @@ Classifier: Intended Audience :: Developers
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Operating System :: POSIX
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.
|
|
14
|
-
Requires-Python: >=3.
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.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.2
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=26.3; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
@@ -90,6 +90,69 @@ class CliCli(ap.Cli):
|
|
|
90
90
|
|
|
91
91
|
#
|
|
92
92
|
|
|
93
|
+
def _build_deps(
|
|
94
|
+
self,
|
|
95
|
+
*,
|
|
96
|
+
no_deps: bool = False,
|
|
97
|
+
extra_deps: ta.Sequence[str] | None = None,
|
|
98
|
+
) -> ta.Sequence[str]:
|
|
99
|
+
dep_set: set[str] = set(extra_deps or [])
|
|
100
|
+
if not no_deps:
|
|
101
|
+
root_dists = get_root_dists()
|
|
102
|
+
dep_set.update(set(root_dists))
|
|
103
|
+
return sorted(dep_set - {install.DEFAULT_CLI_PKG})
|
|
104
|
+
|
|
105
|
+
@ap.cmd(name='deps')
|
|
106
|
+
def deps_cmd(self) -> None:
|
|
107
|
+
print('\n'.join(self._build_deps()))
|
|
108
|
+
|
|
109
|
+
#
|
|
110
|
+
|
|
111
|
+
def _build_recovery_command(
|
|
112
|
+
self,
|
|
113
|
+
target_version: str,
|
|
114
|
+
*,
|
|
115
|
+
url: str | None = None,
|
|
116
|
+
deps: ta.Sequence[str] | None = None,
|
|
117
|
+
) -> str:
|
|
118
|
+
if url is None:
|
|
119
|
+
url = DEFAULT_REINSTALL_URL
|
|
120
|
+
if deps is None:
|
|
121
|
+
deps = self._build_deps()
|
|
122
|
+
|
|
123
|
+
parsed = urllib.parse.urlparse(url)
|
|
124
|
+
if parsed.scheme not in ('https', 'file'):
|
|
125
|
+
raise RuntimeError(f'Insecure url schem: {url}')
|
|
126
|
+
|
|
127
|
+
reco_cmd = ' '.join([
|
|
128
|
+
'curl -LsSf',
|
|
129
|
+
f"'{url}'" if (qu := shlex.quote(url)) == url else qu,
|
|
130
|
+
f'| python3 - --version {shlex.quote(target_version)}',
|
|
131
|
+
*deps,
|
|
132
|
+
])
|
|
133
|
+
|
|
134
|
+
return reco_cmd
|
|
135
|
+
|
|
136
|
+
@ap.cmd(
|
|
137
|
+
ap.arg('--url', default=DEFAULT_REINSTALL_URL),
|
|
138
|
+
ap.arg('--no-deps', action='store_true'),
|
|
139
|
+
ap.arg('--version'),
|
|
140
|
+
ap.arg('extra_deps', nargs='*'),
|
|
141
|
+
)
|
|
142
|
+
def recovery(self) -> None:
|
|
143
|
+
reco_cmd = self._build_recovery_command(
|
|
144
|
+
self.args.version or __about__.__version__,
|
|
145
|
+
url=self.args.url,
|
|
146
|
+
deps=self._build_deps(
|
|
147
|
+
no_deps=self.args.no_deps,
|
|
148
|
+
extra_deps=self.args.extra_deps,
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
print(reco_cmd)
|
|
153
|
+
|
|
154
|
+
#
|
|
155
|
+
|
|
93
156
|
@dc.dataclass()
|
|
94
157
|
class ReinstallWouldNotUpgradeError(Exception):
|
|
95
158
|
current_version: str
|
|
@@ -136,11 +199,10 @@ class CliCli(ap.Cli):
|
|
|
136
199
|
|
|
137
200
|
#
|
|
138
201
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
deps = sorted(dep_set - {install.DEFAULT_CLI_PKG}) # noqa
|
|
202
|
+
deps = self._build_deps(
|
|
203
|
+
no_deps=self.args.no_deps,
|
|
204
|
+
extra_deps=self.args.extra_deps,
|
|
205
|
+
)
|
|
144
206
|
|
|
145
207
|
#
|
|
146
208
|
|
|
@@ -233,16 +295,13 @@ class CliCli(ap.Cli):
|
|
|
233
295
|
|
|
234
296
|
else:
|
|
235
297
|
url = self.args.url
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
f'| python3 - --version {shlex.quote(target_version)}',
|
|
244
|
-
*deps,
|
|
245
|
-
])
|
|
298
|
+
|
|
299
|
+
reco_cmd = self._build_recovery_command(
|
|
300
|
+
target_version,
|
|
301
|
+
url=url,
|
|
302
|
+
deps=deps,
|
|
303
|
+
)
|
|
304
|
+
|
|
246
305
|
print(f'Recovery command:\n\n{reco_cmd}\n')
|
|
247
306
|
|
|
248
307
|
with urllib.request.urlopen(urllib.request.Request(url)) as resp: # noqa
|
|
@@ -20,7 +20,7 @@ import typing as ta
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
DEFAULT_CLI_PKG = 'omdev-cli'
|
|
23
|
-
DEFAULT_PY_VER = '3.
|
|
23
|
+
DEFAULT_PY_VER = '3.14'
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
@dc.dataclass(frozen=True)
|
|
@@ -85,7 +85,6 @@ class UvxInstallManager(InstallManager):
|
|
|
85
85
|
'uv', 'tool',
|
|
86
86
|
'install',
|
|
87
87
|
'--refresh',
|
|
88
|
-
'--prerelease=allow',
|
|
89
88
|
f'--python={opts.py_ver}',
|
|
90
89
|
_format_install_cli_pkg(opts),
|
|
91
90
|
*itertools.chain.from_iterable(['--with', e] for e in (opts.extras or [])),
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"8": "3.8.20",
|
|
3
|
+
"9": "3.9.25",
|
|
4
|
+
"10": "3.10.19",
|
|
5
|
+
"11": "3.11.14",
|
|
6
|
+
"12": "3.12.12",
|
|
7
|
+
"13": "3.13.13",
|
|
8
|
+
"13d": "3.13.13d",
|
|
9
|
+
"13t": "3.13.13t",
|
|
10
|
+
"13dt": "3.13.13dt",
|
|
11
|
+
"14": "3.14.4",
|
|
12
|
+
"14d": "3.14.4d",
|
|
13
|
+
"14t": "3.14.4t",
|
|
14
|
+
"14dt": "3.14.4dt",
|
|
15
|
+
"15": "3.15.0a8",
|
|
16
|
+
"15d": "3.15.0a8d",
|
|
17
|
+
"15t": "3.15.0a8t",
|
|
18
|
+
"15dt": "3.15.0a8dt"
|
|
19
|
+
}
|
|
@@ -33,7 +33,7 @@ def ast_unparse(node: ast.AST) -> str | None:
|
|
|
33
33
|
if hasattr(ast, 'unparse'):
|
|
34
34
|
return ast.unparse(node)
|
|
35
35
|
# Support simple cases in Python < 3.9
|
|
36
|
-
if isinstance(node,
|
|
36
|
+
if isinstance(node, ast.Constant):
|
|
37
37
|
return str(ast_get_constant_value(node))
|
|
38
38
|
if isinstance(node, ast.Name):
|
|
39
39
|
return node.id
|
|
@@ -32,9 +32,14 @@ def _main() -> None:
|
|
|
32
32
|
continue
|
|
33
33
|
parts = m.groupdict()['version'].split('.')
|
|
34
34
|
rp = parts[-1]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
try:
|
|
36
|
+
n = int(rp)
|
|
37
|
+
except ValueError:
|
|
38
|
+
ni = [i for i in range(len(rp)) if rp[i] not in string.digits][-1] + 1
|
|
39
|
+
tp, np = rp[:ni], rp[ni:]
|
|
40
|
+
n = int(np)
|
|
41
|
+
else:
|
|
42
|
+
tp = ''
|
|
38
43
|
nv = '.'.join([*parts[:-1], tp + str(n + 1)])
|
|
39
44
|
lines[i] = f"__version__ = '{nv}'\n"
|
|
40
45
|
new_src = ''.join(lines)
|
|
@@ -605,7 +605,7 @@ def _tabulate(
|
|
|
605
605
|
|
|
606
606
|
rows = [tuple(map(str, row)) for row in rows]
|
|
607
607
|
sizes = [max(map(len, col)) for col in itertools.zip_longest(*rows, fillvalue='')]
|
|
608
|
-
table = [sep.join(map(str.ljust, row, sizes)).rstrip() for row in rows]
|
|
608
|
+
table = [sep.join(map(str.ljust, row, sizes, strict=True)).rstrip() for row in rows]
|
|
609
609
|
return table, sizes
|
|
610
610
|
|
|
611
611
|
|
|
@@ -216,7 +216,7 @@ def __omlish_amalg__(): # noqa
|
|
|
216
216
|
dict(path='docker/cmds.py', sha1='5528c384f68f9003732bfaf6be302e84747909dd'),
|
|
217
217
|
dict(path='utils.py', sha1='b7b7b439b1077771f2bd7c7c74ed422ea2663014'),
|
|
218
218
|
dict(path='../../omlish/http/pipelines/decoders.py', sha1='836ddfc508c494a6fd15c2b597c50aecddcf5a04'),
|
|
219
|
-
dict(path='../../omlish/io/pipelines/drivers/sync.py', sha1='
|
|
219
|
+
dict(path='../../omlish/io/pipelines/drivers/sync.py', sha1='d347a55dcd578f82dc9a55c589abf6195725755a'),
|
|
220
220
|
dict(path='../../omlish/lite/timing.py', sha1='af5022f5a508939f1b433ed0514ede340fd0d672'),
|
|
221
221
|
dict(path='compose.py', sha1='d2bec1385701979c7ff9913456b72d8c7b31f70b'),
|
|
222
222
|
dict(path='docker/cache.py', sha1='07a9e3d00bdd60f1a0a9b55aca12430fa1b4e3d9'),
|
|
@@ -30797,7 +30797,7 @@ class SyncSocketIoPipelineDriver:
|
|
|
30797
30797
|
def enqueue(self, *in_msgs: ta.Any) -> None:
|
|
30798
30798
|
self._input_q.extend(in_msgs)
|
|
30799
30799
|
|
|
30800
|
-
def
|
|
30800
|
+
def _poll(self) -> ta.Union[
|
|
30801
30801
|
ta.Tuple[ta.Literal['unhandled'], ta.Any],
|
|
30802
30802
|
ta.Literal['read', 'stop'],
|
|
30803
30803
|
None,
|
|
@@ -30840,7 +30840,7 @@ class SyncSocketIoPipelineDriver:
|
|
|
30840
30840
|
check.state(pipeline.is_ready)
|
|
30841
30841
|
|
|
30842
30842
|
while True:
|
|
30843
|
-
out = self.
|
|
30843
|
+
out = self._poll()
|
|
30844
30844
|
|
|
30845
30845
|
if isinstance(out, tuple):
|
|
30846
30846
|
ok, ov = out
|
|
@@ -72,7 +72,7 @@ def __omlish_amalg__(): # noqa
|
|
|
72
72
|
dict(path='../../logs/std/loggers.py', sha1='dbdfc66188e6accb75d03454e43221d3fba0f011'),
|
|
73
73
|
dict(path='bytes/decoders.py', sha1='6f6d8bc1adc6a5277543389814bc26ef63e34561'),
|
|
74
74
|
dict(path='../../logs/modules.py', sha1='dd7d5f8e63fe8829dfb49460f3929ab64b68ee14'),
|
|
75
|
-
dict(path='drivers/asyncio.py', sha1='
|
|
75
|
+
dict(path='drivers/asyncio.py', sha1='d7303a66eabe5dfdfb2df30d2f8b5291a7d5695c'),
|
|
76
76
|
dict(path='_amalg.py', sha1='14b67747b1e3b3c1483050a7948a29888d732ed9'),
|
|
77
77
|
],
|
|
78
78
|
)
|
|
@@ -8165,6 +8165,8 @@ class AsyncioStreamIoPipelineDriver(Abstract):
|
|
|
8165
8165
|
##
|
|
8166
8166
|
# init
|
|
8167
8167
|
|
|
8168
|
+
_has_init = False
|
|
8169
|
+
|
|
8168
8170
|
_sched: 'AsyncioStreamIoPipelineDriver._SchedulingService'
|
|
8169
8171
|
|
|
8170
8172
|
_pipeline: IoPipeline
|
|
@@ -8175,6 +8177,9 @@ class AsyncioStreamIoPipelineDriver(Abstract):
|
|
|
8175
8177
|
_output_handlers: ta.Mapping[type, ta.Callable[[ta.Any], ta.Awaitable[None]]]
|
|
8176
8178
|
|
|
8177
8179
|
async def _init(self) -> None:
|
|
8180
|
+
check.state(not self._has_init)
|
|
8181
|
+
self._has_init = True
|
|
8182
|
+
|
|
8178
8183
|
self._sched = self._SchedulingService(self)
|
|
8179
8184
|
|
|
8180
8185
|
services = IoPipelineServices.of(self._spec.services)
|
|
@@ -8401,9 +8406,40 @@ class AsyncioStreamIoPipelineDriver(Abstract):
|
|
|
8401
8406
|
if not self._has_read_eof and (self._want_read or self._is_auto_read()):
|
|
8402
8407
|
self._ensure_read_task()
|
|
8403
8408
|
|
|
8404
|
-
|
|
8409
|
+
_read_task: ta.Optional[asyncio.Task] = None
|
|
8410
|
+
|
|
8405
8411
|
def _ensure_read_task(self) -> None:
|
|
8406
|
-
|
|
8412
|
+
if self._read_task is not None or self._shutdown_event.is_set():
|
|
8413
|
+
return
|
|
8414
|
+
|
|
8415
|
+
self._read_task = asyncio.create_task(self._reader.read(self._config.read_chunk_size))
|
|
8416
|
+
|
|
8417
|
+
def _done(task: 'asyncio.Task[bytes]') -> None:
|
|
8418
|
+
check.state(task is self._read_task)
|
|
8419
|
+
self._read_task = None
|
|
8420
|
+
|
|
8421
|
+
if self._shutdown_event.is_set():
|
|
8422
|
+
return
|
|
8423
|
+
|
|
8424
|
+
cmd: AsyncioStreamIoPipelineDriver._Command
|
|
8425
|
+
eof = False
|
|
8426
|
+
try:
|
|
8427
|
+
data = task.result()
|
|
8428
|
+
|
|
8429
|
+
except asyncio.CancelledError:
|
|
8430
|
+
cmd = AsyncioStreamIoPipelineDriver._ReadCancelledCommand() # noqa
|
|
8431
|
+
|
|
8432
|
+
else:
|
|
8433
|
+
cmd = AsyncioStreamIoPipelineDriver._ReadCompletedCommand(data) # noqa
|
|
8434
|
+
eof = not data
|
|
8435
|
+
|
|
8436
|
+
self._command_queue.put_nowait(cmd)
|
|
8437
|
+
|
|
8438
|
+
# FIXME: disable? toggle? this pre-reads till told to stop to try to reduce stalling
|
|
8439
|
+
if not eof:
|
|
8440
|
+
self._maybe_ensure_read_task()
|
|
8441
|
+
|
|
8442
|
+
self._read_task.add_done_callback(_done)
|
|
8407
8443
|
|
|
8408
8444
|
##
|
|
8409
8445
|
# scheduling
|
|
@@ -8586,78 +8622,11 @@ class AsyncioStreamIoPipelineDriver(Abstract):
|
|
|
8586
8622
|
async def _shutdown_task_main(self) -> None:
|
|
8587
8623
|
await self._shutdown_event.wait()
|
|
8588
8624
|
|
|
8589
|
-
##
|
|
8590
|
-
# main loop
|
|
8591
|
-
|
|
8592
|
-
@abc.abstractmethod
|
|
8593
|
-
def _run(self) -> ta.Awaitable[None]:
|
|
8594
|
-
raise NotImplementedError
|
|
8595
|
-
|
|
8596
|
-
@async_exception_logging(alog)
|
|
8597
|
-
async def run(self) -> None:
|
|
8598
|
-
try:
|
|
8599
|
-
self._shutdown_task # noqa
|
|
8600
|
-
except AttributeError:
|
|
8601
|
-
pass
|
|
8602
|
-
else:
|
|
8603
|
-
raise RuntimeError('Already running')
|
|
8604
|
-
|
|
8605
|
-
await self._init()
|
|
8606
|
-
|
|
8607
|
-
self._shutdown_task = asyncio.create_task(self._shutdown_task_main())
|
|
8608
|
-
|
|
8609
|
-
try:
|
|
8610
|
-
try:
|
|
8611
|
-
await self._run()
|
|
8612
|
-
|
|
8613
|
-
finally:
|
|
8614
|
-
self._pipeline.destroy()
|
|
8615
|
-
|
|
8616
|
-
finally:
|
|
8617
|
-
await self._cancel_tasks(self._shutdown_task, check_running=True)
|
|
8618
|
-
|
|
8619
8625
|
|
|
8620
8626
|
##
|
|
8621
8627
|
|
|
8622
8628
|
|
|
8623
|
-
class
|
|
8624
|
-
_read_task: ta.Optional[asyncio.Task] = None
|
|
8625
|
-
|
|
8626
|
-
def _ensure_read_task(self) -> None:
|
|
8627
|
-
if self._read_task is not None or self._shutdown_event.is_set():
|
|
8628
|
-
return
|
|
8629
|
-
|
|
8630
|
-
self._read_task = asyncio.create_task(self._reader.read(self._config.read_chunk_size))
|
|
8631
|
-
|
|
8632
|
-
def _done(task: 'asyncio.Task[bytes]') -> None:
|
|
8633
|
-
check.state(task is self._read_task)
|
|
8634
|
-
self._read_task = None
|
|
8635
|
-
|
|
8636
|
-
if self._shutdown_event.is_set():
|
|
8637
|
-
return
|
|
8638
|
-
|
|
8639
|
-
cmd: AsyncioStreamIoPipelineDriver._Command
|
|
8640
|
-
eof = False
|
|
8641
|
-
try:
|
|
8642
|
-
data = task.result()
|
|
8643
|
-
|
|
8644
|
-
except asyncio.CancelledError:
|
|
8645
|
-
cmd = AsyncioStreamIoPipelineDriver._ReadCancelledCommand() # noqa
|
|
8646
|
-
|
|
8647
|
-
else:
|
|
8648
|
-
cmd = AsyncioStreamIoPipelineDriver._ReadCompletedCommand(data) # noqa
|
|
8649
|
-
eof = not data
|
|
8650
|
-
|
|
8651
|
-
self._command_queue.put_nowait(cmd)
|
|
8652
|
-
|
|
8653
|
-
# FIXME: disable? toggle? this pre-reads till told to stop to try to reduce stalling
|
|
8654
|
-
if not eof:
|
|
8655
|
-
self._maybe_ensure_read_task()
|
|
8656
|
-
|
|
8657
|
-
self._read_task.add_done_callback(_done)
|
|
8658
|
-
|
|
8659
|
-
#
|
|
8660
|
-
|
|
8629
|
+
class LoopAsyncioStreamIoPipelineDriver(AsyncioStreamIoPipelineDriver):
|
|
8661
8630
|
async def _run(self) -> None:
|
|
8662
8631
|
self._maybe_ensure_read_task()
|
|
8663
8632
|
|
|
@@ -8705,6 +8674,29 @@ class SimpleAsyncioStreamIoPipelineDriver(AsyncioStreamIoPipelineDriver):
|
|
|
8705
8674
|
check_running=True,
|
|
8706
8675
|
)
|
|
8707
8676
|
|
|
8677
|
+
@async_exception_logging(alog)
|
|
8678
|
+
async def run(self) -> None:
|
|
8679
|
+
try:
|
|
8680
|
+
self._shutdown_task # noqa
|
|
8681
|
+
except AttributeError:
|
|
8682
|
+
pass
|
|
8683
|
+
else:
|
|
8684
|
+
raise RuntimeError('Already running')
|
|
8685
|
+
|
|
8686
|
+
await self._init()
|
|
8687
|
+
|
|
8688
|
+
self._shutdown_task = asyncio.create_task(self._shutdown_task_main())
|
|
8689
|
+
|
|
8690
|
+
try:
|
|
8691
|
+
try:
|
|
8692
|
+
await self._run()
|
|
8693
|
+
|
|
8694
|
+
finally:
|
|
8695
|
+
self._pipeline.destroy()
|
|
8696
|
+
|
|
8697
|
+
finally:
|
|
8698
|
+
await self._cancel_tasks(self._shutdown_task, check_running=True)
|
|
8699
|
+
|
|
8708
8700
|
|
|
8709
8701
|
########################################
|
|
8710
8702
|
# _amalg.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -10,11 +10,11 @@ Classifier: Intended Audience :: Developers
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Operating System :: POSIX
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.
|
|
14
|
-
Requires-Python: >=3.
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.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.2
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=26.3; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
@@ -174,6 +174,7 @@ omdev/dockerdev/ops.py
|
|
|
174
174
|
omdev/dockerdev/rendering.py
|
|
175
175
|
omdev/dockerdev/resources/.python-versions.json
|
|
176
176
|
omdev/dockerdev/resources/configs/.gdbinit
|
|
177
|
+
omdev/dockerdev/resources/configs/.sqliterc
|
|
177
178
|
omdev/dockerdev/resources/configs/.tmux.conf
|
|
178
179
|
omdev/dockerdev/resources/configs/.vimrc
|
|
179
180
|
omdev/dockerdev/resources/depsets/python.toml
|
|
@@ -12,19 +12,19 @@ authors = [
|
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
13
13
|
license = 'BSD-3-Clause'
|
|
14
14
|
readme = 'README.md'
|
|
15
|
-
requires-python = '>=3.
|
|
16
|
-
version = '0.0.
|
|
15
|
+
requires-python = '>=3.14'
|
|
16
|
+
version = '0.0.2'
|
|
17
17
|
classifiers = [
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
19
19
|
'Intended Audience :: Developers',
|
|
20
20
|
'Operating System :: OS Independent',
|
|
21
21
|
'Operating System :: POSIX',
|
|
22
22
|
'Programming Language :: Python :: 3',
|
|
23
|
-
'Programming Language :: Python :: 3.
|
|
23
|
+
'Programming Language :: Python :: 3.14',
|
|
24
24
|
]
|
|
25
25
|
description = 'omdev'
|
|
26
26
|
dependencies = [
|
|
27
|
-
'omlish == 0.0.
|
|
27
|
+
'omlish == 0.0.2',
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.optional-dependencies]
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"8": "3.8.20",
|
|
3
|
-
"9": "3.9.25",
|
|
4
|
-
"10": "3.10.19",
|
|
5
|
-
"11": "3.11.14",
|
|
6
|
-
"12": "3.12.12",
|
|
7
|
-
"13": "3.13.12",
|
|
8
|
-
"13d": "3.13.12d",
|
|
9
|
-
"13t": "3.13.12t",
|
|
10
|
-
"13dt": "3.13.12dt",
|
|
11
|
-
"14": "3.14.3",
|
|
12
|
-
"14d": "3.14.3d",
|
|
13
|
-
"14t": "3.14.3t",
|
|
14
|
-
"14dt": "3.14.3dt",
|
|
15
|
-
"15": "3.15.0a7",
|
|
16
|
-
"15t": "3.15.0a7t"
|
|
17
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|