calkit-python 0.35.3__tar.gz → 0.35.4__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.35.3 → calkit_python-0.35.4}/PKG-INFO +1 -1
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/git.py +42 -4
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/releases.py +1 -1
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_git.py +51 -0
- calkit_python-0.35.4/calkit/tests/test_releases.py +44 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/.gitignore +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/.prettierignore +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/.python-version +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/.yarnrc.yml +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/CITATION.cff +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/CONTRIBUTING.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/LICENSE +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/Makefile +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/README.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/babel.config.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/__main__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/calc.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/check.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/check.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/config.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/describe.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/import_.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/latex.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/list.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/main/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/main/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/main/xr.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/new.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/office.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/slurm.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cli/update.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/cloud.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/conda.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/config.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/datasets.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/detect.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/docker.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/dvc.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/environments.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/fs.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/github.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/gui.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/invenio.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/julia.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/jupyter.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/jupyterlab/routes.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/package.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/909.651be47ca47390b78a92.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/remoteEntry.c091821b3d7f2d287a67.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/licenses.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/magics.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/matlab.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/models/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/models/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/models/io.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/models/iteration.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/notebooks.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/office.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/ops.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/overleaf.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/pipeline.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/server.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/main/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/main/test_core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/main/test_xr.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_detect.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_docker.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_dvc.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_environments.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_fs.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_julia.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_pipeline.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/conftest.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/CNAME +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/apps.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/calculations.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/cli-reference.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/cloud-integration.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/datasets.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/dependencies.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/environments.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/examples.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/governance.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/help.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/index.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/installation.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/jupyterlab.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/local-server.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/notebooks.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/overleaf.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/pipeline/index.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/pipeline/slurm.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/quickstart.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/references.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/releases.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/reproducibility.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/index.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/office.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/docs/version-control.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/install.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/jest.config.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/mkdocs.yml +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/package.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/pyproject.toml +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/schema/plugin.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/scripts/install.ps1 +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/scripts/install.sh +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/scripts/sync-docs.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/calkit-config.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/cell-output-marker.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/sidebar.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/feature-flags.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/file-browser-menu.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/icons.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/index.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/io-tracker.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/pipeline-state.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/queryClient.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/request.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/base.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/cell-output-marker.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/environment-editor.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/environment-selector.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/index.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/index.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/notebook-toolbar.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/style/sidebar.css +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/nb-params.ipynb +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/pipeline.ipynb +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/script.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/test/test-log.log +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/tsconfig.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/tsconfig.test.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/.gitignore +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/README.md +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/package.json +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/ui-tests/yarn.lock +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/uv.lock +0 -0
- {calkit_python-0.35.3 → calkit_python-0.35.4}/yarn.lock +0 -0
|
@@ -150,10 +150,48 @@ def ensure_path_is_not_ignored(
|
|
|
150
150
|
gitignore_txt = f.read()
|
|
151
151
|
lines = gitignore_txt.splitlines()
|
|
152
152
|
no_ignore_line = f"!{target_path}"
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
path_parts = Path(target_path).parts
|
|
154
|
+
if len(path_parts) == 1:
|
|
155
|
+
# Simple (non-nested) path: remove the direct ignore rule, or add a
|
|
156
|
+
# negation if the ignore comes from a glob or other pattern.
|
|
157
|
+
if target_path in lines:
|
|
158
|
+
lines.remove(target_path)
|
|
159
|
+
elif no_ignore_line not in lines:
|
|
160
|
+
lines.append(no_ignore_line)
|
|
161
|
+
else:
|
|
162
|
+
# Nested path: Git will not traverse into a directory excluded by a
|
|
163
|
+
# "dir/" pattern, so a bare "!dir/sub/file" negation has no effect.
|
|
164
|
+
# We need to:
|
|
165
|
+
# 1. Convert any "ancestor/" (or "ancestor") exclude to "ancestor/*"
|
|
166
|
+
# so that git traverses the directory while still ignoring its
|
|
167
|
+
# direct children by default.
|
|
168
|
+
# 2. Add "!ancestor/" un-ignore rules for each intermediate directory
|
|
169
|
+
# so git recurses into them.
|
|
170
|
+
# 3. Add "ancestor/*" re-ignore rules so that only explicitly
|
|
171
|
+
# un-ignored files within each intermediate directory are tracked.
|
|
172
|
+
# 4. Add the final "!target_path" negation for the specific file.
|
|
173
|
+
if target_path in lines:
|
|
174
|
+
lines.remove(target_path)
|
|
175
|
+
for i in range(1, len(path_parts)):
|
|
176
|
+
ancestor = "/".join(path_parts[:i])
|
|
177
|
+
reignore_glob = f"{ancestor}/*"
|
|
178
|
+
# Convert a directory-exclude pattern to a glob so git traverses it
|
|
179
|
+
if f"{ancestor}/" in lines:
|
|
180
|
+
idx = lines.index(f"{ancestor}/")
|
|
181
|
+
lines[idx] = reignore_glob
|
|
182
|
+
elif ancestor in lines:
|
|
183
|
+
idx = lines.index(ancestor)
|
|
184
|
+
lines[idx] = reignore_glob
|
|
185
|
+
# Un-ignore this intermediate directory so git recurses into it
|
|
186
|
+
no_ignore_dir = f"!{ancestor}/"
|
|
187
|
+
if no_ignore_dir not in lines:
|
|
188
|
+
lines.append(no_ignore_dir)
|
|
189
|
+
# Re-ignore everything inside this intermediate directory so that
|
|
190
|
+
# only explicitly un-ignored entries are tracked
|
|
191
|
+
if reignore_glob not in lines:
|
|
192
|
+
lines.append(reignore_glob)
|
|
193
|
+
if no_ignore_line not in lines:
|
|
194
|
+
lines.append(no_ignore_line)
|
|
157
195
|
with open(gitignore_path, "w") as f:
|
|
158
196
|
f.write(os.linesep.join(lines))
|
|
159
197
|
return True
|
|
@@ -129,7 +129,7 @@ def create_citation_cff(
|
|
|
129
129
|
def ls_files() -> list[str]:
|
|
130
130
|
"""List all files to be released."""
|
|
131
131
|
repo = git.Repo()
|
|
132
|
-
git_files = repo.git.ls_files(".").
|
|
132
|
+
git_files = repo.git.ls_files(".", recurse_submodules=True).splitlines()
|
|
133
133
|
dvc_files = calkit.dvc.list_paths(recursive=True)
|
|
134
134
|
return git_files + dvc_files
|
|
135
135
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Tests for ``calkit.git``."""
|
|
2
2
|
|
|
3
|
+
import os
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
|
|
5
6
|
import git
|
|
@@ -97,3 +98,53 @@ def test_ensure_path_is_not_ignored(tmp_dir):
|
|
|
97
98
|
gi_sub = f.read().splitlines()
|
|
98
99
|
assert "test.txt" not in gi_sub
|
|
99
100
|
assert "!test.txt" not in gi_sub
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def test_ensure_path_is_not_ignored_nested(tmp_dir):
|
|
104
|
+
"""Test that nested paths in ignored directories are correctly un-ignored.
|
|
105
|
+
|
|
106
|
+
When a parent directory is excluded with a trailing slash (e.g.,
|
|
107
|
+
``results/``), git will not traverse into it, so a simple negation like
|
|
108
|
+
``!results/StageName/end.json`` has no effect. The fix converts the
|
|
109
|
+
directory exclude to a glob pattern and adds intermediate un-ignore rules.
|
|
110
|
+
"""
|
|
111
|
+
repo = git.Repo.init()
|
|
112
|
+
# Ignore the entire results/ directory
|
|
113
|
+
with open(".gitignore", "w") as f:
|
|
114
|
+
f.write("results/\n")
|
|
115
|
+
# Create the nested target file so git can evaluate ignore status
|
|
116
|
+
os.makedirs("results/StageName", exist_ok=True)
|
|
117
|
+
with open("results/StageName/end.json", "w") as f:
|
|
118
|
+
f.write("{}")
|
|
119
|
+
# The file must be ignored before we try to un-ignore it
|
|
120
|
+
assert repo.ignored("results/StageName/end.json")
|
|
121
|
+
result = calkit.git.ensure_path_is_not_ignored(
|
|
122
|
+
repo, path="results/StageName/end.json"
|
|
123
|
+
)
|
|
124
|
+
assert result is True
|
|
125
|
+
with open(".gitignore") as f:
|
|
126
|
+
lines = f.read().splitlines()
|
|
127
|
+
# The plain directory exclude should be replaced with a glob
|
|
128
|
+
assert "results/" not in lines
|
|
129
|
+
assert "results/*" in lines
|
|
130
|
+
# Intermediate directory must be un-ignored so git traverses into it
|
|
131
|
+
assert "!results/StageName/" in lines
|
|
132
|
+
# The intermediate directory's other contents must be re-ignored
|
|
133
|
+
assert "results/StageName/*" in lines
|
|
134
|
+
# The specific file must be explicitly un-ignored
|
|
135
|
+
assert "!results/StageName/end.json" in lines
|
|
136
|
+
# Verify git no longer considers the target file as ignored
|
|
137
|
+
assert not repo.ignored("results/StageName/end.json")
|
|
138
|
+
# Other files in results/ must still be ignored
|
|
139
|
+
with open("results/other.txt", "w") as f:
|
|
140
|
+
f.write("other")
|
|
141
|
+
assert repo.ignored("results/other.txt")
|
|
142
|
+
# Other files in the intermediate directory must still be ignored
|
|
143
|
+
with open("results/StageName/other.json", "w") as f:
|
|
144
|
+
f.write("{}")
|
|
145
|
+
assert repo.ignored("results/StageName/other.json")
|
|
146
|
+
# Calling again should be a no-op (path is no longer ignored)
|
|
147
|
+
result2 = calkit.git.ensure_path_is_not_ignored(
|
|
148
|
+
repo, path="results/StageName/end.json"
|
|
149
|
+
)
|
|
150
|
+
assert result2 is None
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Tests for the ``releases`` module."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
|
|
5
|
+
import git
|
|
6
|
+
|
|
7
|
+
from calkit.releases import ls_files
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_ls_files(tmp_dir):
|
|
11
|
+
subprocess.run(["calkit", "init"], check=True)
|
|
12
|
+
# Create some files and add them to git and dvc
|
|
13
|
+
(tmp_dir / "file1.txt").write_text("This is file 1.")
|
|
14
|
+
(tmp_dir / "file2.txt").write_text("This is file 2.")
|
|
15
|
+
subprocess.run(["git", "add", "file1.txt"], check=True)
|
|
16
|
+
subprocess.run(["git", "commit", "-m", "Add file1.txt"], check=True)
|
|
17
|
+
subprocess.run(["calkit", "dvc", "add", "file2.txt"], check=True)
|
|
18
|
+
# Get the list of files to be released
|
|
19
|
+
files = ls_files()
|
|
20
|
+
assert "file1.txt" in files
|
|
21
|
+
assert "file2.txt" in files
|
|
22
|
+
# Now add some files in a git submodule and ensure they are included
|
|
23
|
+
submodule_source = tmp_dir / "submodule-source"
|
|
24
|
+
submodule_repo = git.Repo.init(submodule_source)
|
|
25
|
+
(submodule_source / "submodule-file.txt").write_text(
|
|
26
|
+
"This file lives in the submodule."
|
|
27
|
+
)
|
|
28
|
+
submodule_repo.git.add("submodule-file.txt")
|
|
29
|
+
submodule_repo.index.commit("Add submodule file")
|
|
30
|
+
subprocess.run(
|
|
31
|
+
[
|
|
32
|
+
"git",
|
|
33
|
+
"-c",
|
|
34
|
+
"protocol.file.allow=always",
|
|
35
|
+
"submodule",
|
|
36
|
+
"add",
|
|
37
|
+
str(submodule_source),
|
|
38
|
+
"submodule",
|
|
39
|
+
],
|
|
40
|
+
check=True,
|
|
41
|
+
)
|
|
42
|
+
subprocess.run(["git", "commit", "-m", "Add submodule"], check=True)
|
|
43
|
+
files = ls_files()
|
|
44
|
+
assert "submodule/submodule-file.txt" in files
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/schemas/calkit/package.json.orig
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/schemas/calkit/plugin.json
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/502.9a2c5772a15466e923ef.js
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/695.2c41003a452d43d2b358.js
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/909.651be47ca47390b78a92.js
RENAMED
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js
RENAMED
|
File without changes
|
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/b2f1c3efe70cb539d121.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.35.3 → calkit_python-0.35.4}/calkit/labextension/static/third-party-licenses.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|