calkit-python 0.34.0__tar.gz → 0.34.2__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.34.0 → calkit_python-0.34.2}/.pre-commit-config.yaml +4 -2
- {calkit_python-0.34.0 → calkit_python-0.34.2}/CONTRIBUTING.md +11 -1
- {calkit_python-0.34.0 → calkit_python-0.34.2}/Makefile +7 -2
- {calkit_python-0.34.0 → calkit_python-0.34.2}/PKG-INFO +79 -112
- calkit_python-0.34.2/README.md +230 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/check.py +38 -40
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/main.py +83 -33
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/new.py +2 -1
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/notebooks.py +26 -10
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/slurm.py +1 -1
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/detect.py +293 -81
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/dvc.py +5 -3
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/environments.py +343 -20
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/jupyterlab/routes.py +9 -3
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/matlab.py +199 -51
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/models/pipeline.py +19 -7
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_main.py +75 -20
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/models/test_pipeline.py +25 -5
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_detect.py +91 -10
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_environments.py +136 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/environments.md +36 -2
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/installation.md +14 -14
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/pipeline/index.md +25 -1
- calkit_python-0.34.2/docs/quickstart.md +92 -0
- calkit_python-0.34.2/docs/reproducibility.md +104 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/mkdocs.yml +1 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/pyproject.toml +3 -1
- calkit_python-0.34.2/scripts/sync-docs.py +161 -0
- calkit_python-0.34.0/README.md +0 -263
- calkit_python-0.34.0/docs/quickstart.md +0 -94
- {calkit_python-0.34.0 → calkit_python-0.34.2}/.gitignore +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/.prettierignore +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/.python-version +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/.yarnrc.yml +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/CITATION.cff +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/LICENSE +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/babel.config.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/__main__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/calc.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/check.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/config.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/describe.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/import_.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/latex.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/list.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/office.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cli/update.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/cloud.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/conda.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/config.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/datasets.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/docker.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/git.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/github.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/gui.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/invenio.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/jupyter.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/package.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/909.99b13e1e3c2a6e1ceb30.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/remoteEntry.63846b8de2465d49bd89.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/licenses.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/magics.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/models/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/models/core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/models/io.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/models/iteration.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/notebooks.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/office.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/ops.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/overleaf.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/pipeline.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/releases.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/server.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_dvc.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_git.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_pipeline.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/conftest.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/CNAME +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/apps.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/calculations.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/cli-reference.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/cloud-integration.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/datasets.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/dependencies.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/examples.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/governance.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/help.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/index.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/jupyterlab.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/local-server.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/notebooks.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/overleaf.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/pipeline/slurm.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/references.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/releases.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/index.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/office.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/docs/version-control.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/install.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/jest.config.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/package.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/schema/plugin.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/scripts/install.ps1 +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/scripts/install.sh +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/calkit-config.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/cell-output-marker.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/sidebar.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/feature-flags.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/file-browser-menu.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/icons.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/index.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/io-tracker.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/pipeline-state.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/queryClient.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/request.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/base.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/cell-output-marker.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/environment-editor.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/environment-selector.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/index.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/index.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/notebook-toolbar.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/style/sidebar.css +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/nb-params.ipynb +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/pipeline.ipynb +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/script.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/test/test-log.log +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/tsconfig.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/tsconfig.test.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/.gitignore +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/README.md +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/package.json +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/ui-tests/yarn.lock +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/uv.lock +0 -0
- {calkit_python-0.34.0 → calkit_python-0.34.2}/yarn.lock +0 -0
|
@@ -6,14 +6,16 @@ repos:
|
|
|
6
6
|
- id: check-merge-conflict
|
|
7
7
|
- id: end-of-file-fixer
|
|
8
8
|
- id: trailing-whitespace
|
|
9
|
+
- id: check-yaml
|
|
10
|
+
args: ["--unsafe"]
|
|
11
|
+
- id: check-json
|
|
9
12
|
|
|
10
13
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
11
14
|
rev: "v0.6.3"
|
|
12
15
|
hooks:
|
|
13
16
|
- id: ruff
|
|
14
|
-
args: [--exit-non-zero-on-fix
|
|
17
|
+
args: [--exit-non-zero-on-fix]
|
|
15
18
|
- id: ruff-format
|
|
16
|
-
args: [--config=pyproject.toml]
|
|
17
19
|
|
|
18
20
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
19
21
|
rev: "v3.0.3"
|
|
@@ -49,6 +49,12 @@ This guide will help you get started.
|
|
|
49
49
|
```sh
|
|
50
50
|
uv run jupyter lab
|
|
51
51
|
```
|
|
52
|
+
1. **Set up pre-commit hooks** to auto-enforce code style standards:
|
|
53
|
+
```bash
|
|
54
|
+
uv tool install prek
|
|
55
|
+
prek install
|
|
56
|
+
```
|
|
57
|
+
This will run automated checks before each commit.
|
|
52
58
|
|
|
53
59
|
### 3. Make your changes
|
|
54
60
|
|
|
@@ -56,10 +62,14 @@ This guide will help you get started.
|
|
|
56
62
|
```bash
|
|
57
63
|
git checkout -b your-feature-name
|
|
58
64
|
```
|
|
59
|
-
-
|
|
65
|
+
- Fix automatically-checked formatting issues:
|
|
60
66
|
```bash
|
|
61
67
|
make format
|
|
62
68
|
```
|
|
69
|
+
- Follow style guidelines not automatically checked:
|
|
70
|
+
- No blank lines inside functions/methods
|
|
71
|
+
- Type hints required for all functions
|
|
72
|
+
- NumPy-style docstrings
|
|
63
73
|
- Commit your changes
|
|
64
74
|
(use the imperative mood and capitalize the first letter,
|
|
65
75
|
but don't use punctuation):
|
|
@@ -9,7 +9,7 @@ install: ## Create the project's virtual environment.
|
|
|
9
9
|
@uv sync
|
|
10
10
|
|
|
11
11
|
.PHONY: format
|
|
12
|
-
format: ## Automatically format files.
|
|
12
|
+
format: sync-docs ## Automatically format files.
|
|
13
13
|
@echo "🚀 Linting code with pre-commit"
|
|
14
14
|
@uv run pre-commit run -a
|
|
15
15
|
|
|
@@ -33,9 +33,14 @@ test-cov: ## Test the code coverage with pytest.
|
|
|
33
33
|
@uv run pytest --cov --cov-config=pyproject.toml
|
|
34
34
|
|
|
35
35
|
.PHONY: test-docs
|
|
36
|
-
test-docs: ## Test if documentation can be built without warnings or errors.
|
|
36
|
+
test-docs: sync-docs ## Test if documentation can be built without warnings or errors.
|
|
37
37
|
@uv run mkdocs build -s
|
|
38
38
|
|
|
39
|
+
.PHONY: sync-docs
|
|
40
|
+
sync-docs: ## Sync documentation content from docs/*.md into README.md.
|
|
41
|
+
@echo "🚀 Syncing documentation"
|
|
42
|
+
@uv run python scripts/sync-docs.py
|
|
43
|
+
|
|
39
44
|
.PHONY: docs
|
|
40
45
|
docs: ## Build and serve the documentation.
|
|
41
46
|
@uv run mkdocs serve --livereload
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: calkit-python
|
|
3
|
-
Version: 0.34.
|
|
3
|
+
Version: 0.34.2
|
|
4
4
|
Summary: Reproducibility simplified.
|
|
5
5
|
Project-URL: Homepage, https://calkit.org
|
|
6
6
|
Project-URL: Issues, https://github.com/calkit/calkit/issues
|
|
@@ -125,22 +125,20 @@ while guiding users away from common reproducibility pitfalls.
|
|
|
125
125
|
|
|
126
126
|
## Installation
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
[uv](https://docs.astral.sh/uv/).
|
|
134
|
-
On Linux, macOS, or Windows Git Bash, you can install Calkit and uv with:
|
|
128
|
+
<!-- INCLUDE: docs/installation.md +1 -->
|
|
129
|
+
|
|
130
|
+
On Linux, macOS, or Windows Git Bash,
|
|
131
|
+
install Calkit and [uv](https://docs.astral.sh/uv/)
|
|
132
|
+
(if not already installed) with:
|
|
135
133
|
|
|
136
134
|
```sh
|
|
137
|
-
curl -LsSf
|
|
135
|
+
curl -LsSf install.calkit.org | sh
|
|
138
136
|
```
|
|
139
137
|
|
|
140
138
|
Or with Windows Command Prompt or PowerShell:
|
|
141
139
|
|
|
142
140
|
```powershell
|
|
143
|
-
powershell -ExecutionPolicy ByPass -c "irm
|
|
141
|
+
powershell -ExecutionPolicy ByPass -c "irm install-ps1.calkit.org | iex"
|
|
144
142
|
```
|
|
145
143
|
|
|
146
144
|
If you already have uv installed, install Calkit with:
|
|
@@ -149,17 +147,19 @@ If you already have uv installed, install Calkit with:
|
|
|
149
147
|
uv tool install calkit-python
|
|
150
148
|
```
|
|
151
149
|
|
|
152
|
-
|
|
150
|
+
You can also install with your system Python:
|
|
153
151
|
|
|
154
152
|
```sh
|
|
155
153
|
pip install calkit-python
|
|
156
154
|
```
|
|
157
155
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
156
|
+
To effectively use Calkit, you'll want to ensure [Git](https://git-scm.com)
|
|
157
|
+
is installed and properly configured.
|
|
158
|
+
You may also want to install [Docker](https://docker.com),
|
|
159
|
+
since that is the default method by which LaTeX environments are created.
|
|
160
|
+
If you want to use the [Calkit Cloud](https://calkit.io)
|
|
161
|
+
for collaboration and backup as a DVC remote,
|
|
162
|
+
you can [set up cloud integration](https://docs.calkit.org/cloud-integration).
|
|
163
163
|
|
|
164
164
|
### Use without installing
|
|
165
165
|
|
|
@@ -170,149 +170,116 @@ you can use uv's `uvx` command to run it directly:
|
|
|
170
170
|
uvx calk9 --help
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
### Calkit Assistant
|
|
174
174
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
175
|
+
For Windows users, the
|
|
176
|
+
[Calkit Assistant](https://github.com/calkit/calkit-assistant)
|
|
177
|
+
app is the easiest way to get everything set up and ready to work in
|
|
178
|
+
VS Code, which can then be used as the primary app for working on
|
|
179
|
+
all scientific or analytical computing projects.
|
|
179
180
|
|
|
180
|
-
|
|
181
|
-
[settings](https://calkit.io/settings?tab=tokens)
|
|
182
|
-
page and create a token for use with the API.
|
|
183
|
-
Then run
|
|
181
|
+

|
|
184
182
|
|
|
185
|
-
|
|
186
|
-
calkit config set token ${YOUR_TOKEN_HERE}
|
|
187
|
-
```
|
|
183
|
+
<!-- END INCLUDE -->
|
|
188
184
|
|
|
189
185
|
## Quickstart
|
|
190
186
|
|
|
187
|
+
<!-- INCLUDE: docs/quickstart.md +1 -->
|
|
188
|
+
|
|
191
189
|
### From an existing project
|
|
192
190
|
|
|
193
191
|
If you want to use Calkit with an existing project,
|
|
194
|
-
navigate into its working directory and
|
|
192
|
+
navigate into its working directory and use the `xr` command to start
|
|
193
|
+
executing and recording your scripts, notebooks, LaTeX files, etc.,
|
|
194
|
+
as reproducible pipeline stages.
|
|
195
|
+
For example:
|
|
195
196
|
|
|
196
197
|
```sh
|
|
197
|
-
calkit
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Note that the `--public` and `--cloud` options can be omitted,
|
|
201
|
-
but you'll need to configure your own DVC remote or use Git to store
|
|
202
|
-
pipeline outputs.
|
|
198
|
+
calkit xr scripts/analyze.py
|
|
203
199
|
|
|
204
|
-
|
|
205
|
-
In this example, imagine we have a `requirements.txt` file we want to use to
|
|
206
|
-
define a uv virtual environment, or venv:
|
|
200
|
+
calkit xr notebooks/plot.ipynb
|
|
207
201
|
|
|
208
|
-
|
|
209
|
-
calkit new uv-venv --name main --path requirements.txt --python 3.13
|
|
202
|
+
calkit xr paper/main.tex
|
|
210
203
|
```
|
|
211
204
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
Next, we can start building our [pipeline](https://docs.calkit.org/pipeline).
|
|
217
|
-
Let's say we have a Jupyter notebook called `collect-data.ipynb`
|
|
218
|
-
that produces raw data at `data/raw.h5`.
|
|
219
|
-
We can add a pipeline stage to run this notebook in the `main` environment
|
|
220
|
-
we just created with:
|
|
205
|
+
Calkit will attempt to detect environments, inputs, and outputs and
|
|
206
|
+
save them in `calkit.yaml`.
|
|
207
|
+
If successful,
|
|
208
|
+
you'll be able to run the full pipeline with:
|
|
221
209
|
|
|
222
210
|
```sh
|
|
223
|
-
calkit
|
|
224
|
-
--name collect-data \
|
|
225
|
-
--environment main \
|
|
226
|
-
--notebook-path collect-data.ipynb \
|
|
227
|
-
--output data/raw.h5
|
|
211
|
+
calkit run
|
|
228
212
|
```
|
|
229
213
|
|
|
230
|
-
|
|
214
|
+
Next, make a change to e.g., a script and look at the output of
|
|
215
|
+
`calkit status`.
|
|
216
|
+
You'll see that the pipeline has a stage that is out-of-date:
|
|
231
217
|
|
|
232
218
|
```sh
|
|
233
|
-
|
|
219
|
+
---------------------------- Pipeline ----------------------------
|
|
220
|
+
analyze:
|
|
221
|
+
changed deps:
|
|
222
|
+
modified: scripts/analyze.py
|
|
234
223
|
```
|
|
235
224
|
|
|
236
|
-
|
|
225
|
+
This can be fixed with another call to `calkit run`.
|
|
226
|
+
|
|
227
|
+
You can save (add and commit) all changes with:
|
|
237
228
|
|
|
238
229
|
```sh
|
|
239
|
-
calkit save -am "
|
|
230
|
+
calkit save -am "Add to pipeline"
|
|
240
231
|
```
|
|
241
232
|
|
|
242
|
-
After that,
|
|
243
|
-
you can add more environments, pipeline stages,
|
|
244
|
-
[start a publication with LaTeX](https://docs.calkit.org/tutorials/adding-latex-pub-docker/),
|
|
245
|
-
or [link a publication with Overleaf](https://docs.calkit.org/overleaf/).
|
|
246
|
-
|
|
247
233
|
### Fresh from a Calkit project template
|
|
248
234
|
|
|
249
|
-
|
|
235
|
+
Create a new project from the
|
|
236
|
+
[`calkit/example-basic`](https://github.com/calkit/example-basic)
|
|
237
|
+
template with:
|
|
250
238
|
|
|
251
239
|
```sh
|
|
252
|
-
calkit new project
|
|
253
|
-
--title "My
|
|
240
|
+
calkit new project my-research \
|
|
241
|
+
--title "My research" \
|
|
254
242
|
--template calkit/example-basic \
|
|
255
|
-
--cloud
|
|
256
|
-
--public
|
|
243
|
+
--cloud
|
|
257
244
|
```
|
|
258
245
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
246
|
+
Note the `--cloud` flag requires [cloud integration](https://docs.calkit.org/cloud-integration)
|
|
247
|
+
to be set up, but can be omitted if the project doesn't need to be backed up to
|
|
248
|
+
the cloud or shared with collaborators.
|
|
249
|
+
Cloud integration can also be set up later.
|
|
250
|
+
|
|
251
|
+
Next, move into the project folder and run the pipeline,
|
|
252
|
+
which consists of several stages defined in `calkit.yaml`:
|
|
253
|
+
|
|
254
|
+
<!-- TODO: This takes a long time to pull the image -->
|
|
264
255
|
|
|
265
256
|
```sh
|
|
266
|
-
cd
|
|
257
|
+
cd my-research
|
|
267
258
|
calkit run
|
|
268
259
|
```
|
|
269
260
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
261
|
+
Next, make some edits to a script or LaTeX file and run `calkit status` to
|
|
262
|
+
see what stages are out-of-date.
|
|
263
|
+
For example:
|
|
264
|
+
|
|
265
|
+
```sh
|
|
266
|
+
---------------------------- Pipeline ----------------------------
|
|
267
|
+
build-paper:
|
|
268
|
+
changed deps:
|
|
269
|
+
modified: paper/paper.tex
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Execute `calkit run` again to bring everything up-to-date.
|
|
275
273
|
|
|
276
|
-
To back up
|
|
274
|
+
To back up or save the project, call:
|
|
277
275
|
|
|
278
276
|
```sh
|
|
279
277
|
calkit save -am "Run pipeline"
|
|
280
278
|
```
|
|
281
279
|
|
|
282
|
-
|
|
280
|
+
<!-- END INCLUDE -->
|
|
283
281
|
|
|
284
282
|
## Get involved
|
|
285
283
|
|
|
286
284
|
We welcome all kinds of contributions!
|
|
287
285
|
See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to get involved.
|
|
288
|
-
|
|
289
|
-
## Design/UX principles
|
|
290
|
-
|
|
291
|
-
1. Be opinionated. Users should not be forced to make unimportant decisions.
|
|
292
|
-
However, if they disagree, they should have the ability to change the
|
|
293
|
-
default behavior. The most common use case should be default.
|
|
294
|
-
Commands that are commonly executed as groups should be combined, but
|
|
295
|
-
still available to be run individually if desired.
|
|
296
|
-
1. Commits should ideally be made automatically as part of actions that make
|
|
297
|
-
changes to the project repo. For
|
|
298
|
-
example, if a new object is added via the CLI, a commit should be made
|
|
299
|
-
right then unless otherwise specified. This saves the trouble of running
|
|
300
|
-
multiple commands and encourages atomic commits.
|
|
301
|
-
1. Pushes should require explicit input from the user.
|
|
302
|
-
It is still TBD whether or not a pull should automatically be
|
|
303
|
-
made, though in general we want to encourage trunk-based development, i.e.,
|
|
304
|
-
only working on a single branch. One exception might be for local
|
|
305
|
-
experimentation that has a high likelihood of failure, in which case a
|
|
306
|
-
branch can be a nice way to throw those changes away.
|
|
307
|
-
Multiple branches should probably not live in the cloud, however, except
|
|
308
|
-
for small, quickly merged pull requests.
|
|
309
|
-
1. Idempotency is always a good thing. Unnecessary state is bad. For example,
|
|
310
|
-
we should not encourage caching pipeline outputs for operations that are
|
|
311
|
-
cheap. Caching should happen either for state that is valuable on its
|
|
312
|
-
own, like a figure, or for an intermediate result that is expensive to
|
|
313
|
-
generate.
|
|
314
|
-
1. There should be the smallest number of
|
|
315
|
-
frequently used commands as possible, and they should require as little
|
|
316
|
-
memorization as possible to know how to execute, e.g., a user should be
|
|
317
|
-
able to keep running `calkit run` and that's all they really need to do
|
|
318
|
-
to make sure the project is up-to-date.
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://calkit.org" target="_blank">
|
|
3
|
+
<img width="40%" src="docs/img/calkit-no-bg.png" alt="Calkit">
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://docs.calkit.org" target="_blank">
|
|
8
|
+
Documentation
|
|
9
|
+
</a>
|
|
10
|
+
|
|
|
11
|
+
<a href="https://docs.calkit.org/tutorials" target="_blank">
|
|
12
|
+
Tutorials
|
|
13
|
+
</a>
|
|
14
|
+
|
|
|
15
|
+
<a href="https://github.com/orgs/calkit/discussions" target="_blank">
|
|
16
|
+
Discussions
|
|
17
|
+
</a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
Calkit makes it easy to create
|
|
21
|
+
["single button"](https://doi.org/10.1190/1.1822162)
|
|
22
|
+
reproducible research projects.
|
|
23
|
+
|
|
24
|
+
Instead of a loosely related collection of files
|
|
25
|
+
and manual instructions,
|
|
26
|
+
turn your project into a version-controlled,
|
|
27
|
+
self-contained "calculation kit,"
|
|
28
|
+
tying together all phases or stages of the project:
|
|
29
|
+
data collection, analysis, visualization, and writing,
|
|
30
|
+
each of which can make use of the latest and greatest computational
|
|
31
|
+
tools and languages.
|
|
32
|
+
In other words, you, your collaborators, and readers will be able to go
|
|
33
|
+
from raw data to research article with a single command,
|
|
34
|
+
improving efficiency via faster iteration cycle time,
|
|
35
|
+
reducing the likelihood of mistakes,
|
|
36
|
+
and allowing others to more effectively build upon your work.
|
|
37
|
+
|
|
38
|
+
Calkit makes this level of automation possible without extensive software
|
|
39
|
+
engineering expertise by providing a project framework and toolset that unifies
|
|
40
|
+
and simplifies the use of powerful enabling technologies like Git,
|
|
41
|
+
DVC, Conda, Docker, and more,
|
|
42
|
+
while guiding users away from common reproducibility pitfalls.
|
|
43
|
+
|
|
44
|
+
## Features
|
|
45
|
+
|
|
46
|
+
- A declarative pipeline that guides users to define an environment
|
|
47
|
+
for every stage, so long lists of instructions in a README and
|
|
48
|
+
"but it works on my machine" are things of the past.
|
|
49
|
+
- A CLI to run the project's pipeline to verify it's reproducible,
|
|
50
|
+
regenerating outputs as needed and
|
|
51
|
+
ensuring all
|
|
52
|
+
computational environments
|
|
53
|
+
(e.g., [Conda](https://docs.conda.io/en/latest/),
|
|
54
|
+
[Docker](https://docker.com), uv, Julia)
|
|
55
|
+
match their specification.
|
|
56
|
+
- A schema to store structured metadata describing the
|
|
57
|
+
project's important outputs (in its `calkit.yaml` file)
|
|
58
|
+
and how they are created
|
|
59
|
+
(its computational environments and pipeline).
|
|
60
|
+
- A command line interface (CLI) to simplify keeping code, text, and larger
|
|
61
|
+
data files backed up in the same project repo using both
|
|
62
|
+
[Git](https://git-scm.com/) and [DVC](https://dvc.org/).
|
|
63
|
+
- A complementary self-hostable and GitHub-integrated
|
|
64
|
+
[cloud system](https://github.com/calkit/calkit-cloud)
|
|
65
|
+
to facilitate backup, collaboration,
|
|
66
|
+
and sharing throughout the entire research lifecycle.
|
|
67
|
+
- [Overleaf integration](https://docs.calkit.org/overleaf/), so code,
|
|
68
|
+
data, and LaTeX documents can all live in the same repo and be part of a
|
|
69
|
+
single pipeline (no more manual uploads!)
|
|
70
|
+
|
|
71
|
+
## Installation
|
|
72
|
+
|
|
73
|
+
<!-- INCLUDE: docs/installation.md +1 -->
|
|
74
|
+
|
|
75
|
+
On Linux, macOS, or Windows Git Bash,
|
|
76
|
+
install Calkit and [uv](https://docs.astral.sh/uv/)
|
|
77
|
+
(if not already installed) with:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
curl -LsSf install.calkit.org | sh
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Or with Windows Command Prompt or PowerShell:
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
powershell -ExecutionPolicy ByPass -c "irm install-ps1.calkit.org | iex"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If you already have uv installed, install Calkit with:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
uv tool install calkit-python
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
You can also install with your system Python:
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
pip install calkit-python
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
To effectively use Calkit, you'll want to ensure [Git](https://git-scm.com)
|
|
102
|
+
is installed and properly configured.
|
|
103
|
+
You may also want to install [Docker](https://docker.com),
|
|
104
|
+
since that is the default method by which LaTeX environments are created.
|
|
105
|
+
If you want to use the [Calkit Cloud](https://calkit.io)
|
|
106
|
+
for collaboration and backup as a DVC remote,
|
|
107
|
+
you can [set up cloud integration](https://docs.calkit.org/cloud-integration).
|
|
108
|
+
|
|
109
|
+
### Use without installing
|
|
110
|
+
|
|
111
|
+
If you want to use Calkit without installing it,
|
|
112
|
+
you can use uv's `uvx` command to run it directly:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
uvx calk9 --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Calkit Assistant
|
|
119
|
+
|
|
120
|
+
For Windows users, the
|
|
121
|
+
[Calkit Assistant](https://github.com/calkit/calkit-assistant)
|
|
122
|
+
app is the easiest way to get everything set up and ready to work in
|
|
123
|
+
VS Code, which can then be used as the primary app for working on
|
|
124
|
+
all scientific or analytical computing projects.
|
|
125
|
+
|
|
126
|
+

|
|
127
|
+
|
|
128
|
+
<!-- END INCLUDE -->
|
|
129
|
+
|
|
130
|
+
## Quickstart
|
|
131
|
+
|
|
132
|
+
<!-- INCLUDE: docs/quickstart.md +1 -->
|
|
133
|
+
|
|
134
|
+
### From an existing project
|
|
135
|
+
|
|
136
|
+
If you want to use Calkit with an existing project,
|
|
137
|
+
navigate into its working directory and use the `xr` command to start
|
|
138
|
+
executing and recording your scripts, notebooks, LaTeX files, etc.,
|
|
139
|
+
as reproducible pipeline stages.
|
|
140
|
+
For example:
|
|
141
|
+
|
|
142
|
+
```sh
|
|
143
|
+
calkit xr scripts/analyze.py
|
|
144
|
+
|
|
145
|
+
calkit xr notebooks/plot.ipynb
|
|
146
|
+
|
|
147
|
+
calkit xr paper/main.tex
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Calkit will attempt to detect environments, inputs, and outputs and
|
|
151
|
+
save them in `calkit.yaml`.
|
|
152
|
+
If successful,
|
|
153
|
+
you'll be able to run the full pipeline with:
|
|
154
|
+
|
|
155
|
+
```sh
|
|
156
|
+
calkit run
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Next, make a change to e.g., a script and look at the output of
|
|
160
|
+
`calkit status`.
|
|
161
|
+
You'll see that the pipeline has a stage that is out-of-date:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
---------------------------- Pipeline ----------------------------
|
|
165
|
+
analyze:
|
|
166
|
+
changed deps:
|
|
167
|
+
modified: scripts/analyze.py
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
This can be fixed with another call to `calkit run`.
|
|
171
|
+
|
|
172
|
+
You can save (add and commit) all changes with:
|
|
173
|
+
|
|
174
|
+
```sh
|
|
175
|
+
calkit save -am "Add to pipeline"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Fresh from a Calkit project template
|
|
179
|
+
|
|
180
|
+
Create a new project from the
|
|
181
|
+
[`calkit/example-basic`](https://github.com/calkit/example-basic)
|
|
182
|
+
template with:
|
|
183
|
+
|
|
184
|
+
```sh
|
|
185
|
+
calkit new project my-research \
|
|
186
|
+
--title "My research" \
|
|
187
|
+
--template calkit/example-basic \
|
|
188
|
+
--cloud
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Note the `--cloud` flag requires [cloud integration](https://docs.calkit.org/cloud-integration)
|
|
192
|
+
to be set up, but can be omitted if the project doesn't need to be backed up to
|
|
193
|
+
the cloud or shared with collaborators.
|
|
194
|
+
Cloud integration can also be set up later.
|
|
195
|
+
|
|
196
|
+
Next, move into the project folder and run the pipeline,
|
|
197
|
+
which consists of several stages defined in `calkit.yaml`:
|
|
198
|
+
|
|
199
|
+
<!-- TODO: This takes a long time to pull the image -->
|
|
200
|
+
|
|
201
|
+
```sh
|
|
202
|
+
cd my-research
|
|
203
|
+
calkit run
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Next, make some edits to a script or LaTeX file and run `calkit status` to
|
|
207
|
+
see what stages are out-of-date.
|
|
208
|
+
For example:
|
|
209
|
+
|
|
210
|
+
```sh
|
|
211
|
+
---------------------------- Pipeline ----------------------------
|
|
212
|
+
build-paper:
|
|
213
|
+
changed deps:
|
|
214
|
+
modified: paper/paper.tex
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Execute `calkit run` again to bring everything up-to-date.
|
|
218
|
+
|
|
219
|
+
To back up or save the project, call:
|
|
220
|
+
|
|
221
|
+
```sh
|
|
222
|
+
calkit save -am "Run pipeline"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
<!-- END INCLUDE -->
|
|
226
|
+
|
|
227
|
+
## Get involved
|
|
228
|
+
|
|
229
|
+
We welcome all kinds of contributions!
|
|
230
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to get involved.
|