calkit-python 0.30.9__tar.gz → 0.30.11__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 (186) hide show
  1. {calkit_python-0.30.9 → calkit_python-0.30.11}/PKG-INFO +1 -1
  2. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/__init__.py +1 -1
  3. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/main.py +20 -3
  4. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/overleaf.py +1 -5
  5. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/core.py +20 -0
  6. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_main.py +25 -0
  7. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/dependencies.md +11 -0
  8. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/FUNDING.yml +0 -0
  9. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/workflows/docs.yml +0 -0
  10. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/workflows/format.yml +0 -0
  11. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/workflows/publish-test.yml +0 -0
  12. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/workflows/publish.yml +0 -0
  13. {calkit_python-0.30.9 → calkit_python-0.30.11}/.github/workflows/test.yml +0 -0
  14. {calkit_python-0.30.9 → calkit_python-0.30.11}/.gitignore +0 -0
  15. {calkit_python-0.30.9 → calkit_python-0.30.11}/.pre-commit-config.yaml +0 -0
  16. {calkit_python-0.30.9 → calkit_python-0.30.11}/.python-version +0 -0
  17. {calkit_python-0.30.9 → calkit_python-0.30.11}/CITATION.cff +0 -0
  18. {calkit_python-0.30.9 → calkit_python-0.30.11}/CONTRIBUTING.md +0 -0
  19. {calkit_python-0.30.9 → calkit_python-0.30.11}/LICENSE +0 -0
  20. {calkit_python-0.30.9 → calkit_python-0.30.11}/Makefile +0 -0
  21. {calkit_python-0.30.9 → calkit_python-0.30.11}/README.md +0 -0
  22. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/__main__.py +0 -0
  23. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/calc.py +0 -0
  24. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/check.py +0 -0
  25. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/__init__.py +0 -0
  26. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/check.py +0 -0
  27. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/cloud.py +0 -0
  28. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/config.py +0 -0
  29. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/core.py +0 -0
  30. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/describe.py +0 -0
  31. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/import_.py +0 -0
  32. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/list.py +0 -0
  33. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/new.py +0 -0
  34. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/notebooks.py +0 -0
  35. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/office.py +0 -0
  36. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/slurm.py +0 -0
  37. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cli/update.py +0 -0
  38. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/cloud.py +0 -0
  39. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/conda.py +0 -0
  40. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/config.py +0 -0
  41. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/datasets.py +0 -0
  42. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/docker.py +0 -0
  43. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/dvc.py +0 -0
  44. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/environments.py +0 -0
  45. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/git.py +0 -0
  46. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/github.py +0 -0
  47. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/gui.py +0 -0
  48. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/invenio.py +0 -0
  49. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/jupyter.py +0 -0
  50. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/licenses.py +0 -0
  51. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/magics.py +0 -0
  52. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/matlab.py +0 -0
  53. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/models/__init__.py +0 -0
  54. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/models/core.py +0 -0
  55. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/models/io.py +0 -0
  56. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/models/iteration.py +0 -0
  57. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/models/pipeline.py +0 -0
  58. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/notebooks.py +0 -0
  59. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/office.py +0 -0
  60. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/ops.py +0 -0
  61. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/overleaf.py +0 -0
  62. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/pipeline.py +0 -0
  63. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/releases.py +0 -0
  64. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/server.py +0 -0
  65. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/__init__.py +0 -0
  66. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/core.py +0 -0
  67. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/__init__.py +0 -0
  68. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/article/paper.tex +0 -0
  69. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/core.py +0 -0
  70. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/jfm/jfm.bst +0 -0
  71. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/jfm/jfm.cls +0 -0
  72. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  73. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/jfm/paper.tex +0 -0
  74. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/templates/latex/jfm/upmath.sty +0 -0
  75. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/__init__.py +0 -0
  76. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/__init__.py +0 -0
  77. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_check.py +0 -0
  78. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_config.py +0 -0
  79. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_list.py +0 -0
  80. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_new.py +0 -0
  81. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_notebooks.py +0 -0
  82. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/cli/test_overleaf.py +0 -0
  83. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/models/__init__.py +0 -0
  84. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/models/test_iteration.py +0 -0
  85. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/models/test_pipeline.py +0 -0
  86. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_calc.py +0 -0
  87. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_check.py +0 -0
  88. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_conda.py +0 -0
  89. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_core.py +0 -0
  90. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_dvc.py +0 -0
  91. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_invenio.py +0 -0
  92. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_jupyter.py +0 -0
  93. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_magics.py +0 -0
  94. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_notebooks.py +0 -0
  95. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_pipeline.py +0 -0
  96. {calkit_python-0.30.9 → calkit_python-0.30.11}/calkit/tests/test_templates.py +0 -0
  97. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/CNAME +0 -0
  98. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/apps.md +0 -0
  99. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/calculations.md +0 -0
  100. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/calkit-yaml.md +0 -0
  101. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/cli-reference.md +0 -0
  102. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/cloud-integration.md +0 -0
  103. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/datasets.md +0 -0
  104. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/environments.md +0 -0
  105. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/examples.md +0 -0
  106. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/help.md +0 -0
  107. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/img/c-to-the-k-white.svg +0 -0
  108. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/img/calkit-no-bg.png +0 -0
  109. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/img/connect-zenodo.png +0 -0
  110. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/img/jupyterlab-params.png +0 -0
  111. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/img/vscode-nb-params.png +0 -0
  112. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/index.md +0 -0
  113. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/installation.md +0 -0
  114. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/local-server.md +0 -0
  115. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/notebooks.md +0 -0
  116. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/overleaf.md +0 -0
  117. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/pipeline/index.md +0 -0
  118. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/pipeline/manual-steps.md +0 -0
  119. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/pipeline/running-and-logging.md +0 -0
  120. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/pipeline/slurm.md +0 -0
  121. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/quickstart.md +0 -0
  122. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/references.md +0 -0
  123. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/releases.md +0 -0
  124. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  125. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/conda-envs.md +0 -0
  126. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/existing-project.md +0 -0
  127. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/first-project.md +0 -0
  128. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/github-actions.md +0 -0
  129. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  130. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  131. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  132. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  133. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  134. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  135. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  136. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  137. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  138. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  139. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  140. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  141. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  142. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  143. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  144. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/create-project.png +0 -0
  145. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  146. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/excel-chart.png +0 -0
  147. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/excel-data.png +0 -0
  148. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  149. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/needs-clone.png +0 -0
  150. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/new-stage.png +0 -0
  151. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  152. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  153. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/status-more-rows.png +0 -0
  154. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  155. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/untracked-data.png +0 -0
  156. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/updated-publication.png +0 -0
  157. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  158. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/office/workflow-page.png +0 -0
  159. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/clone.png +0 -0
  160. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/create-project.png +0 -0
  161. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  162. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  163. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  164. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/new-token.png +0 -0
  165. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/reclone.png +0 -0
  166. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  167. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/quick-actions.png +0 -0
  168. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/img/run-proc.png +0 -0
  169. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/index.md +0 -0
  170. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/latex-codespaces.md +0 -0
  171. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/matlab.md +0 -0
  172. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/notebook-pipeline.md +0 -0
  173. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/office.md +0 -0
  174. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/openfoam.md +0 -0
  175. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/tutorials/procedures.md +0 -0
  176. {calkit_python-0.30.9 → calkit_python-0.30.11}/docs/version-control.md +0 -0
  177. {calkit_python-0.30.9 → calkit_python-0.30.11}/mkdocs.yml +0 -0
  178. {calkit_python-0.30.9 → calkit_python-0.30.11}/pyproject.toml +0 -0
  179. {calkit_python-0.30.9 → calkit_python-0.30.11}/scripts/install.ps1 +0 -0
  180. {calkit_python-0.30.9 → calkit_python-0.30.11}/scripts/install.sh +0 -0
  181. {calkit_python-0.30.9 → calkit_python-0.30.11}/test/nb-julia.ipynb +0 -0
  182. {calkit_python-0.30.9 → calkit_python-0.30.11}/test/nb-params.ipynb +0 -0
  183. {calkit_python-0.30.9 → calkit_python-0.30.11}/test/nb-subdir.ipynb +0 -0
  184. {calkit_python-0.30.9 → calkit_python-0.30.11}/test/pipeline.ipynb +0 -0
  185. {calkit_python-0.30.9 → calkit_python-0.30.11}/test/test-log.log +0 -0
  186. {calkit_python-0.30.9 → calkit_python-0.30.11}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.30.9
