omdev 0.0.19__tar.gz → 0.0.20__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.19/omdev.egg-info → omdev-0.0.20}/PKG-INFO +8 -8
- {omdev-0.0.19 → omdev-0.0.20}/omdev/__about__.py +1 -1
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/cacheserved/cache.py +6 -6
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/dataserver.py +1 -1
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/packing.py +3 -3
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/repositories.py +2 -2
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/_dumping.py +112 -37
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/handlers.py +9 -8
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/http.py +4 -4
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/server.py +2 -2
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/depsets/system.toml +17 -2
- {omdev-0.0.19 → omdev-0.0.20}/omdev/git/status.py +21 -12
- {omdev-0.0.19 → omdev-0.0.20}/omdev/manifests/_dumping.py +8 -14
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/ci.py +664 -416
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/interp.py +286 -213
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/formats/goyaml.py +5 -9
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/inject.py +5 -9
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/io/pipelines.py +35 -66
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/io/streams.py +3 -5
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/logs.py +302 -246
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/lib/marshal.py +8 -14
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/pidfiles.py +11 -19
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/pyproject.py +310 -260
- omdev-0.0.20/omdev/specs/jsonschema/codegen/__init__.py +3 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/analysis.py +862 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/cli.py +60 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/config.py +33 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/errors.py +40 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/generator.py +32 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/ir.py +160 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/names.py +94 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/rendering.py +336 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/transforms.py +152 -0
- omdev-0.0.20/omdev/specs/jsonschema/codegen/typing.py +45 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/dataserver.py +2 -2
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/git/cli.py +2 -2
- omdev-0.0.20/omdev/tui/apps/jtree/__init__.py +0 -0
- omdev-0.0.20/omdev/tui/apps/jtree/__main__.py +4 -0
- omdev-0.0.20/omdev/tui/apps/markdown/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/__init__.py +3 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/LICENSE +21 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/__init__.py +35 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/client.py +349 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/__init__.py +9 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/borders.py +91 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/colors.py +142 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/colors.tcss +338 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/easing.py +138 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/easing.tcss +59 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/previews/keys.py +83 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/protocol.py +48 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/redirect_output.py +114 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/renderables.py +162 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/server.py +154 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/service.py +367 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/tools/__init__.py +0 -0
- omdev-0.0.20/omdev/tui/textual/altdevtools/tools/diagnose.py +206 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/devtools.py +35 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/dom2.py +2 -4
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/types.py +2 -4
- {omdev-0.0.19 → omdev-0.0.20/omdev.egg-info}/PKG-INFO +8 -8
- {omdev-0.0.19 → omdev-0.0.20}/omdev.egg-info/SOURCES.txt +65 -34
- {omdev-0.0.19 → omdev-0.0.20}/omdev.egg-info/requires.txt +7 -7
- {omdev-0.0.19 → omdev-0.0.20}/pyproject.toml +11 -8
- {omdev-0.0.19 → omdev-0.0.20}/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/MANIFEST.in +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/README.md +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/.omlish-manifests.json +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/README.md +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/cli/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/cli/main.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/gen.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/imports.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/manifests.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/resources.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/srcfiles.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/strip.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/gen/typing.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/info.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/amalg/sources.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/darwin/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/darwin/aps.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/darwin/ax.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/darwin/cf.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/darwin/cg.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/linux/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/capi/linux/x11.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cc/srclangs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/build.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/cache.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/ci.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/compose.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/consts.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/clients.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v1/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v1/api.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v1/client.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v2/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v2/api.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v2/azure.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/api/v2/client.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/shell.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/ci/utils.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/install.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/main.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/managers.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cli/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/capi/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/capi/darwin_cf.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/capi/linux_x11.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/commands.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/platform.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/clipboard/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmake.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmdlog/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmdlog/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmdlog/_cmdlog.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmdlog/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/cmdlog/cmdlog.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/_template.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/codegen.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataclasses/dumping.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/parsing.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/rendering.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/diffs/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/build.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/config.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/config.toml +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/content.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/gen.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/helpers.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/ops.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/rendering.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/.python-versions.json +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/configs/.gdbinit +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/configs/.sqliterc +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/configs/.tmux.conf +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/configs/.vimrc +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/depsets/python.toml +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/depsets/x11.toml +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/apt.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/chgrp.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/docker.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/firefox.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/go.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/jdk.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/man.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/nvm.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/pyenv.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/rbenv.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/rust.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/sshd.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/user.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/uv.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/vcpkg.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/workdir.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/fragments/zig.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/scripts/install-claude +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/scripts/install-codex +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/scripts/install-pi +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/scripts/run-dbus +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/resources/shift-uid.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/run.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/dockerdev/utils.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/git/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/git/magic.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/git/revisions.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/git/shallow.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/paths.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/secrets.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/home/shadow.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/imgur.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/intellij/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/intellij/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/intellij/ides.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/intellij/open.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/default.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/types.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.19/omdev/irc → omdev-0.0.20/omdev/java}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/java/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/java/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/java/pomgen.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/java/utils.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/java/xml.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/find.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/magic.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/magic/styles.py +0 -0
- {omdev-0.0.19/omdev/irc/messages → omdev-0.0.20/omdev/manifests}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/manifests/building.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/manifests/main.py +0 -0
- {omdev-0.0.19/omdev/irc/numerics → omdev-0.0.20/omdev/markdown}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/markdown/incparse.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/markdown/tokens.py +0 -0
- {omdev-0.0.19/omdev/java → omdev-0.0.20/omdev/mypy}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/mypy/report.py +0 -0
- {omdev-0.0.19/omdev/manifests → omdev-0.0.20/omdev/packaging}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/names.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pip.py +0 -0
- {omdev-0.0.19/omdev/markdown → omdev-0.0.20/omdev/precheck}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/base.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/blanklines.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/caches.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/git.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/imports.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/main.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/precheck/unicode.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/__init__.py +0 -0
- {omdev-0.0.19/omdev/mypy → omdev-0.0.20/omdev/py/asts}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/asts/parents.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/asts/toplevel.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/asts/visitors.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/attrdocs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/bracepy.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/classdot.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/attrdoc.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/common.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/epydoc.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/google.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/numpydoc.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/parser.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/docstrings/rest.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/findimports.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/reprs.py +0 -0
- {omdev-0.0.19/omdev/oci → omdev-0.0.20/omdev/py/scripts}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/scripts/bumpversion.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/scripts/importtrace.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/srcheaders.py +0 -0
- {omdev-0.0.19/omdev/oci/pack → omdev-0.0.20/omdev/py/tokens}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tokens/all.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tokens/tokenizert.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tokens/utils.py +0 -0
- {omdev-0.0.19/omdev/packaging → omdev-0.0.20/omdev/py/tools}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tools/fixdocstrings.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tools/importscan.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tools/mkrelimp.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/py/tools/pipdepup.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/resources/dockerdev.sh +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.19/omdev/precheck → omdev-0.0.20/omdev/pyproject/tools}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/tools/aboutdeps.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/tools/buildrs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/tools/pyversions.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/pyproject/versions.py +0 -0
- {omdev-0.0.19/omdev/py/asts → omdev-0.0.20/omdev/rs}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.19/omdev/py/scripts → omdev-0.0.20/omdev/scripts/lib}/__init__.py +0 -0
- {omdev-0.0.19/omdev/py/tokens → omdev-0.0.20/omdev/scripts/lib/formats}/__init__.py +0 -0
- {omdev-0.0.19/omdev/py/tools → omdev-0.0.20/omdev/scripts/lib/io}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.19/omdev/pyproject/tools → omdev-0.0.20/omdev/specs}/__init__.py +0 -0
- {omdev-0.0.19/omdev/rs → omdev-0.0.20/omdev/specs/irc}/__init__.py +0 -0
- {omdev-0.0.19/omdev/scripts/lib → omdev-0.0.20/omdev/specs/irc/messages}/__init__.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/messages/base.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/messages/formats.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/messages/messages.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/messages/parsing.py +0 -0
- {omdev-0.0.19/omdev/scripts/lib/formats → omdev-0.0.20/omdev/specs/irc/numerics}/__init__.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/numerics/formats.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/numerics/numerics.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/numerics/types.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/LICENSE +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/__init__.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/consts.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/errors.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/message.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/nuh.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/parsing.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/rendering.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/tags.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/irc/protocol/utils.py +0 -0
- {omdev-0.0.19/omdev/scripts/lib/io → omdev-0.0.20/omdev/specs/jsonschema}/__init__.py +0 -0
- {omdev-0.0.19/omdev/tui/apps/jtree → omdev-0.0.20/omdev/specs/jsonschema/codegen}/__main__.py +0 -0
- {omdev-0.0.19/omdev/supervisor → omdev-0.0.20/omdev/specs/oci}/__init__.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/building.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/compression.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/data.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/datarefs.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/loading.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/media.py +0 -0
- {omdev-0.0.19/omdev/tools/git → omdev-0.0.20/omdev/specs/oci/pack}/__init__.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/pack/packing.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/pack/repositories.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/pack/unpacking.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/repositories.py +0 -0
- {omdev-0.0.19/omdev → omdev-0.0.20/omdev/specs}/oci/tars.py +0 -0
- {omdev-0.0.19/omdev/tools/json → omdev-0.0.20/omdev/supervisor}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/supervisor/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/supervisor/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tagstrings.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/diff.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/doc.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/docker.py +0 -0
- {omdev-0.0.19/omdev/tools/jsonview → omdev-0.0.20/omdev/tools/git}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/git/cloning.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.19/omdev/tools/pawk → omdev-0.0.20/omdev/tools/json}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.19/omdev/tui → omdev-0.0.20/omdev/tools/jsonview}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/jsonview/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/jsonview/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/jsonview/resources/jsonview.css +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/jsonview/resources/jsonview.html.j2 +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/jsonview/resources/jsonview.js +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/pawk/README.md +0 -0
- {omdev-0.0.19/omdev/tui/apps → omdev-0.0.20/omdev/tools/pawk}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/pip.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/prof.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/qr.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/shell.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.19/omdev/tui/apps/edit → omdev-0.0.20/omdev/tui}/__init__.py +0 -0
- {omdev-0.0.19/omdev/tui/apps/irc → omdev-0.0.20/omdev/tui/apps}/__init__.py +0 -0
- {omdev-0.0.19/omdev/tui/apps/jtree → omdev-0.0.20/omdev/tui/apps/edit}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/edit/main.py +0 -0
- {omdev-0.0.19/omdev/tui/apps/markdown → omdev-0.0.20/omdev/tui/apps/irc}/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/irc/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/irc/app.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/irc/client.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/irc/commands.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/irc/main.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/app.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/styles/layout.tcss +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/utils.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/jtree/widgets.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/markdown/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/apps/markdown/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/console2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/__main__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/_compat.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/cli.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/renderables.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/rendering.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/diff/underlinebar.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/markdown2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/textual/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/textual/dark.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/textual/dump.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/textual/themes.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/rich/trirule.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/actionmenu.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/app2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/autocomplete/LICENSE +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/autocomplete/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/autocomplete/matching.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/autocomplete/paths.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/autocomplete/widget.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/binding2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/clipboard.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/debug/__init__.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/debug/dominfo.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/debug/screen.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/drivers2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/logging2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/render2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/screen2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev/tui/textual/widgets2.py +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.19 → omdev-0.0.20}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omdev
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.20
|
|
4
4
|
Summary: omdev
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,11 +14,11 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
14
|
Requires-Python: >=3.14
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.20
|
|
18
18
|
Provides-Extra: all
|
|
19
|
-
Requires-Dist: ominfra==0.0.
|
|
20
|
-
Requires-Dist: ommlds==0.0.
|
|
21
|
-
Requires-Dist: black~=26.
|
|
19
|
+
Requires-Dist: ominfra==0.0.20; extra == "all"
|
|
20
|
+
Requires-Dist: ommlds==0.0.20; extra == "all"
|
|
21
|
+
Requires-Dist: black~=26.5; extra == "all"
|
|
22
22
|
Requires-Dist: pycparser~=3.0; extra == "all"
|
|
23
23
|
Requires-Dist: pcpp~=1.30; extra == "all"
|
|
24
24
|
Requires-Dist: docutils~=0.22; extra == "all"
|
|
@@ -33,11 +33,11 @@ Requires-Dist: textual~=8.2; extra == "all"
|
|
|
33
33
|
Requires-Dist: textual-dev~=1.8; extra == "all"
|
|
34
34
|
Requires-Dist: textual-speedups~=0.2; extra == "all"
|
|
35
35
|
Provides-Extra: ominfra
|
|
36
|
-
Requires-Dist: ominfra==0.0.
|
|
36
|
+
Requires-Dist: ominfra==0.0.20; extra == "ominfra"
|
|
37
37
|
Provides-Extra: ommlds
|
|
38
|
-
Requires-Dist: ommlds==0.0.
|
|
38
|
+
Requires-Dist: ommlds==0.0.20; extra == "ommlds"
|
|
39
39
|
Provides-Extra: black
|
|
40
|
-
Requires-Dist: black~=26.
|
|
40
|
+
Requires-Dist: black~=26.5; extra == "black"
|
|
41
41
|
Provides-Extra: c
|
|
42
42
|
Requires-Dist: pycparser~=3.0; extra == "c"
|
|
43
43
|
Requires-Dist: pcpp~=1.30; extra == "c"
|
|
@@ -18,12 +18,12 @@ from omlish.logs.modules import get_module_logger
|
|
|
18
18
|
|
|
19
19
|
from ....dataserver.server import DataServer
|
|
20
20
|
from ....dataserver.targets import DataServerTarget
|
|
21
|
-
from ....oci.building import build_oci_index_repository
|
|
22
|
-
from ....oci.data import get_single_leaf_oci_image_index
|
|
23
|
-
from ....oci.dataserver import build_oci_repository_data_server_routes
|
|
24
|
-
from ....oci.loading import read_oci_repository_root_index
|
|
25
|
-
from ....oci.pack.repositories import OciPackedRepositoryBuilder
|
|
26
|
-
from ....oci.repositories import OciRepository
|
|
21
|
+
from ....specs.oci.building import build_oci_index_repository
|
|
22
|
+
from ....specs.oci.data import get_single_leaf_oci_image_index
|
|
23
|
+
from ....specs.oci.dataserver import build_oci_repository_data_server_routes
|
|
24
|
+
from ....specs.oci.loading import read_oci_repository_root_index
|
|
25
|
+
from ....specs.oci.pack.repositories import OciPackedRepositoryBuilder
|
|
26
|
+
from ....specs.oci.repositories import OciRepository
|
|
27
27
|
from ...cache import DataCache
|
|
28
28
|
from ...cache import read_data_cache_data
|
|
29
29
|
from ..cache import DockerCache
|
|
@@ -8,8 +8,8 @@ import typing as ta
|
|
|
8
8
|
|
|
9
9
|
from omlish.docker.ports import DockerPortRelay
|
|
10
10
|
from omlish.http.simple.handlers import LoggingSimpleHttpHandler
|
|
11
|
-
from omlish.http.simple.handlers import SimpleHttpHandler
|
|
12
11
|
from omlish.http.simple.pipelines.sync import make_simple_http_server
|
|
12
|
+
from omlish.http.simple.types import SimpleHttpHandler
|
|
13
13
|
from omlish.lite.cached import cached_nullary
|
|
14
14
|
from omlish.lite.check import check
|
|
15
15
|
from omlish.lite.contextmanagers import AsyncExitStacked
|
|
@@ -11,9 +11,9 @@ from omlish.lite.contextmanagers import ExitStacked
|
|
|
11
11
|
from omlish.logs.utils import log_timing_context
|
|
12
12
|
from omlish.os.temp import temp_dir_context
|
|
13
13
|
|
|
14
|
-
from ...oci.building import BuiltOciImageIndexRepository
|
|
15
|
-
from ...oci.pack.repositories import OciPackedRepositoryBuilder
|
|
16
|
-
from ...oci.repositories import DirectoryOciRepository
|
|
14
|
+
from ...specs.oci.building import BuiltOciImageIndexRepository
|
|
15
|
+
from ...specs.oci.pack.repositories import OciPackedRepositoryBuilder
|
|
16
|
+
from ...specs.oci.repositories import DirectoryOciRepository
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
##
|
|
@@ -9,8 +9,8 @@ from omlish.lite.abstract import Abstract
|
|
|
9
9
|
from omlish.lite.timing import log_timing_context
|
|
10
10
|
from omlish.os.temp import temp_dir_context
|
|
11
11
|
|
|
12
|
-
from ...oci.repositories import DirectoryOciRepository
|
|
13
|
-
from ...oci.repositories import OciRepository
|
|
12
|
+
from ...specs.oci.repositories import DirectoryOciRepository
|
|
13
|
+
from ...specs.oci.repositories import OciRepository
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
##
|
|
@@ -38,11 +38,12 @@ def __omlish_amalg__(): # noqa
|
|
|
38
38
|
return dict(
|
|
39
39
|
src_files=[
|
|
40
40
|
dict(path='../../omlish/lite/abstract.py', sha1='a2fc3f3697fa8de5247761e9d554e70176f37aac'),
|
|
41
|
-
dict(path='../../omlish/lite/check.py', sha1='
|
|
42
|
-
dict(path='../../omlish/lite/
|
|
41
|
+
dict(path='../../omlish/lite/check.py', sha1='62b9ccea94c4f7bcef97e7adae8674b8cb11d4af'),
|
|
42
|
+
dict(path='../../omlish/lite/io.py', sha1='11c03421bf10d9d29796ef0db78f8b3dc994459b'),
|
|
43
43
|
dict(path='../../omlish/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
|
|
44
44
|
dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
|
|
45
|
-
dict(path='../../omlish/lite/strings.py', sha1='
|
|
45
|
+
dict(path='../../omlish/lite/strings.py', sha1='89631bb5cfd6496176db71ab3abd58b89872068b'),
|
|
46
|
+
dict(path='../../omlish/lite/json.py', sha1='01124e62093ebd4078602f16df0ec04cb724a612'),
|
|
46
47
|
dict(path='../../omlish/lite/marshal.py', sha1='66bc88d705df274e9fa1168d2aab20c7e3935cf6'),
|
|
47
48
|
dict(path='dumping.py', sha1='ae4148f671d2cb1e7bf1a819b78ca388b4680bbc'),
|
|
48
49
|
],
|
|
@@ -63,6 +64,9 @@ CheckOnRaiseFn = ta.Callable[[Exception], None] # ta.TypeAlias
|
|
|
63
64
|
CheckExceptionFactory = ta.Callable[..., Exception] # ta.TypeAlias
|
|
64
65
|
CheckArgsRenderer = ta.Callable[..., ta.Optional[str]] # ta.TypeAlias
|
|
65
66
|
|
|
67
|
+
# ../../omlish/lite/json.py
|
|
68
|
+
JsonStyle = ta.Literal['pretty', 'compact', None] # ta.TypeAlias
|
|
69
|
+
|
|
66
70
|
|
|
67
71
|
########################################
|
|
68
72
|
# ../../../omlish/lite/abstract.py
|
|
@@ -353,12 +357,10 @@ class Checks:
|
|
|
353
357
|
return spec
|
|
354
358
|
|
|
355
359
|
@ta.overload
|
|
356
|
-
def isinstance(self, v: ta.Any, spec: ta.Type[T], msg: CheckMessage = None, /) -> T:
|
|
357
|
-
...
|
|
360
|
+
def isinstance(self, v: ta.Any, spec: ta.Type[T], msg: CheckMessage = None, /) -> T: ...
|
|
358
361
|
|
|
359
362
|
@ta.overload
|
|
360
|
-
def isinstance(self, v: ta.Any, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Any:
|
|
361
|
-
...
|
|
363
|
+
def isinstance(self, v: ta.Any, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Any: ...
|
|
362
364
|
|
|
363
365
|
def isinstance(self, v, spec, msg=None):
|
|
364
366
|
if not isinstance(v, spec if (st := type(spec)) is type or (st is tuple and all(type(x) is type for x in spec)) else self._unpack_isinstance_spec(spec)): # noqa
|
|
@@ -373,12 +375,10 @@ class Checks:
|
|
|
373
375
|
return v
|
|
374
376
|
|
|
375
377
|
@ta.overload
|
|
376
|
-
def of_isinstance(self, spec: ta.Type[T], msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], T]:
|
|
377
|
-
...
|
|
378
|
+
def of_isinstance(self, spec: ta.Type[T], msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], T]: ...
|
|
378
379
|
|
|
379
380
|
@ta.overload
|
|
380
|
-
def of_isinstance(self, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], ta.Any]:
|
|
381
|
-
...
|
|
381
|
+
def of_isinstance(self, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], ta.Any]: ...
|
|
382
382
|
|
|
383
383
|
def of_isinstance(self, spec, msg=None, /):
|
|
384
384
|
spec = spec if (st := type(spec)) is type or (st is tuple and all(type(x) is type for x in spec)) else self._unpack_isinstance_spec(spec) # noqa
|
|
@@ -796,34 +796,18 @@ check = Checks()
|
|
|
796
796
|
|
|
797
797
|
|
|
798
798
|
########################################
|
|
799
|
-
# ../../../omlish/lite/
|
|
799
|
+
# ../../../omlish/lite/io.py
|
|
800
800
|
|
|
801
801
|
|
|
802
802
|
##
|
|
803
803
|
|
|
804
804
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
indent=JSON_PRETTY_INDENT,
|
|
809
|
-
)
|
|
810
|
-
|
|
811
|
-
json_dump_pretty: ta.Callable[..., None] = functools.partial(json.dump, **JSON_PRETTY_KWARGS)
|
|
812
|
-
json_dumps_pretty: ta.Callable[..., str] = functools.partial(json.dumps, **JSON_PRETTY_KWARGS)
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
##
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
JSON_COMPACT_SEPARATORS = (',', ':')
|
|
819
|
-
|
|
820
|
-
JSON_COMPACT_KWARGS: ta.Mapping[str, ta.Any] = dict(
|
|
821
|
-
indent=None,
|
|
822
|
-
separators=JSON_COMPACT_SEPARATORS,
|
|
823
|
-
)
|
|
805
|
+
class FnWriter:
|
|
806
|
+
def __init__(self, fn):
|
|
807
|
+
self._fn = fn
|
|
824
808
|
|
|
825
|
-
|
|
826
|
-
|
|
809
|
+
def write(self, *args, **kwargs):
|
|
810
|
+
return self._fn(*args, **kwargs)
|
|
827
811
|
|
|
828
812
|
|
|
829
813
|
########################################
|
|
@@ -1047,13 +1031,11 @@ def strip_with_newline(s: str) -> str:
|
|
|
1047
1031
|
|
|
1048
1032
|
|
|
1049
1033
|
@ta.overload
|
|
1050
|
-
def split_keep_delimiter(s: str, d: str) -> str:
|
|
1051
|
-
...
|
|
1034
|
+
def split_keep_delimiter(s: str, d: str) -> str: ...
|
|
1052
1035
|
|
|
1053
1036
|
|
|
1054
1037
|
@ta.overload
|
|
1055
|
-
def split_keep_delimiter(s: bytes, d: bytes) -> bytes:
|
|
1056
|
-
...
|
|
1038
|
+
def split_keep_delimiter(s: bytes, d: bytes) -> bytes: ...
|
|
1057
1039
|
|
|
1058
1040
|
|
|
1059
1041
|
def split_keep_delimiter(s, d):
|
|
@@ -1086,6 +1068,99 @@ def format_num_bytes(num_bytes: int) -> str:
|
|
|
1086
1068
|
return f'{num_bytes / 1024 ** (len(FORMAT_NUM_BYTES_SUFFIXES) - 1):.2f}{FORMAT_NUM_BYTES_SUFFIXES[-1]}'
|
|
1087
1069
|
|
|
1088
1070
|
|
|
1071
|
+
########################################
|
|
1072
|
+
# ../../../omlish/lite/json.py
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
##
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
JSON_PRETTY_INDENT = 2
|
|
1079
|
+
|
|
1080
|
+
JSON_PRETTY_KWARGS: ta.Mapping[str, ta.Any] = dict(
|
|
1081
|
+
indent=JSON_PRETTY_INDENT,
|
|
1082
|
+
)
|
|
1083
|
+
|
|
1084
|
+
json_dump_pretty: ta.Callable[..., None] = functools.partial(json.dump, **JSON_PRETTY_KWARGS)
|
|
1085
|
+
json_dumps_pretty: ta.Callable[..., str] = functools.partial(json.dumps, **JSON_PRETTY_KWARGS)
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
##
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
JSON_COMPACT_SEPARATORS = (',', ':')
|
|
1092
|
+
|
|
1093
|
+
JSON_COMPACT_KWARGS: ta.Mapping[str, ta.Any] = dict(
|
|
1094
|
+
indent=None,
|
|
1095
|
+
separators=JSON_COMPACT_SEPARATORS,
|
|
1096
|
+
)
|
|
1097
|
+
|
|
1098
|
+
json_dump_compact: ta.Callable[..., None] = functools.partial(json.dump, **JSON_COMPACT_KWARGS)
|
|
1099
|
+
json_dumps_compact: ta.Callable[..., str] = functools.partial(json.dumps, **JSON_COMPACT_KWARGS)
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
##
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
JSON_KWARGS_BY_STYLE: ta.Mapping[JsonStyle, ta.Mapping[str, ta.Any]] = {
|
|
1106
|
+
'pretty': JSON_PRETTY_KWARGS,
|
|
1107
|
+
'compact': JSON_COMPACT_KWARGS,
|
|
1108
|
+
None: {},
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
##
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
def json_dump(
|
|
1116
|
+
obj: ta.Any,
|
|
1117
|
+
fp: ta.Any,
|
|
1118
|
+
*,
|
|
1119
|
+
style: JsonStyle = None,
|
|
1120
|
+
**kwargs: ta.Any,
|
|
1121
|
+
) -> None:
|
|
1122
|
+
json.dump(
|
|
1123
|
+
obj,
|
|
1124
|
+
fp,
|
|
1125
|
+
**JSON_KWARGS_BY_STYLE[style],
|
|
1126
|
+
**kwargs,
|
|
1127
|
+
)
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
def json_dump_encode(
|
|
1131
|
+
obj: ta.Any,
|
|
1132
|
+
fp: ta.Any,
|
|
1133
|
+
encoding: str = 'utf-8',
|
|
1134
|
+
*,
|
|
1135
|
+
errors: str = 'strict',
|
|
1136
|
+
style: JsonStyle = None,
|
|
1137
|
+
**kwargs: ta.Any,
|
|
1138
|
+
) -> None:
|
|
1139
|
+
def write(s: str) -> int:
|
|
1140
|
+
fp.write(s.encode(encoding, errors))
|
|
1141
|
+
return len(s)
|
|
1142
|
+
|
|
1143
|
+
json.dump(
|
|
1144
|
+
obj,
|
|
1145
|
+
FnWriter(write),
|
|
1146
|
+
**JSON_KWARGS_BY_STYLE[style],
|
|
1147
|
+
**kwargs,
|
|
1148
|
+
)
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
def json_dumps(
|
|
1152
|
+
obj: ta.Any,
|
|
1153
|
+
*,
|
|
1154
|
+
style: JsonStyle = None,
|
|
1155
|
+
**kwargs: ta.Any,
|
|
1156
|
+
) -> str:
|
|
1157
|
+
return json.dumps(
|
|
1158
|
+
obj,
|
|
1159
|
+
**JSON_KWARGS_BY_STYLE[style],
|
|
1160
|
+
**kwargs,
|
|
1161
|
+
)
|
|
1162
|
+
|
|
1163
|
+
|
|
1089
1164
|
########################################
|
|
1090
1165
|
# ../../../omlish/lite/marshal.py
|
|
1091
1166
|
"""
|
|
@@ -7,6 +7,7 @@ import os
|
|
|
7
7
|
import typing as ta
|
|
8
8
|
import urllib.request
|
|
9
9
|
|
|
10
|
+
from omlish.http.statuses import HttpStatus
|
|
10
11
|
from omlish.lite.abstract import Abstract
|
|
11
12
|
from omlish.lite.check import check
|
|
12
13
|
|
|
@@ -118,10 +119,10 @@ class BytesDataServerTargetHandler(DataServerTargetHandler[BytesDataServerTarget
|
|
|
118
119
|
|
|
119
120
|
def handle(self, req: DataServerRequest) -> DataServerResponse:
|
|
120
121
|
if req.method not in ('GET', 'HEAD'):
|
|
121
|
-
return DataServerResponse(
|
|
122
|
+
return DataServerResponse(HttpStatus.METHOD_NOT_ALLOWED)
|
|
122
123
|
|
|
123
124
|
return DataServerResponse(
|
|
124
|
-
|
|
125
|
+
HttpStatus.OK,
|
|
125
126
|
headers=self._make_headers(),
|
|
126
127
|
body=io.BytesIO(self._target.data) if self._target.data is not None and req.method == 'GET' else None,
|
|
127
128
|
)
|
|
@@ -137,10 +138,10 @@ class FileDataServerTargetHandler(DataServerTargetHandler[FileDataServerTarget])
|
|
|
137
138
|
try:
|
|
138
139
|
st = os.stat(check.not_none(self._target.file_path))
|
|
139
140
|
except FileNotFoundError:
|
|
140
|
-
return DataServerResponse(
|
|
141
|
+
return DataServerResponse(HttpStatus.NOT_FOUND)
|
|
141
142
|
|
|
142
143
|
return DataServerResponse(
|
|
143
|
-
|
|
144
|
+
HttpStatus.OK,
|
|
144
145
|
headers={
|
|
145
146
|
'Content-Length': str(st.st_size),
|
|
146
147
|
**self._make_headers(),
|
|
@@ -151,13 +152,13 @@ class FileDataServerTargetHandler(DataServerTargetHandler[FileDataServerTarget])
|
|
|
151
152
|
try:
|
|
152
153
|
f = open(check.not_none(self._target.file_path), 'rb') # noqa
|
|
153
154
|
except FileNotFoundError:
|
|
154
|
-
return DataServerResponse(
|
|
155
|
+
return DataServerResponse(HttpStatus.NOT_FOUND)
|
|
155
156
|
|
|
156
157
|
try:
|
|
157
158
|
sz = os.fstat(f.fileno())
|
|
158
159
|
|
|
159
160
|
return DataServerResponse(
|
|
160
|
-
|
|
161
|
+
HttpStatus.OK,
|
|
161
162
|
headers={
|
|
162
163
|
'Content-Length': str(sz.st_size),
|
|
163
164
|
**self._make_headers(),
|
|
@@ -170,7 +171,7 @@ class FileDataServerTargetHandler(DataServerTargetHandler[FileDataServerTarget])
|
|
|
170
171
|
raise
|
|
171
172
|
|
|
172
173
|
else:
|
|
173
|
-
return DataServerResponse(
|
|
174
|
+
return DataServerResponse(HttpStatus.METHOD_NOT_ALLOWED)
|
|
174
175
|
|
|
175
176
|
|
|
176
177
|
#
|
|
@@ -180,7 +181,7 @@ class FileDataServerTargetHandler(DataServerTargetHandler[FileDataServerTarget])
|
|
|
180
181
|
class UrlDataServerTargetHandler(DataServerTargetHandler[UrlDataServerTarget]):
|
|
181
182
|
def handle(self, req: DataServerRequest) -> DataServerResponse:
|
|
182
183
|
if req.method not in check.not_none(self._target.methods):
|
|
183
|
-
return DataServerResponse(
|
|
184
|
+
return DataServerResponse(HttpStatus.METHOD_NOT_ALLOWED)
|
|
184
185
|
|
|
185
186
|
resp: http.client.HTTPResponse = urllib.request.urlopen(urllib.request.Request( # noqa
|
|
186
187
|
method=req.method,
|
|
@@ -7,10 +7,10 @@ TODO:
|
|
|
7
7
|
"""
|
|
8
8
|
import typing as ta
|
|
9
9
|
|
|
10
|
-
from omlish.http.simple.
|
|
11
|
-
from omlish.http.simple.
|
|
12
|
-
from omlish.http.simple.
|
|
13
|
-
from omlish.http.simple.
|
|
10
|
+
from omlish.http.simple.types import SimpleHttpHandler_
|
|
11
|
+
from omlish.http.simple.types import SimpleHttpHandlerRequest
|
|
12
|
+
from omlish.http.simple.types import SimpleHttpHandlerResponse
|
|
13
|
+
from omlish.http.simple.types import SimpleHttpHandlerResponseStreamedData
|
|
14
14
|
|
|
15
15
|
from .handlers import DataServerRequest
|
|
16
16
|
from .server import DataServer
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP037 UP045
|
|
2
2
|
import dataclasses as dc
|
|
3
|
-
import http.client
|
|
4
3
|
import typing as ta
|
|
5
4
|
|
|
5
|
+
from omlish.http.statuses import HttpStatus
|
|
6
6
|
from omlish.lite.check import check
|
|
7
7
|
|
|
8
8
|
from .handlers import DataServerHandler
|
|
@@ -85,6 +85,6 @@ class DataServer:
|
|
|
85
85
|
try:
|
|
86
86
|
rt = self._routes_by_path[req.path]
|
|
87
87
|
except KeyError:
|
|
88
|
-
return DataServerResponse(
|
|
88
|
+
return DataServerResponse(HttpStatus.NOT_FOUND)
|
|
89
89
|
|
|
90
90
|
return rt.handler.handle(req)
|
|
@@ -42,6 +42,11 @@ deps = [
|
|
|
42
42
|
'make',
|
|
43
43
|
'pkg-config',
|
|
44
44
|
|
|
45
|
+
# libs
|
|
46
|
+
'libncurses5-dev',
|
|
47
|
+
'libreadline6-dev',
|
|
48
|
+
'libssl-dev',
|
|
49
|
+
|
|
45
50
|
# language toolchains & runtimes
|
|
46
51
|
'maven',
|
|
47
52
|
'perl',
|
|
@@ -64,6 +69,9 @@ deps = [
|
|
|
64
69
|
'lsof',
|
|
65
70
|
'strace',
|
|
66
71
|
|
|
72
|
+
# sandboxing
|
|
73
|
+
'bubblewrap',
|
|
74
|
+
|
|
67
75
|
# data formats
|
|
68
76
|
'jq',
|
|
69
77
|
'libyaml-dev',
|
|
@@ -72,6 +80,7 @@ deps = [
|
|
|
72
80
|
'libdb-dev',
|
|
73
81
|
'libgdbm6',
|
|
74
82
|
'libpq-dev',
|
|
83
|
+
'libsqlite3-dev',
|
|
75
84
|
'postgresql-client',
|
|
76
85
|
'sqlite3',
|
|
77
86
|
|
|
@@ -86,6 +95,7 @@ deps = [
|
|
|
86
95
|
'tmux',
|
|
87
96
|
|
|
88
97
|
# shells
|
|
98
|
+
'tcsh',
|
|
89
99
|
'zsh',
|
|
90
100
|
|
|
91
101
|
# editors & shells
|
|
@@ -99,13 +109,18 @@ deps = [
|
|
|
99
109
|
|
|
100
110
|
# documentation & introspection
|
|
101
111
|
'file',
|
|
102
|
-
'man-db',
|
|
103
112
|
'graphviz',
|
|
113
|
+
'man-db',
|
|
104
114
|
|
|
105
115
|
# chat & communication
|
|
106
116
|
'irssi',
|
|
107
117
|
|
|
108
118
|
# archiving & compression
|
|
109
|
-
'
|
|
119
|
+
'libbz2-dev',
|
|
120
|
+
'liblz4-dev',
|
|
121
|
+
'lz4',
|
|
122
|
+
'lzma',
|
|
123
|
+
'lzma-dev',
|
|
110
124
|
'unzip',
|
|
125
|
+
'zip',
|
|
111
126
|
]
|
|
@@ -31,7 +31,7 @@ def yield_git_status_line_fields(l_: str) -> ta.Iterator[str]:
|
|
|
31
31
|
while True:
|
|
32
32
|
if l[p] == ord('"'):
|
|
33
33
|
p += 1
|
|
34
|
-
s:
|
|
34
|
+
s: ta.List[bytes] = []
|
|
35
35
|
while (n := find_any(b'\\"', p)) > 0:
|
|
36
36
|
if (c := l[n]) == ord('\\'):
|
|
37
37
|
s.append(l[p:n])
|
|
@@ -146,6 +146,17 @@ _UNMERGED_GIT_STATUS_STATE_PAIRS: ta.FrozenSet[ta.Tuple[GitStatusState, GitStatu
|
|
|
146
146
|
(GitStatusState.DELETED, GitStatusState.DELETED),
|
|
147
147
|
])
|
|
148
148
|
|
|
149
|
+
_UNSTAGED_GIT_STATUS_STATES: ta.FrozenSet[GitStatusState] = frozenset([
|
|
150
|
+
GitStatusState.UNMODIFIED,
|
|
151
|
+
GitStatusState.UNTRACKED,
|
|
152
|
+
GitStatusState.IGNORED,
|
|
153
|
+
])
|
|
154
|
+
|
|
155
|
+
_CLEAN_WORKTREE_GIT_STATUS_STATES: ta.FrozenSet[GitStatusState] = frozenset([
|
|
156
|
+
GitStatusState.UNMODIFIED,
|
|
157
|
+
GitStatusState.IGNORED,
|
|
158
|
+
])
|
|
159
|
+
|
|
149
160
|
|
|
150
161
|
@dc.dataclass(frozen=True)
|
|
151
162
|
class GitStatusItem:
|
|
@@ -158,8 +169,8 @@ class GitStatusItem:
|
|
|
158
169
|
@property
|
|
159
170
|
def is_unmerged(self) -> bool:
|
|
160
171
|
return (
|
|
161
|
-
self.x in
|
|
162
|
-
self.y in
|
|
172
|
+
self.x in _UNMERGED_GIT_STATUS_STATES or
|
|
173
|
+
self.y in _UNMERGED_GIT_STATUS_STATES or
|
|
163
174
|
(self.x, self.y) in _UNMERGED_GIT_STATUS_STATE_PAIRS
|
|
164
175
|
)
|
|
165
176
|
|
|
@@ -202,19 +213,17 @@ class GitStatus(ta.Sequence[GitStatusItem]):
|
|
|
202
213
|
|
|
203
214
|
self._lst = list(lines)
|
|
204
215
|
|
|
205
|
-
by_x: ta.Dict[GitStatusState,
|
|
206
|
-
by_y: ta.Dict[GitStatusState,
|
|
216
|
+
by_x: ta.Dict[GitStatusState, ta.List[GitStatusItem]] = {}
|
|
217
|
+
by_y: ta.Dict[GitStatusState, ta.List[GitStatusItem]] = {}
|
|
207
218
|
|
|
208
|
-
by_a: ta.Dict[str, GitStatusItem] = {}
|
|
219
|
+
by_a: ta.Dict[str, ta.List[GitStatusItem]] = {}
|
|
209
220
|
by_b: ta.Dict[str, GitStatusItem] = {}
|
|
210
221
|
|
|
211
222
|
for l in self._lst:
|
|
212
223
|
by_x.setdefault(l.x, []).append(l)
|
|
213
224
|
by_y.setdefault(l.y, []).append(l)
|
|
214
225
|
|
|
215
|
-
|
|
216
|
-
raise KeyError(l.a)
|
|
217
|
-
by_a[l.a] = l
|
|
226
|
+
by_a.setdefault(l.a, []).append(l)
|
|
218
227
|
|
|
219
228
|
if l.b is not None:
|
|
220
229
|
if l.b in by_b:
|
|
@@ -251,7 +260,7 @@ class GitStatus(ta.Sequence[GitStatusItem]):
|
|
|
251
260
|
return self._by_y
|
|
252
261
|
|
|
253
262
|
@property
|
|
254
|
-
def by_a(self) -> ta.Mapping[str, GitStatusItem]:
|
|
263
|
+
def by_a(self) -> ta.Mapping[str, ta.Sequence[GitStatusItem]]:
|
|
255
264
|
return self._by_a
|
|
256
265
|
|
|
257
266
|
@property
|
|
@@ -266,11 +275,11 @@ class GitStatus(ta.Sequence[GitStatusItem]):
|
|
|
266
275
|
|
|
267
276
|
@property
|
|
268
277
|
def has_staged(self) -> bool:
|
|
269
|
-
return any(l.x
|
|
278
|
+
return any(l.x not in _UNSTAGED_GIT_STATUS_STATES for l in self._lst)
|
|
270
279
|
|
|
271
280
|
@property
|
|
272
281
|
def has_dirty(self) -> bool:
|
|
273
|
-
return any(l.y
|
|
282
|
+
return any(l.y not in _CLEAN_WORKTREE_GIT_STATUS_STATES for l in self._lst)
|
|
274
283
|
|
|
275
284
|
|
|
276
285
|
def parse_git_status(s: str) -> GitStatus:
|
|
@@ -39,10 +39,10 @@ def __omlish_amalg__(): # noqa
|
|
|
39
39
|
src_files=[
|
|
40
40
|
dict(path='../../omlish/lite/abstract.py', sha1='a2fc3f3697fa8de5247761e9d554e70176f37aac'),
|
|
41
41
|
dict(path='../../omlish/lite/cached.py', sha1='0c33cf961ac8f0727284303c7a30c5ea98f714f2'),
|
|
42
|
-
dict(path='../../omlish/lite/check.py', sha1='
|
|
42
|
+
dict(path='../../omlish/lite/check.py', sha1='62b9ccea94c4f7bcef97e7adae8674b8cb11d4af'),
|
|
43
43
|
dict(path='../../omlish/lite/objects.py', sha1='9566bbf3530fd71fcc56321485216b592fae21e9'),
|
|
44
44
|
dict(path='../../omlish/lite/reflect.py', sha1='c4fec44bf144e9d93293c996af06f6c65fc5e63d'),
|
|
45
|
-
dict(path='../../omlish/lite/strings.py', sha1='
|
|
45
|
+
dict(path='../../omlish/lite/strings.py', sha1='89631bb5cfd6496176db71ab3abd58b89872068b'),
|
|
46
46
|
dict(path='../../omlish/lite/marshal.py', sha1='66bc88d705df274e9fa1168d2aab20c7e3935cf6'),
|
|
47
47
|
dict(path='dumping.py', sha1='49acd06fdcc3427f4a255fea295d7042bb655a13'),
|
|
48
48
|
],
|
|
@@ -469,12 +469,10 @@ class Checks:
|
|
|
469
469
|
return spec
|
|
470
470
|
|
|
471
471
|
@ta.overload
|
|
472
|
-
def isinstance(self, v: ta.Any, spec: ta.Type[T], msg: CheckMessage = None, /) -> T:
|
|
473
|
-
...
|
|
472
|
+
def isinstance(self, v: ta.Any, spec: ta.Type[T], msg: CheckMessage = None, /) -> T: ...
|
|
474
473
|
|
|
475
474
|
@ta.overload
|
|
476
|
-
def isinstance(self, v: ta.Any, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Any:
|
|
477
|
-
...
|
|
475
|
+
def isinstance(self, v: ta.Any, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Any: ...
|
|
478
476
|
|
|
479
477
|
def isinstance(self, v, spec, msg=None):
|
|
480
478
|
if not isinstance(v, spec if (st := type(spec)) is type or (st is tuple and all(type(x) is type for x in spec)) else self._unpack_isinstance_spec(spec)): # noqa
|
|
@@ -489,12 +487,10 @@ class Checks:
|
|
|
489
487
|
return v
|
|
490
488
|
|
|
491
489
|
@ta.overload
|
|
492
|
-
def of_isinstance(self, spec: ta.Type[T], msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], T]:
|
|
493
|
-
...
|
|
490
|
+
def of_isinstance(self, spec: ta.Type[T], msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], T]: ...
|
|
494
491
|
|
|
495
492
|
@ta.overload
|
|
496
|
-
def of_isinstance(self, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], ta.Any]:
|
|
497
|
-
...
|
|
493
|
+
def of_isinstance(self, spec: ta.Any, msg: CheckMessage = None, /) -> ta.Callable[[ta.Any], ta.Any]: ...
|
|
498
494
|
|
|
499
495
|
def of_isinstance(self, spec, msg=None, /):
|
|
500
496
|
spec = spec if (st := type(spec)) is type or (st is tuple and all(type(x) is type for x in spec)) else self._unpack_isinstance_spec(spec) # noqa
|
|
@@ -1132,13 +1128,11 @@ def strip_with_newline(s: str) -> str:
|
|
|
1132
1128
|
|
|
1133
1129
|
|
|
1134
1130
|
@ta.overload
|
|
1135
|
-
def split_keep_delimiter(s: str, d: str) -> str:
|
|
1136
|
-
...
|
|
1131
|
+
def split_keep_delimiter(s: str, d: str) -> str: ...
|
|
1137
1132
|
|
|
1138
1133
|
|
|
1139
1134
|
@ta.overload
|
|
1140
|
-
def split_keep_delimiter(s: bytes, d: bytes) -> bytes:
|
|
1141
|
-
...
|
|
1135
|
+
def split_keep_delimiter(s: bytes, d: bytes) -> bytes: ...
|
|
1142
1136
|
|
|
1143
1137
|
|
|
1144
1138
|
def split_keep_delimiter(s, d):
|