calkit-python 0.30.7__tar.gz → 0.30.9__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 (189) hide show
  1. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/workflows/test.yml +6 -1
  2. {calkit_python-0.30.7 → calkit_python-0.30.9}/PKG-INFO +2 -2
  3. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/__init__.py +4 -2
  4. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/list.py +33 -1
  5. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/main.py +8 -4
  6. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/new.py +293 -126
  7. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/overleaf.py +151 -74
  8. calkit_python-0.30.9/calkit/cli/update.py +287 -0
  9. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/config.py +2 -1
  10. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/core.py +16 -0
  11. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/git.py +7 -2
  12. calkit_python-0.30.9/calkit/invenio.py +106 -0
  13. calkit_python-0.30.9/calkit/licenses.py +59 -0
  14. calkit_python-0.30.9/calkit/overleaf.py +15 -0
  15. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/releases.py +21 -9
  16. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_main.py +1 -0
  17. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_new.py +113 -0
  18. calkit_python-0.30.9/calkit/tests/cli/test_overleaf.py +90 -0
  19. calkit_python-0.30.9/calkit/tests/test_invenio.py +15 -0
  20. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/overleaf.md +35 -2
  21. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/releases.md +17 -0
  22. {calkit_python-0.30.7 → calkit_python-0.30.9}/pyproject.toml +4 -2
  23. calkit_python-0.30.9/uv.lock +5214 -0
  24. calkit_python-0.30.7/calkit/cli/update.py +0 -39
  25. calkit_python-0.30.7/calkit/zenodo.py +0 -82
  26. calkit_python-0.30.7/uv.lock +0 -4779
  27. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/FUNDING.yml +0 -0
  28. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/workflows/docs.yml +0 -0
  29. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/workflows/format.yml +0 -0
  30. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/workflows/publish-test.yml +0 -0
  31. {calkit_python-0.30.7 → calkit_python-0.30.9}/.github/workflows/publish.yml +0 -0
  32. {calkit_python-0.30.7 → calkit_python-0.30.9}/.gitignore +0 -0
  33. {calkit_python-0.30.7 → calkit_python-0.30.9}/.pre-commit-config.yaml +0 -0
  34. {calkit_python-0.30.7 → calkit_python-0.30.9}/.python-version +0 -0
  35. {calkit_python-0.30.7 → calkit_python-0.30.9}/CITATION.cff +0 -0
  36. {calkit_python-0.30.7 → calkit_python-0.30.9}/CONTRIBUTING.md +0 -0
  37. {calkit_python-0.30.7 → calkit_python-0.30.9}/LICENSE +0 -0
  38. {calkit_python-0.30.7 → calkit_python-0.30.9}/Makefile +0 -0
  39. {calkit_python-0.30.7 → calkit_python-0.30.9}/README.md +0 -0
  40. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/__main__.py +0 -0
  41. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/calc.py +0 -0
  42. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/check.py +0 -0
  43. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/__init__.py +0 -0
  44. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/check.py +0 -0
  45. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/cloud.py +0 -0
  46. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/config.py +0 -0
  47. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/core.py +0 -0
  48. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/describe.py +0 -0
  49. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/import_.py +0 -0
  50. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/notebooks.py +0 -0
  51. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/office.py +0 -0
  52. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cli/slurm.py +0 -0
  53. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/cloud.py +0 -0
  54. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/conda.py +0 -0
  55. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/datasets.py +0 -0
  56. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/docker.py +0 -0
  57. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/dvc.py +0 -0
  58. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/environments.py +0 -0
  59. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/github.py +0 -0
  60. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/gui.py +0 -0
  61. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/jupyter.py +0 -0
  62. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/magics.py +0 -0
  63. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/matlab.py +0 -0
  64. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/models/__init__.py +0 -0
  65. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/models/core.py +0 -0
  66. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/models/io.py +0 -0
  67. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/models/iteration.py +0 -0
  68. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/models/pipeline.py +0 -0
  69. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/notebooks.py +0 -0
  70. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/office.py +0 -0
  71. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/ops.py +0 -0
  72. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/pipeline.py +0 -0
  73. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/server.py +0 -0
  74. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/__init__.py +0 -0
  75. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/core.py +0 -0
  76. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/__init__.py +0 -0
  77. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/article/paper.tex +0 -0
  78. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/core.py +0 -0
  79. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/jfm/jfm.bst +0 -0
  80. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/jfm/jfm.cls +0 -0
  81. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  82. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/jfm/paper.tex +0 -0
  83. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/templates/latex/jfm/upmath.sty +0 -0
  84. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/__init__.py +0 -0
  85. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/__init__.py +0 -0
  86. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_check.py +0 -0
  87. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_config.py +0 -0
  88. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_list.py +0 -0
  89. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/cli/test_notebooks.py +0 -0
  90. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/models/__init__.py +0 -0
  91. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/models/test_iteration.py +0 -0
  92. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/models/test_pipeline.py +0 -0
  93. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_calc.py +0 -0
  94. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_check.py +0 -0
  95. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_conda.py +0 -0
  96. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_core.py +0 -0
  97. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_dvc.py +0 -0
  98. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_jupyter.py +0 -0
  99. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_magics.py +0 -0
  100. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_notebooks.py +0 -0
  101. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_pipeline.py +0 -0
  102. {calkit_python-0.30.7 → calkit_python-0.30.9}/calkit/tests/test_templates.py +0 -0
  103. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/CNAME +0 -0
  104. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/apps.md +0 -0
  105. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/calculations.md +0 -0
  106. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/calkit-yaml.md +0 -0
  107. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/cli-reference.md +0 -0
  108. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/cloud-integration.md +0 -0
  109. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/datasets.md +0 -0
  110. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/dependencies.md +0 -0
  111. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/environments.md +0 -0
  112. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/examples.md +0 -0
  113. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/help.md +0 -0
  114. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/img/c-to-the-k-white.svg +0 -0
  115. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/img/calkit-no-bg.png +0 -0
  116. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/img/connect-zenodo.png +0 -0
  117. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/img/jupyterlab-params.png +0 -0
  118. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/img/vscode-nb-params.png +0 -0
  119. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/index.md +0 -0
  120. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/installation.md +0 -0
  121. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/local-server.md +0 -0
  122. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/notebooks.md +0 -0
  123. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/pipeline/index.md +0 -0
  124. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/pipeline/manual-steps.md +0 -0
  125. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/pipeline/running-and-logging.md +0 -0
  126. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/pipeline/slurm.md +0 -0
  127. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/quickstart.md +0 -0
  128. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/references.md +0 -0
  129. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  130. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/conda-envs.md +0 -0
  131. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/existing-project.md +0 -0
  132. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/first-project.md +0 -0
  133. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/github-actions.md +0 -0
  134. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  135. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  136. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  137. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  138. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  139. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  140. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  141. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  142. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  143. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  144. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  145. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  146. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  147. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  148. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  149. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/create-project.png +0 -0
  150. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  151. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/excel-chart.png +0 -0
  152. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/excel-data.png +0 -0
  153. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  154. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/needs-clone.png +0 -0
  155. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/new-stage.png +0 -0
  156. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  157. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  158. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/status-more-rows.png +0 -0
  159. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  160. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/untracked-data.png +0 -0
  161. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/updated-publication.png +0 -0
  162. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  163. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/office/workflow-page.png +0 -0
  164. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/clone.png +0 -0
  165. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/create-project.png +0 -0
  166. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  167. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  168. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  169. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/new-token.png +0 -0
  170. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/reclone.png +0 -0
  171. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  172. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/quick-actions.png +0 -0
  173. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/img/run-proc.png +0 -0
  174. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/index.md +0 -0
  175. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/latex-codespaces.md +0 -0
  176. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/matlab.md +0 -0
  177. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/notebook-pipeline.md +0 -0
  178. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/office.md +0 -0
  179. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/openfoam.md +0 -0
  180. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/tutorials/procedures.md +0 -0
  181. {calkit_python-0.30.7 → calkit_python-0.30.9}/docs/version-control.md +0 -0
  182. {calkit_python-0.30.7 → calkit_python-0.30.9}/mkdocs.yml +0 -0
  183. {calkit_python-0.30.7 → calkit_python-0.30.9}/scripts/install.ps1 +0 -0
  184. {calkit_python-0.30.7 → calkit_python-0.30.9}/scripts/install.sh +0 -0
  185. {calkit_python-0.30.7 → calkit_python-0.30.9}/test/nb-julia.ipynb +0 -0
  186. {calkit_python-0.30.7 → calkit_python-0.30.9}/test/nb-params.ipynb +0 -0
  187. {calkit_python-0.30.7 → calkit_python-0.30.9}/test/nb-subdir.ipynb +0 -0
  188. {calkit_python-0.30.7 → calkit_python-0.30.9}/test/pipeline.ipynb +0 -0
  189. {calkit_python-0.30.7 → calkit_python-0.30.9}/test/test-log.log +0 -0
