calkit-python 0.34.2__tar.gz → 0.34.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.34.2 → calkit_python-0.34.4}/PKG-INFO +2 -1
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/main.py +2 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/overleaf.py +73 -18
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/overleaf.py +12 -1
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_main.py +65 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_overleaf.py +16 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/overleaf.md +1 -4
- {calkit_python-0.34.2 → calkit_python-0.34.4}/pyproject.toml +1 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/uv.lock +11 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/.gitignore +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/.prettierignore +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/.python-version +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/.yarnrc.yml +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/CITATION.cff +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/CONTRIBUTING.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/LICENSE +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/Makefile +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/README.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/babel.config.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/__main__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/calc.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/check.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/check.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/config.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/describe.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/import_.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/latex.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/list.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/new.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/office.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/slurm.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cli/update.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/cloud.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/conda.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/config.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/datasets.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/detect.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/docker.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/dvc.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/environments.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/git.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/github.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/gui.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/invenio.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/jupyter.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/jupyterlab/routes.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/package.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/909.99b13e1e3c2a6e1ceb30.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/remoteEntry.63846b8de2465d49bd89.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/licenses.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/magics.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/matlab.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/models/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/models/core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/models/io.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/models/iteration.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/notebooks.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/office.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/ops.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/pipeline.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/releases.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/server.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_detect.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_dvc.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_environments.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_git.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_pipeline.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/conftest.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/CNAME +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/apps.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/calculations.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/cli-reference.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/cloud-integration.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/datasets.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/dependencies.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/environments.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/examples.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/governance.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/help.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/index.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/installation.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/jupyterlab.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/local-server.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/notebooks.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/pipeline/index.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/pipeline/slurm.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/quickstart.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/references.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/releases.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/reproducibility.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/index.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/office.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/docs/version-control.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/install.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/jest.config.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/mkdocs.yml +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/package.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/schema/plugin.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/scripts/install.ps1 +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/scripts/install.sh +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/scripts/sync-docs.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/calkit-config.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/cell-output-marker.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/sidebar.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/feature-flags.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/file-browser-menu.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/icons.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/index.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/io-tracker.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/pipeline-state.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/queryClient.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/request.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/base.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/cell-output-marker.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/environment-editor.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/environment-selector.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/index.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/index.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/notebook-toolbar.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/style/sidebar.css +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/nb-params.ipynb +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/pipeline.ipynb +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/script.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/test/test-log.log +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/tsconfig.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/tsconfig.test.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/.gitignore +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/README.md +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/package.json +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/ui-tests/yarn.lock +0 -0
- {calkit_python-0.34.2 → calkit_python-0.34.4}/yarn.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: calkit-python
|
|
3
|
-
Version: 0.34.
|
|
3
|
+
Version: 0.34.4
|
|
4
4
|
Summary: Reproducibility simplified.
|
|
5
5
|
Project-URL: Homepage, https://calkit.org
|
|
6
6
|
Project-URL: Issues, https://github.com/calkit/calkit/issues
|
|
@@ -44,6 +44,7 @@ Requires-Dist: python-dotenv>=1
|
|
|
44
44
|
Requires-Dist: pywin32; platform_system == 'Windows'
|
|
45
45
|
Requires-Dist: requests
|
|
46
46
|
Requires-Dist: sqlitedict>=2.1.0
|
|
47
|
+
Requires-Dist: texsoup>=0.3.1
|
|
47
48
|
Requires-Dist: toml>=0.10.2
|
|
48
49
|
Requires-Dist: tqdm>=4.67.1
|
|
49
50
|
Requires-Dist: typer==0.21.1
|
|
@@ -1189,6 +1189,7 @@ def run(
|
|
|
1189
1189
|
"allow-missing",
|
|
1190
1190
|
"dry",
|
|
1191
1191
|
"keep-going",
|
|
1192
|
+
"ignore-errors",
|
|
1192
1193
|
"force-downstream",
|
|
1193
1194
|
"glob",
|
|
1194
1195
|
"no-commit",
|
|
@@ -1199,6 +1200,7 @@ def run(
|
|
|
1199
1200
|
if pipeline is not None:
|
|
1200
1201
|
args += ["--pipeline", pipeline]
|
|
1201
1202
|
if downstream is not None:
|
|
1203
|
+
args.append("--downstream")
|
|
1202
1204
|
args += downstream
|
|
1203
1205
|
start_time_no_tz = calkit.utcnow(remove_tz=True)
|
|
1204
1206
|
start_time = calkit.utcnow(remove_tz=False)
|
|
@@ -18,6 +18,19 @@ from calkit.cli import raise_error, warn
|
|
|
18
18
|
overleaf_app = typer.Typer(no_args_is_help=True)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
def _extract_title_from_tex(tex_file_path: str) -> str | None:
|
|
22
|
+
"""Extract the title from a LaTeX file."""
|
|
23
|
+
from TexSoup import TexSoup
|
|
24
|
+
|
|
25
|
+
try:
|
|
26
|
+
with open(tex_file_path) as f:
|
|
27
|
+
overleaf_target_text = f.read()
|
|
28
|
+
texsoup = TexSoup(overleaf_target_text)
|
|
29
|
+
return str(texsoup.title.string) if texsoup.title else None
|
|
30
|
+
except Exception:
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
21
34
|
def _get_overleaf_token() -> str:
|
|
22
35
|
"""Get the user's Overleaf token from config.
|
|
23
36
|
|
|
@@ -78,13 +91,13 @@ def import_publication(
|
|
|
78
91
|
),
|
|
79
92
|
],
|
|
80
93
|
title: Annotated[
|
|
81
|
-
str,
|
|
94
|
+
str | None,
|
|
82
95
|
typer.Option(
|
|
83
96
|
"--title",
|
|
84
97
|
"-t",
|
|
85
98
|
help="Title of the publication.",
|
|
86
99
|
),
|
|
87
|
-
],
|
|
100
|
+
] = None,
|
|
88
101
|
target_path: Annotated[
|
|
89
102
|
str | None,
|
|
90
103
|
typer.Option(
|
|
@@ -143,6 +156,18 @@ def import_publication(
|
|
|
143
156
|
help="Force adding the publication even if it already exists.",
|
|
144
157
|
),
|
|
145
158
|
] = False,
|
|
159
|
+
push_only: Annotated[
|
|
160
|
+
bool,
|
|
161
|
+
typer.Option(
|
|
162
|
+
"--push-only",
|
|
163
|
+
"-P",
|
|
164
|
+
help=(
|
|
165
|
+
"Push local files to Overleaf without pulling. "
|
|
166
|
+
"Useful when initializing a new Overleaf project from local "
|
|
167
|
+
"files."
|
|
168
|
+
),
|
|
169
|
+
),
|
|
170
|
+
] = False,
|
|
146
171
|
):
|
|
147
172
|
"""Import a publication from an Overleaf project."""
|
|
148
173
|
from calkit.cli.main import ignore as git_ignore
|
|
@@ -188,7 +213,9 @@ def import_publication(
|
|
|
188
213
|
git.Repo.clone_from(git_clone_url, overleaf_project_dir)
|
|
189
214
|
# Detect target path if not specified
|
|
190
215
|
if target_path is None:
|
|
191
|
-
ol_contents = os.listdir(
|
|
216
|
+
ol_contents = os.listdir(
|
|
217
|
+
dest_dir if push_only else overleaf_project_dir
|
|
218
|
+
)
|
|
192
219
|
for cand in ["main.tex", "report.tex", "paper.tex"]:
|
|
193
220
|
if cand in ol_contents:
|
|
194
221
|
target_path = cand
|
|
@@ -203,10 +230,26 @@ def import_publication(
|
|
|
203
230
|
"Target TeX file path cannot be detected; "
|
|
204
231
|
"please specify with --target"
|
|
205
232
|
)
|
|
233
|
+
return
|
|
234
|
+
# Try to extract title from the target LaTeX file if not provided
|
|
235
|
+
if not title:
|
|
236
|
+
target_tex_path = os.path.join(
|
|
237
|
+
dest_dir if push_only else overleaf_project_dir, target_path
|
|
238
|
+
)
|
|
239
|
+
extracted_title = _extract_title_from_tex(target_tex_path)
|
|
240
|
+
if extracted_title:
|
|
241
|
+
typer.echo(f"Detected title: {extracted_title}")
|
|
242
|
+
title = extracted_title
|
|
243
|
+
if not title:
|
|
244
|
+
raise_error(
|
|
245
|
+
"Title could not be detected from the LaTeX file; "
|
|
246
|
+
"please specify with --title"
|
|
247
|
+
)
|
|
206
248
|
# Determine the PDF output path
|
|
207
249
|
pdf_path = target_path.removesuffix(".tex") + ".pdf" # type: ignore
|
|
208
250
|
typer.echo(f"Using PDF path: {pdf_path}")
|
|
209
251
|
tex_path = pdf_path.removesuffix(".pdf") + ".tex"
|
|
252
|
+
target_tex_path = Path(dest_dir, tex_path).as_posix()
|
|
210
253
|
pub_path = Path(dest_dir, pdf_path).as_posix()
|
|
211
254
|
pub_paths = [pub.get("path") for pub in pubs]
|
|
212
255
|
if not overwrite and pub_path in pub_paths:
|
|
@@ -240,20 +283,18 @@ def import_publication(
|
|
|
240
283
|
with open("calkit.yaml", "w") as f:
|
|
241
284
|
calkit.ryaml.dump(ck_info, f)
|
|
242
285
|
# Check that we have a build stage
|
|
243
|
-
# TODO: Use Calkit pipeline for this
|
|
244
286
|
typer.echo("Checking for a build stage in the pipeline")
|
|
287
|
+
pipeline = ck_info.get("pipeline", {})
|
|
288
|
+
stages = pipeline.get("stages", {})
|
|
245
289
|
stage_name = None
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
break
|
|
255
|
-
else:
|
|
256
|
-
stages = {}
|
|
290
|
+
for stage_name_i, stage in stages.items():
|
|
291
|
+
if (
|
|
292
|
+
stage.get("kind") == "latex"
|
|
293
|
+
and stage.get("target_path") == target_tex_path
|
|
294
|
+
):
|
|
295
|
+
stage_name = stage_name_i
|
|
296
|
+
typer.echo(f"Found build stage '{stage_name}' in pipeline")
|
|
297
|
+
break
|
|
257
298
|
if stage_name is None:
|
|
258
299
|
# Create a new stage
|
|
259
300
|
stage_name = calkit.to_kebab_case("build-" + dest_dir)
|
|
@@ -265,7 +306,7 @@ def import_publication(
|
|
|
265
306
|
new_latex_stage(
|
|
266
307
|
name=stage_name,
|
|
267
308
|
environment=tex_env_name,
|
|
268
|
-
target_path=
|
|
309
|
+
target_path=target_tex_path,
|
|
269
310
|
inputs=[
|
|
270
311
|
os.path.join(dest_dir, p) for p in sync_paths + push_paths
|
|
271
312
|
],
|
|
@@ -308,7 +349,7 @@ def import_publication(
|
|
|
308
349
|
]
|
|
309
350
|
)
|
|
310
351
|
# Sync the project
|
|
311
|
-
sync(paths=[dest_dir], no_commit=no_commit)
|
|
352
|
+
sync(paths=[dest_dir], no_commit=no_commit, push_only=push_only)
|
|
312
353
|
|
|
313
354
|
|
|
314
355
|
@overleaf_app.command(name="sync")
|
|
@@ -347,7 +388,7 @@ def sync(
|
|
|
347
388
|
typer.Option(
|
|
348
389
|
"--no-push",
|
|
349
390
|
help=(
|
|
350
|
-
"Do not push the changes to the project remote. "
|
|
391
|
+
"Do not push the changes to the main project remote. "
|
|
351
392
|
"Changes will always be pushed to Overleaf."
|
|
352
393
|
),
|
|
353
394
|
),
|
|
@@ -367,6 +408,19 @@ def sync(
|
|
|
367
408
|
help="Mark merge conflicts as resolved before committing.",
|
|
368
409
|
),
|
|
369
410
|
] = False,
|
|
411
|
+
push_only: Annotated[
|
|
412
|
+
bool,
|
|
413
|
+
typer.Option(
|
|
414
|
+
"--push-only",
|
|
415
|
+
"-P",
|
|
416
|
+
help=(
|
|
417
|
+
"Only push local files to Overleaf without pulling from "
|
|
418
|
+
"Overleaf. "
|
|
419
|
+
"Useful when initializing a new Overleaf project from local "
|
|
420
|
+
"files."
|
|
421
|
+
),
|
|
422
|
+
),
|
|
423
|
+
] = False,
|
|
370
424
|
):
|
|
371
425
|
"""Sync folders with Overleaf."""
|
|
372
426
|
# TODO: We should probably ensure the pipeline isn't stale
|
|
@@ -487,6 +541,7 @@ def sync(
|
|
|
487
541
|
verbose=verbose,
|
|
488
542
|
resolving_conflict=resolve,
|
|
489
543
|
print_info=typer.echo,
|
|
544
|
+
push_only=push_only,
|
|
490
545
|
)
|
|
491
546
|
except Exception as e:
|
|
492
547
|
raise_error(str(e))
|
|
@@ -307,6 +307,7 @@ def sync(
|
|
|
307
307
|
print_info=print,
|
|
308
308
|
verbose: bool = False,
|
|
309
309
|
resolving_conflict: bool = False,
|
|
310
|
+
push_only: bool = False,
|
|
310
311
|
) -> dict:
|
|
311
312
|
"""Sync between the main project repo and Overleaf repo.
|
|
312
313
|
|
|
@@ -315,6 +316,10 @@ def sync(
|
|
|
315
316
|
All files in the Overleaf repo are committed to Git, while some in the
|
|
316
317
|
main project can be ignored, e.g., in cases where they are copied in from
|
|
317
318
|
a map-paths stage.
|
|
319
|
+
|
|
320
|
+
When push_only is True, only push local files to Overleaf without pulling
|
|
321
|
+
or applying changes from Overleaf to local. Useful for initializing a new
|
|
322
|
+
Overleaf project from local files.
|
|
318
323
|
"""
|
|
319
324
|
res = {}
|
|
320
325
|
# Normalize ``path_in_project`` as a posix path
|
|
@@ -344,7 +349,13 @@ def sync(
|
|
|
344
349
|
)
|
|
345
350
|
paths_for_overleaf_patch = paths.paths_to_use_for_git_patch
|
|
346
351
|
res["paths_for_overleaf_patch"] = paths_for_overleaf_patch
|
|
347
|
-
if
|
|
352
|
+
if push_only:
|
|
353
|
+
# When push_only is True, skip pulling from Overleaf and applying
|
|
354
|
+
# patches to local
|
|
355
|
+
# Simply copy files to Overleaf
|
|
356
|
+
print_info("Push-only sync; skipping pull from Overleaf")
|
|
357
|
+
res["patch"] = None
|
|
358
|
+
elif last_sync_commit:
|
|
348
359
|
# Compute a patch in the Overleaf project between HEAD and the last
|
|
349
360
|
# sync
|
|
350
361
|
patch = overleaf_repo.git.format_patch(
|
|
@@ -13,6 +13,7 @@ import dvc.repo
|
|
|
13
13
|
import git
|
|
14
14
|
import pytest
|
|
15
15
|
import toml
|
|
16
|
+
import yaml
|
|
16
17
|
from dvc.exceptions import NotDvcRepoError
|
|
17
18
|
from git.exc import InvalidGitRepositoryError
|
|
18
19
|
|
|
@@ -645,6 +646,70 @@ def test_run(tmp_dir):
|
|
|
645
646
|
assert "stage_run_info" in res
|
|
646
647
|
|
|
647
648
|
|
|
649
|
+
def test_run_ignore_errors(tmp_dir):
|
|
650
|
+
subprocess.check_call(["calkit", "init"])
|
|
651
|
+
# Create a pipeline with a failing stage and an independent stage
|
|
652
|
+
dvc_yaml = {
|
|
653
|
+
"stages": {
|
|
654
|
+
"failing-stage": {
|
|
655
|
+
"cmd": 'python -c "import sys; sys.exit(1)"',
|
|
656
|
+
},
|
|
657
|
+
"independent-stage": {
|
|
658
|
+
"cmd": "python -c \"open('out.txt', 'w').write('done')\"",
|
|
659
|
+
"outs": ["out.txt"],
|
|
660
|
+
},
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
with open("dvc.yaml", "w") as f:
|
|
664
|
+
yaml.dump(dvc_yaml, f)
|
|
665
|
+
subprocess.check_call(
|
|
666
|
+
["calkit", "save", "-am", "Create pipeline", "--no-push"]
|
|
667
|
+
)
|
|
668
|
+
# Without --ignore-errors, the pipeline should fail
|
|
669
|
+
result = subprocess.run(["calkit", "run"])
|
|
670
|
+
assert result.returncode != 0
|
|
671
|
+
# With --ignore-errors, the independent stage should complete
|
|
672
|
+
if os.path.exists("out.txt"):
|
|
673
|
+
os.remove("out.txt")
|
|
674
|
+
subprocess.check_call(["calkit", "run", "--ignore-errors"])
|
|
675
|
+
assert os.path.exists("out.txt")
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
def test_run_downstream(tmp_dir):
|
|
679
|
+
subprocess.check_call(["calkit", "init"])
|
|
680
|
+
# Create a pipeline: stage-a -> stage-b
|
|
681
|
+
dvc_yaml = {
|
|
682
|
+
"stages": {
|
|
683
|
+
"stage-a": {
|
|
684
|
+
"cmd": "python -c \"open('a.txt', 'w').write('a')\"",
|
|
685
|
+
"outs": ["a.txt"],
|
|
686
|
+
},
|
|
687
|
+
"stage-b": {
|
|
688
|
+
"cmd": (
|
|
689
|
+
"python -c \"open('b.txt', 'w')"
|
|
690
|
+
".write(open('a.txt').read() + 'b')\""
|
|
691
|
+
),
|
|
692
|
+
"deps": ["a.txt"],
|
|
693
|
+
"outs": ["b.txt"],
|
|
694
|
+
},
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
with open("dvc.yaml", "w") as f:
|
|
698
|
+
yaml.dump(dvc_yaml, f)
|
|
699
|
+
# Run all stages to prime the cache
|
|
700
|
+
subprocess.check_call(["calkit", "run"])
|
|
701
|
+
assert os.path.exists("a.txt")
|
|
702
|
+
assert os.path.exists("b.txt")
|
|
703
|
+
# Delete outputs and run with --downstream stage-a: both stages should run
|
|
704
|
+
os.remove("a.txt")
|
|
705
|
+
os.remove("b.txt")
|
|
706
|
+
subprocess.check_call(
|
|
707
|
+
["calkit", "run", "--downstream", "stage-a", "--force"]
|
|
708
|
+
)
|
|
709
|
+
assert os.path.exists("a.txt")
|
|
710
|
+
assert os.path.exists("b.txt")
|
|
711
|
+
|
|
712
|
+
|
|
648
713
|
def test_stage_run_info_from_log_content():
|
|
649
714
|
fpath = os.path.join(
|
|
650
715
|
os.path.dirname(__file__), "..", "..", "..", "test", "test-log.log"
|
|
@@ -7,6 +7,7 @@ import uuid
|
|
|
7
7
|
import git
|
|
8
8
|
|
|
9
9
|
import calkit
|
|
10
|
+
from calkit.cli.overleaf import _extract_title_from_tex
|
|
10
11
|
from calkit.git import ls_files
|
|
11
12
|
|
|
12
13
|
|
|
@@ -141,3 +142,18 @@ def test_overleaf(tmp_dir):
|
|
|
141
142
|
assert "main.pdf" not in ol_repo_git_show
|
|
142
143
|
assert "main.log" not in ol_repo_git_show
|
|
143
144
|
assert "main.aux" not in ol_repo_git_show
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def test_extract_title_from_tex(tmp_dir):
|
|
148
|
+
# Test that we can extract a title from a simple LaTeX file
|
|
149
|
+
tex = r"""
|
|
150
|
+
\documentclass{article}
|
|
151
|
+
\title{My Cool Paper}
|
|
152
|
+
\begin{document}
|
|
153
|
+
Hello world!
|
|
154
|
+
\end{document}
|
|
155
|
+
"""
|
|
156
|
+
with open("test.tex", "w") as f:
|
|
157
|
+
f.write(tex)
|
|
158
|
+
title = _extract_title_from_tex("test.tex")
|
|
159
|
+
assert title == "My Cool Paper"
|
|
@@ -51,10 +51,7 @@ For example:
|
|
|
51
51
|
```sh
|
|
52
52
|
calkit overleaf import \
|
|
53
53
|
https://www.overleaf.com/project/68000059d42b134573cb2e35 \
|
|
54
|
-
paper
|
|
55
|
-
--title "My paper title" \
|
|
56
|
-
--kind journal-article \
|
|
57
|
-
--push-path figures
|
|
54
|
+
paper
|
|
58
55
|
```
|
|
59
56
|
|
|
60
57
|
This command will link a local project folder, in this case `paper`,
|
|
@@ -512,6 +512,7 @@ dependencies = [
|
|
|
512
512
|
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
|
513
513
|
{ name = "requests" },
|
|
514
514
|
{ name = "sqlitedict" },
|
|
515
|
+
{ name = "texsoup" },
|
|
515
516
|
{ name = "toml" },
|
|
516
517
|
{ name = "tqdm" },
|
|
517
518
|
{ name = "typer" },
|
|
@@ -580,6 +581,7 @@ requires-dist = [
|
|
|
580
581
|
{ name = "pywin32", marker = "sys_platform == 'win32'" },
|
|
581
582
|
{ name = "requests" },
|
|
582
583
|
{ name = "sqlitedict", specifier = ">=2.1.0" },
|
|
584
|
+
{ name = "texsoup", specifier = ">=0.3.1" },
|
|
583
585
|
{ name = "toml", specifier = ">=0.10.2" },
|
|
584
586
|
{ name = "tqdm", specifier = ">=4.67.1" },
|
|
585
587
|
{ name = "typer", specifier = "==0.21.1" },
|
|
@@ -5065,6 +5067,15 @@ wheels = [
|
|
|
5065
5067
|
{ url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" },
|
|
5066
5068
|
]
|
|
5067
5069
|
|
|
5070
|
+
[[package]]
|
|
5071
|
+
name = "texsoup"
|
|
5072
|
+
version = "0.3.1"
|
|
5073
|
+
source = { registry = "https://pypi.org/simple" }
|
|
5074
|
+
sdist = { url = "https://files.pythonhosted.org/packages/84/58/1c503390ed1a81cdcbff811dbf7a54132994acef8dd2194d55cf657a9e97/TexSoup-0.3.1.tar.gz", hash = "sha256:3f6b2ad0abe3688a6656f544c1ba04d0eb25f423f8c377b7369f9ce061ddb70b", size = 26174, upload-time = "2020-08-03T10:14:56.027Z" }
|
|
5075
|
+
wheels = [
|
|
5076
|
+
{ url = "https://files.pythonhosted.org/packages/5c/a7/e9eb0e14633710b51b8472a3beccc7d6a44d55a0a3ef4493ebb4b7977253/TexSoup-0.3.1-py3-none-any.whl", hash = "sha256:ae8f08d17f86a905b7c2ce01c9f2da613fbca0bcea78c71d727719e896045bed", size = 27809, upload-time = "2024-02-28T09:15:28.697Z" },
|
|
5077
|
+
]
|
|
5078
|
+
|
|
5068
5079
|
[[package]]
|
|
5069
5080
|
name = "tinycss2"
|
|
5070
5081
|
version = "1.4.0"
|
|
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.34.2 → calkit_python-0.34.4}/calkit/labextension/schemas/calkit/package.json.orig
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/schemas/calkit/plugin.json
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/502.9a2c5772a15466e923ef.js
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/695.2c41003a452d43d2b358.js
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/909.99b13e1e3c2a6e1ceb30.js
RENAMED
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js
RENAMED
|
File without changes
|
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.4}/calkit/labextension/static/b2f1c3efe70cb539d121.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.34.2 → calkit_python-0.34.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
|