omdev 0.0.7__tar.gz → 0.0.8__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.8}/PKG-INFO +2 -2
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/marshal.py +13 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/requires.py +4 -1
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/ci.py +11 -10
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/formats/goyaml.py +11 -10
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/pyproject.py +266 -2
- {omdev-0.0.7 → omdev-0.0.8/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.7 → omdev-0.0.8}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.7 → omdev-0.0.8}/pyproject.toml +2 -2
- {omdev-0.0.7 → omdev-0.0.8}/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/MANIFEST.in +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/__about__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/info.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/build.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/ci.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/compose.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/shell.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/ci/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/install.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/managers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cli/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmake.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/_dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/diffs/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/git/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/git/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/git/revisions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/git/shallow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/git/status.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/home/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/home/paths.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/home/secrets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/home/shadow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/imgur.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/intellij/open.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/default.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/messages/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/messages/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/messages/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/messages/messages.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/messages/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/numerics/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/numerics/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/numerics/numerics.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/numerics/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/errors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/message.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/nuh.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/tags.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/irc/protocol/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/java/xml.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/find.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/magic.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/magic/styles.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/_dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/building.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/manifests/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/mypy/report.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/building.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/compression.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/data.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/loading.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/media.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/oci/tars.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/names.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/base.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/git.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/classdot.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/findimports.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/reprs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/scripts/execstat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/inject.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/io/pipelines.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/io/streams.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/lib/marshal.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tagstrings.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/diff.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/doc.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/docker.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/pip.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/prof.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/qr.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/shell.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.7 → omdev-0.0.8}/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.8
|
|
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.8
|
|
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
|
|
@@ -79,3 +80,15 @@ def _install_standard_marshaling() -> None:
|
|
|
79
80
|
msh.ReflectOverride(MarshalRequiresMarkerList),
|
|
80
81
|
identity=True,
|
|
81
82
|
)
|
|
83
|
+
|
|
84
|
+
msh.global_config_registry().register(
|
|
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]
|
|
@@ -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'),
|
|
@@ -12238,7 +12238,7 @@ def _yaml_is_need_quoted(value: str) -> bool:
|
|
|
12238
12238
|
if value == '-':
|
|
12239
12239
|
return True
|
|
12240
12240
|
|
|
12241
|
-
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`'):
|
|
12241
|
+
if value[0] in ('*', '&', '[', '{', '}', ']', ',', '!', '|', '>', '%', '\'', '"', '@', ' ', '`', ':'):
|
|
12242
12242
|
return True
|
|
12243
12243
|
|
|
12244
12244
|
if value[-1] in (':', ' '):
|
|
@@ -28457,6 +28457,9 @@ class YamlDecoder:
|
|
|
28457
28457
|
self.anchor_node_map[anchor_name] = n.value
|
|
28458
28458
|
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
28459
28459
|
|
|
28460
|
+
elif isinstance(n, TagYamlNode):
|
|
28461
|
+
return self.get_map_node(check.not_none(n.value), is_merge)
|
|
28462
|
+
|
|
28460
28463
|
elif isinstance(n, AliasYamlNode):
|
|
28461
28464
|
alias_name = check.not_none(check.not_none(n.value).get_token()).value
|
|
28462
28465
|
node2 = self.anchor_node_map[alias_name]
|
|
@@ -28490,19 +28493,17 @@ class YamlDecoder:
|
|
|
28490
28493
|
return None
|
|
28491
28494
|
|
|
28492
28495
|
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
|
|
28496
|
+
return self.get_array_node(check.not_none(anchor.value))
|
|
28497
28497
|
|
|
28498
28498
|
if isinstance(alias := node, AliasYamlNode):
|
|
28499
28499
|
alias_name = check.not_none(check.not_none(alias.value).get_token()).value
|
|
28500
28500
|
node2 = self.anchor_node_map[alias_name]
|
|
28501
28501
|
if node2 is None:
|
|
28502
28502
|
return yaml_error(f'cannot find anchor by alias name {alias_name}')
|
|
28503
|
-
|
|
28504
|
-
|
|
28505
|
-
|
|
28503
|
+
return self.get_array_node(node2)
|
|
28504
|
+
|
|
28505
|
+
if isinstance(tag := node, TagYamlNode):
|
|
28506
|
+
return self.get_array_node(check.not_none(tag.value))
|
|
28506
28507
|
|
|
28507
28508
|
if not isinstance(array_node := node, ArrayYamlNode):
|
|
28508
28509
|
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.8
|
|
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.8
|
|
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.8'
|
|
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.8',
|
|
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
|
|
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
|