3
+ Version: 0.30.11
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.9"
1
+ __version__ = "0.30.11"
2
2
 
3
3
  from .core import * # noqa: F403, I001
4
4
  from . import git # noqa: F401
@@ -82,9 +82,20 @@ app.add_typer(cloud_app, name="cloud", help="Interact with a Calkit Cloud.")
82
82
  app.add_typer(slurm_app, name="slurm", help="Work with SLURM.")
83
83
 
84
84
  # Constants for version control auto-ignore
85
- AUTO_IGNORE_SUFFIXES = [".DS_Store", ".env", ".pyc", ".synctex.gz"]
85
+ AUTO_IGNORE_SUFFIXES = [
86
+ ".DS_Store",
87
+ ".env",
88
+ ".pyc",
89
+ ".synctex.gz",
90
+ ".ipynb_checkpoints",
91
+ ]
86
92
  AUTO_IGNORE_PATHS = [os.path.join(".dvc", "config.local")]
87
- AUTO_IGNORE_PREFIXES = [".venv", "__pycache__"]
93
+ AUTO_IGNORE_PREFIXES = [
94
+ ".venv",
95
+ "__pycache__",
96
+ ".ipynb_checkpoints",
97
+ ".calkit/overleaf/",
98
+ ]
88
99
  # Constants for version control auto-add to DVC
