calkit-python 0.38.3__tar.gz → 0.39.0__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.
- {calkit_python-0.38.3 → calkit_python-0.39.0}/AGENTS.md +4 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/PKG-INFO +5 -5
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/check.py +1 -2
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/check.py +1 -3
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/config.py +1 -2
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/core.py +35 -1
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/import_.py +4 -8
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/list.py +16 -12
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/main/core.py +130 -54
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/main/xr.py +2 -2
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/new.py +27 -59
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/overleaf.py +5 -5
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/update.py +5 -12
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/core.py +6 -16
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/dvc/core.py +1 -2
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/dvc/zip.py +1 -3
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/git.py +18 -4
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/jupyterlab/routes.py +5 -6
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/notebooks.py +1 -3
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/pipeline.py +374 -48
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/releases.py +1 -3
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/server.py +17 -15
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/main/test_core.py +74 -0
- calkit_python-0.39.0/calkit/tests/cli/main/test_subprojects.py +298 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/dvc/test_core.py +1 -1
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_pipeline.py +193 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/cli-reference.md +274 -271
- calkit_python-0.39.0/docs/subprojects.md +18 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/mkdocs.yml +1 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/pyproject.toml +4 -4
- {calkit_python-0.38.3 → calkit_python-0.39.0}/uv.lock +60 -54
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.claude-plugin/marketplace.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.gitignore +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.prettierignore +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.python-version +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.vscode/launch.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.vscode/tasks.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/.yarnrc.yml +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/CITATION.cff +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/CONTRIBUTING.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/LICENSE +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/Makefile +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/README.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/agent-plugin/.claude-plugin/plugin.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/agent-plugin/skills/conventions/SKILL.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/babel.config.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/__main__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/calc.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/describe.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/dev.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/latex.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/main/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/office.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cli/slurm.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/cloud.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/conda.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/config.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/datasets.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/detect.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/docker.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/dvc/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/environments.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/fs.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/github.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/gui.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/invenio.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/julia.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/jupyter.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/package.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/remoteEntry.65469af996e7a96aa983.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/licenses.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/magics.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/matlab.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/models/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/models/core.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/models/io.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/models/iteration.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/office.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/ops.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/overleaf.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/core.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/main/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/main/test_xr.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_cloud.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/cli/test_update.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/dvc/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/dvc/test_zip.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_cloud.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_detect.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_docker.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_environments.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_fs.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_git.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_julia.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_releases.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/conftest.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/CNAME +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/ai-tools.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/apps.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/calculations.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/cloud-integration.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/datasets.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/dependencies.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/environments.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/examples.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/governance.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/help.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/index.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/installation.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/jupyterlab.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/local-server.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/notebooks.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/overleaf.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/pipeline/index.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/pipeline/slurm.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/quickstart.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/references.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/releases.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/reproducibility.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/index.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/office.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/tutorials/vscode-slurm-notebook.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/docs/version-control.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/install.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/jest.config.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/package.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/schema/plugin.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/scripts/generate-docs-references.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/scripts/install.ps1 +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/scripts/install.sh +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/scripts/sync-docs.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/calkit-config.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/cell-output-marker.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/sidebar.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/feature-flags.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/file-browser-menu.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/icons.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/index.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/io-tracker.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/pipeline-state.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/queryClient.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/request.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/base.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/cell-output-marker.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/environment-editor.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/environment-selector.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/index.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/index.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/notebook-toolbar.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/style/sidebar.css +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/nb-params.ipynb +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/pipeline.ipynb +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/script.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/test/test-log.log +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/tsconfig.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/tsconfig.test.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/.gitignore +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/README.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/package.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/ui-tests/yarn.lock +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/.gitignore +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/.vscodeignore +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/CHANGELOG.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/LICENSE +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/README.md +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/images/calkit-no-bg.png +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/package-lock.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/package.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/scripts/set-proposed-api.js +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/environments.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/extension.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/notebooks.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/test/environments.test.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/test/notebooks.test.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/src/types.ts +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/vscode-ext/tsconfig.json +0 -0
- {calkit_python-0.38.3 → calkit_python-0.39.0}/yarn.lock +0 -0
|
@@ -21,3 +21,7 @@ Agents should never make commits to Git.
|
|
|
21
21
|
|
|
22
22
|
Prefer tests that include multiple scenarios to comprehensively test
|
|
23
23
|
a feature in one function over many different test functions.
|
|
24
|
+
|
|
25
|
+
Do not write docstrings in test functions.
|
|
26
|
+
|
|
27
|
+
For prose, only use one space after punctuation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: calkit-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.39.0
|
|
4
4
|
Summary: Reproducibility simplified.
|
|
5
5
|
Project-URL: Homepage, https://calkit.org
|
|
6
6
|
Project-URL: Issues, https://github.com/calkit/calkit/issues
|
|
@@ -26,9 +26,9 @@ Requires-Dist: arithmeval
|
|
|
26
26
|
Requires-Dist: bibtexparser
|
|
27
27
|
Requires-Dist: checksumdir
|
|
28
28
|
Requires-Dist: docx2pdf
|
|
29
|
-
Requires-Dist: dvc==3.
|
|
29
|
+
Requires-Dist: dvc==3.67.1
|
|
30
30
|
Requires-Dist: fastapi
|
|
31
|
-
Requires-Dist: fsspec>=2026.
|
|
31
|
+
Requires-Dist: fsspec>=2026.4.0
|
|
32
32
|
Requires-Dist: gitpython
|
|
33
33
|
Requires-Dist: json2latex>=0.0.3
|
|
34
34
|
Requires-Dist: jupyterlab>=4.4.5
|
|
@@ -45,10 +45,10 @@ Requires-Dist: python-dotenv>=1
|
|
|
45
45
|
Requires-Dist: pywin32; platform_system == 'Windows'
|
|
46
46
|
Requires-Dist: requests
|
|
47
47
|
Requires-Dist: sqlitedict>=2.1.0
|
|
48
|
-
Requires-Dist: texsoup>=0.3.
|
|
48
|
+
Requires-Dist: texsoup>=0.3.3
|
|
49
49
|
Requires-Dist: toml>=0.10.2
|
|
50
50
|
Requires-Dist: tqdm>=4.67.1
|
|
51
|
-
Requires-Dist: typer==0.
|
|
51
|
+
Requires-Dist: typer==0.25.1
|
|
52
52
|
Requires-Dist: uvicorn
|
|
53
53
|
Provides-Extra: data
|
|
54
54
|
Requires-Dist: pandas>=2.2.3; extra == 'data'
|
|
@@ -174,14 +174,13 @@ def check_reproducibility(
|
|
|
174
174
|
wdir: str = ".", log_func: Callable | None = None
|
|
175
175
|
) -> ReproCheck:
|
|
176
176
|
"""Check the reproducibility of a project."""
|
|
177
|
-
import git
|
|
178
177
|
from git.exc import InvalidGitRepositoryError
|
|
179
178
|
|
|
180
179
|
res = dict()
|
|
181
180
|
if log_func is None:
|
|
182
181
|
log_func = print
|
|
183
182
|
try:
|
|
184
|
-
git.
|
|
183
|
+
calkit.git.get_repo(wdir)
|
|
185
184
|
res["is_git_repo"] = True
|
|
186
185
|
except InvalidGitRepositoryError:
|
|
187
186
|
res["is_git_repo"] = False
|
|
@@ -1292,9 +1292,7 @@ def check_env_vars(
|
|
|
1292
1292
|
dotenv_path=".env", key_to_set=name, value_to_set=value
|
|
1293
1293
|
)
|
|
1294
1294
|
# Ensure that .env is ignored by git
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
repo = git.Repo()
|
|
1295
|
+
repo = calkit.git.get_repo()
|
|
1298
1296
|
if not repo.ignored(".env"):
|
|
1299
1297
|
typer.echo("Adding .env to .gitignore")
|
|
1300
1298
|
with open(".gitignore", "a") as f:
|
|
@@ -92,7 +92,6 @@ def setup_remote(
|
|
|
92
92
|
"""Setup the Calkit cloud as the default DVC remote and store a token in
|
|
93
93
|
the local config.
|
|
94
94
|
"""
|
|
95
|
-
import git
|
|
96
95
|
from git.exc import InvalidGitRepositoryError
|
|
97
96
|
|
|
98
97
|
from calkit.dvc import configure_remote, set_remote_auth
|
|
@@ -113,7 +112,7 @@ def setup_remote(
|
|
|
113
112
|
except (ValueError, RuntimeError) as e:
|
|
114
113
|
raise_error(f"Failed to set up DVC remote: {e}")
|
|
115
114
|
if not no_commit:
|
|
116
|
-
repo = git.
|
|
115
|
+
repo = calkit.git.get_repo()
|
|
117
116
|
repo.git.add(".dvc/config")
|
|
118
117
|
if ".dvc/config" in calkit.git.get_staged_files():
|
|
119
118
|
typer.echo("Committing changes to DVC config")
|
|
@@ -3,15 +3,34 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
+
import re
|
|
6
7
|
import subprocess
|
|
7
8
|
from typing import TYPE_CHECKING
|
|
8
9
|
|
|
9
10
|
import typer
|
|
11
|
+
from typer.core import TyperGroup
|
|
10
12
|
|
|
11
13
|
if TYPE_CHECKING:
|
|
12
14
|
import click
|
|
13
15
|
|
|
14
16
|
|
|
17
|
+
class AliasGroup(TyperGroup):
|
|
18
|
+
"""TyperGroup that resolves command aliases defined with '|' in the name."""
|
|
19
|
+
|
|
20
|
+
_CMD_SPLIT_P = re.compile(r" ?[,|] ?")
|
|
21
|
+
|
|
22
|
+
def get_command(self, ctx, cmd_name):
|
|
23
|
+
cmd_name = self._group_cmd_name(cmd_name)
|
|
24
|
+
return super().get_command(ctx, cmd_name)
|
|
25
|
+
|
|
26
|
+
def _group_cmd_name(self, default_name):
|
|
27
|
+
for cmd in self.commands.values():
|
|
28
|
+
name = cmd.name
|
|
29
|
+
if name and default_name in self._CMD_SPLIT_P.split(name):
|
|
30
|
+
return name
|
|
31
|
+
return default_name
|
|
32
|
+
|
|
33
|
+
|
|
15
34
|
def complete_stage_names(
|
|
16
35
|
ctx: "click.Context",
|
|
17
36
|
param: "click.Parameter",
|
|
@@ -27,10 +46,25 @@ def complete_stage_names(
|
|
|
27
46
|
ryaml = ruamel.yaml.YAML()
|
|
28
47
|
with open("calkit.yaml") as f:
|
|
29
48
|
info = ryaml.load(f) or {}
|
|
49
|
+
candidates: list[str] = []
|
|
30
50
|
stages = info.get("pipeline", {}).get("stages", {})
|
|
51
|
+
candidates.extend(stages.keys())
|
|
52
|
+
for sp_cfg in info.get("subprojects", []):
|
|
53
|
+
if not isinstance(sp_cfg, dict) or not sp_cfg.get("path"):
|
|
54
|
+
continue
|
|
55
|
+
sp_path = sp_cfg["path"]
|
|
56
|
+
sp_calkit = os.path.join(sp_path, "calkit.yaml")
|
|
57
|
+
sp_name = os.path.basename(sp_path.rstrip("/"))
|
|
58
|
+
candidates.append(sp_name)
|
|
59
|
+
if os.path.isfile(sp_calkit):
|
|
60
|
+
with open(sp_calkit) as f:
|
|
61
|
+
sp_info = ryaml.load(f) or {}
|
|
62
|
+
sp_stages = sp_info.get("pipeline", {}).get("stages", {})
|
|
63
|
+
for stage in sp_stages:
|
|
64
|
+
candidates.append(f"{sp_name}:{stage}")
|
|
31
65
|
return [
|
|
32
66
|
CompletionItem(name)
|
|
33
|
-
for name in
|
|
67
|
+
for name in candidates
|
|
34
68
|
if name.startswith(incomplete)
|
|
35
69
|
]
|
|
36
70
|
except Exception:
|
|
@@ -72,7 +72,6 @@ def import_dataset(
|
|
|
72
72
|
|
|
73
73
|
Currently only supports datasets kept in DVC, not Git.
|
|
74
74
|
"""
|
|
75
|
-
import git
|
|
76
75
|
import requests
|
|
77
76
|
from tqdm import tqdm
|
|
78
77
|
|
|
@@ -95,7 +94,7 @@ def import_dataset(
|
|
|
95
94
|
raise_error("A dataset already exists in this project at this path")
|
|
96
95
|
elif overwrite and ds_dest_path in ds_paths:
|
|
97
96
|
datasets = [ds for ds in datasets if ds["path"] != ds_dest_path]
|
|
98
|
-
repo = git.
|
|
97
|
+
repo = calkit.git.get_repo()
|
|
99
98
|
# Obtain, save, and commit the .dvc file for the dataset, or if this is
|
|
100
99
|
# kept in Git, just download the files and commit them here
|
|
101
100
|
typer.echo("Fetching import info")
|
|
@@ -261,8 +260,6 @@ def import_environment(
|
|
|
261
260
|
] = False,
|
|
262
261
|
) -> None:
|
|
263
262
|
"""Import an environment from another project."""
|
|
264
|
-
import git
|
|
265
|
-
|
|
266
263
|
raise_error(
|
|
267
264
|
"This command is not yet implemented; "
|
|
268
265
|
"please thumbs-up this issue if you'd like to see "
|
|
@@ -317,7 +314,7 @@ def import_environment(
|
|
|
317
314
|
ck_info["environments"] = environments
|
|
318
315
|
with open("calkit.yaml", "w") as f:
|
|
319
316
|
calkit.ryaml.dump(ck_info, f)
|
|
320
|
-
repo = git.
|
|
317
|
+
repo = calkit.git.get_repo()
|
|
321
318
|
repo.git.add("calkit.yaml")
|
|
322
319
|
if not no_commit and calkit.git.get_staged_files():
|
|
323
320
|
repo.git.commit(["-m", f"Import environment {src}"])
|
|
@@ -371,7 +368,6 @@ def import_from_zenodo(
|
|
|
371
368
|
] = False,
|
|
372
369
|
):
|
|
373
370
|
"""Import files from a Zenodo record."""
|
|
374
|
-
import git
|
|
375
371
|
import requests
|
|
376
372
|
|
|
377
373
|
from calkit.dvc import run_dvc_command
|
|
@@ -440,7 +436,7 @@ def import_from_zenodo(
|
|
|
440
436
|
for chunk in resp.iter_content(chunk_size=8192):
|
|
441
437
|
f.write(chunk)
|
|
442
438
|
# Decide if this should be stored in Git or DVC
|
|
443
|
-
repo = git.
|
|
439
|
+
repo = calkit.git.get_repo()
|
|
444
440
|
commit_paths = []
|
|
445
441
|
if storage is None:
|
|
446
442
|
if calkit.get_size(dest_dir) > calkit.DVC_SIZE_THRESH_BYTES:
|
|
@@ -508,7 +504,7 @@ def import_from_zenodo(
|
|
|
508
504
|
json.dump(imports, f, indent=2)
|
|
509
505
|
# Commit if desired
|
|
510
506
|
if not no_commit:
|
|
511
|
-
repo = git.
|
|
507
|
+
repo = calkit.git.get_repo()
|
|
512
508
|
repo.git.add(commit_paths)
|
|
513
509
|
if repo.git.diff(commit_paths + ["--staged"]):
|
|
514
510
|
repo.git.commit(
|
|
@@ -7,9 +7,9 @@ from typing import Annotated, Literal
|
|
|
7
7
|
import typer
|
|
8
8
|
|
|
9
9
|
import calkit
|
|
10
|
-
from calkit.cli import warn
|
|
10
|
+
from calkit.cli import AliasGroup, warn
|
|
11
11
|
|
|
12
|
-
list_app = typer.Typer(no_args_is_help=True)
|
|
12
|
+
list_app = typer.Typer(cls=AliasGroup, no_args_is_help=True)
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def _list_objects(
|
|
@@ -50,33 +50,37 @@ def _list_objects(
|
|
|
50
50
|
typer.echo(f" {k}: {v}")
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
@list_app.command(name="notebooks")
|
|
53
|
+
@list_app.command(name="notebooks|nb")
|
|
54
54
|
def list_notebooks():
|
|
55
|
+
"""List notebooks in the project."""
|
|
55
56
|
_list_objects("notebooks")
|
|
56
57
|
|
|
57
58
|
|
|
58
|
-
@list_app.command(name="figures")
|
|
59
|
+
@list_app.command(name="figures|figs")
|
|
59
60
|
def list_figures():
|
|
61
|
+
"""List figures in the project."""
|
|
60
62
|
_list_objects("figures")
|
|
61
63
|
|
|
62
64
|
|
|
63
65
|
@list_app.command(name="datasets")
|
|
64
66
|
def list_datasets():
|
|
67
|
+
"""List datasets in the project."""
|
|
65
68
|
_list_objects("datasets")
|
|
66
69
|
|
|
67
70
|
|
|
68
|
-
@list_app.command(name="publications")
|
|
71
|
+
@list_app.command(name="publications|pubs")
|
|
69
72
|
def list_publications():
|
|
73
|
+
"""List publications in the project."""
|
|
70
74
|
_list_objects("publications")
|
|
71
75
|
|
|
72
76
|
|
|
73
|
-
@list_app.command(name="references")
|
|
77
|
+
@list_app.command(name="references|refs")
|
|
74
78
|
def list_references():
|
|
79
|
+
"""List reference collections in the project."""
|
|
75
80
|
_list_objects("references")
|
|
76
81
|
|
|
77
82
|
|
|
78
|
-
@list_app.command(name="environments")
|
|
79
|
-
@list_app.command(name="envs")
|
|
83
|
+
@list_app.command(name="environments|envs")
|
|
80
84
|
def list_environments():
|
|
81
85
|
"""List environments in the project."""
|
|
82
86
|
envs = calkit.load_calkit_info().get("environments", {})
|
|
@@ -88,6 +92,7 @@ def list_environments():
|
|
|
88
92
|
|
|
89
93
|
@list_app.command(name="templates")
|
|
90
94
|
def list_templates():
|
|
95
|
+
"""List all available Calkit templates."""
|
|
91
96
|
for kind, tpl_dict in calkit.templates.TEMPLATES.items():
|
|
92
97
|
for name in tpl_dict:
|
|
93
98
|
typer.echo(f"{kind}/{name}")
|
|
@@ -95,6 +100,7 @@ def list_templates():
|
|
|
95
100
|
|
|
96
101
|
@list_app.command(name="procedures")
|
|
97
102
|
def list_procedures():
|
|
103
|
+
"""List procedures in the current project."""
|
|
98
104
|
ck_info = calkit.load_calkit_info()
|
|
99
105
|
for p in ck_info.get("procedures", {}):
|
|
100
106
|
typer.echo(p)
|
|
@@ -134,7 +140,7 @@ def list_stages(
|
|
|
134
140
|
typer.Option("--kind", "-k", help="Filter stages by kind."),
|
|
135
141
|
] = None,
|
|
136
142
|
):
|
|
137
|
-
"""List stages."""
|
|
143
|
+
"""List pipeline stages."""
|
|
138
144
|
stages = calkit.load_calkit_info().get("pipeline", {}).get("stages", {})
|
|
139
145
|
for name, stage in stages.items():
|
|
140
146
|
if kinds is not None and stage.get("kind") not in kinds:
|
|
@@ -145,10 +151,8 @@ def list_stages(
|
|
|
145
151
|
@list_app.command(name="remotes")
|
|
146
152
|
def list_remotes():
|
|
147
153
|
"""List Git and DVC remotes."""
|
|
148
|
-
import git
|
|
149
|
-
|
|
150
154
|
try:
|
|
151
|
-
repo = git.
|
|
155
|
+
repo = calkit.git.get_repo()
|
|
152
156
|
for remote in repo.remotes:
|
|
153
157
|
typer.echo(f"(Git) {remote.name}: {remote.url}")
|
|
154
158
|
except Exception as e:
|