omdev 0.0.7__tar.gz → 0.0.9__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.7/omdev.egg-info → omdev-0.0.9}/PKG-INFO +2 -2
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/marshal.py +14 -1
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/requires.py +4 -1
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/ci.py +15 -11
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/formats/goyaml.py +11 -10
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/pyproject.py +266 -2
- {omdev-0.0.7 → omdev-0.0.9/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.7 → omdev-0.0.9}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.7 → omdev-0.0.9}/pyproject.toml +2 -2
- {omdev-0.0.7 → omdev-0.0.9}/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/MANIFEST.in +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/__about__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/info.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/build.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/ci.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/compose.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/shell.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/ci/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/install.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/managers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cli/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmake.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/diffs/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/git/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/git/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/git/revisions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/git/shallow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/git/status.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/home/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/home/paths.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/home/secrets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/home/shadow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/imgur.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/intellij/open.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/default.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/messages/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/messages/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/messages/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/messages/messages.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/messages/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/numerics/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/numerics/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/numerics/numerics.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/numerics/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/errors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/message.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/nuh.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/tags.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/irc/protocol/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/java/xml.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/find.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/magic/styles.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/building.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/manifests/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/mypy/report.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/building.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/compression.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/data.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/loading.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/media.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/oci/tars.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/names.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/git.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/classdot.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/findimports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/reprs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/io/pipelines.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/io/streams.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tagstrings.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/diff.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/doc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/docker.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/pip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/prof.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/qr.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/shell.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.9}/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.9
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,7 +14,7 @@ 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.9
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=26.3; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
@@ -9,6 +9,7 @@ from omlish import lang
|
|
|
9
9
|
from omlish import marshal as msh
|
|
10
10
|
from omlish import reflect as rfl
|
|
11
11
|
|
|
12
|
+
from .requires import ParsedRequirement
|
|
12
13
|
from .requires import RequiresMarkerItem
|
|
13
14
|
from .requires import RequiresMarkerList
|
|
14
15
|
from .requires import RequiresNode
|
|
@@ -74,8 +75,20 @@ def _install_standard_marshaling() -> None:
|
|
|
74
75
|
RequiresMarkerListMarshalerFactory(),
|
|
75
76
|
)
|
|
76
77
|
|
|
77
|
-
msh.
|
|
78
|
+
msh.update_global_config(
|
|
78
79
|
RequiresMarkerList,
|
|
79
80
|
msh.ReflectOverride(MarshalRequiresMarkerList),
|
|
80
81
|
identity=True,
|
|
81
82
|
)
|
|
83
|
+
|
|
84
|
+
msh.update_global_config(
|
|
85
|
+
ParsedRequirement,
|
|
86
|
+
msh.ObjectOptions(
|
|
87
|
+
fields=dict(
|
|
88
|
+
marker=msh.FieldOptions(
|
|
89
|
+
marshal_as=RequiresMarkerList | None,
|
|
90
|
+
unmarshal_as=RequiresMarkerList | None,
|
|
91
|
+
),
|
|
92
|
+
),
|
|
93
|
+
),
|
|
94
|
+
)
|
|
@@ -29,6 +29,7 @@ import re
|
|
|
29
29
|
import typing as ta
|
|
30
30
|
|
|
31
31
|
from omlish.lite.check import check
|
|
32
|
+
from omlish.lite.dataclasses import install_dataclass_cache_hash
|
|
32
33
|
|
|
33
34
|
from .specifiers import Specifier
|
|
34
35
|
|
|
@@ -241,7 +242,9 @@ class RequiresMarkerItem(ta.NamedTuple):
|
|
|
241
242
|
r: ta.Union[RequiresVariable, RequiresValue]
|
|
242
243
|
|
|
243
244
|
|
|
244
|
-
|
|
245
|
+
@install_dataclass_cache_hash()
|
|
246
|
+
@dc.dataclass(frozen=True)
|
|
247
|
+
class ParsedRequirement:
|
|
245
248
|
name: str
|
|
246
249
|
url: str
|
|
247
250
|
extras: ta.List[str]
|
|
@@ -107,7 +107,7 @@ def __omlish_amalg__(): # noqa
|
|
|
107
107
|
dict(path='../../omlish/lite/asyncs.py', sha1='b3f2251c56617ce548abf9c333ac996b63edb23e'),
|
|
108
108
|
dict(path='../../omlish/lite/cached.py', sha1='0c33cf961ac8f0727284303c7a30c5ea98f714f2'),
|
|
109
109
|
dict(path='../../omlish/lite/check.py', sha1='7088e41034dbdce7bdae200793aaa9d6838c79d8'),
|
|
110
|
-
dict(path='../../omlish/lite/contextmanagers.py', sha1='
|
|
110
|
+
dict(path='../../omlish/lite/contextmanagers.py', sha1='b3275ca829d21eb598092c1448bedd70b72dfd04'),
|
|
111
111
|
dict(path='../../omlish/lite/dataclasses.py', sha1='42ff344c22262193795c54929bfb90d0a3507bab'),
|
|
112
112
|
dict(path='../../omlish/lite/json.py', sha1='57eeddc4d23a17931e00284ffa5cb6e3ce089486'),
|
|
113
113
|
dict(path='../../omlish/lite/namespaces.py', sha1='27b12b6592403c010fb8b2a0af7c24238490d3a1'),
|
|
@@ -154,7 +154,7 @@ def __omlish_amalg__(): # noqa
|
|
|
154
154
|
dict(path='../oci/tars.py', sha1='3ed00e97a494bd92c6a6149d22d51469bc0af384'),
|
|
155
155
|
dict(path='../../omlish/asyncs/asyncio/sockets.py', sha1='8d24dae988a30bb73f167a9ab62d4fc9eef4ad06'),
|
|
156
156
|
dict(path='../../omlish/asyncs/asyncio/timeouts.py', sha1='4d31b02b3c39b8f2fa7e94db36552fde6942e36a'),
|
|
157
|
-
dict(path='../../omlish/formats/yaml/goyaml/tokens.py', sha1='
|
|
157
|
+
dict(path='../../omlish/formats/yaml/goyaml/tokens.py', sha1='e9744c171d982ea8b4a6ace5f937926d51d5ec30'),
|
|
158
158
|
dict(path='../../omlish/http/pipelines/bodymodes.py', sha1='d419b4bce96abbea7ee739412ece462ccbc77aa8'),
|
|
159
159
|
dict(path='../../omlish/http/pipelines/objects.py', sha1='3de6f87e2a56375cc8a539321b1205e2d1d3900e'),
|
|
160
160
|
dict(path='../../omlish/http/simple/handlers.py', sha1='9e49c2ba5518616ce15bed6bac80ab4c88ed3b83'),
|
|
@@ -208,7 +208,7 @@ def __omlish_amalg__(): # noqa
|
|
|
208
208
|
dict(path='../dataserver/http.py', sha1='41a6e39c6d66807b6189e2d78d8cf2ff10e45bc3'),
|
|
209
209
|
dict(path='../oci/dataserver.py', sha1='dd147b56282b054cef264556a0ff3b3d1719bcee'),
|
|
210
210
|
dict(path='../../omlish/asyncs/asyncio/subprocesses.py', sha1='b6b5f9ae3fd0b9c83593bad2e04a08f726e5904d'),
|
|
211
|
-
dict(path='../../omlish/formats/yaml/goyaml/decoding.py', sha1='
|
|
211
|
+
dict(path='../../omlish/formats/yaml/goyaml/decoding.py', sha1='5047d6c283348c2cd4265c955bb94651e971addd'),
|
|
212
212
|
dict(path='../../omlish/http/pipelines/aggregators.py', sha1='e6a35442108553f39bf5d5d61b55fcdaa3f347b5'),
|
|
213
213
|
dict(path='../../omlish/io/pipelines/bytes/decoders.py', sha1='e49b17ece8aa2e006a6d92158628e2dc671e21f1'),
|
|
214
214
|
dict(path='../../omlish/logs/modules.py', sha1='dd7d5f8e63fe8829dfb49460f3929ab64b68ee14'),
|
|
@@ -2063,6 +2063,7 @@ class ExitStacked:
|
|
|
2063
2063
|
def _exit_contexts(self) -> None:
|
|
2064
2064
|
pass
|
|
2065
2065
|
|
|
2066
|
+
@ta.final
|
|
2066
2067
|
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
|
2067
2068
|
if (es := self._exit_stack) is None:
|
|
2068
2069
|
raise RuntimeError
|
|
@@ -2122,11 +2123,13 @@ class AsyncExitStacked:
|
|
|
2122
2123
|
async def _async_exit_contexts(self) -> None:
|
|
2123
2124
|
pass
|
|
2124
2125
|
|
|
2126
|
+
@ta.final
|
|
2125
2127
|
def _enter_context(self, cm: ta.ContextManager[T]) -> T:
|
|
2126
2128
|
if (es := self._exit_stack) is None:
|
|
2127
2129
|
raise RuntimeError
|
|
2128
2130
|
return es.enter_context(cm)
|
|
2129
2131
|
|
|
2132
|
+
@ta.final
|
|
2130
2133
|
async def _enter_async_context(self, cm: ta.AsyncContextManager[T]) -> T:
|
|
2131
2134
|
if (es := self._exit_stack) is None:
|
|
2132
2135
|
raise RuntimeError
|
|
@@ -12238,7 +12241,7 @@ def _yaml_is_need_quoted(value: str) -> bool:
|
|
|
12238
12241
|
if value == '-':
|
|
12239
12242
|
return True
|
|
12240
12243
|
|
|
12241
|
-
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`'):
|
|
12244
|
+
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`', ':'):
|
|
12242
12245
|
return True
|
|
12243
12246
|
|
|
12244
12247
|
if value[-1] in (':', ' '):
|
|
@@ -28457,6 +28460,9 @@ class YamlDecoder:
|
|
|
28457
28460
|
self.anchor_node_map[anchor_name] = n.value
|
|
28458
28461
|
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
28459
28462
|
|
|
28463
|
+
elif isinstance(n, TagYamlNode):
|
|
28464
|
+
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
28465
|
+
|
|
28460
28466
|
elif isinstance(n, AliasYamlNode):
|
|
28461
28467
|
alias_name = check.not_none(check.not_none(n.value).get_token()).value
|
|
28462
28468
|
node2 = self.anchor_node_map[alias_name]
|
|
@@ -28490,19 +28496,17 @@ class YamlDecoder:
|
|
|
28490
28496
|
return None
|
|
28491
28497
|
|
|
28492
28498
|
if isinstance(anchor := node, AnchorYamlNode):
|
|
28493
|
-
|
|
28494
|
-
return array_node
|
|
28495
|
-
|
|
28496
|
-
return UnexpectedNodeTypeYamlError(check.not_none(anchor.value).type(), YamlNodeType.SEQUENCE, check.not_none(node.get_token())) # noqa
|
|
28499
|
+
return self.get_array_node(check.not_none(anchor.value))
|
|
28497
28500
|
|
|
28498
28501
|
if isinstance(alias := node, AliasYamlNode):
|
|
28499
28502
|
alias_name = check.not_none(check.not_none(alias.value).get_token()).value
|
|
28500
28503
|
node2 = self.anchor_node_map[alias_name]
|
|
28501
28504
|
if node2 is None:
|
|
28502
28505
|
return yaml_error(f'cannot find anchor by alias name {alias_name}')
|
|
28503
|
-
|
|
28504
|
-
|
|
28505
|
-
|
|
28506
|
+
return self.get_array_node(node2)
|
|
28507
|
+
|
|
28508
|
+
if isinstance(tag := node, TagYamlNode):
|
|
28509
|
+
return self.get_array_node(check.not_none(tag.value))
|
|
28506
28510
|
|
|
28507
28511
|
if not isinstance(array_node := node, ArrayYamlNode):
|
|
28508
28512
|
return UnexpectedNodeTypeYamlError(node.type(), YamlNodeType.SEQUENCE, check.not_none(node.get_token())) # noqa
|
|
@@ -38,11 +38,11 @@ def __omlish_amalg__(): # noqa
|
|
|
38
38
|
dict(path='../../../lite/check.py', sha1='7088e41034dbdce7bdae200793aaa9d6838c79d8'),
|
|
39
39
|
dict(path='../../../lite/dataclasses.py', sha1='42ff344c22262193795c54929bfb90d0a3507bab'),
|
|
40
40
|
dict(path='errors.py', sha1='c4dda09d78bc14d9824e45e3d5d434185ee5598b'),
|
|
41
|
-
dict(path='tokens.py', sha1='
|
|
41
|
+
dict(path='tokens.py', sha1='e9744c171d982ea8b4a6ace5f937926d51d5ec30'),
|
|
42
42
|
dict(path='ast.py', sha1='6d21da91079afcd58467a58153951a6b97a97c20'),
|
|
43
43
|
dict(path='scanning.py', sha1='9c7bb51121f85ac499f8f907fbc3ce20a07f3e1d'),
|
|
44
44
|
dict(path='parsing.py', sha1='78c28c2b865c57077b071543361920db142242d0'),
|
|
45
|
-
dict(path='decoding.py', sha1='
|
|
45
|
+
dict(path='decoding.py', sha1='5047d6c283348c2cd4265c955bb94651e971addd'),
|
|
46
46
|
dict(path='_amalg.py', sha1='85989224f581528c4a189dca142cb3ec086ecd3c'),
|
|
47
47
|
],
|
|
48
48
|
)
|
|
@@ -1654,7 +1654,7 @@ def _yaml_is_need_quoted(value: str) -> bool:
|
|
|
1654
1654
|
if value == '-':
|
|
1655
1655
|
return True
|
|
1656
1656
|
|
|
1657
|
-
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`'):
|
|
1657
|
+
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`', ':'):
|
|
1658
1658
|
return True
|
|
1659
1659
|
|
|
1660
1660
|
if value[-1] in (':', ' '):
|
|
@@ -9363,6 +9363,9 @@ class YamlDecoder:
|
|
|
9363
9363
|
self.anchor_node_map[anchor_name] = n.value
|
|
9364
9364
|
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
9365
9365
|
|
|
9366
|
+
elif isinstance(n, TagYamlNode):
|
|
9367
|
+
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
9368
|
+
|
|
9366
9369
|
elif isinstance(n, AliasYamlNode):
|
|
9367
9370
|
alias_name = check.not_none(check.not_none(n.value).get_token()).value
|
|
9368
9371
|
node2 = self.anchor_node_map[alias_name]
|
|
@@ -9396,19 +9399,17 @@ class YamlDecoder:
|
|
|
9396
9399
|
return None
|
|
9397
9400
|
|
|
9398
9401
|
if isinstance(anchor := node, AnchorYamlNode):
|
|
9399
|
-
|
|
9400
|
-
return array_node
|
|
9401
|
-
|
|
9402
|
-
return UnexpectedNodeTypeYamlError(check.not_none(anchor.value).type(), YamlNodeType.SEQUENCE, check.not_none(node.get_token())) # noqa
|
|
9402
|
+
return self.get_array_node(check.not_none(anchor.value))
|
|
9403
9403
|
|
|
9404
9404
|
if isinstance(alias := node, AliasYamlNode):
|
|
9405
9405
|
alias_name = check.not_none(check.not_none(alias.value).get_token()).value
|
|
9406
9406
|
node2 = self.anchor_node_map[alias_name]
|
|
9407
9407
|
if node2 is None:
|
|
9408
9408
|
return yaml_error(f'cannot find anchor by alias name {alias_name}')
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9409
|
+
return self.get_array_node(node2)
|
|
9410
|
+
|
|
9411
|
+
if isinstance(tag := node, TagYamlNode):
|
|
9412
|
+
return self.get_array_node(check.not_none(tag.value))
|
|
9412
9413
|
|
|
9413
9414
|
if not isinstance(array_node := node, ArrayYamlNode):
|
|
9414
9415
|
return UnexpectedNodeTypeYamlError(node.type(), YamlNodeType.SEQUENCE, check.not_none(node.get_token())) # noqa
|
|
@@ -97,6 +97,7 @@ def __omlish_amalg__(): # noqa
|
|
|
97
97
|
dict(path='../../omlish/lite/asyncs.py', sha1='b3f2251c56617ce548abf9c333ac996b63edb23e'),
|
|
98
98
|
dict(path='../../omlish/lite/cached.py', sha1='0c33cf961ac8f0727284303c7a30c5ea98f714f2'),
|
|
99
99
|
dict(path='../../omlish/lite/check.py', sha1='7088e41034dbdce7bdae200793aaa9d6838c79d8'),
|
|
100
|
+
dict(path='../../omlish/lite/dataclasses.py', sha1='42ff344c22262193795c54929bfb90d0a3507bab'),
|
|
100
101
|
dict(path='../../omlish/lite/json.py', sha1='57eeddc4d23a17931e00284ffa5cb6e3ce089486'),
|
|
101
102
|
dict(path='../../omlish/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
|
|
102
103
|
dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
|
|
@@ -120,7 +121,7 @@ def __omlish_amalg__(): # noqa
|
|
|
120
121
|
dict(path='../../omlish/logs/protocols.py', sha1='05ca4d1d7feb50c4e3b9f22ee371aa7bf4b3dbd1'),
|
|
121
122
|
dict(path='../../omlish/logs/std/json.py', sha1='2a75553131e4d5331bb0cedde42aa183f403fc3b'),
|
|
122
123
|
dict(path='../interp/types.py', sha1='c53a8d45d29f2010244760adeb8dcd02a4a240e1'),
|
|
123
|
-
dict(path='../packaging/requires.py', sha1='
|
|
124
|
+
dict(path='../packaging/requires.py', sha1='0c34cc4044c4da386622bcd83b9c770e894266dd'),
|
|
124
125
|
dict(path='../../omlish/asyncs/asyncio/timeouts.py', sha1='4d31b02b3c39b8f2fa7e94db36552fde6942e36a'),
|
|
125
126
|
dict(path='../../omlish/lite/inject.py', sha1='8cfee01601e9b8d7a4689cb5ba38de8c2bdb4706'),
|
|
126
127
|
dict(path='../../omlish/logs/contexts.py', sha1='2f5881193a0c19c89c399ab0e0b5072c4048a60c'),
|
|
@@ -3030,6 +3031,267 @@ class Checks:
|
|
|
3030
3031
|
check = Checks()
|
|
3031
3032
|
|
|
3032
3033
|
|
|
3034
|
+
########################################
|
|
3035
|
+
# ../../../omlish/lite/dataclasses.py
|
|
3036
|
+
|
|
3037
|
+
|
|
3038
|
+
##
|
|
3039
|
+
|
|
3040
|
+
|
|
3041
|
+
def dataclass_shallow_astuple(o: ta.Any) -> ta.Tuple[ta.Any, ...]:
|
|
3042
|
+
return tuple(getattr(o, f.name) for f in dc.fields(o))
|
|
3043
|
+
|
|
3044
|
+
|
|
3045
|
+
def dataclass_shallow_asdict(o: ta.Any) -> ta.Dict[str, ta.Any]:
|
|
3046
|
+
return {f.name: getattr(o, f.name) for f in dc.fields(o)}
|
|
3047
|
+
|
|
3048
|
+
|
|
3049
|
+
##
|
|
3050
|
+
|
|
3051
|
+
|
|
3052
|
+
def is_immediate_dataclass(cls: type) -> bool:
|
|
3053
|
+
if not isinstance(cls, type):
|
|
3054
|
+
raise TypeError(cls)
|
|
3055
|
+
return dc._FIELDS in cls.__dict__ # type: ignore[attr-defined] # noqa
|
|
3056
|
+
|
|
3057
|
+
|
|
3058
|
+
##
|
|
3059
|
+
|
|
3060
|
+
|
|
3061
|
+
def _install_dataclass_fn(cls: type, fn: ta.Any, fn_name: ta.Optional[str] = None) -> None:
|
|
3062
|
+
if fn_name is None:
|
|
3063
|
+
fn_name = fn.__name__
|
|
3064
|
+
setattr(cls, fn_name, fn)
|
|
3065
|
+
fn.__qualname__ = f'{cls.__qualname__}.{fn_name}'
|
|
3066
|
+
|
|
3067
|
+
|
|
3068
|
+
##
|
|
3069
|
+
|
|
3070
|
+
|
|
3071
|
+
def install_dataclass_cache_hash(
|
|
3072
|
+
*,
|
|
3073
|
+
cached_hash_attr: str = '__dataclass_hash__',
|
|
3074
|
+
):
|
|
3075
|
+
def inner(cls):
|
|
3076
|
+
if not (isinstance(cls, type) and dc.is_dataclass(cls)):
|
|
3077
|
+
raise TypeError(cls)
|
|
3078
|
+
|
|
3079
|
+
if (
|
|
3080
|
+
cls.__hash__ is object.__hash__ or
|
|
3081
|
+
'__hash__' not in cls.__dict__
|
|
3082
|
+
):
|
|
3083
|
+
raise TypeError(cls)
|
|
3084
|
+
|
|
3085
|
+
real_hash = cls.__hash__
|
|
3086
|
+
|
|
3087
|
+
def cached_hash(self) -> int:
|
|
3088
|
+
try:
|
|
3089
|
+
return object.__getattribute__(self, cached_hash_attr)
|
|
3090
|
+
except AttributeError:
|
|
3091
|
+
object.__setattr__(self, cached_hash_attr, h := real_hash(self))
|
|
3092
|
+
return h
|
|
3093
|
+
|
|
3094
|
+
_install_dataclass_fn(cls, cached_hash, '__hash__')
|
|
3095
|
+
|
|
3096
|
+
return cls
|
|
3097
|
+
|
|
3098
|
+
return inner
|
|
3099
|
+
|
|
3100
|
+
|
|
3101
|
+
##
|
|
3102
|
+
|
|
3103
|
+
|
|
3104
|
+
def dataclass_maybe_post_init(sup: ta.Any) -> bool:
|
|
3105
|
+
if not isinstance(sup, super):
|
|
3106
|
+
raise TypeError(sup)
|
|
3107
|
+
try:
|
|
3108
|
+
fn = sup.__post_init__ # type: ignore
|
|
3109
|
+
except AttributeError:
|
|
3110
|
+
return False
|
|
3111
|
+
fn()
|
|
3112
|
+
return True
|
|
3113
|
+
|
|
3114
|
+
|
|
3115
|
+
##
|
|
3116
|
+
|
|
3117
|
+
|
|
3118
|
+
def dataclass_filtered_repr(
|
|
3119
|
+
obj: ta.Any,
|
|
3120
|
+
fn: ta.Union[ta.Callable[[ta.Any, dc.Field, ta.Any], bool], ta.Literal['omit_none', 'omit_falsey']],
|
|
3121
|
+
) -> str:
|
|
3122
|
+
if fn == 'omit_none':
|
|
3123
|
+
fn = lambda o, f, v: v is not None # noqa
|
|
3124
|
+
elif fn == 'omit_falsey':
|
|
3125
|
+
fn = lambda o, f, v: bool(v)
|
|
3126
|
+
|
|
3127
|
+
return (
|
|
3128
|
+
f'{obj.__class__.__qualname__}(' +
|
|
3129
|
+
', '.join([
|
|
3130
|
+
f'{f.name}={v!r}'
|
|
3131
|
+
for f in dc.fields(obj)
|
|
3132
|
+
if fn(obj, f, v := getattr(obj, f.name))
|
|
3133
|
+
]) +
|
|
3134
|
+
')'
|
|
3135
|
+
)
|
|
3136
|
+
|
|
3137
|
+
|
|
3138
|
+
def dataclass_repr_omit_none(obj: ta.Any) -> str:
|
|
3139
|
+
return dataclass_filtered_repr(obj, 'omit_none')
|
|
3140
|
+
|
|
3141
|
+
|
|
3142
|
+
def dataclass_repr_omit_falsey(obj: ta.Any) -> str:
|
|
3143
|
+
return dataclass_filtered_repr(obj, 'omit_falsey')
|
|
3144
|
+
|
|
3145
|
+
|
|
3146
|
+
def install_dataclass_filtered_repr(
|
|
3147
|
+
fn: ta.Union[ta.Callable[[ta.Any, dc.Field, ta.Any], bool], ta.Literal['omit_none', 'omit_falsey']],
|
|
3148
|
+
):
|
|
3149
|
+
def inner(cls):
|
|
3150
|
+
if not (isinstance(cls, type) and dc.is_dataclass(cls)):
|
|
3151
|
+
raise TypeError(cls)
|
|
3152
|
+
|
|
3153
|
+
def filtered_repr(self) -> str:
|
|
3154
|
+
return dataclass_filtered_repr(self, fn)
|
|
3155
|
+
|
|
3156
|
+
_install_dataclass_fn(cls, filtered_repr, '__repr__')
|
|
3157
|
+
|
|
3158
|
+
return cls
|
|
3159
|
+
|
|
3160
|
+
return inner
|
|
3161
|
+
|
|
3162
|
+
|
|
3163
|
+
#
|
|
3164
|
+
|
|
3165
|
+
|
|
3166
|
+
def dataclass_terse_repr(obj: ta.Any) -> str:
|
|
3167
|
+
return f'{obj.__class__.__qualname__}({", ".join(repr(getattr(obj, f.name)) for f in dc.fields(obj))})'
|
|
3168
|
+
|
|
3169
|
+
|
|
3170
|
+
def install_dataclass_terse_repr():
|
|
3171
|
+
def inner(cls):
|
|
3172
|
+
if not (isinstance(cls, type) and dc.is_dataclass(cls)):
|
|
3173
|
+
raise TypeError(cls)
|
|
3174
|
+
|
|
3175
|
+
def terse_repr(self) -> str:
|
|
3176
|
+
return dataclass_terse_repr(self)
|
|
3177
|
+
|
|
3178
|
+
_install_dataclass_fn(cls, terse_repr, '__repr__')
|
|
3179
|
+
|
|
3180
|
+
return cls
|
|
3181
|
+
|
|
3182
|
+
return inner
|
|
3183
|
+
|
|
3184
|
+
|
|
3185
|
+
##
|
|
3186
|
+
|
|
3187
|
+
|
|
3188
|
+
def dataclass_descriptor_method(*bind_attrs: str, bind_owner: bool = False) -> ta.Callable:
|
|
3189
|
+
if not bind_attrs:
|
|
3190
|
+
def __get__(self, instance, owner=None): # noqa
|
|
3191
|
+
return self
|
|
3192
|
+
|
|
3193
|
+
elif bind_owner:
|
|
3194
|
+
def __get__(self, instance, owner=None): # noqa
|
|
3195
|
+
# Guaranteed to return a new instance even with no attrs
|
|
3196
|
+
return dc.replace(self, **{
|
|
3197
|
+
a: v.__get__(instance, owner) if (v := getattr(self, a)) is not None else None
|
|
3198
|
+
for a in bind_attrs
|
|
3199
|
+
})
|
|
3200
|
+
|
|
3201
|
+
else:
|
|
3202
|
+
def __get__(self, instance, owner=None): # noqa
|
|
3203
|
+
if instance is None:
|
|
3204
|
+
return self
|
|
3205
|
+
|
|
3206
|
+
# Guaranteed to return a new instance even with no attrs
|
|
3207
|
+
return dc.replace(self, **{
|
|
3208
|
+
a: v.__get__(instance, owner) if (v := getattr(self, a)) is not None else None
|
|
3209
|
+
for a in bind_attrs
|
|
3210
|
+
})
|
|
3211
|
+
|
|
3212
|
+
return __get__
|
|
3213
|
+
|
|
3214
|
+
|
|
3215
|
+
##
|
|
3216
|
+
|
|
3217
|
+
|
|
3218
|
+
def install_dataclass_kw_only_init():
|
|
3219
|
+
def inner(cls):
|
|
3220
|
+
if not isinstance(cls, type) and dc.is_dataclass(cls):
|
|
3221
|
+
raise TypeError(cls)
|
|
3222
|
+
|
|
3223
|
+
real_init = cls.__init__ # type: ignore[misc]
|
|
3224
|
+
|
|
3225
|
+
flds = dc.fields(cls) # noqa
|
|
3226
|
+
|
|
3227
|
+
if any(f.name == 'self' for f in flds):
|
|
3228
|
+
self_name = '__dataclass_self__'
|
|
3229
|
+
else:
|
|
3230
|
+
self_name = 'self'
|
|
3231
|
+
|
|
3232
|
+
src = '\n'.join([
|
|
3233
|
+
'def __init__(',
|
|
3234
|
+
f' {self_name},',
|
|
3235
|
+
' *,',
|
|
3236
|
+
*[
|
|
3237
|
+
''.join([
|
|
3238
|
+
f' {f.name}: __dataclass_type_{f.name}__',
|
|
3239
|
+
f' = __dataclass_default_{f.name}__' if f.default is not dc.MISSING else '',
|
|
3240
|
+
',',
|
|
3241
|
+
])
|
|
3242
|
+
for f in flds
|
|
3243
|
+
],
|
|
3244
|
+
') -> __dataclass_None__:',
|
|
3245
|
+
' __dataclass_real_init__(',
|
|
3246
|
+
f' {self_name},',
|
|
3247
|
+
*[
|
|
3248
|
+
f' {f.name}={f.name},'
|
|
3249
|
+
for f in flds
|
|
3250
|
+
],
|
|
3251
|
+
' )',
|
|
3252
|
+
])
|
|
3253
|
+
|
|
3254
|
+
ns: dict = {
|
|
3255
|
+
'__dataclass_None__': None,
|
|
3256
|
+
'__dataclass_real_init__': real_init,
|
|
3257
|
+
**{
|
|
3258
|
+
f'__dataclass_type_{f.name}__': f.type
|
|
3259
|
+
for f in flds
|
|
3260
|
+
},
|
|
3261
|
+
**{
|
|
3262
|
+
f'__dataclass_default_{f.name}__': f.default
|
|
3263
|
+
for f in flds
|
|
3264
|
+
if f.default is not dc.MISSING
|
|
3265
|
+
},
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
exec(src, ns)
|
|
3269
|
+
|
|
3270
|
+
kw_only_init = ns['__init__']
|
|
3271
|
+
|
|
3272
|
+
functools.update_wrapper(kw_only_init, real_init)
|
|
3273
|
+
|
|
3274
|
+
_install_dataclass_fn(cls, kw_only_init, '__init__')
|
|
3275
|
+
|
|
3276
|
+
return cls
|
|
3277
|
+
|
|
3278
|
+
return inner
|
|
3279
|
+
|
|
3280
|
+
|
|
3281
|
+
##
|
|
3282
|
+
|
|
3283
|
+
|
|
3284
|
+
@dc.dataclass()
|
|
3285
|
+
class DataclassFieldRequiredError(Exception):
|
|
3286
|
+
name: str
|
|
3287
|
+
|
|
3288
|
+
|
|
3289
|
+
def dataclass_field_required(name: str) -> ta.Callable[[], ta.Any]:
|
|
3290
|
+
def inner() -> ta.NoReturn:
|
|
3291
|
+
raise DataclassFieldRequiredError(name)
|
|
3292
|
+
return inner
|
|
3293
|
+
|
|
3294
|
+
|
|
3033
3295
|
########################################
|
|
3034
3296
|
# ../../../omlish/lite/json.py
|
|
3035
3297
|
|
|
@@ -6941,7 +7203,9 @@ class RequiresMarkerItem(ta.NamedTuple):
|
|
|
6941
7203
|
r: ta.Union[RequiresVariable, RequiresValue]
|
|
6942
7204
|
|
|
6943
7205
|
|
|
6944
|
-
|
|
7206
|
+
@install_dataclass_cache_hash()
|
|
7207
|
+
@dc.dataclass(frozen=True)
|
|
7208
|
+
class ParsedRequirement:
|
|
6945
7209
|
name: str
|
|
6946
7210
|
url: str
|
|
6947
7211
|
extras: ta.List[str]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,7 +14,7 @@ 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.9
|
|
18
18
|
Provides-Extra: all
|
|
19
19
|
Requires-Dist: black~=26.3; extra == "all"
|
|
20
20
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
|
13
13
|
license = 'BSD-3-Clause'
|
|
14
14
|
readme = 'README.md'
|
|
15
15
|
requires-python = '>=3.14'
|
|
16
|
-
version = '0.0.
|
|
16
|
+
version = '0.0.9'
|
|
17
17
|
classifiers = [
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
19
19
|
'Intended Audience :: Developers',
|
|
@@ -24,7 +24,7 @@ classifiers = [
|
|
|
24
24
|
]
|
|
25
25
|
description = 'omdev'
|
|
26
26
|
dependencies = [
|
|
27
|
-
'omlish == 0.0.
|
|
27
|
+
'omlish == 0.0.9',
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.optional-dependencies]
|
|
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
|