89
100
  DVC_EXTENSIONS = [
90
101
  ".png",
@@ -990,6 +1001,9 @@ def run(
990
1001
  """Check dependencies and run the pipeline."""
991
1002
  os.environ["CALKIT_PIPELINE_RUNNING"] = "1"
992
1003
  dotenv.load_dotenv(dotenv_path=".env", verbose=verbose)
1004
+ ck_info = calkit.load_calkit_info()
1005
+ # Set env vars
1006
+ calkit.set_env_vars(ck_info=ck_info)
993
1007
  if not quiet:
994
1008
  typer.echo("Getting system information")
995
1009
  system_info = calkit.get_system_info()
@@ -1013,7 +1027,6 @@ def run(
1013
1027
  os.environ.pop("CALKIT_PIPELINE_RUNNING", None)
1014
1028
  raise_error(str(e))
1015
1029
  # Compile the pipeline
1016
- ck_info = calkit.load_calkit_info()
1017
1030
  if ck_info.get("pipeline", {}):
1018
1031
  if not quiet:
1019
1032
  typer.echo("Compiling DVC pipeline")
@@ -1251,6 +1264,7 @@ def run_in_env(
1251
1264
  ):
1252
1265
  dotenv.load_dotenv(dotenv_path=".env", verbose=verbose)
1253
1266
  ck_info = calkit.load_calkit_info(process_includes="environments")
1267
+ calkit.set_env_vars(ck_info=ck_info)
1254
1268
  envs = ck_info.get("environments", {})
1255
1269
  if not envs:
1256
1270
  raise_error("No environments defined in calkit.yaml")
@@ -1314,6 +1328,8 @@ def run_in_env(
1314
1328
  if "env-vars" in env:
1315
1329
  warn("The 'env-vars' key is deprecated; use 'env_vars' instead.")
1316
1330
  env_vars.update(env["env-vars"])
1331
+ # Add project-level env vars (non-secret)
1332
+ env_vars.update(ck_info.get("env_vars", {}))
1317
1333
  # Also add any project-level environmental variable dependencies
1318
1334
  project_env_vars = calkit.get_env_var_dep_names()
1319
1335
  if project_env_vars:
@@ -1668,6 +1684,7 @@ def run_procedure(
1668
1684
  return value
1669
1685
 
1670
1686
  ck_info = calkit.load_calkit_info(process_includes="procedures")
1687
+ calkit.set_env_vars(ck_info=ck_info)
1671
1688
  procs = ck_info.get("procedures", {})
1672
1689
  if name not in procs:
1673
1690
  raise_error(f"'{name}' is not defined as a procedure")
@@ -159,11 +159,7 @@ def import_publication(
159
159
  shutil.rmtree(overleaf_project_dir)
160
160
  # Clone the Overleaf project
161
161
  typer.echo("Cloning Overleaf project")
162
- git.Repo.clone_from(
163
- git_clone_url,
164
- overleaf_project_dir,
165
- depth=1,
166
- )
162
+ git.Repo.clone_from(git_clone_url, overleaf_project_dir)
167
163
  # Detect target path if not specified
168
164
  if target_path is None:
169
165
  ol_contents = os.listdir(overleaf_project_dir)
@@ -602,3 +602,23 @@ def get_md5(path: str, exclude_files: list[str] | None = None) -> str:
602
602
  with open(path) as f:
603
603
  content = f.read()
604
604
  return hashlib.md5(content.encode()).hexdigest()
605
+
606
+
607
+ def set_env_vars(ck_info: dict, cli: bool = True) -> None:
608
+ """Set environmental variables according to the values read from
609
+ ``calkit.yaml``.
610
+ """
611
+ env_vars = ck_info.get("env_vars", {})
612
+ if not isinstance(env_vars, dict):
613
+ msg = (
614
+ "Environmental variables in Calkit project info must be a "
615
+ "map/dictionary"
616
+ )
617
+ if cli:
618
+ from calkit.cli import raise_error
619
+
620
+ raise_error(msg)
621
+ else:
622
+ raise ValueError(msg)
623
+ for k, v in env_vars.items():
624
+ os.environ[str(k)] = str(v)
@@ -50,6 +50,18 @@ def test_run_in_env(tmp_dir):
50
50
  stdin=stdin,
51
51
  check=True,
52
52
  )
53
+ # Check that we can pass project env vars into the container
54
+ ck_info = calkit.load_calkit_info()
55
+ ck_info["env_vars"] = {"MY_COOL_ENV_VAR": "my cool value"}
56
+ with open("calkit.yaml", "w") as f:
57
+ calkit.ryaml.dump(ck_info, f)
58
+ p = subprocess.run(
59
+ ["calkit", "xenv", "echo", "$MY_COOL_ENV_VAR"],
60
+ text=True,
61
+ capture_output=True,
62
+ check=True,
63
+ )
64
+ assert "my cool value" in p.stdout
53
65
  # Now let's create a 2nd Docker env and make sure we need to call it by
54
66
  # name when trying to run
55
67
  subprocess.check_call(
@@ -452,6 +464,19 @@ def test_run(tmp_dir):
452
464
  subprocess.check_call(
453
465
  ["calkit", "save", "-am", "Run pipeline", "--no-push"]
454
466
  )
467
+ # Test that we can set env vars at the project level
468
+ ck_info = calkit.load_calkit_info()
469
+ ck_info["env_vars"] = {"MY_ENV_VAR": "some-value"}
470
+ with open("calkit.yaml", "w") as f:
471
+ calkit.ryaml.dump(ck_info, f)
472
+ with open("script.py", "w") as f:
473
+ f.write("import os\nprint(os.environ['MY_ENV_VAR'])")
474
+ out = subprocess.check_output(["calkit", "run"], text=True)
475
+ print(out)
476
+ assert "some-value" in out
477
+ subprocess.check_call(
478
+ ["calkit", "save", "-am", "Run pipeline", "--no-push"]
479
+ )
455
480
  # Make sure we can run on a detached head
456
481
  repo = git.Repo()
457
482
  repo.git.checkout("HEAD^")
@@ -57,3 +57,14 @@ can be used to define these variables.
57
57
  in lieu of directly editing `.env`.
58
58
  `calkit check env-vars` can also be run to check for missing variables,
59
59
  prompting the user for their values and setting them in `.env`.
60
+
61
+ Additional (non-secret) environmental variables can be set at the project
62
+ level in `calkit.yaml` in the `env_vars` map:
63
+
64
+ ```yaml
65
+ env_vars:
66
+ MY_ENV_VAR_NAME: the-value-here
67
+ ANOTHER_VAR: another value
68
+ ```
69
+
70
+ These will then be set for calls to the `run` and `xenv` commands.
File without changes
File without changes
File without changes