@@ -2,6 +2,9 @@ name: Run tests
2
2
 
3
3
  on: pull_request
4
4
 
5
+ env:
6
+ CALKIT_TEST_ZENODO_TOKEN: ${{ secrets.CALKIT_ZENODO_TOKEN }}
7
+
5
8
  jobs:
6
9
  linux:
7
10
  runs-on: ubuntu-latest
@@ -12,6 +15,8 @@ jobs:
12
15
  git config --global user.name github-actions[bot]
13
16
  git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com
14
17
  git config --global init.defaultBranch main
18
+ - name: Configure Git push behavior
19
+ run: git config --global push.autoSetupRemote true
15
20
  - name: Setup uv
16
21
  uses: astral-sh/setup-uv@v5
17
22
  - name: Setup Miniforge
@@ -31,7 +36,7 @@ jobs:
31
36
  run: |
32
37
  source ~/.bashrc
33
38
  pixi --version
34
- make test
39
+ uv run pytest -n 4
35
40
  windows:
36
41
  runs-on: windows-latest
37
42
  timeout-minutes: 20
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.30.7
3
+ Version: 0.30.9
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -31,7 +31,7 @@ Requires-Dist: python-dotenv>=1
31
31
  Requires-Dist: pywin32; platform_system == 'Windows'
