calkit-python 0.30.0__tar.gz → 0.30.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.
Files changed (181) hide show
  1. {calkit_python-0.30.0 → calkit_python-0.30.2}/PKG-INFO +1 -1
  2. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/__init__.py +1 -1
  3. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/overleaf.py +25 -13
  4. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/models/pipeline.py +9 -2
  5. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_new.py +2 -1
  6. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/models/test_pipeline.py +8 -0
  7. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/FUNDING.yml +0 -0
  8. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/workflows/docs.yml +0 -0
  9. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/workflows/format.yml +0 -0
  10. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/workflows/publish-test.yml +0 -0
  11. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/workflows/publish.yml +0 -0
  12. {calkit_python-0.30.0 → calkit_python-0.30.2}/.github/workflows/test.yml +0 -0
  13. {calkit_python-0.30.0 → calkit_python-0.30.2}/.gitignore +0 -0
  14. {calkit_python-0.30.0 → calkit_python-0.30.2}/.pre-commit-config.yaml +0 -0
  15. {calkit_python-0.30.0 → calkit_python-0.30.2}/.python-version +0 -0
  16. {calkit_python-0.30.0 → calkit_python-0.30.2}/CITATION.cff +0 -0
  17. {calkit_python-0.30.0 → calkit_python-0.30.2}/CONTRIBUTING.md +0 -0
  18. {calkit_python-0.30.0 → calkit_python-0.30.2}/LICENSE +0 -0
  19. {calkit_python-0.30.0 → calkit_python-0.30.2}/Makefile +0 -0
  20. {calkit_python-0.30.0 → calkit_python-0.30.2}/README.md +0 -0
  21. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/__main__.py +0 -0
  22. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/calc.py +0 -0
  23. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/check.py +0 -0
  24. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/__init__.py +0 -0
  25. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/check.py +0 -0
  26. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/cloud.py +0 -0
  27. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/config.py +0 -0
  28. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/core.py +0 -0
  29. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/describe.py +0 -0
  30. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/import_.py +0 -0
  31. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/list.py +0 -0
  32. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/main.py +0 -0
  33. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/new.py +0 -0
  34. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/notebooks.py +0 -0
  35. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/office.py +0 -0
  36. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/slurm.py +0 -0
  37. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cli/update.py +0 -0
  38. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/cloud.py +0 -0
  39. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/conda.py +0 -0
  40. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/config.py +0 -0
  41. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/core.py +0 -0
  42. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/datasets.py +0 -0
  43. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/docker.py +0 -0
  44. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/dvc.py +0 -0
  45. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/environments.py +0 -0
  46. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/git.py +0 -0
  47. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/github.py +0 -0
  48. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/gui.py +0 -0
  49. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/jupyter.py +0 -0
  50. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/magics.py +0 -0
  51. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/matlab.py +0 -0
  52. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/models/__init__.py +0 -0
  53. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/models/core.py +0 -0
  54. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/models/io.py +0 -0
  55. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/models/iteration.py +0 -0
  56. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/notebooks.py +0 -0
  57. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/office.py +0 -0
  58. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/ops.py +0 -0
  59. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/pipeline.py +0 -0
  60. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/releases.py +0 -0
  61. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/server.py +0 -0
  62. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/__init__.py +0 -0
  63. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/core.py +0 -0
  64. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/__init__.py +0 -0
  65. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/article/paper.tex +0 -0
  66. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/core.py +0 -0
  67. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/jfm/jfm.bst +0 -0
  68. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/jfm/jfm.cls +0 -0
  69. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  70. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/jfm/paper.tex +0 -0
  71. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/templates/latex/jfm/upmath.sty +0 -0
  72. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/__init__.py +0 -0
  73. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/__init__.py +0 -0
  74. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_check.py +0 -0
  75. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_config.py +0 -0
  76. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_list.py +0 -0
  77. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_main.py +0 -0
  78. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/cli/test_notebooks.py +0 -0
  79. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/models/__init__.py +0 -0
  80. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/models/test_iteration.py +0 -0
  81. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_calc.py +0 -0
  82. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_check.py +0 -0
  83. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_conda.py +0 -0
  84. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_core.py +0 -0
  85. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_dvc.py +0 -0
  86. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_jupyter.py +0 -0
  87. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_magics.py +0 -0
  88. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_notebooks.py +0 -0
  89. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_pipeline.py +0 -0
  90. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/tests/test_templates.py +0 -0
  91. {calkit_python-0.30.0 → calkit_python-0.30.2}/calkit/zenodo.py +0 -0
  92. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/CNAME +0 -0
  93. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/apps.md +0 -0
  94. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/calculations.md +0 -0
  95. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/calkit-yaml.md +0 -0
  96. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/cli-reference.md +0 -0
  97. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/cloud-integration.md +0 -0
  98. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/datasets.md +0 -0
  99. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/dependencies.md +0 -0
  100. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/environments.md +0 -0
  101. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/examples.md +0 -0
  102. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/help.md +0 -0
  103. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/img/c-to-the-k-white.svg +0 -0
  104. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/img/calkit-no-bg.png +0 -0
  105. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/img/connect-zenodo.png +0 -0
  106. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/img/jupyterlab-params.png +0 -0
  107. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/img/vscode-nb-params.png +0 -0
  108. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/index.md +0 -0
  109. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/installation.md +0 -0
  110. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/local-server.md +0 -0
  111. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/notebooks.md +0 -0
  112. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/overleaf.md +0 -0
  113. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/pipeline/index.md +0 -0
  114. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/pipeline/manual-steps.md +0 -0
  115. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/pipeline/running-and-logging.md +0 -0
  116. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/pipeline/slurm.md +0 -0
  117. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/quickstart.md +0 -0
  118. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/references.md +0 -0
  119. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/releases.md +0 -0
  120. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  121. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/conda-envs.md +0 -0
  122. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/existing-project.md +0 -0
  123. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/first-project.md +0 -0
  124. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/github-actions.md +0 -0
  125. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  126. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  127. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  128. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  129. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  130. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  131. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  132. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  133. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  134. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  135. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  136. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  137. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  138. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  139. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  140. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/create-project.png +0 -0
  141. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  142. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/excel-chart.png +0 -0
  143. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/excel-data.png +0 -0
  144. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  145. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/needs-clone.png +0 -0
  146. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/new-stage.png +0 -0
  147. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  148. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  149. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/status-more-rows.png +0 -0
  150. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  151. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/untracked-data.png +0 -0
  152. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/updated-publication.png +0 -0
  153. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  154. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/office/workflow-page.png +0 -0
  155. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/clone.png +0 -0
  156. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/create-project.png +0 -0
  157. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  158. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  159. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  160. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/new-token.png +0 -0
  161. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/reclone.png +0 -0
  162. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  163. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/quick-actions.png +0 -0
  164. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/img/run-proc.png +0 -0
  165. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/index.md +0 -0
  166. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/latex-codespaces.md +0 -0
  167. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/matlab.md +0 -0
  168. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/notebook-pipeline.md +0 -0
  169. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/office.md +0 -0
  170. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/openfoam.md +0 -0
  171. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/tutorials/procedures.md +0 -0
  172. {calkit_python-0.30.0 → calkit_python-0.30.2}/docs/version-control.md +0 -0
  173. {calkit_python-0.30.0 → calkit_python-0.30.2}/mkdocs.yml +0 -0
  174. {calkit_python-0.30.0 → calkit_python-0.30.2}/pyproject.toml +0 -0
  175. {calkit_python-0.30.0 → calkit_python-0.30.2}/scripts/install.ps1 +0 -0
  176. {calkit_python-0.30.0 → calkit_python-0.30.2}/scripts/install.sh +0 -0
  177. {calkit_python-0.30.0 → calkit_python-0.30.2}/test/nb-params.ipynb +0 -0
  178. {calkit_python-0.30.0 → calkit_python-0.30.2}/test/nb-subdir.ipynb +0 -0
  179. {calkit_python-0.30.0 → calkit_python-0.30.2}/test/pipeline.ipynb +0 -0
  180. {calkit_python-0.30.0 → calkit_python-0.30.2}/test/test-log.log +0 -0
  181. {calkit_python-0.30.0 → calkit_python-0.30.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.30.0
3
+ Version: 0.30.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
@@ -1,4 +1,4 @@
1
- __version__ = "0.30.0"
1
+ __version__ = "0.30.2"
2
2
 
3
3
  from .core import * # noqa: F403, I001
4
4
  from . import git # noqa: F401
@@ -314,6 +314,14 @@ def sync(
314
314
  for path in paths:
315
315
  if not any(pub.get("path") == path for pub in pubs):
316
316
  raise_error(f"Publication with path '{path}' not found")
317
+ # First check our config for an Overleaf token
318
+ calkit_config = calkit.config.read()
319
+ overleaf_token = calkit_config.overleaf_token
320
+ if not overleaf_token:
321
+ raise_error(
322
+ "Overleaf token not set; "
323
+ "Please set it using 'calkit config set overleaf_token'"
324
+ )
317
325
  repo = git.Repo()
318
326
  for pub in pubs:
319
327
  overleaf_config = pub.get("overleaf", {})
@@ -341,26 +349,30 @@ def sync(
341
349
  overleaf_project_dir = os.path.join(
342
350
  ".calkit", "overleaf", overleaf_project_id
343
351
  )
352
+ overleaf_remote_url = (
353
+ f"https://git:{overleaf_token}@git.overleaf.com/"
354
+ f"{overleaf_project_id}"
355
+ )
344
356
  if not os.path.isdir(overleaf_project_dir):
345
- calkit_config = calkit.config.read()
346
- overleaf_token = calkit_config.overleaf_token
347
- if not overleaf_token:
348
- raise_error(
349
- "Overleaf token not set; "
350
- "Please set it using 'calkit config set overleaf_token'"
351
- )
352
- overleaf_clone_url = (
353
- f"https://git:{overleaf_token}@git.overleaf.com/"
354
- f"{overleaf_project_id}"
355
- )
356
357
  overleaf_repo = git.Repo.clone_from(
357
- overleaf_clone_url, to_path=overleaf_project_dir
358
+ overleaf_remote_url, to_path=overleaf_project_dir
358
359
  )
359
360
  else:
360
361
  overleaf_repo = git.Repo(overleaf_project_dir)
361
362
  # Pull the latest version in the Overleaf project
362
363
  typer.echo("Pulling the latest version from Overleaf")
363
- overleaf_repo.git.pull()
364
+ # Ensure that our current Overleaf remote URL is correct
365
+ overleaf_repo.git.remote("set-url", "origin", overleaf_remote_url)
366
+ try:
367
+ overleaf_repo.git.pull()
368
+ except Exception:
369
+ raise_error(
370
+ "Failed to pull from Overleaf; "
371
+ "check that your Overleaf token is valid\n"
372
+ "Run 'calkit config get overleaf_token' and ensure that "
373
+ "it matches one in your Overleaf account settings "
374
+ "(https://overleaf.com/user/settings)"
375
+ )
364
376
  last_sync_commit = pub["overleaf"].get("last_sync_commit")
365
377
  # Determine which paths to sync and push
366
378
  # TODO: Support glob patterns
@@ -211,13 +211,16 @@ class PythonScriptStage(Stage):
211
211
  class LatexStage(Stage):
212
212
  kind: Literal["latex"] = "latex"
213
213
  target_path: str
214
+ latexmkrc_path: str | None = None
214
215
  verbose: bool = False
215
216
  force: bool = False
216
217
  synctex: bool = True
217
218
 
218
219
  @property
219
220
  def dvc_cmd(self) -> str:
220
- cmd = f"{self.xenv_cmd} latexmk -cd -interaction=nonstopmode"
221
+ cmd = f"{self.xenv_cmd} latexmk -cd -norc -interaction=nonstopmode"
222
+ if self.latexmkrc_path is not None:
223
+ cmd += f" -r {self.latexmkrc_path}"
221
224
  if not self.verbose:
222
225
  cmd += " -silent"
223
226
  if self.force:
@@ -229,7 +232,11 @@ class LatexStage(Stage):
229
232
 
230
233
  @property
231
234
  def dvc_deps(self) -> list[str]:
232
- return [self.target_path] + super().dvc_deps
235
+ deps = [self.target_path]
236
+ if self.latexmkrc_path is not None:
237
+ deps.append(self.latexmkrc_path)
238
+ deps += super().dvc_deps
239
+ return deps
233
240
 
234
241
  @property
235
242
  def dvc_outs(self) -> list[str | dict]:
@@ -579,7 +579,8 @@ def test_new_latex_stage(tmp_dir):
579
579
  pipeline = calkit.dvc.read_pipeline()
580
580
  assert pipeline["stages"]["build-paper"]["cmd"] == (
581
581
  "calkit xenv -n tex --no-check -- "
582
- "latexmk -cd -interaction=nonstopmode -silent -synctex=1 -pdf paper.tex"
582
+ "latexmk -cd -norc -interaction=nonstopmode -silent -synctex=1 "
583
+ "-pdf paper.tex"
583
584
  )
584
585
  assert set(pipeline["stages"]["build-paper"]["deps"]) == set(
585
586
  ["paper.tex", ".calkit/env-locks/tex.json"]
@@ -63,6 +63,14 @@ def test_latexstage():
63
63
  assert " -silent " not in s.dvc_cmd
64
64
  assert "my-paper.tex" in s.dvc_deps
65
65
  assert "my-paper.pdf" in s.dvc_outs
66
+ s = LatexStage(
67
+ name="something",
68
+ environment="tex",
69
+ target_path="my-paper.tex",
70
+ latexmkrc_path="test/latexmkrc",
71
+ )
72
+ assert "test/latexmkrc" in s.dvc_deps
73
+ assert "-r test/latexmkrc" in s.dvc_cmd
66
74
 
67
75
 
68
76
  def test_jupyternotebookstage():
File without changes
File without changes
File without changes
File without changes