omdev 0.0.0.dev282__tar.gz → 0.0.0.dev283__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.dev282/omdev.egg-info → omdev-0.0.0.dev283}/PKG-INFO +2 -2
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/.manifests.json +16 -4
- omdev-0.0.0.dev283/omdev/attrdocs.py +177 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/bracepy.py +6 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/classdot.py +3 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cmake.py +3 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/findimports.py +6 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/imgur.py +3 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tokens/all.py +1 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tokens/utils.py +9 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev.egg-info/SOURCES.txt +1 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/pyproject.toml +2 -2
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/LICENSE +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/README.rst +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cc/cdeps.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cc/cdeps.toml +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cc/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/ci.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/compose.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/consts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/buildcaching.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/cacheserved/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/cacheserved/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/cacheserved/manifests.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/cmds.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/dataserver.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/imagepulling.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/packing.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/repositories.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/docker/utils.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/api.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/cache.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/client.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/env.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/github/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/requirements.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/handlers.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/http.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/routes.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/server.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/dataserver/targets.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/git/magic.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/git/shallow.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/home/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/home/paths.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/home/secrets.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/home/shadow.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/manifests/dumping.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/building.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/compression.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/data.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/datarefs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/dataserver.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/loading.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/media.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/pack/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/pack/packing.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/pack/repositories.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/pack/unpacking.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/repositories.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/oci/tars.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/revisions.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/packaging/wheelfile.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/ci.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/interp.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/pyproject.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tokens/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tokens/tokenizert.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/diff.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/git/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/git/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/git/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/git/consts.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/git/messages.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/intellij.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/mkenv.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/shadow.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev282 → omdev-0.0.0.dev283}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev283
|
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.dev283
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -11,11 +11,23 @@
|
|
11
11
|
}
|
12
12
|
}
|
13
13
|
},
|
14
|
+
{
|
15
|
+
"module": ".attrdocs",
|
16
|
+
"attr": "_CLI_MODULE",
|
17
|
+
"file": "omdev/attrdocs.py",
|
18
|
+
"line": 146,
|
19
|
+
"value": {
|
20
|
+
"$.cli.types.CliModule": {
|
21
|
+
"cmd_name": "py/attrdocs",
|
22
|
+
"mod_name": "omdev.attrdocs"
|
23
|
+
}
|
24
|
+
}
|
25
|
+
},
|
14
26
|
{
|
15
27
|
"module": ".bracepy",
|
16
28
|
"attr": "_CLI_MODULE",
|
17
29
|
"file": "omdev/bracepy.py",
|
18
|
-
"line":
|
30
|
+
"line": 94,
|
19
31
|
"value": {
|
20
32
|
"$.cli.types.CliModule": {
|
21
33
|
"cmd_name": "bracepy",
|
@@ -51,7 +63,7 @@
|
|
51
63
|
"module": ".classdot",
|
52
64
|
"attr": "_CLI_MODULE",
|
53
65
|
"file": "omdev/classdot.py",
|
54
|
-
"line":
|
66
|
+
"line": 65,
|
55
67
|
"value": {
|
56
68
|
"$.cli.types.CliModule": {
|
57
69
|
"cmd_name": "py/classdot",
|
@@ -75,7 +87,7 @@
|
|
75
87
|
"module": ".findimports",
|
76
88
|
"attr": "_CLI_MODULE",
|
77
89
|
"file": "omdev/findimports.py",
|
78
|
-
"line":
|
90
|
+
"line": 87,
|
79
91
|
"value": {
|
80
92
|
"$.cli.types.CliModule": {
|
81
93
|
"cmd_name": "py/findimports",
|
@@ -87,7 +99,7 @@
|
|
87
99
|
"module": ".imgur",
|
88
100
|
"attr": "_FOO_CLI_MODULE",
|
89
101
|
"file": "omdev/imgur.py",
|
90
|
-
"line":
|
102
|
+
"line": 133,
|
91
103
|
"value": {
|
92
104
|
"$.cli.types.CliModule": {
|
93
105
|
"cmd_name": "imgur",
|
@@ -0,0 +1,177 @@
|
|
1
|
+
# ruff: noqa: N802
|
2
|
+
import ast
|
3
|
+
import dataclasses as dc
|
4
|
+
import inspect
|
5
|
+
import typing as ta
|
6
|
+
|
7
|
+
from omlish import check
|
8
|
+
from omlish import lang
|
9
|
+
|
10
|
+
from .tokens import all as tks
|
11
|
+
|
12
|
+
|
13
|
+
##
|
14
|
+
|
15
|
+
|
16
|
+
@dc.dataclass(frozen=True)
|
17
|
+
class AttrDoc:
|
18
|
+
docstring: str | None = None
|
19
|
+
trailing_comment: str | None = None
|
20
|
+
preceding_comment: str | None = None
|
21
|
+
|
22
|
+
__repr__ = lang.AttrRepr.of(
|
23
|
+
'docstring',
|
24
|
+
'trailing_comment',
|
25
|
+
'preceding_comment',
|
26
|
+
value_filter=bool,
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
_EMPTY_ATTR_DOC = AttrDoc()
|
31
|
+
|
32
|
+
|
33
|
+
##
|
34
|
+
|
35
|
+
|
36
|
+
class _AttrDocAstVisitor(ast.NodeVisitor):
|
37
|
+
def __init__(
|
38
|
+
self,
|
39
|
+
*,
|
40
|
+
tok_lines: ta.Sequence[tks.Tokens] | None = None,
|
41
|
+
) -> None:
|
42
|
+
super().__init__()
|
43
|
+
|
44
|
+
self._tok_lines = tok_lines
|
45
|
+
|
46
|
+
self._attr_docs: dict[str, AttrDoc] = {}
|
47
|
+
self._target: str | None = None
|
48
|
+
self._prev_node_type: type[ast.AST] | None = None
|
49
|
+
|
50
|
+
@property
|
51
|
+
def attr_docs(self) -> ta.Mapping[str, AttrDoc]:
|
52
|
+
return self._attr_docs
|
53
|
+
|
54
|
+
#
|
55
|
+
|
56
|
+
def visit(self, node: ast.AST) -> ta.Any:
|
57
|
+
if isinstance(node, (ast.AsyncFunctionDef, ast.FunctionDef)):
|
58
|
+
self._prev_node_type = None
|
59
|
+
return None
|
60
|
+
node_result = super().visit(node)
|
61
|
+
self._prev_node_type = type(node)
|
62
|
+
return node_result
|
63
|
+
|
64
|
+
#
|
65
|
+
|
66
|
+
@staticmethod
|
67
|
+
def _comment_tok_src(tok: tks.Token) -> str:
|
68
|
+
check.state(tok.name == 'COMMENT')
|
69
|
+
tc = tok.src
|
70
|
+
check.state(tc[0] == '#')
|
71
|
+
return tc[1:].lstrip()
|
72
|
+
|
73
|
+
def _set_target(self, node: ast.Name) -> None:
|
74
|
+
self._target = node.id
|
75
|
+
|
76
|
+
ad = _EMPTY_ATTR_DOC
|
77
|
+
|
78
|
+
if self._tok_lines is not None:
|
79
|
+
line = self._tok_lines[node.lineno - 1]
|
80
|
+
for t in reversed(line):
|
81
|
+
if t.name not in tks.WS_NAMES:
|
82
|
+
break
|
83
|
+
if t.name == 'COMMENT':
|
84
|
+
ad = dc.replace(ad, trailing_comment=self._comment_tok_src(t))
|
85
|
+
break
|
86
|
+
|
87
|
+
pll: list[str] = []
|
88
|
+
pln = node.lineno - 1
|
89
|
+
while pln > 0:
|
90
|
+
line = self._tok_lines[pln - 1]
|
91
|
+
no_ws_line = list(tks.ignore_ws(line, keep={'COMMENT'}))
|
92
|
+
if not no_ws_line or no_ws_line[0].name != 'COMMENT': # noqa
|
93
|
+
break
|
94
|
+
pll.append(self._comment_tok_src(no_ws_line[0]))
|
95
|
+
pln -= 1
|
96
|
+
if pll:
|
97
|
+
ad = dc.replace(ad, preceding_comment='\n'.join(reversed(pll)))
|
98
|
+
|
99
|
+
if ad is not _EMPTY_ATTR_DOC:
|
100
|
+
self._attr_docs[node.id] = ad
|
101
|
+
|
102
|
+
def visit_AnnAssign(self, node: ast.AnnAssign) -> ta.Any:
|
103
|
+
if isinstance(target := node.target, ast.Name):
|
104
|
+
self._set_target(target)
|
105
|
+
|
106
|
+
def visit_Assign(self, node: ast.Assign) -> ta.Any:
|
107
|
+
if len(node.targets) == 1 and isinstance(target := node.targets[0], ast.Name):
|
108
|
+
self._set_target(target) # noqa
|
109
|
+
|
110
|
+
#
|
111
|
+
|
112
|
+
def visit_Expr(self, node: ast.Expr) -> ta.Any:
|
113
|
+
if (
|
114
|
+
isinstance(node.value, ast.Constant) and
|
115
|
+
isinstance(node.value.value, str) and
|
116
|
+
self._prev_node_type in (ast.Assign, ast.AnnAssign)
|
117
|
+
):
|
118
|
+
docstring = inspect.cleandoc(node.value.value)
|
119
|
+
if self._target:
|
120
|
+
ex = self._attr_docs.get(self._target, _EMPTY_ATTR_DOC)
|
121
|
+
check.none(ex.docstring)
|
122
|
+
self._attr_docs[self._target] = dc.replace(ex, docstring=docstring)
|
123
|
+
self._target = None
|
124
|
+
|
125
|
+
|
126
|
+
def extract_attr_docs(src: str) -> ta.Mapping[str, AttrDoc]:
|
127
|
+
if not src:
|
128
|
+
return {}
|
129
|
+
|
130
|
+
toks = tks.src_to_tokens(src)
|
131
|
+
tok_lines = tks.split_lines_dense(toks)
|
132
|
+
|
133
|
+
src_ast = ast.parse(src)
|
134
|
+
|
135
|
+
# import astpretty
|
136
|
+
# astpretty.pprint(src_ast)
|
137
|
+
|
138
|
+
ast_visitor = _AttrDocAstVisitor(tok_lines=tok_lines)
|
139
|
+
ast_visitor.visit(src_ast)
|
140
|
+
return ast_visitor.attr_docs
|
141
|
+
|
142
|
+
|
143
|
+
##
|
144
|
+
|
145
|
+
|
146
|
+
# @omlish-manifest
|
147
|
+
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
148
|
+
'cmd_name': 'py/attrdocs',
|
149
|
+
'mod_name': __name__,
|
150
|
+
}}
|
151
|
+
|
152
|
+
|
153
|
+
if __name__ == '__main__':
|
154
|
+
def _main() -> None:
|
155
|
+
import argparse
|
156
|
+
|
157
|
+
parser = argparse.ArgumentParser()
|
158
|
+
parser.add_argument('file')
|
159
|
+
args = parser.parse_args()
|
160
|
+
|
161
|
+
#
|
162
|
+
|
163
|
+
with open(args.file) as f:
|
164
|
+
src = f.read()
|
165
|
+
|
166
|
+
attr_docs = extract_attr_docs(src)
|
167
|
+
|
168
|
+
#
|
169
|
+
|
170
|
+
import json
|
171
|
+
|
172
|
+
print(json.dumps({
|
173
|
+
a: {k: v for k, v in dc.asdict(ad).items() if v}
|
174
|
+
for a, ad in sorted(attr_docs.items(), key=lambda t: t[0])
|
175
|
+
}))
|
176
|
+
|
177
|
+
_main()
|
@@ -7,6 +7,9 @@ import io
|
|
7
7
|
import tokenize
|
8
8
|
|
9
9
|
|
10
|
+
##
|
11
|
+
|
12
|
+
|
10
13
|
def translate_brace_python(
|
11
14
|
s: str,
|
12
15
|
*,
|
@@ -85,6 +88,9 @@ def translate_brace_python(
|
|
85
88
|
return ret.getvalue()
|
86
89
|
|
87
90
|
|
91
|
+
##
|
92
|
+
|
93
|
+
|
88
94
|
# @omlish-manifest
|
89
95
|
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
90
96
|
'cmd_name': 'bracepy',
|
@@ -13,6 +13,9 @@ import sys
|
|
13
13
|
import typing as ta
|
14
14
|
|
15
15
|
|
16
|
+
##
|
17
|
+
|
18
|
+
|
16
19
|
_BUILTIN_MODULE_NAMES = frozenset([*sys.builtin_module_names, *sys.stdlib_module_names])
|
17
20
|
|
18
21
|
|
@@ -78,6 +81,9 @@ def get_import_deps(imps: set[str]) -> set[str]:
|
|
78
81
|
return {i for i in eimps if whichmod(i) != 'builtin'}
|
79
82
|
|
80
83
|
|
84
|
+
##
|
85
|
+
|
86
|
+
|
81
87
|
# @omlish-manifest
|
82
88
|
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
83
89
|
'cmd_name': 'py/findimports',
|
@@ -42,6 +42,15 @@ def split_lines(ts: Tokens) -> list[Tokens]:
|
|
42
42
|
return [list(it) for g, it in itertools.groupby(ts, lambda t: t.line)]
|
43
43
|
|
44
44
|
|
45
|
+
def split_lines_dense(ts: Tokens) -> list[Tokens]:
|
46
|
+
lines: list[list[Token]] = []
|
47
|
+
for t in ts:
|
48
|
+
while len(lines) < (t.line or 0):
|
49
|
+
lines.append([])
|
50
|
+
lines[-1].append(t)
|
51
|
+
return lines # type: ignore[return-value]
|
52
|
+
|
53
|
+
|
45
54
|
def join_toks(ts: Tokens) -> str:
|
46
55
|
return ''.join(t.src for t in ts)
|
47
56
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev283
|
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.dev283
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=25.1; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -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.dev283'
|
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.dev283',
|
26
26
|
]
|
27
27
|
|
28
28
|
[project.optional-dependencies]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|