32
32
  Requires-Dist: requests
33
33
  Requires-Dist: tqdm>=4.67.1
34
- Requires-Dist: typer==0.16.0
34
+ Requires-Dist: typer==0.20.0
35
35
  Requires-Dist: uvicorn
36
36
  Provides-Extra: data
37
37
  Requires-Dist: pandas>=2.2.3; extra == 'data'
@@ -1,4 +1,4 @@
1
- __version__ = "0.30.7"
1
+ __version__ = "0.30.9"
2
2
 
3
3
  from .core import * # noqa: F403, I001
4
4
  from . import git # noqa: F401
@@ -13,6 +13,8 @@ from . import conda # noqa: F401
13
13
  from . import calc # noqa: F401
14
14
  from . import check # noqa: F401
15
15
  from . import github # noqa: F401
16
- from . import zenodo # noqa: F401
16
+ from . import invenio # noqa: F401
17
17
  from . import releases # noqa: F401
18
+ from . import licenses # noqa: F401
19
+ from . import overleaf # noqa: F401
18
20
  from .notebooks import declare_notebook # noqa: F401
@@ -7,13 +7,18 @@ from typing import Literal
7
7
  import typer
8
8
 
9
9
  import calkit
10
+ from calkit.cli import warn
10
11
 
11
12
  list_app = typer.Typer(no_args_is_help=True)
12
13
 
13
14
 
14
15
  def _list_objects(
15
16
  kind: Literal[
16
- "notebooks", "datasets", "figures", "references", "publications"
17
+ "notebooks",
18
+ "datasets",
19
+ "figures",
20
+ "references",
21
+ "publications",
17
22
  ],
18
23
  ):
19
24
  """List objects.
@@ -93,3 +98,30 @@ def list_procedures():
93
98
  ck_info = calkit.load_calkit_info()
94
99
  for p in ck_info.get("procedures", {}):
95
100
  typer.echo(p)
101
+
102
+
103
+ @list_app.command(name="releases")
104
+ def list_releases():
105
+ """List releases."""
106
+ objs = calkit.load_calkit_info().get("releases", {})
107
+ for name, obj in objs.items():
108
+ typer.echo(name + ":")
109
+ # First figure out if the release is published
110
+ published = None
111
+ try:
112
+ published = calkit.invenio.get(
113
+ f"/records/{obj.get('record_id')}",
114
+ service=obj.get("publisher"),
115
+ )["is_published"]
116
+ except Exception:
117
+ try:
118
+ published = calkit.invenio.get(
119
+ f"/records/{obj.get('record_id')}/draft",
120
+ service=obj.get("publisher"),
121
+ )["is_published"]
122
+ except Exception as e:
123
+ warn(f"Cannot tell if release {name} is published: {e}")
124
+ if published is not None:
125
+ typer.echo(f" published: {published}")
126
+ for k, v in obj.items():
127
+ typer.echo(f" {k}: {v}")
@@ -587,6 +587,9 @@ def save(
587
587
  typer.echo(
588
588
  f"Generating commit message for staged files: {staged_files}"
589
589
  )
590
+ if not staged_files:
591
+ typer.echo("No changes to commit; exiting")
592
+ raise typer.Exit(0)
590
593
  if len(staged_files) != 1:
591
594
  raise_error(
592
595
  "Automatic commit messages can only be generated when "
@@ -610,11 +613,12 @@ def save(
610
613
  message = typer.prompt("Message")
611
614
  # Figure out if we have any DVC files in this commit, and if not, we can
612
615
  # skip pushing to DVC
616
+ staged_files = calkit.git.get_staged_files()
617
+ if not staged_files:
618
+ typer.echo("No changes to commit; exiting")
619
+ raise typer.Exit(0)
613
620
  any_dvc = any(
614
- [
615
- path == "dvc.lock" or path.endswith(".dvc")
616
- for path in calkit.git.get_staged_files()
617
- ]
621
+ [path == "dvc.lock" or path.endswith(".dvc") for path in staged_files]
618
622
  )
619
623
  commit(all=True if paths is None else False, message=message)
620
624
  if not no_push: