calkit-python 0.47.1__tar.gz → 0.47.3__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 (1038) hide show
  1. {calkit_python-0.47.1 → calkit_python-0.47.3}/AGENTS.md +4 -0
  2. {calkit_python-0.47.1 → calkit_python-0.47.3}/PKG-INFO +1 -1
  3. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/check.py +1 -4
  4. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/latex.py +38 -1
  5. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/main/core.py +9 -5
  6. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/new.py +157 -30
  7. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/conda.py +68 -7
  8. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/environments.py +14 -0
  9. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/invenio.py +51 -8
  10. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/core.py +3 -0
  11. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/pipeline.py +21 -0
  12. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/releases.py +190 -7
  13. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/main/test_core.py +40 -0
  14. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_latex.py +15 -0
  15. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_new.py +212 -0
  16. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_conda.py +59 -0
  17. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_environments.py +28 -0
  18. calkit_python-0.47.3/calkit/tests/test_invenio.py +114 -0
  19. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_releases.py +78 -5
  20. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/cli-reference.md +17 -16
  21. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/releases.md +50 -0
  22. {calkit_python-0.47.1/vscode-ext → calkit_python-0.47.3/docs}/schemas/calkit.json +5 -0
  23. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docker-compose.yml +2 -1
  24. {calkit_python-0.47.1 → calkit_python-0.47.3}/pyproject.toml +3 -1
  25. {calkit_python-0.47.1/docs → calkit_python-0.47.3/vscode-ext}/schemas/calkit.json +5 -0
  26. calkit_python-0.47.1/calkit/tests/test_invenio.py +0 -35
  27. {calkit_python-0.47.1 → calkit_python-0.47.3}/.claude-plugin/marketplace.json +0 -0
  28. {calkit_python-0.47.1 → calkit_python-0.47.3}/.dockerignore +0 -0
  29. {calkit_python-0.47.1 → calkit_python-0.47.3}/.gitattributes +0 -0
  30. {calkit_python-0.47.1 → calkit_python-0.47.3}/.gitignore +0 -0
  31. {calkit_python-0.47.1 → calkit_python-0.47.3}/.gitmodules +0 -0
  32. {calkit_python-0.47.1 → calkit_python-0.47.3}/.pre-commit-config.yaml +0 -0
  33. {calkit_python-0.47.1 → calkit_python-0.47.3}/.prettierignore +0 -0
  34. {calkit_python-0.47.1 → calkit_python-0.47.3}/.prettierrc.json +0 -0
  35. {calkit_python-0.47.1 → calkit_python-0.47.3}/.python-version +0 -0
  36. {calkit_python-0.47.1 → calkit_python-0.47.3}/.vscode/launch.json +0 -0
  37. {calkit_python-0.47.1 → calkit_python-0.47.3}/.vscode/tasks.json +0 -0
  38. {calkit_python-0.47.1 → calkit_python-0.47.3}/CITATION.cff +0 -0
  39. {calkit_python-0.47.1 → calkit_python-0.47.3}/CODE_OF_CONDUCT.md +0 -0
  40. {calkit_python-0.47.1 → calkit_python-0.47.3}/CONTRIBUTING.md +0 -0
  41. {calkit_python-0.47.1 → calkit_python-0.47.3}/LICENSE +0 -0
  42. {calkit_python-0.47.1 → calkit_python-0.47.3}/Makefile +0 -0
  43. {calkit_python-0.47.1 → calkit_python-0.47.3}/README.md +0 -0
  44. {calkit_python-0.47.1 → calkit_python-0.47.3}/actions/run/README.md +0 -0
  45. {calkit_python-0.47.1 → calkit_python-0.47.3}/actions/run/action.yml +0 -0
  46. {calkit_python-0.47.1 → calkit_python-0.47.3}/actions/run/example.yml +0 -0
  47. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/.claude-plugin/plugin.json +0 -0
  48. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
  49. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/build-paper-pipeline/SKILL.md +0 -0
  50. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/check-questions/SKILL.md +0 -0
  51. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/check-reproducibility/SKILL.md +0 -0
  52. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/conventions/SKILL.md +0 -0
  53. {calkit_python-0.47.1 → calkit_python-0.47.3}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
  54. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/.gitignore +0 -0
  55. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/README.md +0 -0
  56. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/options.html +0 -0
  57. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/package-lock.json +0 -0
  58. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/package.json +0 -0
  59. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/popup.html +0 -0
  60. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/icons/calkit-128.png +0 -0
  61. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/icons/calkit-16.png +0 -0
  62. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/icons/calkit-32.png +0 -0
  63. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/icons/calkit-48.png +0 -0
  64. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/icons/calkit.svg +0 -0
  65. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/public/manifest.json +0 -0
  66. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/scripts/build-content.mjs +0 -0
  67. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/scripts/package-manifest.mjs +0 -0
  68. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/scripts/store-screenshots.py +0 -0
  69. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/scripts/watch.mjs +0 -0
  70. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/background/index.ts +0 -0
  71. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/content/github.ts +0 -0
  72. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/content/overleaf.ts +0 -0
  73. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/content/references.ts +0 -0
  74. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/api.ts +0 -0
  75. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/auth.ts +0 -0
  76. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/calkit-yaml.test.ts +0 -0
  77. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/calkit-yaml.ts +0 -0
  78. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/detect.test.ts +0 -0
  79. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/detect.ts +0 -0
  80. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/hub-url.ts +0 -0
  81. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/hubs.test.ts +0 -0
  82. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/hubs.ts +0 -0
  83. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/latex.test.ts +0 -0
  84. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/latex.ts +0 -0
  85. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/lifecycle.ts +0 -0
  86. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/messages.test.ts +0 -0
  87. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/messages.ts +0 -0
  88. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/pickers.ts +0 -0
  89. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/storage.ts +0 -0
  90. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/types.ts +0 -0
  91. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/ui.test.ts +0 -0
  92. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/core/ui.ts +0 -0
  93. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/options/options.ts +0 -0
  94. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/popup/popup.css +0 -0
  95. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/popup/popup.ts +0 -0
  96. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/src/viewer/viewer.ts +0 -0
  97. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/tsconfig.json +0 -0
  98. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/viewer.html +0 -0
  99. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/vite.config.ts +0 -0
  100. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/vite.content.config.ts +0 -0
  101. {calkit_python-0.47.1 → calkit_python-0.47.3}/browser-ext/vitest.config.ts +0 -0
  102. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/__init__.py +0 -0
  103. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/__main__.py +0 -0
  104. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/calc.py +0 -0
  105. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/__init__.py +0 -0
  106. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/config.py +0 -0
  107. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/core.py +0 -0
  108. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/delete.py +0 -0
  109. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/describe.py +0 -0
  110. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/dev.py +0 -0
  111. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/hub.py +0 -0
  112. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/import_.py +0 -0
  113. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/list.py +0 -0
  114. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/main/__init__.py +0 -0
  115. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/main/xr.py +0 -0
  116. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/notebooks.py +0 -0
  117. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/office.py +0 -0
  118. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/overleaf.py +0 -0
  119. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/scheduler.py +0 -0
  120. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/sync.py +0 -0
  121. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/cli/update.py +0 -0
  122. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/config.py +0 -0
  123. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/core.py +0 -0
  124. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/datasets.py +0 -0
  125. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/dependencies.py +0 -0
  126. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/detect.py +0 -0
  127. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/docker.py +0 -0
  128. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/docx.py +0 -0
  129. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/dvc/__init__.py +0 -0
  130. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/dvc/core.py +0 -0
  131. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/dvc/zip.py +0 -0
  132. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/fs.py +0 -0
  133. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/git.py +0 -0
  134. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/github.py +0 -0
  135. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/gui.py +0 -0
  136. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/hub.py +0 -0
  137. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/install.py +0 -0
  138. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/julia.py +0 -0
  139. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/jupyter.py +0 -0
  140. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/jupyterlab/__init__.py +0 -0
  141. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/jupyterlab/routes.py +0 -0
  142. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/package.json +0 -0
  143. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
  144. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/schemas/calkit/plugin.json +0 -0
  145. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
  146. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
  147. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
  148. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/909.6d8285ce7c45878ac508.js +0 -0
  149. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
  150. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
  151. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
  152. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/remoteEntry.d7a43c7948f690d37d19.js +0 -0
  153. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/style.js +0 -0
  154. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/labextension/static/third-party-licenses.json +0 -0
  155. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/latex.py +0 -0
  156. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/licenses.py +0 -0
  157. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/magics.py +0 -0
  158. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/markdown.py +0 -0
  159. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/matlab.py +0 -0
  160. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/__init__.py +0 -0
  161. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/docx.py +0 -0
  162. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/io.py +0 -0
  163. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/iteration.py +0 -0
  164. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/models/pipeline.py +0 -0
  165. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/notebooks.py +0 -0
  166. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/office.py +0 -0
  167. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/ops.py +0 -0
  168. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/overleaf.py +0 -0
  169. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/procedures.py +0 -0
  170. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/provenance.py +0 -0
  171. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/questions.py +0 -0
  172. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/reproducibility.py +0 -0
  173. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/README.md +0 -0
  174. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/__init__.py +0 -0
  175. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/Dockerfile +0 -0
  176. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/README.md +0 -0
  177. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/base.json +0 -0
  178. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/devcontainer.json +0 -0
  179. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/scripts/check-envs.sh +0 -0
  180. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/scripts/post-create.sh +0 -0
  181. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/scripts/post-start.sh +0 -0
  182. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/devcontainer/scripts/update-content.sh +0 -0
  183. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/github-actions/example.yml +0 -0
  184. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/vscode/README.md +0 -0
  185. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/vscode/extensions.json +0 -0
  186. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/resources/vscode/settings.json +0 -0
  187. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/schema.py +0 -0
  188. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/server.py +0 -0
  189. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/__init__.py +0 -0
  190. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/core.py +0 -0
  191. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/__init__.py +0 -0
  192. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/article/paper.tex +0 -0
  193. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/core.py +0 -0
  194. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/ieee-conference/paper.tex +0 -0
  195. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/jfm/jfm.bst +0 -0
  196. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/jfm/jfm.cls +0 -0
  197. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  198. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/jfm/paper.tex +0 -0
  199. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/jfm/upmath.sty +0 -0
  200. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/templates/latex/report/paper.tex +0 -0
  201. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/__init__.py +0 -0
  202. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/__init__.py +0 -0
  203. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/main/__init__.py +0 -0
  204. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/main/test_lock.py +0 -0
  205. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/main/test_subprojects.py +0 -0
  206. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/main/test_xr.py +0 -0
  207. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_check.py +0 -0
  208. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_config.py +0 -0
  209. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_core.py +0 -0
  210. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_delete.py +0 -0
  211. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_describe.py +0 -0
  212. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_hub.py +0 -0
  213. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_import.py +0 -0
  214. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_list.py +0 -0
  215. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_notebooks.py +0 -0
  216. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_overleaf.py +0 -0
  217. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_scheduler.py +0 -0
  218. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_sync.py +0 -0
  219. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/cli/test_update.py +0 -0
  220. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/dvc/__init__.py +0 -0
  221. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/dvc/test_core.py +0 -0
  222. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/dvc/test_zip.py +0 -0
  223. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/jupyterlab/__init__.py +0 -0
  224. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/jupyterlab/conftest.py +0 -0
  225. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/jupyterlab/test_routes.py +0 -0
  226. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/models/__init__.py +0 -0
  227. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/models/test_core.py +0 -0
  228. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/models/test_iteration.py +0 -0
  229. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/models/test_pipeline.py +0 -0
  230. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_calc.py +0 -0
  231. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_config.py +0 -0
  232. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_core.py +0 -0
  233. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_dependencies.py +0 -0
  234. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_detect.py +0 -0
  235. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_docker.py +0 -0
  236. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_docs_references.py +0 -0
  237. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_docx.py +0 -0
  238. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_fs.py +0 -0
  239. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_git.py +0 -0
  240. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_hub.py +0 -0
  241. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_install.py +0 -0
  242. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_julia.py +0 -0
  243. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_jupyter.py +0 -0
  244. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_keyring_windows.py +0 -0
  245. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_licenses.py +0 -0
  246. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_magics.py +0 -0
  247. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_markdown.py +0 -0
  248. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_matlab.py +0 -0
  249. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_models.py +0 -0
  250. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_notebooks.py +0 -0
  251. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_overleaf.py +0 -0
  252. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_pipeline.py +0 -0
  253. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_procedures.py +0 -0
  254. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_provenance.py +0 -0
  255. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_questions.py +0 -0
  256. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_reproducibility.py +0 -0
  257. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_resources.py +0 -0
  258. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_schema.py +0 -0
  259. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_templates.py +0 -0
  260. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/tests/test_workspace.py +0 -0
  261. {calkit_python-0.47.1 → calkit_python-0.47.3}/calkit/workspace.py +0 -0
  262. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/CNAME +0 -0
  263. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/acknowledgements.md +0 -0
  264. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/ai-tools.md +0 -0
  265. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/apps.md +0 -0
  266. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/browser-ext/index.md +0 -0
  267. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/browser-ext/privacy.md +0 -0
  268. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/calculations.md +0 -0
  269. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/calkit-yaml.md +0 -0
  270. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/cloud-integration.md +0 -0
  271. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/datasets.md +0 -0
  272. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/dev/latex-word.md +0 -0
  273. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/environments.md +0 -0
  274. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/examples.md +0 -0
  275. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/governance.md +0 -0
  276. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/help.md +0 -0
  277. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/hpc.md +0 -0
  278. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/hub/index.md +0 -0
  279. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/hub/self-hosting.md +0 -0
  280. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/c-to-the-k-white.svg +0 -0
  281. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/calkit-fragmentation-compendium.png +0 -0
  282. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/calkit-no-bg.png +0 -0
  283. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/caltech.png +0 -0
  284. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/connect-zenodo.png +0 -0
  285. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab/all-green.png +0 -0
  286. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab/collect-data-stale.png +0 -0
  287. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab/new-env.png +0 -0
  288. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab/new-notebook.png +0 -0
  289. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab/pipeline-badge.png +0 -0
  290. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/jupyterlab-params.png +0 -0
  291. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/pipeline.png +0 -0
  292. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/plos-osi-code-2024-03.png +0 -0
  293. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/schmidt-sciences.png +0 -0
  294. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/img/vscode-nb-params.png +0 -0
  295. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/index.md +0 -0
  296. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/installation.md +0 -0
  297. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/jupyterlab.md +0 -0
  298. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/latex.md +0 -0
  299. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/local-server.md +0 -0
  300. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/notebooks.md +0 -0
  301. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/overleaf.md +0 -0
  302. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/pipeline/index.md +0 -0
  303. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/pipeline/manual-steps.md +0 -0
  304. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/pipeline/markdown.md +0 -0
  305. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/pipeline/running-and-logging.md +0 -0
  306. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/provenance.md +0 -0
  307. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/questions.md +0 -0
  308. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/quickstart.md +0 -0
  309. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/references.md +0 -0
  310. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/reproducibility.md +0 -0
  311. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/requirements.md +0 -0
  312. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/subprojects.md +0 -0
  313. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  314. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/ai-agents.md +0 -0
  315. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/conda-envs.md +0 -0
  316. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/existing-project.md +0 -0
  317. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/first-project.md +0 -0
  318. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/github-actions.md +0 -0
  319. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  320. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  321. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  322. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  323. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  324. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  325. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  326. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  327. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  328. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  329. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  330. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  331. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  332. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  333. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  334. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/create-project.png +0 -0
  335. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  336. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/excel-chart.png +0 -0
  337. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/excel-data.png +0 -0
  338. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  339. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/needs-clone.png +0 -0
  340. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/new-stage.png +0 -0
  341. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  342. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  343. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/status-more-rows.png +0 -0
  344. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  345. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/untracked-data.png +0 -0
  346. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/updated-publication.png +0 -0
  347. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  348. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/office/workflow-page.png +0 -0
  349. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/clone.png +0 -0
  350. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/create-project.png +0 -0
  351. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  352. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  353. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  354. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/new-token.png +0 -0
  355. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/reclone.png +0 -0
  356. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  357. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/quick-actions.png +0 -0
  358. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/run-proc.png +0 -0
  359. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
  360. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
  361. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
  362. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
  363. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
  364. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
  365. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
  366. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/index.md +0 -0
  367. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/jupyterlab.md +0 -0
  368. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/latex-codespaces.md +0 -0
  369. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/latex-word.md +0 -0
  370. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/matlab.md +0 -0
  371. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/notebook-pipeline.md +0 -0
  372. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/office.md +0 -0
  373. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/openfoam.md +0 -0
  374. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/procedures.md +0 -0
  375. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/runnable-readme.md +0 -0
  376. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/vscode-slurm-notebook.md +0 -0
  377. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/tutorials/writing-first.md +0 -0
  378. {calkit_python-0.47.1 → calkit_python-0.47.3}/docs/version-control.md +0 -0
  379. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.calkit/env-locks/py/osx-arm64.txt +0 -0
  380. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.calkit/env-locks/py/win-64.txt +0 -0
  381. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.calkit/env-locks/tex/amd64.json +0 -0
  382. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.calkit/env-locks/tex/arm64.json +0 -0
  383. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.dvc/.gitignore +0 -0
  384. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.dvc/config +0 -0
  385. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.dvcignore +0 -0
  386. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.gitattributes +0 -0
  387. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/.gitignore +0 -0
  388. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/README.md +0 -0
  389. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/calkit.yaml +0 -0
  390. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/dvc.lock +0 -0
  391. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/dvc.yaml +0 -0
  392. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/figures/.gitignore +0 -0
  393. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/paper/.gitignore +0 -0
  394. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/paper/figures/.gitignore +0 -0
  395. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/paper/main.tex +0 -0
  396. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/paper/methods.tex +0 -0
  397. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/paper/refs.bib +0 -0
  398. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/requirements.txt +0 -0
  399. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/latex-word/scripts/plot-wake.py +0 -0
  400. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/jl/Manifest.toml +0 -0
  401. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/jl/Project.toml +0 -0
  402. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/py/.python-version +0 -0
  403. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/py/pyproject.toml +0 -0
  404. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/py/uv.lock +0 -0
  405. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/.Rbuildignore +0 -0
  406. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/.Rprofile +0 -0
  407. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/DESCRIPTION +0 -0
  408. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/renv/.gitignore +0 -0
  409. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/renv/activate.R +0 -0
  410. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/renv/settings.json +0 -0
  411. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.calkit/envs/r/renv.lock +0 -0
  412. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.dvc/.gitignore +0 -0
  413. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.dvc/config +0 -0
  414. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.dvcignore +0 -0
  415. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/.gitignore +0 -0
  416. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/README.md +0 -0
  417. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/calkit.yaml +0 -0
  418. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/data/data.csv +0 -0
  419. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/data/data2.csv +0 -0
  420. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/dvc.lock +0 -0
  421. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/dvc.yaml +0 -0
  422. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/figures/data2.png +0 -0
  423. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/figures/figure.png +0 -0
  424. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown/results/fit.json +0 -0
  425. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/.dvc/.gitignore +0 -0
  426. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/.dvc/config +0 -0
  427. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/.dvcignore +0 -0
  428. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/.gitignore +0 -0
  429. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/.python-version +0 -0
  430. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/README.md +0 -0
  431. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/calkit.yaml +0 -0
  432. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/dvc.lock +0 -0
  433. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/dvc.yaml +0 -0
  434. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/figures/waves.png +0 -0
  435. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/pyproject.toml +0 -0
  436. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/src/wavetools/__init__.py +0 -0
  437. {calkit_python-0.47.1 → calkit_python-0.47.3}/examples/markdown-python/uv.lock +0 -0
  438. {calkit_python-0.47.1 → calkit_python-0.47.3}/flake.lock +0 -0
  439. {calkit_python-0.47.1 → calkit_python-0.47.3}/flake.nix +0 -0
  440. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/.env.example +0 -0
  441. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/.gitattributes +0 -0
  442. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/.gitignore +0 -0
  443. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/.vscode/launch.json +0 -0
  444. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/AGENTS.md +0 -0
  445. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/LICENSE +0 -0
  446. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/Makefile +0 -0
  447. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/README.md +0 -0
  448. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/.gitignore +0 -0
  449. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/.python-version +0 -0
  450. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/Dockerfile +0 -0
  451. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/Makefile +0 -0
  452. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/README.md +0 -0
  453. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/alembic.ini +0 -0
  454. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/__init__.py +0 -0
  455. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/README +0 -0
  456. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/env.py +0 -0
  457. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/script.py.mako +0 -0
  458. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/.keep +0 -0
  459. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +0 -0
  460. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +0 -0
  461. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +0 -0
  462. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +0 -0
  463. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +0 -0
  464. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +0 -0
  465. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +0 -0
  466. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +0 -0
  467. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +0 -0
  468. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +0 -0
  469. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +0 -0
  470. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +0 -0
  471. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +0 -0
  472. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +0 -0
  473. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +0 -0
  474. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +0 -0
  475. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +0 -0
  476. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +0 -0
  477. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +0 -0
  478. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +0 -0
  479. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/97762605447f_add_onboarding_flags_and_feedback.py +0 -0
  480. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +0 -0
  481. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +0 -0
  482. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +0 -0
  483. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +0 -0
  484. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +0 -0
  485. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +0 -0
  486. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +0 -0
  487. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +0 -0
  488. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +0 -0
  489. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +0 -0
  490. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +0 -0
  491. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +0 -0
  492. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +0 -0
  493. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +0 -0
  494. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +0 -0
  495. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +0 -0
  496. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +0 -0
  497. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +0 -0
  498. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +0 -0
  499. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +0 -0
  500. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +0 -0
  501. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +0 -0
  502. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +0 -0
  503. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +0 -0
  504. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +0 -0
  505. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +0 -0
  506. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +0 -0
  507. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/__init__.py +0 -0
  508. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/deps.py +0 -0
  509. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/main.py +0 -0
  510. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/__init__.py +0 -0
  511. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/accounts.py +0 -0
  512. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/datasets.py +0 -0
  513. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/feedback.py +0 -0
  514. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/login.py +0 -0
  515. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/misc.py +0 -0
  516. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/orgs.py +0 -0
  517. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/__init__.py +0 -0
  518. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/activity.py +0 -0
  519. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/core.py +0 -0
  520. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/datasets.py +0 -0
  521. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/dvc.py +0 -0
  522. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/figures.py +0 -0
  523. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/fs.py +0 -0
  524. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/pipeline.py +0 -0
  525. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/projects/releases.py +0 -0
  526. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/references.py +0 -0
  527. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/api/routes/users.py +0 -0
  528. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/arxiv.py +0 -0
  529. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/cache.py +0 -0
  530. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/client.py +0 -0
  531. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/config.py +0 -0
  532. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/core.py +0 -0
  533. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/db.py +0 -0
  534. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/dvc.py +0 -0
  535. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/new_account.html +0 -0
  536. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/project_invitation.html +0 -0
  537. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/release_share.html +0 -0
  538. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/reset_password.html +0 -0
  539. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/test_email.html +0 -0
  540. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/build/verify_email.html +0 -0
  541. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/new_account.mjml +0 -0
  542. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/project_invitation.mjml +0 -0
  543. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/release_share.mjml +0 -0
  544. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/reset_password.mjml +0 -0
  545. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/test_email.mjml +0 -0
  546. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/email-templates/src/verify_email.mjml +0 -0
  547. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/formatting.py +0 -0
  548. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/git.py +0 -0
  549. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/github.py +0 -0
  550. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/imports.py +0 -0
  551. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/main.py +0 -0
  552. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/messaging.py +0 -0
  553. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/mixpanel.py +0 -0
  554. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/models/__init__.py +0 -0
  555. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/models/core.py +0 -0
  556. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/models/projects.py +0 -0
  557. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/models/releases.py +0 -0
  558. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/orgs.py +0 -0
  559. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/pdftext.py +0 -0
  560. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/pipeline.py +0 -0
  561. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/projects.py +0 -0
  562. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/security.py +0 -0
  563. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/storage.py +0 -0
  564. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/stripe.py +0 -0
  565. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/subscriptions.py +0 -0
  566. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tasks.py +0 -0
  567. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/__init__.py +0 -0
  568. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/__init__.py +0 -0
  569. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/__init__.py +0 -0
  570. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
  571. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_activity.py +0 -0
  572. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_core.py +0 -0
  573. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_datasets.py +0 -0
  574. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_dvc.py +0 -0
  575. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_figure_upload.py +0 -0
  576. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_figures.py +0 -0
  577. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_fs.py +0 -0
  578. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_misc.py +0 -0
  579. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +0 -0
  580. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_pipeline.py +0 -0
  581. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_publications.py +0 -0
  582. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_reference_items.py +0 -0
  583. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/projects/test_templates.py +0 -0
  584. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/test_feedback.py +0 -0
  585. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/test_login.py +0 -0
  586. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/test_misc.py +0 -0
  587. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/test_releases.py +0 -0
  588. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/api/routes/test_users.py +0 -0
  589. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/conftest.py +0 -0
  590. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_arxiv.py +0 -0
  591. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_cache.py +0 -0
  592. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_client.py +0 -0
  593. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_core.py +0 -0
  594. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_db.py +0 -0
  595. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_dvc.py +0 -0
  596. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_formatting.py +0 -0
  597. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_git.py +0 -0
  598. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_pdftext.py +0 -0
  599. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_pipeline.py +0 -0
  600. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_projects.py +0 -0
  601. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_tasks.py +0 -0
  602. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_users.py +0 -0
  603. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/tests/test_version.py +0 -0
  604. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/thumbnails.py +0 -0
  605. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/users.py +0 -0
  606. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/version.py +0 -0
  607. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/warm.py +0 -0
  608. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/zenodo.py +0 -0
  609. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/app/zotero.py +0 -0
  610. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/prestart.sh +0 -0
  611. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/pyproject.toml +0 -0
  612. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/backend-pre-start.py +0 -0
  613. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/create-initial-data.py +0 -0
  614. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/format.sh +0 -0
  615. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/generate-client.py +0 -0
  616. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/lint.sh +0 -0
  617. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/rotate-fernet-secrets.py +0 -0
  618. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/scripts/test.sh +0 -0
  619. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/backend/tests-start.sh +0 -0
  620. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/alloy/config.alloy +0 -0
  621. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/grafana/provisioning/dashboards/dashboards.yml +0 -0
  622. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/grafana/provisioning/dashboards/fastapi.json +0 -0
  623. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/grafana/provisioning/dashboards/warm-queue.json +0 -0
  624. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/grafana/provisioning/datasources/datasources.yml +0 -0
  625. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/loki/loki.yml +0 -0
  626. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/config/prometheus/prometheus.yml +0 -0
  627. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docker-compose.override.yml +0 -0
  628. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docker-compose.traefik.yml +0 -0
  629. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docs/dev/database-migrations.md +0 -0
  630. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docs/dev/deployment.md +0 -0
  631. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/docs/dev/development.md +0 -0
  632. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/.dockerignore +0 -0
  633. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/.gitignore +0 -0
  634. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/.nvmrc +0 -0
  635. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/Dockerfile +0 -0
  636. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/Makefile +0 -0
  637. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/README.md +0 -0
  638. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/biome.json +0 -0
  639. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/index.html +0 -0
  640. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/modify-openapi-operationids.js +0 -0
  641. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/nginx-backend-not-found.conf +0 -0
  642. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/nginx.conf +0 -0
  643. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/openapi-ts.config.ts +0 -0
  644. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/package-lock.json +0 -0
  645. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/package.json +0 -0
  646. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/playwright.config.ts +0 -0
  647. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/c-to-the-k.svg +0 -0
  648. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/calkit-no-bg.svg +0 -0
  649. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/calkit.svg +0 -0
  650. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/fastapi-logo.svg +0 -0
  651. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/favicon.png +0 -0
  652. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/assets/images/kdot.svg +0 -0
  653. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/.gitignore +0 -0
  654. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/LICENSE-busytex +0 -0
  655. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/busytex.js +0 -0
  656. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/busytex.wasm +0 -0
  657. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/busytex_pipeline.js +0 -0
  658. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/public/tex/busytex_worker.js +0 -0
  659. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/scripts/download-tex-engine.sh +0 -0
  660. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/client/client.gen.ts +0 -0
  661. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/client/index.ts +0 -0
  662. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/client/types.gen.ts +0 -0
  663. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/client/utils.gen.ts +0 -0
  664. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/client.gen.ts +0 -0
  665. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/auth.gen.ts +0 -0
  666. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/bodySerializer.gen.ts +0 -0
  667. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/params.gen.ts +0 -0
  668. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/pathSerializer.gen.ts +0 -0
  669. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/queryKeySerializer.gen.ts +0 -0
  670. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/serverSentEvents.gen.ts +0 -0
  671. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/types.gen.ts +0 -0
  672. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/core/utils.gen.ts +0 -0
  673. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/index.ts +0 -0
  674. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/schemas.gen.ts +0 -0
  675. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/sdk.gen.ts +0 -0
  676. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/client/types.gen.ts +0 -0
  677. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Admin/AddUser.tsx +0 -0
  678. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Admin/EditUser.tsx +0 -0
  679. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Admin/FeatureVotesTable.tsx +0 -0
  680. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Admin/FeedbackTable.tsx +0 -0
  681. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ActionsMenu.tsx +0 -0
  682. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +0 -0
  683. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ClearableInput.tsx +0 -0
  684. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/CodeEditorPane.tsx +0 -0
  685. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/CommentsPanel.tsx +0 -0
  686. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +0 -0
  687. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +0 -0
  688. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/DeleteAlert.tsx +0 -0
  689. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/FeatureVoteButton.tsx +0 -0
  690. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/FilterableSelect.tsx +0 -0
  691. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/GlobalSearch.tsx +0 -0
  692. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/HelpFeedback.tsx +0 -0
  693. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/InputsRow.tsx +0 -0
  694. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/LoadingSpinner.tsx +0 -0
  695. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Markdown.test.tsx +0 -0
  696. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Markdown.tsx +0 -0
  697. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Mermaid.tsx +0 -0
  698. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Navbar.tsx +0 -0
  699. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/NoArtifactFound.tsx +0 -0
  700. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/NotBuiltAlert.tsx +0 -0
  701. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/NotFound.tsx +0 -0
  702. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/NotificationBell.tsx +0 -0
  703. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/OAuthButtons.tsx +0 -0
  704. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/PageMenu.tsx +0 -0
  705. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/PdfCanvas.tsx +0 -0
  706. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +0 -0
  707. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +0 -0
  708. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/RefPicker.tsx +0 -0
  709. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Sidebar.tsx +0 -0
  710. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/SidebarItems.tsx +0 -0
  711. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/TexText.tsx +0 -0
  712. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Tooltip.tsx +0 -0
  713. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/Topbar.tsx +0 -0
  714. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Common/UserMenu.tsx +0 -0
  715. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Datasets/BrowseDatasets.tsx +0 -0
  716. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Datasets/DataEntryGrid.tsx +0 -0
  717. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Datasets/DatasetViewer.tsx +0 -0
  718. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Datasets/NewDataset.tsx +0 -0
  719. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Environments/NewEnvironment.tsx +0 -0
  720. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Environments/ViewEnvironment.tsx +0 -0
  721. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Figures/FigureEditLauncher.tsx +0 -0
  722. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Figures/FigureEditor.tsx +0 -0
  723. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Figures/FigureFromExisting.tsx +0 -0
  724. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Figures/FigureView.tsx +0 -0
  725. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Figures/UploadFigure.tsx +0 -0
  726. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Files/EditFileInfo.tsx +0 -0
  727. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Files/FileContent.tsx +0 -0
  728. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Files/FileEditorModal.tsx +0 -0
  729. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Files/SelectedItemInfo.tsx +0 -0
  730. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Files/UploadFile.tsx +0 -0
  731. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Local/AddPath.tsx +0 -0
  732. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Local/DiscardChanges.tsx +0 -0
  733. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Local/IgnorePath.tsx +0 -0
  734. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Local/NewStage.tsx +0 -0
  735. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Local/SaveFiles.tsx +0 -0
  736. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Notebooks/NotebookRunLauncher.tsx +0 -0
  737. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Notebooks/NotebookRunner.tsx +0 -0
  738. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Notebooks/NotebookView.tsx +0 -0
  739. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/AccountSetupCard.tsx +0 -0
  740. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/ChecklistCard.tsx +0 -0
  741. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/CommandBlock.tsx +0 -0
  742. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/FeaturedProjects.tsx +0 -0
  743. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/ProjectChecklist.tsx +0 -0
  744. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/ReproAudit.test.ts +0 -0
  745. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/ReproAudit.tsx +0 -0
  746. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/StartPaths.tsx +0 -0
  747. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Onboarding/TipBubble.tsx +0 -0
  748. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Orgs/AddMember.tsx +0 -0
  749. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Orgs/NewOrg.tsx +0 -0
  750. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +0 -0
  751. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Presentations/PresentationView.tsx +0 -0
  752. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/AddCollaborator.tsx +0 -0
  753. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/CloneProject.tsx +0 -0
  754. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/CreateIssue.tsx +0 -0
  755. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/CreateQuestion.tsx +0 -0
  756. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/EditProject.tsx +0 -0
  757. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/EditQuestion.tsx +0 -0
  758. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/HelpContent.tsx +0 -0
  759. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/InviteLinks.tsx +0 -0
  760. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +0 -0
  761. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/NewProject.tsx +0 -0
  762. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/ProjectShowcase.tsx +0 -0
  763. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/ProjectStatus.tsx +0 -0
  764. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/QuestionModal.tsx +0 -0
  765. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/RecentChanges.test.ts +0 -0
  766. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Projects/RecentChanges.tsx +0 -0
  767. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/ImportOverleaf.test.ts +0 -0
  768. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/ImportOverleaf.tsx +0 -0
  769. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/LatexEditor.tsx +0 -0
  770. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/NewPublication.tsx +0 -0
  771. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/PdfAnnotator.tsx +0 -0
  772. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/PublicationComponents.test.ts +0 -0
  773. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/PublicationComponents.tsx +0 -0
  774. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Publications/PublicationView.tsx +0 -0
  775. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +0 -0
  776. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +0 -0
  777. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/EditReferenceItemModal.tsx +0 -0
  778. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/FileViewModal.tsx +0 -0
  779. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +0 -0
  780. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/LabelExistingReferences.tsx +0 -0
  781. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/NewReferencesCollection.tsx +0 -0
  782. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/ReferenceItemModal.tsx +0 -0
  783. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +0 -0
  784. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +0 -0
  785. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/NewRelease.tsx +0 -0
  786. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/PathPicker.tsx +0 -0
  787. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +0 -0
  788. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/ReleaseViewer.tsx +0 -0
  789. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/ReleasesTable.tsx +0 -0
  790. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/ShareDialog.tsx +0 -0
  791. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Releases/releaseSort.ts +0 -0
  792. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Tables/TableThumbnail.tsx +0 -0
  793. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Tables/TableView.test.tsx +0 -0
  794. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/Tables/TableView.tsx +0 -0
  795. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/Appearance.tsx +0 -0
  796. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/ChangePassword.tsx +0 -0
  797. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +0 -0
  798. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +0 -0
  799. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +0 -0
  800. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/NewToken.tsx +0 -0
  801. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/OnboardingChecklists.tsx +0 -0
  802. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/PickSubscription.tsx +0 -0
  803. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/Subscription.tsx +0 -0
  804. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +0 -0
  805. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/UserInformation.tsx +0 -0
  806. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/components/UserSettings/UserTokens.tsx +0 -0
  807. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useAuth.ts +0 -0
  808. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useCustomToast.ts +0 -0
  809. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useOnboarding.ts +0 -0
  810. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useProject.ts +0 -0
  811. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useSubmitOnCmdEnter.test.ts +0 -0
  812. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useSubmitOnCmdEnter.ts +0 -0
  813. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/hooks/useTips.ts +0 -0
  814. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/analytics.test.ts +0 -0
  815. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/analytics.ts +0 -0
  816. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/api.test.ts +0 -0
  817. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/api.ts +0 -0
  818. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/auth.test.ts +0 -0
  819. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/auth.ts +0 -0
  820. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/bibtex.test.ts +0 -0
  821. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/bibtex.ts +0 -0
  822. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/core.ts +0 -0
  823. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/csv.test.ts +0 -0
  824. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/csv.ts +0 -0
  825. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/environments.test.ts +0 -0
  826. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/environments.ts +0 -0
  827. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/errors.ts +0 -0
  828. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/figureScript.test.ts +0 -0
  829. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/figureScript.ts +0 -0
  830. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/fuzzy.test.ts +0 -0
  831. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/fuzzy.ts +0 -0
  832. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/github.test.ts +0 -0
  833. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/github.ts +0 -0
  834. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/google.ts +0 -0
  835. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/keyboard.ts +0 -0
  836. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/latexCompiler.ts +0 -0
  837. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/latexProject.mapPaths.test.ts +0 -0
  838. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/latexProject.test.ts +0 -0
  839. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/latexProject.ts +0 -0
  840. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/layout.ts +0 -0
  841. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/notebook.test.ts +0 -0
  842. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/notebook.ts +0 -0
  843. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/onboarding.test.ts +0 -0
  844. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/onboarding.ts +0 -0
  845. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/pipelineYaml.test.ts +0 -0
  846. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/pipelineYaml.ts +0 -0
  847. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/projectFiles.ts +0 -0
  848. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/provenance.test.ts +0 -0
  849. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/provenance.ts +0 -0
  850. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/pyodide.test.ts +0 -0
  851. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/pyodide.ts +0 -0
  852. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/releases.ts +0 -0
  853. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/staleChunks.test.ts +0 -0
  854. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/staleChunks.ts +0 -0
  855. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/strings.test.ts +0 -0
  856. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/strings.ts +0 -0
  857. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tables.test.ts +0 -0
  858. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tables.ts +0 -0
  859. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tex.test.ts +0 -0
  860. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tex.ts +0 -0
  861. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tips.test.ts +0 -0
  862. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/tips.ts +0 -0
  863. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/zenodo.ts +0 -0
  864. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/lib/zotero.ts +0 -0
  865. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/main.tsx +0 -0
  866. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routeTree.gen.ts +0 -0
  867. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/__root.tsx +0 -0
  868. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +0 -0
  869. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/$appName.tsx +0 -0
  870. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/index.tsx +0 -0
  871. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps.tsx +0 -0
  872. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +0 -0
  873. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +0 -0
  874. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +0 -0
  875. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +0 -0
  876. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +0 -0
  877. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +0 -0
  878. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +0 -0
  879. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +0 -0
  880. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +0 -0
  881. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +0 -0
  882. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +0 -0
  883. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +0 -0
  884. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/questions.$questionNumber.tsx +0 -0
  885. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +0 -0
  886. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +0 -0
  887. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +0 -0
  888. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/tables.tsx +0 -0
  889. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +0 -0
  890. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +0 -0
  891. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/$accountName/index.tsx +0 -0
  892. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/admin.tsx +0 -0
  893. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/datasets.tsx +0 -0
  894. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/index.tsx +0 -0
  895. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/new.tsx +0 -0
  896. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/orgs.tsx +0 -0
  897. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/projects.tsx +0 -0
  898. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout/settings.tsx +0 -0
  899. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/_layout.tsx +0 -0
  900. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/auth/google.tsx +0 -0
  901. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/auth/zenodo.tsx +0 -0
  902. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/auth/zotero.tsx +0 -0
  903. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/checkout.tsx +0 -0
  904. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/join/$token.tsx +0 -0
  905. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/login/device.tsx +0 -0
  906. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/login/index.tsx +0 -0
  907. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/recover-password.tsx +0 -0
  908. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/reset-password.tsx +0 -0
  909. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/signup.tsx +0 -0
  910. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/routes/verify-email.tsx +0 -0
  911. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/theme.tsx +0 -0
  912. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/src/vite-env.d.ts +0 -0
  913. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/auth.setup.ts +0 -0
  914. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/config.ts +0 -0
  915. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/figures-pagination.spec.ts +0 -0
  916. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/login.spec.ts +0 -0
  917. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/reset-password.spec.ts +0 -0
  918. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/user-settings.spec.ts +0 -0
  919. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/utils/mailcatcher.ts +0 -0
  920. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/utils/random.ts +0 -0
  921. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tests/utils/user.ts +0 -0
  922. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tsconfig.json +0 -0
  923. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/tsconfig.node.json +0 -0
  924. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/vite.config.ts +0 -0
  925. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/frontend/vitest.config.ts +0 -0
  926. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/build-push.sh +0 -0
  927. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/build.sh +0 -0
  928. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/deploy.sh +0 -0
  929. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/pem-to-env.sh +0 -0
  930. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/test-local.sh +0 -0
  931. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/scripts/test.sh +0 -0
  932. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/texmf-proxy/Dockerfile +0 -0
  933. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/texmf-proxy/README.md +0 -0
  934. {calkit_python-0.47.1 → calkit_python-0.47.3}/hub/texmf-proxy/proxy.py +0 -0
  935. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/.yarnrc.yml +0 -0
  936. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/babel.config.js +0 -0
  937. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/install.json +0 -0
  938. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/jest.config.js +0 -0
  939. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
  940. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/package.json +0 -0
  941. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/schema/plugin.json +0 -0
  942. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
  943. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/calkit-config.ts +0 -0
  944. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
  945. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
  946. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
  947. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
  948. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
  949. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
  950. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
  951. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
  952. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
  953. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
  954. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/feature-flags.ts +0 -0
  955. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
  956. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
  957. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
  958. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/icons.ts +0 -0
  959. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/index.ts +0 -0
  960. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/io-tracker.ts +0 -0
  961. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/pipeline-state.ts +0 -0
  962. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/queryClient.ts +0 -0
  963. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/request.ts +0 -0
  964. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
  965. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/base.css +0 -0
  966. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/cell-output-marker.css +0 -0
  967. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/environment-editor.css +0 -0
  968. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/environment-selector.css +0 -0
  969. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
  970. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/index.css +0 -0
  971. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/index.js +0 -0
  972. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
  973. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
  974. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/style/sidebar.css +0 -0
  975. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/tsconfig.json +0 -0
  976. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/tsconfig.test.json +0 -0
  977. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/.gitignore +0 -0
  978. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/README.md +0 -0
  979. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
  980. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/package.json +0 -0
  981. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
  982. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
  983. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
  984. {calkit_python-0.47.1 → calkit_python-0.47.3}/jupyterlab-ext/yarn.lock +0 -0
  985. {calkit_python-0.47.1 → calkit_python-0.47.3}/mkdocs.yml +0 -0
  986. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/generate-docs-references.py +0 -0
  987. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/install.ps1 +0 -0
  988. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/install.sh +0 -0
  989. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/list-changes.py +0 -0
  990. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/make-ck9.sh +0 -0
  991. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/sync-docs.py +0 -0
  992. {calkit_python-0.47.1 → calkit_python-0.47.3}/scripts/sync-resources.py +0 -0
  993. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/accepted.docx +0 -0
  994. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/export.docx +0 -0
  995. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/main.tex +0 -0
  996. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/methods.tex +0 -0
  997. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/resolved.docx +0 -0
  998. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/returned.docx +0 -0
  999. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/docx/word-import.docx +0 -0
  1000. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/dvc-md5-dir/osx-arm64.txt +0 -0
  1001. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/nb-julia.ipynb +0 -0
  1002. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/nb-params.ipynb +0 -0
  1003. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/nb-subdir.ipynb +0 -0
  1004. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/pipeline.ipynb +0 -0
  1005. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/script.py +0 -0
  1006. {calkit_python-0.47.1 → calkit_python-0.47.3}/test/test-log.log +0 -0
  1007. {calkit_python-0.47.1 → calkit_python-0.47.3}/uv.lock +0 -0
  1008. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/.gitignore +0 -0
  1009. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/.vscodeignore +0 -0
  1010. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/LICENSE +0 -0
  1011. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/README.md +0 -0
  1012. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/changelog-notes.md +0 -0
  1013. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/images/calkit-icon.svg +0 -0
  1014. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/images/calkit-no-bg.png +0 -0
  1015. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/package-lock.json +0 -0
  1016. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/package.json +0 -0
  1017. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/scripts/gen-changelog.js +0 -0
  1018. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/scripts/set-proposed-api.js +0 -0
  1019. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/environments.ts +0 -0
  1020. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/extension.ts +0 -0
  1021. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/figures/core.ts +0 -0
  1022. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/figures/view.ts +0 -0
  1023. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/markdown/core.ts +0 -0
  1024. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/markdown/view.ts +0 -0
  1025. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/notebooks.ts +0 -0
  1026. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/pipeline/core.ts +0 -0
  1027. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/sidebar.ts +0 -0
  1028. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/environments.test.ts +0 -0
  1029. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/figures.test.ts +0 -0
  1030. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
  1031. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/markdown.test.ts +0 -0
  1032. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/notebooks.test.ts +0 -0
  1033. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/pipeline.test.ts +0 -0
  1034. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/sidebar.test.ts +0 -0
  1035. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/test/yaml.test.ts +0 -0
  1036. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/types.ts +0 -0
  1037. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/src/yaml.ts +0 -0
  1038. {calkit_python-0.47.1 → calkit_python-0.47.3}/vscode-ext/tsconfig.json +0 -0
