omdev 0.0.28__tar.gz → 0.0.30__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.28/omdev.egg-info → omdev-0.0.30}/PKG-INFO +32 -35
- omdev-0.0.30/README.md +49 -0
- omdev-0.0.30/omdev/README.md +49 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/cli.py +4 -4
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/clicli.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/install.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/_dumping.py +69 -18
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/codegen.py +0 -5
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/cli.py +2 -2
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/config.toml +10 -3
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/gen.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/.python-versions.json +7 -7
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/depsets/python.toml +5 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/jdk.sh +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/run.py +3 -3
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/paths.py +4 -4
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/secrets.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/standalone.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/_dumping.py +72 -19
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/pkg.py +105 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/tools/buildrs.py +1 -1
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/ci.py +841 -264
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/interp.py +47 -19
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/formats/goyaml.py +610 -163
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/inject.py +29 -7
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/io/pipelines.py +3 -3
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/io/streambufs.py +3 -3
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/marshal.py +69 -18
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/pidfiles.py +162 -71
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/pyproject.py +294 -78
- {omdev-0.0.28 → omdev-0.0.30/omdev.egg-info}/PKG-INFO +32 -35
- {omdev-0.0.28 → omdev-0.0.30}/omdev.egg-info/requires.txt +5 -5
- {omdev-0.0.28 → omdev-0.0.30}/pyproject.toml +7 -8
- omdev-0.0.28/README.md +0 -51
- omdev-0.0.28/omdev/README.md +0 -51
- {omdev-0.0.28 → omdev-0.0.30}/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/MANIFEST.in +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/.om-manifests.json +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/__about__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/info.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/build.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/ci.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/compose.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/consts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/shell.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/ci/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/managers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cli/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmake.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/diffs/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/build.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/depsets/system.toml +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/chgrp.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/workdir.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/scripts/install-pi +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/resources/shift-uid.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/dockerdev/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/git/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/git/magic.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/git/revisions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/git/shallow.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/git/status.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/home/shadow.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/imgur.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/intellij/open.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/default.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/java/xml.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/find.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/magic.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/magic/styles.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/building.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/manifests/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/markdown/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/mypy/report.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/names.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pip.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/base.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/git.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/asts/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/classdot.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/findimports.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/reprs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/scripts/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tokens/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tools/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tools/fixdocstrings.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/py.typed +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/tools/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/rs/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/formats/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/io/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/lib/logs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/messages/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/messages/base.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/messages/formats.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/messages/messages.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/messages/parsing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/numerics/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/numerics/formats.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/numerics/numerics.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/numerics/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/consts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/errors.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/message.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/nuh.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/parsing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/tags.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/irc/protocol/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/analysis.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/config.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/errors.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/generator.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/ir.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/names.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/transforms.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/jsonschema/codegen/typing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/building.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/compression.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/data.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/datarefs.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/dataserver.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/loading.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/media.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/pack/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/pack/packing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/pack/repositories.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/pack/unpacking.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/repositories.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/specs/oci/tars.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tagstrings.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/diff.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/doc.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/docker.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/ocr.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/pip.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/prof.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/qr.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/shell.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/edit/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/rich/trirule.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/actionmenu.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/client.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/borders.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/colors.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/colors.tcss +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/easing.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/easing.tcss +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/previews/keys.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/protocol.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/redirect_output.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/renderables.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/server.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/service.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/tools/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/altdevtools/tools/diagnose.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/devtools.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/dom2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/types.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev.egg-info/SOURCES.txt +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.28 → omdev-0.0.30}/setup.cfg +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.30
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
7
|
-
Project-URL: source, https://github.com/wrmsr/
|
|
8
|
-
Classifier: Development Status :: 2 - Pre-Alpha
|
|
7
|
+
Project-URL: source, https://github.com/wrmsr/om
|
|
9
8
|
Classifier: Intended Audience :: Developers
|
|
10
9
|
Classifier: Operating System :: OS Independent
|
|
11
10
|
Classifier: Operating System :: POSIX
|
|
@@ -14,10 +13,10 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
13
|
Requires-Python: >=3.14
|
|
15
14
|
Description-Content-Type: text/markdown
|
|
16
15
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omcore==0.0.
|
|
16
|
+
Requires-Dist: omcore==0.0.30
|
|
18
17
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: ominfra==0.0.
|
|
20
|
-
Requires-Dist: omllm==0.0.
|
|
18
|
+
Requires-Dist: ominfra==0.0.30; extra == "all"
|
|
19
|
+
Requires-Dist: omllm==0.0.30; extra == "all"
|
|
21
20
|
Requires-Dist: black~=26.5; extra == "all"
|
|
22
21
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
23
22
|
Requires-Dist: pcpp~=1.30; extra == "all"
|
|
@@ -36,9 +35,9 @@ Requires-Dist: textual~=8.2; extra == "all"
|
|
|
36
35
|
Requires-Dist: textual-dev~=1.8; extra == "all"
|
|
37
36
|
Requires-Dist: textual-speedups~=0.2; extra == "all"
|
|
38
37
|
Provides-Extra: ominfra
|
|
39
|
-
Requires-Dist: ominfra==0.0.
|
|
38
|
+
Requires-Dist: ominfra==0.0.30; extra == "ominfra"
|
|
40
39
|
Provides-Extra: omllm
|
|
41
|
-
Requires-Dist: omllm==0.0.
|
|
40
|
+
Requires-Dist: omllm==0.0.30; extra == "omllm"
|
|
42
41
|
Provides-Extra: black
|
|
43
42
|
Requires-Dist: black~=26.5; extra == "black"
|
|
44
43
|
Provides-Extra: c
|
|
@@ -73,48 +72,46 @@ Development utilities and support code.
|
|
|
73
72
|
|
|
74
73
|
# Notable packages
|
|
75
74
|
|
|
76
|
-
- **[cli](https://github.com/wrmsr/
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
- **[cli](https://github.com/wrmsr/om/blob/master/omdev/cli)** - The codebase's all-in-one CLI. This is not installed as
|
|
76
|
+
an entrypoint / command when this package is itself installed - that is separated into the `omdev-cli` installable
|
|
77
|
+
package so as to not pollute users' bin/ directories when depping this lib for its utility code.
|
|
79
78
|
|
|
80
|
-
- **[amalg](https://github.com/wrmsr/
|
|
79
|
+
- **[amalg](https://github.com/wrmsr/om/blob/master/omdev/amalg)** - The [amalgamator](#amalgamation).
|
|
81
80
|
|
|
82
|
-
- **[pyproject](https://github.com/wrmsr/
|
|
83
|
-
([amalg](https://github.com/wrmsr/
|
|
81
|
+
- **[pyproject](https://github.com/wrmsr/om/blob/master/omdev/pyproject)**
|
|
82
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/pyproject.py)) - python project management tool.
|
|
84
83
|
wrangles but does not replace tools like venv, pip, setuptools, and uv. does things like sets up venvs, generates
|
|
85
|
-
[`.pkg`](https://github.com/wrmsr/
|
|
84
|
+
[`.pkg`](https://github.com/wrmsr/om/blob/master/.pkg) directories and their `pyproject.toml`'s (from their
|
|
86
85
|
`__about__.py`'s), and packages them. this should grow to eat more and more of the Makefile. as it is amalgamated it
|
|
87
86
|
requires no installation and can just be dropped into other projects / repos.
|
|
88
87
|
|
|
89
|
-
- **[ci](https://github.com/wrmsr/
|
|
90
|
-
([amalg](https://github.com/wrmsr/
|
|
91
|
-
[`compose.yml`](https://github.com/wrmsr/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
- **[ci](https://github.com/wrmsr/om/blob/master/omdev/ci)**
|
|
89
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/ci.py)) - ci runner. given a
|
|
90
|
+
[`compose.yml`](https://github.com/wrmsr/om/blob/master/docker/compose.yml) and requirements.txt files, takes care of
|
|
91
|
+
building and caching of containers and venvs and execution of required ci commands. detects and [natively
|
|
92
|
+
uses](https://github.com/wrmsr/om/blob/master/omdev/ci/github/api/v2) github-action's caching system. unifies ci
|
|
93
|
+
execution between local dev and github runners.
|
|
95
94
|
|
|
96
|
-
- **[tools.json](https://github.com/wrmsr/
|
|
97
|
-
|
|
98
|
-
[jmespath](https://github.com/wrmsr/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
formats.
|
|
95
|
+
- **[tools.json](https://github.com/wrmsr/om/blob/master/omdev/tools/json)** (cli: `om j`) - a tool for json-like data,
|
|
96
|
+
obviously in the vein of [jq](https://github.com/jqlang/jq) but using the internal
|
|
97
|
+
[jmespath](https://github.com/wrmsr/om/blob/master/omcore/specs/jmespath) engine. supports [true
|
|
98
|
+
streaming](https://github.com/wrmsr/om/blob/master/omcore/formats/json/stream) json input and output, as well as
|
|
99
|
+
[various other](https://github.com/wrmsr/om/blob/master/omdev/tools/json/formats.py) non-streaming input formats.
|
|
102
100
|
|
|
103
|
-
- **[tools.git](https://github.com/wrmsr/
|
|
104
|
-
|
|
101
|
+
- **[tools.git](https://github.com/wrmsr/om/blob/master/omdev/tools/git)** (cli: `om git`) - a tool for various lazy git
|
|
102
|
+
operations, including the one that (poorly) writes all of these commit messages.
|
|
105
103
|
|
|
106
104
|
# Amalgamation
|
|
107
105
|
|
|
108
106
|
Amalgamation is the process of stitching together multiple python source files into a single self-contained python
|
|
109
|
-
script. ['lite'](https://github.com/wrmsr/
|
|
110
|
-
this.
|
|
107
|
+
script. ['lite'](https://github.com/wrmsr/om/blob/master/omcore#lite-code) code is written in a style conducive to this.
|
|
111
108
|
|
|
112
109
|
# Local storage
|
|
113
110
|
|
|
114
111
|
Some of this code, when asked, will store things on the local filesystem. The only directories used (outside of ones
|
|
115
112
|
explicitly specified as command or function arguments) are managed in
|
|
116
|
-
[home.paths](https://github.com/wrmsr/
|
|
113
|
+
[home.paths](https://github.com/wrmsr/om/blob/master/omdev/home/paths.py), and are the following:
|
|
117
114
|
|
|
118
|
-
- `$
|
|
119
|
-
- `$
|
|
120
|
-
|
|
115
|
+
- `$OM_HOME`, default of `~/.om` - persistent things like config and state.
|
|
116
|
+
- `$OM_CACHE`, default of `~/.cache/om` - used for things like the local ci cache and [various
|
|
117
|
+
other](https://github.com/search?q=repo%3Awrmsr%2Fom+%22dcache.%22&type=code) cached data.
|
omdev-0.0.30/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Development utilities and support code.
|
|
4
|
+
|
|
5
|
+
# Notable packages
|
|
6
|
+
|
|
7
|
+
- **[cli](https://github.com/wrmsr/om/blob/master/omdev/cli)** - The codebase's all-in-one CLI. This is not installed as
|
|
8
|
+
an entrypoint / command when this package is itself installed - that is separated into the `omdev-cli` installable
|
|
9
|
+
package so as to not pollute users' bin/ directories when depping this lib for its utility code.
|
|
10
|
+
|
|
11
|
+
- **[amalg](https://github.com/wrmsr/om/blob/master/omdev/amalg)** - The [amalgamator](#amalgamation).
|
|
12
|
+
|
|
13
|
+
- **[pyproject](https://github.com/wrmsr/om/blob/master/omdev/pyproject)**
|
|
14
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/pyproject.py)) - python project management tool.
|
|
15
|
+
wrangles but does not replace tools like venv, pip, setuptools, and uv. does things like sets up venvs, generates
|
|
16
|
+
[`.pkg`](https://github.com/wrmsr/om/blob/master/.pkg) directories and their `pyproject.toml`'s (from their
|
|
17
|
+
`__about__.py`'s), and packages them. this should grow to eat more and more of the Makefile. as it is amalgamated it
|
|
18
|
+
requires no installation and can just be dropped into other projects / repos.
|
|
19
|
+
|
|
20
|
+
- **[ci](https://github.com/wrmsr/om/blob/master/omdev/ci)**
|
|
21
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/ci.py)) - ci runner. given a
|
|
22
|
+
[`compose.yml`](https://github.com/wrmsr/om/blob/master/docker/compose.yml) and requirements.txt files, takes care of
|
|
23
|
+
building and caching of containers and venvs and execution of required ci commands. detects and [natively
|
|
24
|
+
uses](https://github.com/wrmsr/om/blob/master/omdev/ci/github/api/v2) github-action's caching system. unifies ci
|
|
25
|
+
execution between local dev and github runners.
|
|
26
|
+
|
|
27
|
+
- **[tools.json](https://github.com/wrmsr/om/blob/master/omdev/tools/json)** (cli: `om j`) - a tool for json-like data,
|
|
28
|
+
obviously in the vein of [jq](https://github.com/jqlang/jq) but using the internal
|
|
29
|
+
[jmespath](https://github.com/wrmsr/om/blob/master/omcore/specs/jmespath) engine. supports [true
|
|
30
|
+
streaming](https://github.com/wrmsr/om/blob/master/omcore/formats/json/stream) json input and output, as well as
|
|
31
|
+
[various other](https://github.com/wrmsr/om/blob/master/omdev/tools/json/formats.py) non-streaming input formats.
|
|
32
|
+
|
|
33
|
+
- **[tools.git](https://github.com/wrmsr/om/blob/master/omdev/tools/git)** (cli: `om git`) - a tool for various lazy git
|
|
34
|
+
operations, including the one that (poorly) writes all of these commit messages.
|
|
35
|
+
|
|
36
|
+
# Amalgamation
|
|
37
|
+
|
|
38
|
+
Amalgamation is the process of stitching together multiple python source files into a single self-contained python
|
|
39
|
+
script. ['lite'](https://github.com/wrmsr/om/blob/master/omcore#lite-code) code is written in a style conducive to this.
|
|
40
|
+
|
|
41
|
+
# Local storage
|
|
42
|
+
|
|
43
|
+
Some of this code, when asked, will store things on the local filesystem. The only directories used (outside of ones
|
|
44
|
+
explicitly specified as command or function arguments) are managed in
|
|
45
|
+
[home.paths](https://github.com/wrmsr/om/blob/master/omdev/home/paths.py), and are the following:
|
|
46
|
+
|
|
47
|
+
- `$OM_HOME`, default of `~/.om` - persistent things like config and state.
|
|
48
|
+
- `$OM_CACHE`, default of `~/.cache/om` - used for things like the local ci cache and [various
|
|
49
|
+
other](https://github.com/search?q=repo%3Awrmsr%2Fom+%22dcache.%22&type=code) cached data.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Development utilities and support code.
|
|
4
|
+
|
|
5
|
+
# Notable packages
|
|
6
|
+
|
|
7
|
+
- **[cli](https://github.com/wrmsr/om/blob/master/omdev/cli)** - The codebase's all-in-one CLI. This is not installed as
|
|
8
|
+
an entrypoint / command when this package is itself installed - that is separated into the `omdev-cli` installable
|
|
9
|
+
package so as to not pollute users' bin/ directories when depping this lib for its utility code.
|
|
10
|
+
|
|
11
|
+
- **[amalg](https://github.com/wrmsr/om/blob/master/omdev/amalg)** - The [amalgamator](#amalgamation).
|
|
12
|
+
|
|
13
|
+
- **[pyproject](https://github.com/wrmsr/om/blob/master/omdev/pyproject)**
|
|
14
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/pyproject.py)) - python project management tool.
|
|
15
|
+
wrangles but does not replace tools like venv, pip, setuptools, and uv. does things like sets up venvs, generates
|
|
16
|
+
[`.pkg`](https://github.com/wrmsr/om/blob/master/.pkg) directories and their `pyproject.toml`'s (from their
|
|
17
|
+
`__about__.py`'s), and packages them. this should grow to eat more and more of the Makefile. as it is amalgamated it
|
|
18
|
+
requires no installation and can just be dropped into other projects / repos.
|
|
19
|
+
|
|
20
|
+
- **[ci](https://github.com/wrmsr/om/blob/master/omdev/ci)**
|
|
21
|
+
([amalg](https://github.com/wrmsr/om/blob/master/omdev/scripts/ci.py)) - ci runner. given a
|
|
22
|
+
[`compose.yml`](https://github.com/wrmsr/om/blob/master/docker/compose.yml) and requirements.txt files, takes care of
|
|
23
|
+
building and caching of containers and venvs and execution of required ci commands. detects and [natively
|
|
24
|
+
uses](https://github.com/wrmsr/om/blob/master/omdev/ci/github/api/v2) github-action's caching system. unifies ci
|
|
25
|
+
execution between local dev and github runners.
|
|
26
|
+
|
|
27
|
+
- **[tools.json](https://github.com/wrmsr/om/blob/master/omdev/tools/json)** (cli: `om j`) - a tool for json-like data,
|
|
28
|
+
obviously in the vein of [jq](https://github.com/jqlang/jq) but using the internal
|
|
29
|
+
[jmespath](https://github.com/wrmsr/om/blob/master/omcore/specs/jmespath) engine. supports [true
|
|
30
|
+
streaming](https://github.com/wrmsr/om/blob/master/omcore/formats/json/stream) json input and output, as well as
|
|
31
|
+
[various other](https://github.com/wrmsr/om/blob/master/omdev/tools/json/formats.py) non-streaming input formats.
|
|
32
|
+
|
|
33
|
+
- **[tools.git](https://github.com/wrmsr/om/blob/master/omdev/tools/git)** (cli: `om git`) - a tool for various lazy git
|
|
34
|
+
operations, including the one that (poorly) writes all of these commit messages.
|
|
35
|
+
|
|
36
|
+
# Amalgamation
|
|
37
|
+
|
|
38
|
+
Amalgamation is the process of stitching together multiple python source files into a single self-contained python
|
|
39
|
+
script. ['lite'](https://github.com/wrmsr/om/blob/master/omcore#lite-code) code is written in a style conducive to this.
|
|
40
|
+
|
|
41
|
+
# Local storage
|
|
42
|
+
|
|
43
|
+
Some of this code, when asked, will store things on the local filesystem. The only directories used (outside of ones
|
|
44
|
+
explicitly specified as command or function arguments) are managed in
|
|
45
|
+
[home.paths](https://github.com/wrmsr/om/blob/master/omdev/home/paths.py), and are the following:
|
|
46
|
+
|
|
47
|
+
- `$OM_HOME`, default of `~/.om` - persistent things like config and state.
|
|
48
|
+
- `$OM_CACHE`, default of `~/.cache/om` - used for things like the local ci cache and [various
|
|
49
|
+
other](https://github.com/search?q=repo%3Awrmsr%2Fom+%22dcache.%22&type=code) cached data.
|
|
@@ -8,12 +8,12 @@ Inputs:
|
|
|
8
8
|
|
|
9
9
|
==
|
|
10
10
|
|
|
11
|
-
run --cache-dir omdev/ci/tests/cache -e CI=1 omdev/ci/tests/project
|
|
11
|
+
run --cache-dir omdev/ci/tests/cache -e CI=1 omdev/ci/tests/project om-ci pytest tests
|
|
12
12
|
|
|
13
|
-
run --cache-dir omdev/ci/tests/cache --cache-served-docker --always-build -e CI=1 omdev/ci/tests/project
|
|
14
|
-
run --cache-dir omdev/ci/tests/cache --cache-served-docker --always-build --always-pull -e CI=1 omdev/ci/tests/project
|
|
13
|
+
run --cache-dir omdev/ci/tests/cache --cache-served-docker --always-build -e CI=1 omdev/ci/tests/project om-ci pytest tests
|
|
14
|
+
run --cache-dir omdev/ci/tests/cache --cache-served-docker --always-build --always-pull -e CI=1 omdev/ci/tests/project om-ci pytest tests
|
|
15
15
|
|
|
16
|
-
run --cache-dir ~/.cache/
|
|
16
|
+
run --cache-dir ~/.cache/om/ci . om-ci bash
|
|
17
17
|
""" # noqa
|
|
18
18
|
import argparse
|
|
19
19
|
import asyncio
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# ruff: noqa: UP045
|
|
3
3
|
# @om-lite
|
|
4
4
|
# @om-script
|
|
5
|
-
"""curl -LsSf 'https://raw.githubusercontent.com/wrmsr/
|
|
5
|
+
"""curl -LsSf 'https://raw.githubusercontent.com/wrmsr/om/master/omdev/cli/install.py' | python3 -"""
|
|
6
6
|
import abc
|
|
7
7
|
import argparse
|
|
8
8
|
import dataclasses as dc
|
|
@@ -42,10 +42,10 @@ def __om_amalg__(): # noqa
|
|
|
42
42
|
dict(path='../../omcore/lite/check.py', sha1='62b9ccea94c4f7bcef97e7adae8674b8cb11d4af'),
|
|
43
43
|
dict(path='../../omcore/lite/io.py', sha1='a60d94f0bdbb2b1541d363c301314682d1686240'),
|
|
44
44
|
dict(path='../../omcore/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
|
|
45
|
-
dict(path='../../omcore/lite/reflect.py', sha1='
|
|
46
|
-
dict(path='../../omcore/lite/strings.py', sha1='
|
|
45
|
+
dict(path='../../omcore/lite/reflect.py', sha1='fab4ef6f45f278ce7bffcd811cd170b40db107a8'),
|
|
46
|
+
dict(path='../../omcore/lite/strings.py', sha1='b31b8e4b0e4fec4562ea3fa602e4ef2475e5fe7c'),
|
|
47
47
|
dict(path='../../omcore/lite/json.py', sha1='01124e62093ebd4078602f16df0ec04cb724a612'),
|
|
48
|
-
dict(path='../../omcore/lite/marshal.py', sha1='
|
|
48
|
+
dict(path='../../omcore/lite/marshal.py', sha1='9b3f4ff802344313147f412f8f028922afc52b2f'),
|
|
49
49
|
dict(path='dumping.py', sha1='f385a4502d279cf76e4a2bd69efac82881117e57'),
|
|
50
50
|
],
|
|
51
51
|
)
|
|
@@ -911,7 +911,8 @@ def is_generic_alias(obj: ta.Any, *, origin: ta.Any = None) -> bool:
|
|
|
911
911
|
)
|
|
912
912
|
|
|
913
913
|
|
|
914
|
-
|
|
914
|
+
# ta.get_origin returns the collections.abc class, never the typing alias.
|
|
915
|
+
is_callable_alias = functools.partial(is_generic_alias, origin=ta.get_origin(ta.Callable[..., ta.Any]))
|
|
915
916
|
|
|
916
917
|
|
|
917
918
|
##
|
|
@@ -1015,10 +1016,10 @@ def is_dunder(name: str) -> bool:
|
|
|
1015
1016
|
|
|
1016
1017
|
def is_sunder(name: str) -> bool:
|
|
1017
1018
|
return (
|
|
1019
|
+
len(name) > 2 and
|
|
1018
1020
|
name[0] == name[-1] == '_' and
|
|
1019
1021
|
name[1:2] != '_' and
|
|
1020
|
-
name[-2:-1] != '_'
|
|
1021
|
-
len(name) > 2
|
|
1022
|
+
name[-2:-1] != '_'
|
|
1022
1023
|
)
|
|
1023
1024
|
|
|
1024
1025
|
|
|
@@ -1032,22 +1033,25 @@ def strip_with_newline(s: str) -> str:
|
|
|
1032
1033
|
|
|
1033
1034
|
|
|
1034
1035
|
@ta.overload
|
|
1035
|
-
def split_keep_delimiter(s: str, d: str) -> str: ...
|
|
1036
|
+
def split_keep_delimiter(s: str, d: str) -> ta.List[str]: ...
|
|
1036
1037
|
|
|
1037
1038
|
|
|
1038
1039
|
@ta.overload
|
|
1039
|
-
def split_keep_delimiter(s: bytes, d: bytes) -> bytes: ...
|
|
1040
|
+
def split_keep_delimiter(s: bytes, d: bytes) -> ta.List[bytes]: ...
|
|
1040
1041
|
|
|
1041
1042
|
|
|
1042
1043
|
def split_keep_delimiter(s, d):
|
|
1044
|
+
if not d:
|
|
1045
|
+
raise ValueError(d)
|
|
1046
|
+
dl = len(d)
|
|
1043
1047
|
ps = []
|
|
1044
1048
|
i = 0
|
|
1045
1049
|
while i < len(s):
|
|
1046
1050
|
if (n := s.find(d, i)) < i:
|
|
1047
1051
|
ps.append(s[i:])
|
|
1048
1052
|
break
|
|
1049
|
-
ps.append(s[i:n +
|
|
1050
|
-
i = n +
|
|
1053
|
+
ps.append(s[i:n + dl])
|
|
1054
|
+
i = n + dl
|
|
1051
1055
|
return ps
|
|
1052
1056
|
|
|
1053
1057
|
|
|
@@ -1312,12 +1316,27 @@ class PrimitiveUnionObjMarshaler(ObjMarshaler):
|
|
|
1312
1316
|
raise TypeError(o)
|
|
1313
1317
|
|
|
1314
1318
|
def unmarshal(self, o: ta.Any, ctx: 'ObjMarshalContext') -> ta.Any:
|
|
1319
|
+
if self._x is not None:
|
|
1320
|
+
# The non-primitive member must be tried first - its marshaled form may itself be one of the union's
|
|
1321
|
+
# primitive types (e.g. Union[str, Decimal] wires Decimal as a str), which primitive-first dispatch would
|
|
1322
|
+
# shadow entirely. Such wire values are inherently ambiguous - the non-primitive parse is accepted only
|
|
1323
|
+
# when it faithfully round-trips back to the wire value, so lenient member unmarshalers (e.g. a Sequence
|
|
1324
|
+
# member iterating a str) don't capture values belonging to a primitive member.
|
|
1325
|
+
try:
|
|
1326
|
+
v = self._x.unmarshal(o, ctx)
|
|
1327
|
+
except Exception: # noqa
|
|
1328
|
+
pass
|
|
1329
|
+
else:
|
|
1330
|
+
if not isinstance(o, self._pt):
|
|
1331
|
+
return v
|
|
1332
|
+
try:
|
|
1333
|
+
if self._x.marshal(v, ctx) == o:
|
|
1334
|
+
return v
|
|
1335
|
+
except Exception: # noqa
|
|
1336
|
+
pass
|
|
1315
1337
|
if isinstance(o, self._pt):
|
|
1316
1338
|
return o
|
|
1317
|
-
|
|
1318
|
-
return self._x.unmarshal(o, ctx)
|
|
1319
|
-
else:
|
|
1320
|
-
raise TypeError(o)
|
|
1339
|
+
raise TypeError(o)
|
|
1321
1340
|
|
|
1322
1341
|
|
|
1323
1342
|
class LiteralObjMarshaler(ObjMarshaler):
|
|
@@ -1704,7 +1723,7 @@ class ObjMarshalerManagerImpl(ObjMarshalerManager):
|
|
|
1704
1723
|
self._registered_obj_marshalers = registered_obj_marshalers
|
|
1705
1724
|
|
|
1706
1725
|
self._lock = threading.RLock()
|
|
1707
|
-
self.
|
|
1726
|
+
self._derived_obj_marshalers: ta.Dict[ta.Any, ObjMarshaler] = {}
|
|
1708
1727
|
self._proxies: ta.Dict[ta.Any, ProxyObjMarshaler] = {}
|
|
1709
1728
|
|
|
1710
1729
|
#
|
|
@@ -1713,6 +1732,20 @@ class ObjMarshalerManagerImpl(ObjMarshalerManager):
|
|
|
1713
1732
|
def _is_abstract(cls, ty: type) -> bool:
|
|
1714
1733
|
return abc.ABC in ty.__bases__ or Abstract in ty.__bases__
|
|
1715
1734
|
|
|
1735
|
+
@classmethod
|
|
1736
|
+
def _get_field_type_hints(cls, ty: type) -> ta.Optional[ta.Mapping[str, ta.Any]]:
|
|
1737
|
+
"""
|
|
1738
|
+
Best-effort resolution of string / forward-ref field annotations (`from __future__ import annotations` modules,
|
|
1739
|
+
self-referential fields) against their defining modules' namespaces, mro-aware. Returns None on failure (e.g.
|
|
1740
|
+
TYPE_CHECKING-only names, classes exec'd into namespaces absent from sys.modules) - callers fall back to the
|
|
1741
|
+
raw annotations, preserving behavior for already-evaluated ones.
|
|
1742
|
+
"""
|
|
1743
|
+
|
|
1744
|
+
try:
|
|
1745
|
+
return ta.get_type_hints(ty)
|
|
1746
|
+
except Exception: # noqa
|
|
1747
|
+
return None
|
|
1748
|
+
|
|
1716
1749
|
#
|
|
1717
1750
|
|
|
1718
1751
|
def make_obj_marshaler(
|
|
@@ -1761,29 +1794,38 @@ class ObjMarshalerManagerImpl(ObjMarshalerManager):
|
|
|
1761
1794
|
return EnumObjMarshaler(ty)
|
|
1762
1795
|
|
|
1763
1796
|
if dc.is_dataclass(ty):
|
|
1797
|
+
hints = self._get_field_type_hints(ty) or {}
|
|
1764
1798
|
return FieldsObjMarshaler(
|
|
1765
1799
|
ty,
|
|
1766
1800
|
[
|
|
1767
1801
|
FieldsObjMarshaler.Field(
|
|
1768
1802
|
att=f.name,
|
|
1769
1803
|
key=check.non_empty_str(fk),
|
|
1770
|
-
m=rec(f.type),
|
|
1804
|
+
m=rec(hints.get(f.name, f.type)),
|
|
1771
1805
|
omit_if_none=check.isinstance(f.metadata.get(OBJ_MARSHALER_OMIT_IF_NONE, False), bool),
|
|
1772
1806
|
)
|
|
1773
1807
|
for f in dc.fields(ty)
|
|
1808
|
+
# init=False fields are excluded from both directions - unmarshal passes every key as a ctor
|
|
1809
|
+
# kwarg, so marshaling them would produce round-trip-asymmetric output.
|
|
1810
|
+
if f.init
|
|
1774
1811
|
if (fk := f.metadata.get(OBJ_MARSHALER_FIELD_KEY, f.name)) is not None
|
|
1775
1812
|
],
|
|
1776
1813
|
non_strict=non_strict_fields,
|
|
1777
1814
|
)
|
|
1778
1815
|
|
|
1779
1816
|
if issubclass(ty, tuple) and hasattr(ty, '_fields'):
|
|
1817
|
+
hints = self._get_field_type_hints(ty) or {}
|
|
1780
1818
|
return FieldsObjMarshaler(
|
|
1781
1819
|
ty,
|
|
1782
1820
|
[
|
|
1783
1821
|
FieldsObjMarshaler.Field(
|
|
1784
1822
|
att=p.name,
|
|
1785
1823
|
key=p.name,
|
|
1786
|
-
|
|
1824
|
+
# Untyped collections.namedtuple fields have empty annotations - marshal them dynamically.
|
|
1825
|
+
m=rec(hints.get(
|
|
1826
|
+
p.name,
|
|
1827
|
+
p.annotation if p.annotation is not inspect.Parameter.empty else ta.Any,
|
|
1828
|
+
)),
|
|
1787
1829
|
)
|
|
1788
1830
|
for p in inspect.signature(ty).parameters.values()
|
|
1789
1831
|
],
|
|
@@ -1874,12 +1916,21 @@ class ObjMarshalerManagerImpl(ObjMarshalerManager):
|
|
|
1874
1916
|
**kwargs: ta.Any,
|
|
1875
1917
|
) -> ObjMarshaler:
|
|
1876
1918
|
with self._lock:
|
|
1919
|
+
ck = (ty, tuple(sorted(kwargs.items())))
|
|
1877
1920
|
if not no_cache:
|
|
1921
|
+
# Explicitly set marshalers (and the defaults) are authoritative regardless of construction kwargs.
|
|
1878
1922
|
try:
|
|
1879
1923
|
return self._obj_marshalers[ty]
|
|
1880
1924
|
except KeyError:
|
|
1881
1925
|
pass
|
|
1882
1926
|
|
|
1927
|
+
# Derived marshalers are cached under their construction kwargs - a strict marshaler must not be
|
|
1928
|
+
# returned for a non-strict request, nor vice versa.
|
|
1929
|
+
try:
|
|
1930
|
+
return self._derived_obj_marshalers[ck]
|
|
1931
|
+
except KeyError:
|
|
1932
|
+
pass
|
|
1933
|
+
|
|
1883
1934
|
try:
|
|
1884
1935
|
return self._proxies[ty]
|
|
1885
1936
|
except KeyError:
|
|
@@ -1900,7 +1951,7 @@ class ObjMarshalerManagerImpl(ObjMarshalerManager):
|
|
|
1900
1951
|
p._m = m # noqa
|
|
1901
1952
|
|
|
1902
1953
|
if not no_cache:
|
|
1903
|
-
self.
|
|
1954
|
+
self._derived_obj_marshalers[ck] = m
|
|
1904
1955
|
return m
|
|
1905
1956
|
|
|
1906
1957
|
def make_context(self, opts: ta.Optional[ObjMarshalOptions]) -> 'ObjMarshalContext':
|
|
@@ -245,11 +245,6 @@ class DataclassCodeGen:
|
|
|
245
245
|
if not _is_generated_py_file(gen_file_path):
|
|
246
246
|
raise RuntimeError(f'Refusing to overwrite non-generated file: {gen_file_path!r}')
|
|
247
247
|
|
|
248
|
-
if not output.dumped:
|
|
249
|
-
if not self._dry_run:
|
|
250
|
-
os.unlink(gen_file_path)
|
|
251
|
-
return
|
|
252
|
-
|
|
253
248
|
#
|
|
254
249
|
|
|
255
250
|
lines = [
|
|
@@ -8,7 +8,7 @@ TODO:
|
|
|
8
8
|
- can fast-build new (temp) image w preamble (probably slow and garbagey)
|
|
9
9
|
- launch / manage compose services
|
|
10
10
|
- more cache dirs
|
|
11
|
-
- --mount=type=bind,src="$(pwd)",dst=/
|
|
11
|
+
- --mount=type=bind,src="$(pwd)",dst=/om/pwd
|
|
12
12
|
- build --no-cache / cache bust
|
|
13
13
|
- build args
|
|
14
14
|
- `run --pull=never`, `build --pull=false`
|
|
@@ -22,7 +22,7 @@ if [ -t 1 ] ; then TTY_ENV_ARGS="-e LINES=$(tput lines) -e COLUMNS=$(tput cols)"
|
|
|
22
22
|
|
|
23
23
|
====
|
|
24
24
|
|
|
25
|
-
tag = f'
|
|
25
|
+
tag = f'om-dockerdev--{time.time_ns()}--{os.getpid()}'
|
|
26
26
|
subprocess.check_call(['docker', 'tag', obi, tag])
|
|
27
27
|
try:
|
|
28
28
|
cfg = dc.replace(cfg, base_image=tag) # noqa
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
base_image = 'ubuntu:24.04'
|
|
2
2
|
|
|
3
|
-
user = '
|
|
3
|
+
user = 'om'
|
|
4
4
|
|
|
5
5
|
dep_sets = [
|
|
6
6
|
'system',
|
|
@@ -27,9 +27,16 @@ rbenv_versions = [
|
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
uv_python_versions = [
|
|
30
|
+
'3.8',
|
|
31
|
+
'3.9',
|
|
32
|
+
'3.10',
|
|
33
|
+
'3.11',
|
|
34
|
+
'3.12',
|
|
30
35
|
'3.13',
|
|
31
36
|
'3.14',
|
|
32
37
|
'3.14+freethreaded',
|
|
38
|
+
'3.15',
|
|
39
|
+
'3.15+freethreaded',
|
|
33
40
|
]
|
|
34
41
|
|
|
35
42
|
pyenv_version_keys = [
|
|
@@ -44,5 +51,5 @@ pyenv_version_keys = [
|
|
|
44
51
|
workdir = '/work'
|
|
45
52
|
|
|
46
53
|
[cache_mounts]
|
|
47
|
-
'pip' = '/
|
|
48
|
-
'uv' = '/
|
|
54
|
+
'pip' = '/om/.cache/pip'
|
|
55
|
+
'uv' = '/om/.cache/uv'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"8": "3.8.20",
|
|
3
3
|
"9": "3.9.25",
|
|
4
|
-
"10": "3.10.
|
|
5
|
-
"11": "3.11.
|
|
6
|
-
"12": "3.12.
|
|
4
|
+
"10": "3.10.20",
|
|
5
|
+
"11": "3.11.15",
|
|
6
|
+
"12": "3.12.13",
|
|
7
7
|
"13": "3.13.14",
|
|
8
8
|
"13d": "3.13.14d",
|
|
9
9
|
"13t": "3.13.14t",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"14d": "3.14.6d",
|
|
13
13
|
"14t": "3.14.6t",
|
|
14
14
|
"14dt": "3.14.6dt",
|
|
15
|
-
"15": "3.15.
|
|
16
|
-
"15d": "3.15.
|
|
17
|
-
"15t": "3.15.
|
|
18
|
-
"15dt": "3.15.
|
|
15
|
+
"15": "3.15.0b4",
|
|
16
|
+
"15d": "3.15.0b4d",
|
|
17
|
+
"15t": "3.15.0b4t",
|
|
18
|
+
"15dt": "3.15.0b4dt"
|
|
19
19
|
}
|
|
@@ -3,18 +3,23 @@ deps = [
|
|
|
3
3
|
'gdb',
|
|
4
4
|
'lcov',
|
|
5
5
|
'libbz2-dev',
|
|
6
|
+
'libexpat1-dev',
|
|
6
7
|
'libffi-dev',
|
|
7
8
|
'libgdbm-compat-dev',
|
|
8
9
|
'libgdbm-dev',
|
|
9
10
|
'liblzma-dev',
|
|
10
11
|
'libncurses5-dev',
|
|
12
|
+
'libnsl-dev',
|
|
13
|
+
'libreadline-dev',
|
|
11
14
|
'libreadline6-dev',
|
|
12
15
|
'libsqlite3-dev',
|
|
13
16
|
'libssl-dev',
|
|
17
|
+
'libzstd-dev',
|
|
14
18
|
'lzma',
|
|
15
19
|
'lzma-dev',
|
|
16
20
|
'pkg-config',
|
|
17
21
|
'tk-dev',
|
|
18
22
|
'uuid-dev',
|
|
23
|
+
'xz-utils',
|
|
19
24
|
'zlib1g-dev',
|
|
20
25
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sudo apt install gnupg ca-certificates curl ;
|
|
1
|
+
sudo apt install -y gnupg ca-certificates curl ;
|
|
2
2
|
curl -s 'https://repos.azul.com/azul-repo.key' | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg ;
|
|
3
3
|
echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list ;
|
|
4
4
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
--user=0:0 \
|
|
6
6
|
--env=EXTERNAL_UID=1000 \
|
|
7
7
|
--env=EXTERNAL_GID=1000 \
|
|
8
|
-
--env=INTERNAL_USER=
|
|
8
|
+
--env=INTERNAL_USER=om \
|
|
9
9
|
--rm -it bash
|
|
10
10
|
|
|
11
11
|
====
|
|
@@ -40,7 +40,7 @@ unset INTERNAL_USER
|
|
|
40
40
|
unset INTERNAL_UID
|
|
41
41
|
unset INTERNAL_HOME
|
|
42
42
|
|
|
43
|
-
exec gosu
|
|
43
|
+
exec gosu om bash # "$@"
|
|
44
44
|
"""
|
|
45
45
|
import os.path
|
|
46
46
|
import platform
|
|
@@ -96,7 +96,7 @@ class RunArgs:
|
|
|
96
96
|
extra_args: ta.Sequence[str] | None = None
|
|
97
97
|
|
|
98
98
|
|
|
99
|
-
LABEL_PREFIX = '
|
|
99
|
+
LABEL_PREFIX = 'om.dockerdev'
|
|
100
100
|
|
|
101
101
|
|
|
102
102
|
@dc.dataclass(frozen=True)
|
|
@@ -14,8 +14,8 @@ from omcore.os.environ import EnvVar
|
|
|
14
14
|
##
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
HOME_DIR_ENV_VAR = EnvVar('
|
|
18
|
-
DEFAULT_HOME_DIR = '~/.
|
|
17
|
+
HOME_DIR_ENV_VAR = EnvVar('OM_HOME')
|
|
18
|
+
DEFAULT_HOME_DIR = '~/.om'
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def get_home_dir() -> str:
|
|
@@ -99,8 +99,8 @@ def get_home_paths() -> HomePaths:
|
|
|
99
99
|
##
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
CACHE_DIR_ENV_VAR = EnvVar('
|
|
103
|
-
DEFAULT_CACHE_DIR = '~/.cache/
|
|
102
|
+
CACHE_DIR_ENV_VAR = EnvVar('OM_CACHE')
|
|
103
|
+
DEFAULT_CACHE_DIR = '~/.cache/om'
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
def get_cache_dir() -> str:
|