omdev 0.0.0.dev211__tar.gz → 0.0.0.dev213__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {omdev-0.0.0.dev211/omdev.egg-info → omdev-0.0.0.dev213}/PKG-INFO +2 -5
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/.manifests.json +15 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/__about__.py +0 -4
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/gen.py +2 -3
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/imports.py +4 -5
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/manifests.py +7 -10
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/resources.py +24 -27
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/srcfiles.py +7 -10
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/strip.py +4 -5
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/types.py +1 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/typing.py +9 -8
- omdev-0.0.0.dev213/omdev/cc/cdeps.py +71 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cc/cdeps.toml +19 -2
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cc/cli.py +13 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/ci.py +71 -48
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/cli.py +22 -10
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/compose.py +30 -56
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/docker.py +35 -16
- omdev-0.0.0.dev213/omdev/ci/github/cache.py +324 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/github/cacheapi.py +1 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/github/cli.py +2 -2
- omdev-0.0.0.dev213/omdev/ci/github/curl.py +209 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/requirements.py +2 -2
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/git/shallow.py +1 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/ci.py +948 -451
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/interp.py +23 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/pyproject.py +23 -0
- omdev-0.0.0.dev213/omdev/tokens/all.py +35 -0
- omdev-0.0.0.dev213/omdev/tokens/tokenizert.py +215 -0
- omdev-0.0.0.dev211/omdev/tokens.py → omdev-0.0.0.dev213/omdev/tokens/utils.py +6 -12
- omdev-0.0.0.dev213/omdev/tools/mkenv.py +131 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/mkrelimp.py +4 -6
- omdev-0.0.0.dev213/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213/omdev.egg-info}/PKG-INFO +2 -5
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev.egg-info/SOURCES.txt +6 -1
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev.egg-info/requires.txt +1 -5
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/pyproject.toml +2 -6
- omdev-0.0.0.dev211/omdev/cc/cdeps.py +0 -38
- omdev-0.0.0.dev211/omdev/ci/github/cache.py +0 -355
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/LICENSE +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/README.rst +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cc/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cc/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/cache.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/github/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/github/bootstrap.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/shell.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ci/utils.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/clicli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/imgur.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/cli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/pyenv/install.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/pyenv/provider.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/uv/provider.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/interp/venvs.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/cli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/find.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pycharm/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pycharm/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pycharm/cli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/cli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/inject.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/resources/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/resources/docker-dev.sh +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/resources/python.sh +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tagstrings.py +0 -0
- {omdev-0.0.0.dev211/omdev/tools/json → omdev-0.0.0.dev213/omdev/tokens}/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/doc.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/docker.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/git.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev211/omdev/tools/pawk → omdev-0.0.0.dev213/omdev/tools/json}/__init__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/linehisto.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/notebook.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/pip.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/prof.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/tools/sqlrepl.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev211 → omdev-0.0.0.dev213}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev213
|
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.dev213
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -24,7 +24,6 @@ Requires-Dist: mypy~=1.11; extra == "all"
|
|
24
24
|
Requires-Dist: gprof2dot~=2024.6; extra == "all"
|
25
25
|
Requires-Dist: prompt-toolkit~=3.0; extra == "all"
|
26
26
|
Requires-Dist: segno~=1.6; extra == "all"
|
27
|
-
Requires-Dist: tokenize-rt~=6.1; extra == "all"
|
28
27
|
Requires-Dist: wheel~=0.44; extra == "all"
|
29
28
|
Provides-Extra: black
|
30
29
|
Requires-Dist: black~=24.10; extra == "black"
|
@@ -43,7 +42,5 @@ Provides-Extra: ptk
|
|
43
42
|
Requires-Dist: prompt-toolkit~=3.0; extra == "ptk"
|
44
43
|
Provides-Extra: qr
|
45
44
|
Requires-Dist: segno~=1.6; extra == "qr"
|
46
|
-
Provides-Extra: tokens
|
47
|
-
Requires-Dist: tokenize-rt~=6.1; extra == "tokens"
|
48
45
|
Provides-Extra: wheel
|
49
46
|
Requires-Dist: wheel~=0.44; extra == "wheel"
|
@@ -326,11 +326,25 @@
|
|
326
326
|
}
|
327
327
|
}
|
328
328
|
},
|
329
|
+
{
|
330
|
+
"module": ".tools.mkenv",
|
331
|
+
"attr": "_CLI_MODULE",
|
332
|
+
"file": "omdev/tools/mkenv.py",
|
333
|
+
"line": 123,
|
334
|
+
"value": {
|
335
|
+
"$.cli.types.CliModule": {
|
336
|
+
"cmd_name": [
|
337
|
+
"mkenv"
|
338
|
+
],
|
339
|
+
"mod_name": "omdev.tools.mkenv"
|
340
|
+
}
|
341
|
+
}
|
342
|
+
},
|
329
343
|
{
|
330
344
|
"module": ".tools.mkrelimp",
|
331
345
|
"attr": "_CLI_MODULE",
|
332
346
|
"file": "omdev/tools/mkrelimp.py",
|
333
|
-
"line":
|
347
|
+
"line": 146,
|
334
348
|
"value": {
|
335
349
|
"$.cli.types.CliModule": {
|
336
350
|
"cmd_name": "py/mkrelimp",
|
@@ -8,11 +8,10 @@ from omlish import collections as col
|
|
8
8
|
from omlish import lang
|
9
9
|
from omlish.lite.runtime import LITE_REQUIRED_PYTHON_VERSION
|
10
10
|
|
11
|
-
from .. import
|
11
|
+
from ..tokens import all as tks
|
12
12
|
from .srcfiles import SrcFile
|
13
13
|
from .srcfiles import make_src_file
|
14
14
|
from .strip import strip_main_lines
|
15
|
-
from .types import Tokens
|
16
15
|
from .typing import Typing
|
17
16
|
|
18
17
|
|
@@ -71,7 +70,7 @@ class AmalgGenerator:
|
|
71
70
|
return self._src_files()[self._main_path]
|
72
71
|
|
73
72
|
@cached.function
|
74
|
-
def _header_lines(self) -> list[
|
73
|
+
def _header_lines(self) -> list[str]:
|
75
74
|
header_lines = []
|
76
75
|
|
77
76
|
if self._main_file().header_lines:
|
@@ -4,8 +4,7 @@ import typing as ta
|
|
4
4
|
|
5
5
|
from omlish import check
|
6
6
|
|
7
|
-
from .. import
|
8
|
-
from .types import Tokens
|
7
|
+
from ..tokens import all as tks
|
9
8
|
|
10
9
|
|
11
10
|
##
|
@@ -22,11 +21,11 @@ class Import:
|
|
22
21
|
|
23
22
|
mod_path: str | None
|
24
23
|
|
25
|
-
toks: Tokens = dc.field(repr=False)
|
24
|
+
toks: tks.Tokens = dc.field(repr=False)
|
26
25
|
|
27
26
|
|
28
27
|
def make_import(
|
29
|
-
lts: Tokens,
|
28
|
+
lts: tks.Tokens,
|
30
29
|
*,
|
31
30
|
src_path: str,
|
32
31
|
mounts: ta.Mapping[str, str],
|
@@ -90,7 +89,7 @@ def make_import(
|
|
90
89
|
as_=as_,
|
91
90
|
|
92
91
|
src_path=src_path,
|
93
|
-
line=ft.line,
|
92
|
+
line=check.not_none(ft.line),
|
94
93
|
|
95
94
|
mod_path=mod_path,
|
96
95
|
|
@@ -1,17 +1,14 @@
|
|
1
1
|
import ast
|
2
2
|
|
3
|
-
import tokenize_rt as trt
|
4
|
-
|
5
3
|
from omlish import check
|
6
4
|
|
7
|
-
from .. import
|
8
|
-
from .types import Tokens
|
5
|
+
from ..tokens import all as tks
|
9
6
|
|
10
7
|
|
11
8
|
##
|
12
9
|
|
13
10
|
|
14
|
-
def is_manifest_comment(line: Tokens) -> bool:
|
11
|
+
def is_manifest_comment(line: tks.Tokens) -> bool:
|
15
12
|
if not line:
|
16
13
|
return False
|
17
14
|
|
@@ -22,10 +19,10 @@ def is_manifest_comment(line: Tokens) -> bool:
|
|
22
19
|
|
23
20
|
|
24
21
|
def comment_out_manifest_comment(
|
25
|
-
line: Tokens,
|
26
|
-
cls: list[Tokens],
|
22
|
+
line: tks.Tokens,
|
23
|
+
cls: list[tks.Tokens],
|
27
24
|
i: int,
|
28
|
-
) -> tuple[list[Tokens], int]:
|
25
|
+
) -> tuple[list[tks.Tokens], int]:
|
29
26
|
mls = [line]
|
30
27
|
while True:
|
31
28
|
mls.append(cls[i])
|
@@ -41,8 +38,8 @@ def comment_out_manifest_comment(
|
|
41
38
|
check.isinstance(check.single(mmod.body), ast.Assign)
|
42
39
|
break
|
43
40
|
|
44
|
-
out: list[Tokens] = [
|
45
|
-
[
|
41
|
+
out: list[tks.Tokens] = [
|
42
|
+
[tks.Token('COMMENT', '# ' + tks.join_toks(ml))]
|
46
43
|
for ml in mls
|
47
44
|
]
|
48
45
|
|
@@ -4,10 +4,7 @@ import itertools
|
|
4
4
|
import os.path
|
5
5
|
import typing as ta
|
6
6
|
|
7
|
-
import
|
8
|
-
|
9
|
-
from .. import tokens as tks
|
10
|
-
from .types import Tokens
|
7
|
+
from ..tokens import all as tks
|
11
8
|
|
12
9
|
|
13
10
|
##
|
@@ -19,7 +16,7 @@ class RootLevelResourcesRead(ta.NamedTuple):
|
|
19
16
|
resource: str
|
20
17
|
|
21
18
|
|
22
|
-
def is_root_level_resources_read(lts: Tokens) -> RootLevelResourcesRead | None:
|
19
|
+
def is_root_level_resources_read(lts: tks.Tokens) -> RootLevelResourcesRead | None:
|
23
20
|
wts = list(tks.ignore_ws(lts, keep=['INDENT']))
|
24
21
|
|
25
22
|
if not tks.match_toks(wts, [
|
@@ -47,36 +44,36 @@ def is_root_level_resources_read(lts: Tokens) -> RootLevelResourcesRead | None:
|
|
47
44
|
def build_resource_lines(
|
48
45
|
rsrc: RootLevelResourcesRead,
|
49
46
|
path: str,
|
50
|
-
) -> list[Tokens]:
|
47
|
+
) -> list[tks.Tokens]:
|
51
48
|
rf = os.path.join(os.path.dirname(path), rsrc.resource)
|
52
49
|
|
53
50
|
if rsrc.kind == 'binary':
|
54
51
|
with open(rf, 'rb') as bf:
|
55
52
|
rb = bf.read() # noqa
|
56
53
|
|
57
|
-
out: list[Tokens] = [[
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
54
|
+
out: list[tks.Tokens] = [[
|
55
|
+
tks.Token(name='NAME', src=rsrc.variable),
|
56
|
+
tks.Token(name='UNIMPORTANT_WS', src=' '),
|
57
|
+
tks.Token(name='OP', src='='),
|
58
|
+
tks.Token(name='UNIMPORTANT_WS', src=' '),
|
59
|
+
tks.Token(name='NAME', src='base64'),
|
60
|
+
tks.Token(name='OP', src='.'),
|
61
|
+
tks.Token(name='NAME', src='b64decode'),
|
62
|
+
tks.Token(name='OP', src='('),
|
63
|
+
tks.Token(name='NL', src='\n'),
|
67
64
|
]]
|
68
65
|
|
69
66
|
rb64 = base64.b64encode(rb).decode('ascii')
|
70
67
|
for chunk in itertools.batched(rb64, 96):
|
71
68
|
out.append([
|
72
|
-
|
73
|
-
|
74
|
-
|
69
|
+
tks.Token(name='UNIMPORTANT_WS', src=' '),
|
70
|
+
tks.Token(name='STRING', src=f"'{''.join(chunk)}'"),
|
71
|
+
tks.Token(name='NL', src='\n'),
|
75
72
|
])
|
76
73
|
|
77
74
|
out.append([
|
78
|
-
|
79
|
-
|
75
|
+
tks.Token(name='OP', src=')'),
|
76
|
+
tks.Token(name='NEWLINE', src='\n'),
|
80
77
|
])
|
81
78
|
|
82
79
|
return out
|
@@ -87,12 +84,12 @@ def build_resource_lines(
|
|
87
84
|
rt = rt.replace('\\', '\\\\') # Escape backslashes
|
88
85
|
rt = rt.replace('"""', r'\"\"\"')
|
89
86
|
return [[
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
87
|
+
tks.Token(name='NAME', src=rsrc.variable),
|
88
|
+
tks.Token(name='UNIMPORTANT_WS', src=' '),
|
89
|
+
tks.Token(name='OP', src='='),
|
90
|
+
tks.Token(name='UNIMPORTANT_WS', src=' '),
|
91
|
+
tks.Token(name='STRING', src=f'"""\\\n{rt}""" # noqa\n'),
|
92
|
+
tks.Token(name='NEWLINE', src=''),
|
96
93
|
]]
|
97
94
|
|
98
95
|
else:
|
@@ -1,12 +1,10 @@
|
|
1
1
|
import dataclasses as dc
|
2
2
|
import typing as ta
|
3
3
|
|
4
|
-
import tokenize_rt as trt
|
5
|
-
|
6
4
|
from omlish import collections as col
|
7
5
|
from omlish import lang
|
8
6
|
|
9
|
-
from .. import
|
7
|
+
from ..tokens import all as tks
|
10
8
|
from .imports import Import
|
11
9
|
from .imports import make_import
|
12
10
|
from .manifests import comment_out_manifest_comment
|
@@ -15,7 +13,6 @@ from .resources import build_resource_lines
|
|
15
13
|
from .resources import is_root_level_resources_read
|
16
14
|
from .strip import split_header_lines
|
17
15
|
from .strip import strip_header_lines
|
18
|
-
from .types import Tokens
|
19
16
|
from .typing import Typing
|
20
17
|
from .typing import is_root_level_if_type_checking_block
|
21
18
|
from .typing import make_typing
|
@@ -30,13 +27,13 @@ class SrcFile:
|
|
30
27
|
path: str
|
31
28
|
|
32
29
|
src: str = dc.field(repr=False)
|
33
|
-
tokens: Tokens = dc.field(repr=False)
|
34
|
-
lines: ta.Sequence[Tokens] = dc.field(repr=False)
|
30
|
+
tokens: tks.Tokens = dc.field(repr=False)
|
31
|
+
lines: ta.Sequence[tks.Tokens] = dc.field(repr=False)
|
35
32
|
|
36
|
-
header_lines: ta.Sequence[Tokens] = dc.field(repr=False)
|
33
|
+
header_lines: ta.Sequence[tks.Tokens] = dc.field(repr=False)
|
37
34
|
imports: ta.Sequence[Import] = dc.field(repr=False)
|
38
35
|
typings: ta.Sequence[Typing] = dc.field(repr=False)
|
39
|
-
content_lines: ta.Sequence[Tokens] = dc.field(repr=False)
|
36
|
+
content_lines: ta.Sequence[tks.Tokens] = dc.field(repr=False)
|
40
37
|
|
41
38
|
ruff_noqa: ta.AbstractSet[str] = dc.field(repr=False)
|
42
39
|
|
@@ -51,7 +48,7 @@ def make_src_file(
|
|
51
48
|
with open(path) as f:
|
52
49
|
src = f.read().strip()
|
53
50
|
|
54
|
-
tokens =
|
51
|
+
tokens = tks.src_to_tokens(src)
|
55
52
|
lines = tks.split_lines(tokens)
|
56
53
|
|
57
54
|
header_lines, cls = split_header_lines(lines)
|
@@ -61,7 +58,7 @@ def make_src_file(
|
|
61
58
|
|
62
59
|
imps: list[Import] = []
|
63
60
|
tys: list[Typing] = []
|
64
|
-
ctls: list[Tokens] = []
|
61
|
+
ctls: list[tks.Tokens] = []
|
65
62
|
|
66
63
|
has_binary_resources = False
|
67
64
|
|
@@ -2,8 +2,7 @@ import re
|
|
2
2
|
import typing as ta
|
3
3
|
|
4
4
|
from .. import magic
|
5
|
-
from .. import
|
6
|
-
from .types import Tokens
|
5
|
+
from ..tokens import all as tks
|
7
6
|
|
8
7
|
|
9
8
|
##
|
@@ -12,7 +11,7 @@ from .types import Tokens
|
|
12
11
|
HEADER_NAMES = (*tks.WS_NAMES, 'COMMENT', 'STRING')
|
13
12
|
|
14
13
|
|
15
|
-
def split_header_lines(lines: ta.Iterable[Tokens]) -> tuple[list[Tokens], list[Tokens]]:
|
14
|
+
def split_header_lines(lines: ta.Iterable[tks.Tokens]) -> tuple[list[tks.Tokens], list[tks.Tokens]]:
|
16
15
|
ws = []
|
17
16
|
nws = []
|
18
17
|
for line in (it := iter(lines)):
|
@@ -31,7 +30,7 @@ def split_header_lines(lines: ta.Iterable[Tokens]) -> tuple[list[Tokens], list[T
|
|
31
30
|
IF_MAIN_PAT = re.compile(r'if\s+__name__\s+==\s+[\'"]__main__[\'"]\s*:')
|
32
31
|
|
33
32
|
|
34
|
-
def strip_main_lines(cls: ta.Sequence[Tokens]) -> list[Tokens]:
|
33
|
+
def strip_main_lines(cls: ta.Sequence[tks.Tokens]) -> list[tks.Tokens]:
|
35
34
|
out = []
|
36
35
|
|
37
36
|
for l in (it := iter(cls)):
|
@@ -59,7 +58,7 @@ STRIPPED_HEADER_PAT = magic.compile_magic_style_pat(
|
|
59
58
|
)
|
60
59
|
|
61
60
|
|
62
|
-
def strip_header_lines(hls: ta.Sequence[Tokens]) -> list[Tokens]:
|
61
|
+
def strip_header_lines(hls: ta.Sequence[tks.Tokens]) -> list[tks.Tokens]:
|
63
62
|
if hls and tks.join_toks(hls[0]).startswith('#!'):
|
64
63
|
hls = hls[1:]
|
65
64
|
out = []
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import dataclasses as dc
|
2
2
|
|
3
|
-
from
|
4
|
-
|
3
|
+
from omlish import check
|
4
|
+
|
5
|
+
from ..tokens import all as tks
|
5
6
|
|
6
7
|
|
7
8
|
##
|
@@ -18,11 +19,11 @@ class Typing:
|
|
18
19
|
src_path: str
|
19
20
|
line: int
|
20
21
|
|
21
|
-
toks: Tokens = dc.field(repr=False)
|
22
|
+
toks: tks.Tokens = dc.field(repr=False)
|
22
23
|
|
23
24
|
|
24
25
|
def _is_typing(
|
25
|
-
lts: Tokens,
|
26
|
+
lts: tks.Tokens,
|
26
27
|
*,
|
27
28
|
exclude_newtypes: bool = False,
|
28
29
|
) -> bool:
|
@@ -48,7 +49,7 @@ def _is_typing(
|
|
48
49
|
|
49
50
|
|
50
51
|
def make_typing(
|
51
|
-
lts: Tokens,
|
52
|
+
lts: tks.Tokens,
|
52
53
|
*,
|
53
54
|
src_path: str,
|
54
55
|
) -> Typing | None:
|
@@ -63,7 +64,7 @@ def make_typing(
|
|
63
64
|
src=tks.join_toks(lts),
|
64
65
|
|
65
66
|
src_path=src_path,
|
66
|
-
line=ft.line,
|
67
|
+
line=check.not_none(ft.line),
|
67
68
|
|
68
69
|
toks=lts,
|
69
70
|
)
|
@@ -72,7 +73,7 @@ def make_typing(
|
|
72
73
|
##
|
73
74
|
|
74
75
|
|
75
|
-
def is_root_level_if_type_checking_block(lts: Tokens) -> bool:
|
76
|
+
def is_root_level_if_type_checking_block(lts: tks.Tokens) -> bool:
|
76
77
|
return tks.match_toks(tks.ignore_ws(lts, keep=['INDENT']), [
|
77
78
|
('NAME', 'if'),
|
78
79
|
('NAME', 'ta'),
|
@@ -83,7 +84,7 @@ def is_root_level_if_type_checking_block(lts: Tokens) -> bool:
|
|
83
84
|
|
84
85
|
|
85
86
|
def skip_root_level_if_type_checking_block(
|
86
|
-
cls: list[Tokens],
|
87
|
+
cls: list[tks.Tokens],
|
87
88
|
i: int,
|
88
89
|
) -> int:
|
89
90
|
def skip_block():
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import dataclasses as dc
|
2
|
+
import tomllib
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
from omlish import cached
|
6
|
+
from omlish import lang
|
7
|
+
from omlish import marshal as msh
|
8
|
+
from omlish.configs import all as configs
|
9
|
+
|
10
|
+
|
11
|
+
@dc.dataclass(frozen=True)
|
12
|
+
class Cdep:
|
13
|
+
@dc.dataclass(frozen=True)
|
14
|
+
class Git:
|
15
|
+
url: str
|
16
|
+
rev: str
|
17
|
+
|
18
|
+
subtrees: ta.Sequence[str] | None = None
|
19
|
+
|
20
|
+
git: Git
|
21
|
+
|
22
|
+
#
|
23
|
+
|
24
|
+
sources: ta.Sequence[str] | None = None
|
25
|
+
include: ta.Sequence[str] | None = None
|
26
|
+
|
27
|
+
#
|
28
|
+
|
29
|
+
@dc.dataclass(frozen=True)
|
30
|
+
class Cmake:
|
31
|
+
@dc.dataclass(frozen=True)
|
32
|
+
class FetchContent:
|
33
|
+
url: str | None = None
|
34
|
+
|
35
|
+
@dc.dataclass(frozen=True)
|
36
|
+
class Git:
|
37
|
+
repository: str | None = None
|
38
|
+
tag: str | None = None
|
39
|
+
|
40
|
+
git: Git | None = None
|
41
|
+
|
42
|
+
fetch_content: FetchContent | None = None
|
43
|
+
|
44
|
+
cmake: Cmake | None = None
|
45
|
+
|
46
|
+
|
47
|
+
def process_marshaled_cdep(obj: ta.Any) -> ta.Any:
|
48
|
+
obj = configs.processing.matched_rewrite(
|
49
|
+
lambda s: s if isinstance(s, str) else ''.join(s),
|
50
|
+
obj,
|
51
|
+
('sources', None),
|
52
|
+
('include', None),
|
53
|
+
)
|
54
|
+
|
55
|
+
return obj
|
56
|
+
|
57
|
+
|
58
|
+
@cached.function
|
59
|
+
def load_cdeps() -> ta.Mapping[str, Cdep]:
|
60
|
+
src = lang.get_relative_resources(globals=globals())['cdeps.toml'].read_text()
|
61
|
+
dct = tomllib.loads(src)
|
62
|
+
|
63
|
+
dct = {
|
64
|
+
**dct,
|
65
|
+
'deps': {
|
66
|
+
k: process_marshaled_cdep(v)
|
67
|
+
for k, v in dct.get('deps', {}).items()
|
68
|
+
},
|
69
|
+
}
|
70
|
+
|
71
|
+
return msh.unmarshal(dct.get('deps', {}), ta.Mapping[str, Cdep]) # type: ignore
|
@@ -1,3 +1,18 @@
|
|
1
|
+
[deps.httplib]
|
2
|
+
include = ['.']
|
3
|
+
|
4
|
+
[deps.httplib.git]
|
5
|
+
url = 'https://github.com/yhirose/cpp-httplib'
|
6
|
+
rev = 'a7bc00e3307fecdb4d67545e93be7b88cfb1e186'
|
7
|
+
subtrees = ['httplib.h']
|
8
|
+
|
9
|
+
[deps.httplib.cmake.fetch_content.git]
|
10
|
+
repository = 'https://github.com/yhirose/cpp-httplib.git'
|
11
|
+
tag = 'a7bc00e3307fecdb4d67545e93be7b88cfb1e186'
|
12
|
+
|
13
|
+
|
14
|
+
#
|
15
|
+
|
1
16
|
[deps.json]
|
2
17
|
include = ['single_include']
|
3
18
|
|
@@ -6,8 +21,9 @@ url = 'https://github.com/nlohmann/json'
|
|
6
21
|
rev = '9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03'
|
7
22
|
subtrees = ['single_include']
|
8
23
|
|
9
|
-
[deps.json.cmake]
|
10
|
-
|
24
|
+
[deps.json.cmake.fetch_content]
|
25
|
+
url = 'https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz'
|
26
|
+
|
11
27
|
|
12
28
|
#
|
13
29
|
|
@@ -19,6 +35,7 @@ url = 'https://github.com/pybind/pybind11'
|
|
19
35
|
rev = '945e251a6ce7273058b36214d94415e9c9530b8e'
|
20
36
|
subtrees = ['include']
|
21
37
|
|
38
|
+
|
22
39
|
#
|
23
40
|
|
24
41
|
[deps.ut]
|
@@ -18,6 +18,8 @@ Freestanding options:
|
|
18
18
|
TODO:
|
19
19
|
- cext interop
|
20
20
|
- gen cmake
|
21
|
+
- fix CFLAGS/CCFLAGS/CPPFLAGS/CXXFLAGS
|
22
|
+
- jit-gen cmake mode? multi-src builds
|
21
23
|
"""
|
22
24
|
import os
|
23
25
|
import shlex
|
@@ -35,6 +37,7 @@ from .. import magic
|
|
35
37
|
from ..cache import data as dcache
|
36
38
|
from .cdeps import Cdep
|
37
39
|
from .cdeps import load_cdeps
|
40
|
+
from .cdeps import process_marshaled_cdep
|
38
41
|
|
39
42
|
|
40
43
|
class Cli(ap.Cli):
|
@@ -64,16 +67,22 @@ class Cli(ap.Cli):
|
|
64
67
|
if src_magic.key == '@omlish-cdeps':
|
65
68
|
for dep in check.isinstance(src_magic.prepared, ta.Sequence):
|
66
69
|
if isinstance(dep, ta.Mapping):
|
67
|
-
dep =
|
70
|
+
dep = process_marshaled_cdep(dep)
|
71
|
+
dep = msh.unmarshal(dep, Cdep)
|
68
72
|
else:
|
69
73
|
dep = load_cdeps()[check.isinstance(dep, str)]
|
70
74
|
|
75
|
+
if dep.sources:
|
76
|
+
# TODO
|
77
|
+
raise NotImplementedError
|
78
|
+
|
71
79
|
dep_spec = dcache.GitSpec(
|
72
80
|
url=dep.git.url,
|
73
81
|
rev=dep.git.rev,
|
74
82
|
subtrees=dep.git.subtrees,
|
75
83
|
)
|
76
84
|
dep_dir = dcache.default().get(dep_spec)
|
85
|
+
|
77
86
|
for dep_inc in dep.include or []:
|
78
87
|
inc_dir = os.path.join(dep_dir, dep_inc)
|
79
88
|
check.state(os.path.isdir(inc_dir))
|
@@ -96,6 +105,9 @@ class Cli(ap.Cli):
|
|
96
105
|
if cflags := os.environ.get('CFLAGS'):
|
97
106
|
sh_parts.append(cflags) # Explicitly shell-unquoted
|
98
107
|
|
108
|
+
if ldflags := os.environ.get('LDFLAGS'):
|
109
|
+
sh_parts.append(ldflags) # Explicitly shell-unquoted
|
110
|
+
|
99
111
|
sh_parts.extend([
|
100
112
|
'-std=c++20',
|
101
113
|
shlex.quote(os.path.abspath(src_file)),
|