omdev 0.0.0.dev193__tar.gz → 0.0.0.dev195__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {omdev-0.0.0.dev193/omdev.egg-info → omdev-0.0.0.dev195}/PKG-INFO +2 -2
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/.manifests.json +1 -1
- omdev-0.0.0.dev193/omdev/pyproject/resources/docker-dev.bash → omdev-0.0.0.dev195/omdev/pyproject/resources/docker-dev.sh +4 -4
- omdev-0.0.0.dev193/omdev/pyproject/resources/python.bash → omdev-0.0.0.dev195/omdev/pyproject/resources/python.sh +4 -3
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/pyproject.py +8 -0
- omdev-0.0.0.dev195/omdev/tagstrings.py +206 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/cloc.py +5 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev.egg-info/SOURCES.txt +3 -2
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/pyproject.toml +3 -3
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/LICENSE +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/README.rst +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/git/subtrees.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pycharm/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pycharm/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pycharm/cli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tokens.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/git.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev193 → omdev-0.0.0.dev195}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev195
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
|
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
13
|
Requires-Python: >=3.12
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev195
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/bin/
|
|
1
|
+
#!/bin/sh
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
4
|
if [ -t 1 ] ; then
|
|
@@ -9,7 +9,7 @@ fi
|
|
|
9
9
|
|
|
10
10
|
SERVICE_NAME="@PROJECT-dev"
|
|
11
11
|
if ! [ $# -eq 0 ] ; then
|
|
12
|
-
if [ "$1"
|
|
12
|
+
if [ "$1" = "--amd64" ] ; then
|
|
13
13
|
SERVICE_NAME="$SERVICE_NAME-amd64"
|
|
14
14
|
shift
|
|
15
15
|
fi
|
|
@@ -22,9 +22,9 @@ if [ -z "$CONTAINER_ID" ] ; then
|
|
|
22
22
|
fi
|
|
23
23
|
|
|
24
24
|
if [ -z "$DOCKER_HOST_PLATFORM" ] ; then
|
|
25
|
-
if [ $(uname)
|
|
25
|
+
if [ $(uname) = "Linux" ] ; then
|
|
26
26
|
DOCKER_HOST_PLATFORM=linux
|
|
27
|
-
elif [ $(uname)
|
|
27
|
+
elif [ $(uname) = "Darwin" ] ; then
|
|
28
28
|
DOCKER_HOST_PLATFORM=darwin
|
|
29
29
|
fi
|
|
30
30
|
fi
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
#!/bin/
|
|
1
|
+
#!/bin/sh
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
4
|
if [ -z "${VENV}" ] ; then
|
|
5
|
-
if [ $(uname)
|
|
5
|
+
if [ $(uname) = "Linux" ] && (cat /proc/mounts | grep -E '^overlay / .*/(docker|desktop-containerd)/' > /dev/null) ; then
|
|
6
6
|
VENV=docker
|
|
7
7
|
else
|
|
8
8
|
VENV=default
|
|
9
9
|
fi
|
|
10
10
|
fi
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
SCRIPT_DIR=$(dirname "$0")
|
|
13
|
+
VENV_PYTHON_PATH="$SCRIPT_DIR/.venvs/$VENV/bin/python"
|
|
13
14
|
if [ -f "$VENV_PYTHON_PATH" ] ; then
|
|
14
15
|
PYTHON="$VENV_PYTHON_PATH"
|
|
15
16
|
elif command -v python3 &> /dev/null ; then
|
|
@@ -1803,6 +1803,14 @@ class TomlWriter:
|
|
|
1803
1803
|
else:
|
|
1804
1804
|
raise TypeError(obj)
|
|
1805
1805
|
|
|
1806
|
+
#
|
|
1807
|
+
|
|
1808
|
+
@classmethod
|
|
1809
|
+
def write_str(cls, obj: ta.Any) -> str:
|
|
1810
|
+
out = io.StringIO()
|
|
1811
|
+
cls(out).write_value(obj)
|
|
1812
|
+
return out.getvalue()
|
|
1813
|
+
|
|
1806
1814
|
|
|
1807
1815
|
########################################
|
|
1808
1816
|
# ../../../omlish/lite/cached.py
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
|
2
|
+
# @omlish-lite
|
|
3
|
+
import dataclasses as dc
|
|
4
|
+
import typing as ta
|
|
5
|
+
|
|
6
|
+
from omlish.lite.check import check
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
HierarchyTagStringValue = ta.Tuple[str, ...] # ta.TypeAlias
|
|
10
|
+
TagStringValue = ta.Union[bool, str, HierarchyTagStringValue] # ta.TypeAlias
|
|
11
|
+
TagStringValueT = ta.TypeVar('TagStringValueT', bound=TagStringValue)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
TAG_STRING_VALUE_TYPES: ta.Tuple = (
|
|
18
|
+
bool,
|
|
19
|
+
str,
|
|
20
|
+
HierarchyTagStringValue,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
TAG_STRING_BOOL_STR_MAP: ta.Mapping[str, bool] = {'true': True, 'false': False}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def check_tag_string_string(s: str) -> str:
|
|
28
|
+
check.non_empty_str(s)
|
|
29
|
+
check.equal(s.lower().strip(), s)
|
|
30
|
+
check.not_in(':', s)
|
|
31
|
+
return s
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def build_hierarchy_tag_string_values(m: ta.Mapping[str, ta.Any]) -> ta.FrozenSet[HierarchyTagStringValue]:
|
|
35
|
+
def rec(c):
|
|
36
|
+
if isinstance(c, str):
|
|
37
|
+
yield (c,)
|
|
38
|
+
elif isinstance(c, ta.Mapping):
|
|
39
|
+
for k, v in c.items():
|
|
40
|
+
yield (k,)
|
|
41
|
+
for n in rec(v):
|
|
42
|
+
yield (k, *n)
|
|
43
|
+
else:
|
|
44
|
+
raise TypeError(c)
|
|
45
|
+
|
|
46
|
+
return frozenset(rec(m))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@dc.dataclass(frozen=True)
|
|
53
|
+
class TagString(ta.Generic[TagStringValueT]):
|
|
54
|
+
name: str
|
|
55
|
+
type: ta.Type[TagStringValueT]
|
|
56
|
+
|
|
57
|
+
valid_values: ta.Optional[ta.FrozenSet[TagStringValueT]] = None
|
|
58
|
+
set: bool = False
|
|
59
|
+
|
|
60
|
+
def __post_init__(self) -> None:
|
|
61
|
+
check_tag_string_string(self.name)
|
|
62
|
+
|
|
63
|
+
check.in_(self.type, TAG_STRING_VALUE_TYPES)
|
|
64
|
+
|
|
65
|
+
if self.valid_values is not None:
|
|
66
|
+
check.isinstance(self.valid_values, frozenset)
|
|
67
|
+
|
|
68
|
+
v: ta.Any
|
|
69
|
+
if self.type is bool:
|
|
70
|
+
for v in self.valid_values:
|
|
71
|
+
check.isinstance(v, bool)
|
|
72
|
+
|
|
73
|
+
elif self.type is str:
|
|
74
|
+
for v in self.valid_values:
|
|
75
|
+
check_tag_string_string(v)
|
|
76
|
+
|
|
77
|
+
elif self.type is HierarchyTagStringValue:
|
|
78
|
+
for v in self.valid_values:
|
|
79
|
+
check.isinstance(v, tuple)
|
|
80
|
+
for c in v:
|
|
81
|
+
check_tag_string_string(c)
|
|
82
|
+
for i in range(1, len(v)):
|
|
83
|
+
p = v[:-i]
|
|
84
|
+
check.in_(p, self.valid_values)
|
|
85
|
+
|
|
86
|
+
else:
|
|
87
|
+
raise TypeError(self.type)
|
|
88
|
+
|
|
89
|
+
#
|
|
90
|
+
|
|
91
|
+
@classmethod
|
|
92
|
+
def new_bool(
|
|
93
|
+
cls,
|
|
94
|
+
name: str,
|
|
95
|
+
valid_values: ta.Optional[ta.Iterable[bool]] = None,
|
|
96
|
+
**kwargs: ta.Any,
|
|
97
|
+
) -> 'TagString':
|
|
98
|
+
return cls(
|
|
99
|
+
name=name,
|
|
100
|
+
type=bool, # type: ignore
|
|
101
|
+
valid_values=frozenset(valid_values) if valid_values is not None else None, # type: ignore
|
|
102
|
+
**kwargs,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
@classmethod
|
|
106
|
+
def new_str(
|
|
107
|
+
cls,
|
|
108
|
+
name: str,
|
|
109
|
+
valid_values: ta.Optional[ta.Iterable[str]] = None,
|
|
110
|
+
**kwargs: ta.Any,
|
|
111
|
+
) -> 'TagString':
|
|
112
|
+
return cls(
|
|
113
|
+
name=name,
|
|
114
|
+
type=str, # type: ignore
|
|
115
|
+
valid_values=frozenset(check.not_isinstance(valid_values, str)) if valid_values is not None else None, # type: ignore # noqa
|
|
116
|
+
**kwargs,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def new_hierarchy(
|
|
121
|
+
cls,
|
|
122
|
+
name: str,
|
|
123
|
+
valid_values: ta.Optional[ta.Mapping[str, ta.Any]] = None,
|
|
124
|
+
**kwargs: ta.Any,
|
|
125
|
+
) -> 'TagString':
|
|
126
|
+
return cls(
|
|
127
|
+
name=name,
|
|
128
|
+
type=HierarchyTagStringValue, # type: ignore
|
|
129
|
+
valid_values=build_hierarchy_tag_string_values(valid_values) if valid_values is not None else None, # type: ignore # noqa
|
|
130
|
+
**kwargs,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@dc.dataclass(frozen=True)
|
|
135
|
+
class TagStringSet:
|
|
136
|
+
dct: ta.Mapping[str, ta.FrozenSet[TagStringValue]]
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
##
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class TagStringCatalog:
|
|
143
|
+
def __init__(self, tags: ta.Iterable[TagString]) -> None:
|
|
144
|
+
super().__init__()
|
|
145
|
+
|
|
146
|
+
dct: ta.Dict[str, TagString] = {}
|
|
147
|
+
for t in tags:
|
|
148
|
+
check.not_in(t.name, dct)
|
|
149
|
+
dct[t.name] = t
|
|
150
|
+
self._by_name = dct
|
|
151
|
+
|
|
152
|
+
class Parsed(ta.NamedTuple):
|
|
153
|
+
tag: TagString
|
|
154
|
+
values: ta.FrozenSet[TagStringValue]
|
|
155
|
+
|
|
156
|
+
def parse_one(self, s: str) -> Parsed:
|
|
157
|
+
name, *rest = check.non_empty_str(s).split(':')
|
|
158
|
+
|
|
159
|
+
tag = self._by_name[name]
|
|
160
|
+
|
|
161
|
+
#
|
|
162
|
+
|
|
163
|
+
v: TagStringValue
|
|
164
|
+
if tag.type is bool:
|
|
165
|
+
bs = check.single(rest)
|
|
166
|
+
v = TAG_STRING_BOOL_STR_MAP[bs]
|
|
167
|
+
|
|
168
|
+
elif tag.type is str:
|
|
169
|
+
v = check.single(rest)
|
|
170
|
+
|
|
171
|
+
elif tag.type is HierarchyTagStringValue:
|
|
172
|
+
v = tuple(rest)
|
|
173
|
+
|
|
174
|
+
else:
|
|
175
|
+
raise TypeError(tag.type)
|
|
176
|
+
|
|
177
|
+
#
|
|
178
|
+
|
|
179
|
+
if tag.valid_values is not None:
|
|
180
|
+
check.in_(v, tag.valid_values)
|
|
181
|
+
|
|
182
|
+
#
|
|
183
|
+
|
|
184
|
+
vs: ta.FrozenSet[TagStringValue]
|
|
185
|
+
if tag.type is HierarchyTagStringValue:
|
|
186
|
+
vt = check.isinstance(v, tuple)
|
|
187
|
+
vs = frozenset(vt[:i + 1] for i in range(len(vt)))
|
|
188
|
+
else:
|
|
189
|
+
vs = frozenset([v])
|
|
190
|
+
|
|
191
|
+
#
|
|
192
|
+
|
|
193
|
+
return TagStringCatalog.Parsed(tag, vs)
|
|
194
|
+
|
|
195
|
+
def parse_set(self, *strs: str) -> TagStringSet:
|
|
196
|
+
dct: ta.Dict[str, ta.Set[TagStringValue]] = {}
|
|
197
|
+
|
|
198
|
+
for s in strs:
|
|
199
|
+
p = self.parse_one(s)
|
|
200
|
+
|
|
201
|
+
if not p.tag.set:
|
|
202
|
+
check.not_in(p.tag.name, dct)
|
|
203
|
+
|
|
204
|
+
dct.setdefault(p.tag.name, set()).update(p.values)
|
|
205
|
+
|
|
206
|
+
return TagStringSet({k: frozenset(v) for k, v in dct.items()})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev195
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
|
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
13
|
Requires-Python: >=3.12
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: omlish==0.0.0.
|
|
15
|
+
Requires-Dist: omlish==0.0.0.dev195
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
|
@@ -13,6 +13,7 @@ omdev/imgur.py
|
|
|
13
13
|
omdev/pip.py
|
|
14
14
|
omdev/revisions.py
|
|
15
15
|
omdev/secrets.py
|
|
16
|
+
omdev/tagstrings.py
|
|
16
17
|
omdev/tokens.py
|
|
17
18
|
omdev/wheelfile.py
|
|
18
19
|
omdev.egg-info/PKG-INFO
|
|
@@ -157,8 +158,8 @@ omdev/pyproject/pkg.py
|
|
|
157
158
|
omdev/pyproject/reqs.py
|
|
158
159
|
omdev/pyproject/venvs.py
|
|
159
160
|
omdev/pyproject/resources/__init__.py
|
|
160
|
-
omdev/pyproject/resources/docker-dev.
|
|
161
|
-
omdev/pyproject/resources/python.
|
|
161
|
+
omdev/pyproject/resources/docker-dev.sh
|
|
162
|
+
omdev/pyproject/resources/python.sh
|
|
162
163
|
omdev/scripts/__init__.py
|
|
163
164
|
omdev/scripts/bumpversion.py
|
|
164
165
|
omdev/scripts/execrss.py
|
|
@@ -12,7 +12,7 @@ authors = [
|
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
13
13
|
license = {text = 'BSD-3-Clause'}
|
|
14
14
|
requires-python = '>=3.12'
|
|
15
|
-
version = '0.0.0.
|
|
15
|
+
version = '0.0.0.dev195'
|
|
16
16
|
classifiers = [
|
|
17
17
|
'License :: OSI Approved :: BSD License',
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
@@ -22,7 +22,7 @@ classifiers = [
|
|
|
22
22
|
]
|
|
23
23
|
description = 'omdev'
|
|
24
24
|
dependencies = [
|
|
25
|
-
'omlish == 0.0.0.
|
|
25
|
+
'omlish == 0.0.0.dev195',
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
@@ -96,5 +96,5 @@ exclude = [
|
|
|
96
96
|
'.manifests.json',
|
|
97
97
|
'LICENSE',
|
|
98
98
|
'LICENSE.txt',
|
|
99
|
-
'pyproject/resources/*.
|
|
99
|
+
'pyproject/resources/*.sh',
|
|
100
100
|
]
|
|
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
|
|
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
|
|
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
|
|
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
|