@@ -37,6 +37,10 @@ breaks rendering.
37
37
 
38
38
  Agents should never make commits to Git.
39
39
 
40
+ Tests belong in the test module named after the module the exercised code
41
+ lives in, e.g., tests for `calkit/cli/new.py` go in
42
+ `calkit/tests/cli/test_new.py`. Don't create a new test module for a feature.
43
+
40
44
  Prefer tests that include multiple scenarios to comprehensively test
41
45
  a feature in one function over many different test functions.
42
46
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: calkit-python
3
- Version: 0.47.1
3
+ Version: 0.47.3
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -1802,10 +1802,7 @@ def check_venv(
1802
1802
  if verbose:
1803
1803
  typer.echo(f"Using legacy lock file: {legacy_fpath}")
1804
1804
  break
1805
- if _platform.system() == "Windows":
1806
- activate_cmd = f"{prefix}\\Scripts\\activate"
1807
- else:
1808
- activate_cmd = f". {prefix}/bin/activate"
1805
+ activate_cmd = calkit.environments.get_venv_activate_cmd(prefix)
1809
1806
 
1810
1807
  def pip_install_and_freeze(reqs_arg: str) -> None:
1811
1808
  check_cmd = (
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import hashlib
6
6
  import json
7
7
  import os
8
+ import re
8
9
  import shutil
9
10
  import string
10
11
  import subprocess
@@ -539,8 +540,44 @@ def _build_diff(
539
540
  try:
540
541
  # --flatten pulls \input and \include files into one document on
541
542
  # each side, so a multi-file paper compares as a whole
543
+ latexdiff_cmd = ["latexdiff", "--flatten", "--encoding=utf8"]
544
+ # latexdiff dies trying to open a verbatim input that's a macro
545
+ # parameter, e.g., \verbatiminput{#1.wcsum} in a \newcommand, so a
546
+ # filter breaks the line after the command, which TeX reads the same
547
+ # but latexdiff's pattern doesn't match
548
+ verbatim_param = re.compile(
549
+ r"\\(?:verbatiminput\*?|lstinputlisting)"
550
+ r"\s*(?:\[[^\]\n]*\])?\s*\{[^}\n]*#[0-9]"
551
+ )
552
+ sources = [base_tex, head_tex] + [
553
+ path
554
+ for side in (base_tex, head_tex)
555
+ for path in calkit.latex.detect_inputs(side)
556
+ if Path(path).suffix in calkit.latex._SOURCE_EXTS
557
+ ]
558
+ if any(
559
+ os.path.isfile(path)
560
+ and verbatim_param.search(
561
+ Path(path).read_text(encoding="utf-8", errors="replace")
562
+ )
563
+ for path in sources
564
+ ):
565
+ filter_path = Path(DIFF_TMP_DIR, "verbatim-param-filter.pl")
566
+ os.makedirs(filter_path.parent, exist_ok=True)
567
+ # latexdiff appends a newline to what it sends, so drop it
568
+ filter_path.write_text(
569
+ "local $/;\n"
570
+ "my $text = <STDIN>;\n"
571
+ "$text =~ s/\\n\\z//;\n"
572
+ "$text =~ s/(\\\\(?:verbatiminput\\*?|lstinputlisting))"
573
+ "(?=\\s*(?:\\[[^\\]\\n]*\\])?\\s*\\{[^}\\n]*#[0-9])/$1%\\n/g;\n"
574
+ "print $text;\n"
575
+ )
576
+ latexdiff_cmd.append(
577
+ f"--filter-script=perl {filter_path.as_posix()}"
578
+ )
542
579
  cmd = _tex_cmd(
543
- ["latexdiff", "--flatten", "--encoding=utf8", base_tex, head_tex],
580
+ latexdiff_cmd + [base_tex, head_tex],
544
581
  environment=environment,
545
582
  no_check=no_check,
546
583
  verbose=verbose,
@@ -6,7 +6,6 @@ import csv
6
6
  import json
7
7
  import logging
8
8
  import os
9
- import platform as _platform
10
9
  import posixpath
11
10
  import shlex
12
11
  import shutil
@@ -1673,6 +1672,14 @@ def push(
1673
1672
  git_cmd = ["git", "push"]
1674
1673
  if not no_recursive and "--recurse-submodules" not in git_args:
1675
1674
  git_cmd.append("--recurse-submodules=on-demand")
1675
+ # A plain `git push` leaves tags behind, so annotated tags end
1676
+ # up only on the machine that made them
1677
+ if not {
1678
+ "--follow-tags",
1679
+ "--no-follow-tags",
1680
+ "--tags",
1681
+ }.intersection(git_args):
1682
+ git_cmd.append("--follow-tags")
1676
1683
  subprocess.check_call(git_cmd + git_args)
1677
1684
  except subprocess.CalledProcessError:
1678
1685
  raise_error("Git push failed")
@@ -3543,10 +3550,7 @@ def run_in_env(
3543
3550
  envs, path, env_name
3544
3551
  )
3545
3552
  shell_cmd = _to_shell_cmd(cmd)
3546
- if _platform.system() == "Windows":
3547
- activate_cmd = f"{prefix}\\Scripts\\activate"
3548
- else:
3549
- activate_cmd = f". {prefix}/bin/activate"
3553
+ activate_cmd = calkit.environments.get_venv_activate_cmd(prefix)
3550
3554
  if verbose:
3551
3555
  typer.echo(f"Raw command: {cmd}")
3552
3556
  typer.echo(f"Shell command: {shell_cmd}")
@@ -3434,6 +3434,18 @@ def new_release(
3434
3434
  str | None,
3435
3435
  typer.Option("--date", help="Release date. Will default to today."),
3436
3436
  ] = None,
3437
+ include_pipeline: Annotated[
3438
+ bool,
3439
+ typer.Option(
3440
+ "--pipeline",
3441
+ help=(
3442
+ "Include everything needed to reproduce the released path, "
3443
+ "i.e., the pipeline, its lock file, and the stages, inputs, "
3444
+ "and environments the path depends on. Stages unrelated to "
3445
+ "the path are left out."
3446
+ ),
3447
+ ),
3448
+ ] = False,
3437
3449
  no_docker_images: Annotated[
3438
3450
  bool,
3439
3451
  typer.Option(
@@ -3521,7 +3533,6 @@ def new_release(
3521
3533
  ] = False,
3522
3534
  ):
3523
3535
  """Create a new release."""
3524
- import bibtexparser
3525
3536
  import dotenv
3526
3537
 
3527
3538
  import calkit.pipeline
@@ -3536,6 +3547,20 @@ def new_release(
3536
3547
  repo = calkit.git.get_repo()
3537
3548
  if name in repo.tags:
3538
3549
  raise_error(f"Git tag with name '{name}' already exists")
3550
+ # A release commits to calkit.yaml and pushes the branch it's on, neither
3551
+ # of which works from a detached HEAD. Check before anything is uploaded,
3552
+ # so a release can't get published and then fail on the way out.
3553
+ will_push = (
3554
+ not dry_run and not no_push and not no_commit and not draft_only
3555
+ )
3556
+ if repo.head.is_detached and will_push:
3557
+ # Suggest creating a branch rather than checking one out, since in a
3558
+ # worktree the branch they'd want may be checked out elsewhere
3559
+ raise_error(
3560
+ "HEAD is detached, so there is no branch to commit the release "
3561
+ "record to and push; create a branch at this revision first, "
3562
+ "e.g., with `git switch -c <branch>`"
3563
+ )
3539
3564
  # Detect the release kind from the path unless it was given with --kind. A
3540
3565
  # "." path is always a project release; otherwise prefer a declared
3541
3566
  # artifact in calkit.yaml, falling back to auto-detection from the path
@@ -3589,10 +3614,24 @@ def new_release(
3589
3614
  # that produces the released artifact when releasing a single path.
3590
3615
  typer.echo("Checking pipeline is up-to-date for release")
3591
3616
  targets = None
3617
+ # The stage that builds the released path, whose upstream stages define
3618
+ # what a --pipeline release carries
3619
+ pipeline_stage = ""
3592
3620
  if path != ".":
3593
3621
  stage_name = calkit.pipeline.get_stage_for_output(path, ck_info)
3594
- if stage_name is not None:
3622
+ if stage_name is None:
3623
+ if include_pipeline:
3624
+ raise_error(
3625
+ f"No pipeline stage produces '{path}', "
3626
+ "so there is no pipeline to release along with it"
3627
+ )
3628
+ else:
3595
3629
  targets = [stage_name]
3630
+ pipeline_stage = stage_name
3631
+ elif include_pipeline:
3632
+ # A project release carries the whole pipeline already
3633
+ typer.echo("Project releases already include the pipeline")
3634
+ include_pipeline = False
3596
3635
  status = calkit.pipeline.get_status(
3597
3636
  ck_info=ck_info,
3598
3637
  targets=targets,
@@ -3617,6 +3656,15 @@ def new_release(
3617
3656
  release_date = str(calkit.utcnow().date())
3618
3657
  typer.echo(f"Using release date: {release_date}")
3619
3658
  git_rev = repo.git.rev_parse(["--short", "HEAD"])
3659
+ # This goes both beside the archive, which is the copy the archival
3660
+ # service displays, and inside it, so an extracted copy still says what
3661
+ # produced it. Rebuilt below once a more specific title is known.
3662
+ release_readme = calkit.releases.create_release_readme(
3663
+ release_kind=release_kind,
3664
+ name=name,
3665
+ git_rev=git_rev,
3666
+ title=ck_info.get("title"),
3667
+ )
3620
3668
  # Fields below are populated only for external (archival) releases;
3621
3669
  # internal releases leave them empty.
3622
3670
  doi = None
@@ -3636,9 +3684,15 @@ def new_release(
3636
3684
  stored_filename = f"{project_name}-{name}.zip"
3637
3685
  is_zip = True
3638
3686
  elif os.path.isfile(path):
3639
- _, ext = os.path.splitext(os.path.basename(path))
3640
- stored_filename = f"{project_name}-{name}{ext}"
3641
- is_zip = False
3687
+ # Releasing the pipeline along with the artifact means shipping
3688
+ # more than one file, so the artifact gets zipped up with it
3689
+ if include_pipeline:
3690
+ stored_filename = f"{project_name}-{name}.zip"
3691
+ is_zip = True
3692
+ else:
3693
+ _, ext = os.path.splitext(os.path.basename(path))
3694
+ stored_filename = f"{project_name}-{name}{ext}"
3695
+ is_zip = False
3642
3696
  else:
3643
3697
  raise_error(f"Release path '{path}' does not exist")
3644
3698
  stored_path = os.path.join(release_dir, stored_filename)
@@ -3648,10 +3702,38 @@ def new_release(
3648
3702
  typer.echo(f"Would {action} {path} to {stored_path_posix}")
3649
3703
  else:
3650
3704
  os.makedirs(release_dir, exist_ok=True)
3651
- if is_zip:
3705
+ overrides: dict[str, str] = {}
3706
+ if include_pipeline:
3707
+ typer.echo(f"Pruning project to what builds {path}")
3708
+ try:
3709
+ overrides, paths = calkit.releases.prune_for_stage(
3710
+ ck_info, pipeline_stage
3711
+ )
3712
+ except Exception as e:
3713
+ raise_error(
3714
+ f"Failed to prune project for stage "
3715
+ f"'{pipeline_stage}': {e}"
3716
+ )
3717
+ elif is_zip:
3652
3718
  paths = calkit.releases.ls_files() if path == "." else [path]
3719
+ else:
3720
+ paths = []
3721
+ if is_zip:
3653
3722
  typer.echo(f"Archiving {path} to {stored_path_posix}")
3654
- calkit.releases.zip_paths(stored_path, paths)
3723
+ calkit.releases.zip_paths(
3724
+ stored_path,
3725
+ paths,
3726
+ overrides=overrides
3727
+ | {"CALKIT-RELEASE.md": release_readme},
3728
+ )
3729
+ if include_pipeline:
3730
+ typer.echo("Checking extracted release archive")
3731
+ try:
3732
+ calkit.releases.check_project_release_archive(
3733
+ stored_path, verbose=verbose
3734
+ )
3735
+ except Exception as e:
3736
+ raise_error(str(e))
3655
3737
  else:
3656
3738
  typer.echo(f"Copying {path} to {stored_path_posix}")
3657
3739
  shutil.copy2(path, stored_path)
@@ -3679,10 +3761,30 @@ def new_release(
3679
3761
  if path == ".":
3680
3762
  if release_kind is None:
3681
3763
  release_kind = "project"
3764
+ # Settle the title before building the archive, since the README
3765
+ # that goes inside it is headed with the title
3766
+ title = ck_info.get("title")
3767
+ if title is None:
3768
+ warn("Project has no title")
3769
+ title = typer.prompt("Enter a title for the project")
3770
+ ck_info["title"] = title
3771
+ if not dry_run:
3772
+ with open("calkit.yaml", "w") as f:
3773
+ calkit.ryaml.dump(ck_info, f)
3774
+ release_readme = calkit.releases.create_release_readme(
3775
+ release_kind=release_kind,
3776
+ name=name,
3777
+ git_rev=git_rev,
3778
+ title=title,
3779
+ )
3682
3780
  zip_path = release_files_dir + "/archive.zip"
3683
3781
  all_paths = calkit.releases.ls_files()
3684
3782
  typer.echo(f"Adding files to {zip_path}")
3685
- calkit.releases.zip_paths(zip_path, all_paths)
3783
+ calkit.releases.zip_paths(
3784
+ zip_path,
3785
+ all_paths,
3786
+ overrides={"CALKIT-RELEASE.md": release_readme},
3787
+ )
3686
3788
  typer.echo("Checking extracted project release archive")
3687
3789
  try:
3688
3790
  calkit.releases.check_project_release_archive(
@@ -3690,14 +3792,6 @@ def new_release(
3690
3792
  )
3691
3793
  except Exception as e:
3692
3794
  raise_error(str(e))
3693
- title = ck_info.get("title")
3694
- if title is None:
3695
- warn("Project has no title")
3696
- title = typer.prompt("Enter a title for the project")
3697
- ck_info["title"] = title
3698
- if not dry_run:
3699
- with open("calkit.yaml", "w") as f:
3700
- calkit.ryaml.dump(ck_info, f)
3701
3795
  else:
3702
3796
  # TODO: Handle directories, e.g., datasets
3703
3797
  if not os.path.isfile(path):
@@ -3724,9 +3818,46 @@ def new_release(
3724
3818
  )
3725
3819
  if title is None:
3726
3820
  raise_error(f"{release_kind} at {path} has no title")
3821
+ release_readme = calkit.releases.create_release_readme(
3822
+ release_kind=release_kind,
3823
+ name=name,
3824
+ git_rev=git_rev,
3825
+ title=title,
3826
+ )
3827
+ # Ship the artifact's provenance beside it: the stages that
3828
+ # build it, their inputs and environments, and a pipeline and
3829
+ # lock file pruned to match
3830
+ if include_pipeline:
3831
+ zip_path = release_files_dir + "/archive.zip"
3832
+ typer.echo(f"Pruning project to what builds {path}")
3833
+ try:
3834
+ overrides, all_paths = calkit.releases.prune_for_stage(
3835
+ ck_info, pipeline_stage
3836
+ )
3837
+ except Exception as e:
3838
+ raise_error(
3839
+ f"Failed to prune project for stage "
3840
+ f"'{pipeline_stage}': {e}"
3841
+ )
3842
+ typer.echo(f"Adding files to {zip_path}")
3843
+ calkit.releases.zip_paths(
3844
+ zip_path,
3845
+ all_paths,
3846
+ overrides=overrides
3847
+ | {"CALKIT-RELEASE.md": release_readme},
3848
+ )
3849
+ typer.echo("Checking extracted project release archive")
3850
+ try:
3851
+ calkit.releases.check_project_release_archive(
3852
+ zip_path, verbose=verbose
3853
+ )
3854
+ except Exception as e:
3855
+ raise_error(str(e))
3727
3856
  # Save a metadata file with each DVC file's MD5 checksum
3728
3857
  dvc_md5s = calkit.releases.make_dvc_md5s(
3729
- zipfile="archive.zip" if path == "." else None,
3858
+ zipfile=(
3859
+ "archive.zip" if path == "." or include_pipeline else None
3860
+ ),
3730
3861
  paths=None if path == "." else [path],
3731
3862
  )
3732
3863
  dvc_md5s_path = release_dir + "/dvc-md5s.yaml"
@@ -3738,7 +3869,7 @@ def new_release(
3738
3869
  # Archive the project's Docker images, so reproducing it doesn't
3739
3870
  # depend on a registry keeping them around, and leave breadcrumbs
3740
3871
  # behind so the environment check can fetch them back
3741
- if path == "." and not no_docker_images:
3872
+ if (path == "." or include_pipeline) and not no_docker_images:
3742
3873
  typer.echo("Archiving Docker images")
3743
3874
  docker_images = calkit.releases.save_docker_images(
3744
3875
  release_files_dir
@@ -3752,16 +3883,11 @@ def new_release(
3752
3883
  calkit.ryaml.dump(docker_images, f)
3753
3884
  if not dry_run:
3754
3885
  repo.git.add(docker_images_path)
3755
- # Create a README for the Zenodo release
3756
- readme_txt = f"# {title}\n"
3757
- git_rev = repo.git.rev_parse(["--short", "HEAD"])
3758
- readme_txt += (
3759
- f"\nThis is a {release_kind} release ({name}) generated with "
3760
- f"Calkit v{calkit.__version__} from Git rev {git_rev}.\n"
3761
- )
3886
+ # Write the same README beside the archive, since this is the copy
3887
+ # the archival service renders on the record page
3762
3888
  readme_path = release_files_dir + "/README.md"
3763
3889
  with open(readme_path, "w") as f:
3764
- f.write(readme_txt)
3890
+ f.write(release_readme)
3765
3891
  # Check size of files dir
3766
3892
  size = calkit.get_size(release_files_dir)
3767
3893
  typer.echo(f"Release size: {(size / 1e6):.1f} MB")
@@ -4114,6 +4240,7 @@ def new_release(
4114
4240
  description=release_description,
4115
4241
  internal=internal_release,
4116
4242
  stored_path=stored_path_posix,
4243
+ includes_pipeline=include_pipeline,
4117
4244
  ).model_dump()
4118
4245
  releases[name] = release
4119
4246
  ck_info["releases"] = releases
@@ -4167,7 +4294,7 @@ def new_release(
4167
4294
  record_id=record_id, # type: ignore
4168
4295
  service=to, # type: ignore
4169
4296
  )
4170
- new_entries = bibtexparser.loads(invenio_bibtex).entries
4297
+ new_entries = calkit.releases.parse_bibtex(invenio_bibtex)
4171
4298
  if not new_entries:
4172
4299
  raise ValueError("Failed to parse generated BibTeX entry")
4173
4300
  new_entry = new_entries[0]
@@ -4179,9 +4306,9 @@ def new_release(
4179
4306
  replace_ids = []
4180
4307
  if new_doi:
4181
4308
  try:
4182
- existing_entries = bibtexparser.loads(
4309
+ existing_entries = calkit.releases.parse_bibtex(
4183
4310
  existing_text
4184
- ).entries
4311
+ )
4185
4312
  except Exception as e:
4186
4313
  warn(f"Could not parse existing references to dedupe: {e}")
4187
4314
  existing_entries = []
@@ -4220,7 +4347,7 @@ def new_release(
4220
4347
  if not dry_run and calkit.git.get_staged_files() and not no_commit:
4221
4348
  repo.git.commit(["-m", f"Create new {release_kind} release {name}"])
4222
4349
  # Push with Git
4223
- if not dry_run and not no_push and not no_commit and not draft_only:
4350
+ if will_push:
4224
4351
  repo.git.push(["origin", repo.active_branch.name, "--tags"])
4225
4352
  # Now create GitHub release (external releases only)
4226
4353
  if not internal_release and not no_github_release:
@@ -207,6 +207,42 @@ def _normalize_git_dep_url(dep: str) -> str:
207
207
  return url.rstrip("/")
208
208
 
209
209
 
210
+ def _unparseable_version_satisfies(
211
+ req_spec: str, actual_vers: str
212
+ ) -> bool | None:
213
+ """Check a requirement spec against a version string PEP 440 rejects.
214
+
215
+ Returns ``True`` or ``False`` when every clause in ``req_spec`` is a plain
216
+ equality or inequality (``==``, ``===`` or ``!=``), since those can be
217
+ decided by comparing the version strings directly. Returns ``None`` when
218
+ the spec needs version ordering (``<``, ``<=``, ``>``, ``>=``, ``~=``) or
219
+ contains a wildcard, both of which need a parsed version.
220
+
221
+ An empty spec means any version satisfies the requirement.
222
+
223
+ The comparison is an exact string match: without a parsed version there is
224
+ no zero-padding, so ``==1.0`` will not match an installed ``1.0.0``.
225
+ """
226
+ if not req_spec:
227
+ return True
228
+ clauses = [clause for clause in req_spec.split(",") if clause]
229
+ for clause in clauses:
230
+ for op in ("===", "==", "!="):
231
+ if not clause.startswith(op):
232
+ continue
233
+ value = clause[len(op) :]
234
+ if "*" in value:
235
+ # Wildcards need normalised versions to expand.
236
+ return None
237
+ if (actual_vers == value) == (op == "!="):
238
+ return False
239
+ break
240
+ else:
241
+ # An ordering operator, or something unrecognized.
242
+ return None
243
+ return True
244
+
245
+
210
246
  def _check_single(
211
247
  req: str, actual: str, env_spec_dir: str, conda: bool = False
212
248
  ) -> bool:
@@ -248,7 +284,10 @@ def _check_single(
248
284
  return _pkg_name_from_dep(req) == _pkg_name_from_dep(actual)
249
285
  if req_is_git:
250
286
  req = _GIT_RE.split(req)[0].strip()
251
- req_name = re.split("[=<>]", req)[0].strip()
287
+ # Split on the first version operator. "!" and "~" are in the class so
288
+ # that "!=" and "~=" requirements yield the bare package name instead of a
289
+ # name with the operator's leading character stuck to it.
290
+ req_name = re.split("[=<>!~]", req)[0].strip()
252
291
  req_spec = req.removeprefix(req_name).strip().replace(" ", "")
253
292
  if "[" in req_name:
254
293
  warnings.warn(f"Cannot check optional dependencies for {req_name}")
@@ -266,7 +305,7 @@ def _check_single(
266
305
  if actual_is_git:
267
306
  # Spec has no git URL but installed dep does; name match is sufficient
268
307
  actual = _GIT_RE.split(actual)[0].strip()
269
- actual_parts = re.split("[=<>]+", actual, maxsplit=1)
308
+ actual_parts = re.split("[=<>!~]+", actual, maxsplit=1)
270
309
  actual_name = actual_parts[0]
271
310
  actual_vers = actual_parts[1] if len(actual_parts) > 1 else ""
272
311
  if actual_name.strip().lower() != req_name.lower():
@@ -279,11 +318,33 @@ def _check_single(
279
318
  try:
280
319
  version = Version(actual_vers)
281
320
  except InvalidVersion:
282
- warnings.warn(
283
- f"Cannot properly check {actual_name} version {actual_vers}"
284
- )
285
- # TODO: Check exact version only
286
- return True
321
+ # An unparseable actual version (e.g. conda's "9e") can't go through
322
+ # SpecifierSet, which needs a parsed version to order by. Equality
323
+ # comparisons don't need ordering, so decide those from the version
324
+ # strings directly.
325
+ exact = _unparseable_version_satisfies(req_spec, actual_vers)
326
+ if exact is None:
327
+ # Ordering constraints and wildcards are genuinely undecidable
328
+ # here. A bare package name accepts any version; a pinned
329
+ # constraint we can't confirm counts as not satisfied rather than
330
+ # silently passing.
331
+ if not req_spec:
332
+ warnings.warn(
333
+ f"Cannot properly check {actual_name} version "
334
+ f"{actual_vers}"
335
+ )
336
+ return True
337
+ warnings.warn(
338
+ f"Cannot properly check {actual_name} version {actual_vers} "
339
+ f"against constraint '{req_spec}'"
340
+ )
341
+ return False
342
+ if not exact:
343
+ warnings.warn(
344
+ f"Installed {actual_name} version {actual_vers} does not "
345
+ f"satisfy '{req_spec}'"
346
+ )
347
+ return exact
287
348
  spec = SpecifierSet(req_spec)
288
349
  return spec.contains(version, prereleases=editable)
289
350
 
@@ -1290,6 +1290,20 @@ def get_default_venv_prefix(envs: dict, path: str, name: str) -> str:
1290
1290
  return Path(base).as_posix()
1291
1291
 
1292
1292
 
1293
+ def get_venv_activate_cmd(prefix: str, system: str | None = None) -> str:
1294
+ """Get the shell command that activates the virtualenv at ``prefix``.
1295
+
1296
+ Prefixes are kept POSIX-style, but cmd reads a forward slash as the start
1297
+ of a switch, so it takes ``.calkit/envs/x/.venv`` for a command named
1298
+ ``.calkit``. Hand Windows native separators instead.
1299
+ """
1300
+ if system is None:
1301
+ system = platform.system()
1302
+ if system == "Windows":
1303
+ return prefix.replace("/", "\\") + "\\Scripts\\activate"
1304
+ return f". {prefix}/bin/activate"
1305
+
1306
+
1293
1307
  def env_from_name_or_path(
1294
1308
  name_or_path: str | None = None,
1295
1309
  ck_info: dict | None = None,
@@ -1,6 +1,7 @@
1
1
  """Functionality for working with InvenioRDM instances like Zenodo."""
2
2
 
3
3
  import os
4
+ import time
4
5
  from functools import partial
5
6
  from typing import Literal
6
7
 
@@ -57,6 +58,24 @@ def get_base_url(service: ServiceName = DEFAULT_SERVICE) -> str:
57
58
  raise ValueError(f"Unknown archival service '{service}'")
58
59
 
59
60
 
61
+ # Pushing a release can mean sending hundreds of megabytes over a slow or
62
+ # distant link, so give a response plenty of time to arrive rather than
63
+ # letting requests wait forever with no timeout at all.
64
+ CONNECT_TIMEOUT = 30
65
+ READ_TIMEOUT = 600
66
+ # Gateways in front of InvenioRDM return these when they're busy, which says
67
+ # nothing about whether the request itself was valid, so it's worth sending
68
+ # again after a pause.
69
+ RETRY_STATUS_CODES = {429, 500, 502, 503, 504}
70
+ MAX_ATTEMPTS = 4
71
+
72
+
73
+ def get_timeout() -> tuple[float, float]:
74
+ """Get the connect and read timeouts to use for requests."""
75
+ read = os.getenv("CALKIT_INVENIO_TIMEOUT")
76
+ return CONNECT_TIMEOUT, float(read) if read else READ_TIMEOUT
77
+
78
+
60
79
  def _request(
61
80
  kind: Literal["get", "post", "put", "patch", "delete"],
62
81
  path: str,
@@ -73,15 +92,31 @@ def _request(
73
92
  params = {}
74
93
  if auth and "access_token" not in params:
75
94
  params = params | {"access_token": get_token(service=service)}
95
+ kwargs.setdefault("timeout", get_timeout())
76
96
  func = getattr(requests, kind)
77
- resp = func(
78
- get_base_url(service=service) + path,
79
- params=params,
80
- json=json,
81
- data=data,
82
- headers=headers,
83
- **kwargs,
84
- )
97
+ # A POST that timed out may still have been carried out on the far end,
98
+ # e.g., leaving a draft record behind, so only repeat requests that are
99
+ # safe to send twice
100
+ max_attempts = 1 if kind == "post" else MAX_ATTEMPTS
101
+ for attempt in range(1, max_attempts + 1):
102
+ try:
103
+ resp = func(
104
+ get_base_url(service=service) + path,
105
+ params=params,
106
+ json=json,
107
+ data=data,
108
+ headers=headers,
109
+ **kwargs,
110
+ )
111
+ except (requests.ConnectionError, requests.Timeout):
112
+ if attempt == max_attempts:
113
+ raise
114
+ time.sleep(2**attempt)
115
+ continue
116
+ if resp.status_code in RETRY_STATUS_CODES and attempt < max_attempts:
117
+ time.sleep(2**attempt)
118
+ continue
119
+ break
85
120
  if resp.status_code >= 400:
86
121
  msg = f"{resp.status_code}: "
87
122
  try:
@@ -92,6 +127,14 @@ def _request(
92
127
  msg += f"\nErrors:\n{resp_json['errors']}"
93
128
  except ValueError:
94
129
  msg += resp.text
130
+ if kind == "post" and resp.status_code in RETRY_STATUS_CODES:
131
+ # The far end may have done the work anyway, and a blind retry
132
+ # would duplicate it, so say so rather than papering over it
133
+ msg += (
134
+ f"\nThis request was not retried automatically, since "
135
+ f"{service} may have carried it out despite the error. "
136
+ "Check for a leftover draft record before trying again."
137
+ )
95
138
  raise HTTPError(msg)
96
139
  resp.raise_for_status()
97
140
  if as_json:
@@ -1554,6 +1554,9 @@ class Release(BaseModel):
1554
1554
  # ".calkit/releases/v0/my-project-slides-v0.pdf". Only set for internal
1555
1555
  # releases, which store the artifact in the repo rather than ignoring it.
1556
1556
  stored_path: str | None = None
1557
+ # Whether the release bundles the pipeline and inputs needed to
1558
+ # rebuild its path, rather than just the artifact itself.
1559
+ includes_pipeline: bool = False
1557
1560
 
1558
1561
 
1559
1562
  class StaticHtmlApp(BaseModel):