calkit-python 0.44.0__tar.gz → 0.44.1__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 (859) hide show
  1. {calkit_python-0.44.0 → calkit_python-0.44.1}/CONTRIBUTING.md +9 -0
  2. {calkit_python-0.44.0 → calkit_python-0.44.1}/Makefile +6 -3
  3. {calkit_python-0.44.0 → calkit_python-0.44.1}/PKG-INFO +1 -1
  4. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/git.py +106 -0
  5. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/pipeline.py +10 -0
  6. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_git.py +76 -0
  7. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_pipeline.py +50 -1
  8. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/calkit-yaml.md +12 -0
  9. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/notebooks.md +4 -0
  10. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/AGENTS.md +80 -0
  11. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/README.md +10 -2
  12. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/core.py +270 -0
  13. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/core.py +19 -0
  14. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/pipeline.py +53 -37
  15. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_core.py +150 -0
  16. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_pipeline.py +57 -0
  17. calkit_python-0.44.1/hub/backend/prestart.sh +16 -0
  18. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/index.ts +6 -0
  19. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/schemas.gen.ts +84 -0
  20. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/sdk.gen.ts +46 -0
  21. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/types.gen.ts +91 -0
  22. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +17 -11
  23. calkit_python-0.44.1/hub/frontend/src/components/Common/Markdown.test.tsx +60 -0
  24. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Markdown.tsx +55 -27
  25. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/SidebarItems.tsx +3 -1
  26. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/EditQuestion.tsx +30 -3
  27. calkit_python-0.44.1/hub/frontend/src/components/Tables/TableThumbnail.tsx +172 -0
  28. calkit_python-0.44.1/hub/frontend/src/components/Tables/TableView.test.tsx +117 -0
  29. calkit_python-0.44.1/hub/frontend/src/components/Tables/TableView.tsx +550 -0
  30. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useProject.ts +27 -0
  31. calkit_python-0.44.1/hub/frontend/src/lib/tables.test.ts +286 -0
  32. calkit_python-0.44.1/hub/frontend/src/lib/tables.ts +477 -0
  33. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routeTree.gen.ts +23 -0
  34. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +11 -6
  35. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +51 -2
  36. calkit_python-0.44.1/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/tables.tsx +366 -0
  37. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/extension.ts +0 -24
  38. calkit_python-0.44.0/hub/backend/prestart.sh +0 -10
  39. {calkit_python-0.44.0 → calkit_python-0.44.1}/.claude-plugin/marketplace.json +0 -0
  40. {calkit_python-0.44.0 → calkit_python-0.44.1}/.dockerignore +0 -0
  41. {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitattributes +0 -0
  42. {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitignore +0 -0
  43. {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitmodules +0 -0
  44. {calkit_python-0.44.0 → calkit_python-0.44.1}/.pre-commit-config.yaml +0 -0
  45. {calkit_python-0.44.0 → calkit_python-0.44.1}/.prettierignore +0 -0
  46. {calkit_python-0.44.0 → calkit_python-0.44.1}/.prettierrc.json +0 -0
  47. {calkit_python-0.44.0 → calkit_python-0.44.1}/.python-version +0 -0
  48. {calkit_python-0.44.0 → calkit_python-0.44.1}/.vscode/launch.json +0 -0
  49. {calkit_python-0.44.0 → calkit_python-0.44.1}/.vscode/tasks.json +0 -0
  50. {calkit_python-0.44.0 → calkit_python-0.44.1}/AGENTS.md +0 -0
  51. {calkit_python-0.44.0 → calkit_python-0.44.1}/CITATION.cff +0 -0
  52. {calkit_python-0.44.0 → calkit_python-0.44.1}/CODE_OF_CONDUCT.md +0 -0
  53. {calkit_python-0.44.0 → calkit_python-0.44.1}/LICENSE +0 -0
  54. {calkit_python-0.44.0 → calkit_python-0.44.1}/README.md +0 -0
  55. {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/README.md +0 -0
  56. {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/action.yml +0 -0
  57. {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/example.yml +0 -0
  58. {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/.claude-plugin/plugin.json +0 -0
  59. {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
  60. {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/conventions/SKILL.md +0 -0
  61. {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
  62. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/.gitignore +0 -0
  63. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/README.md +0 -0
  64. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/options.html +0 -0
  65. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/package-lock.json +0 -0
  66. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/package.json +0 -0
  67. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/popup.html +0 -0
  68. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-128.png +0 -0
  69. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-16.png +0 -0
  70. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-32.png +0 -0
  71. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-48.png +0 -0
  72. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit.svg +0 -0
  73. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/manifest.json +0 -0
  74. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/build-content.mjs +0 -0
  75. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/package-manifest.mjs +0 -0
  76. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/store-screenshots.py +0 -0
  77. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/watch.mjs +0 -0
  78. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/background/index.ts +0 -0
  79. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/github.ts +0 -0
  80. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/overleaf.ts +0 -0
  81. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/references.ts +0 -0
  82. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/api.ts +0 -0
  83. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/auth.ts +0 -0
  84. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/calkit-yaml.test.ts +0 -0
  85. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/calkit-yaml.ts +0 -0
  86. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/detect.test.ts +0 -0
  87. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/detect.ts +0 -0
  88. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hub-url.ts +0 -0
  89. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hubs.test.ts +0 -0
  90. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hubs.ts +0 -0
  91. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/latex.test.ts +0 -0
  92. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/latex.ts +0 -0
  93. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/lifecycle.ts +0 -0
  94. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/messages.test.ts +0 -0
  95. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/messages.ts +0 -0
  96. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/pickers.ts +0 -0
  97. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/storage.ts +0 -0
  98. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/types.ts +0 -0
  99. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/ui.test.ts +0 -0
  100. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/ui.ts +0 -0
  101. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/options/options.ts +0 -0
  102. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/popup/popup.css +0 -0
  103. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/popup/popup.ts +0 -0
  104. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/viewer/viewer.ts +0 -0
  105. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/tsconfig.json +0 -0
  106. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/viewer.html +0 -0
  107. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vite.config.ts +0 -0
  108. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vite.content.config.ts +0 -0
  109. {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vitest.config.ts +0 -0
  110. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/__init__.py +0 -0
  111. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/__main__.py +0 -0
  112. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/calc.py +0 -0
  113. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/check.py +0 -0
  114. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/__init__.py +0 -0
  115. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/check.py +0 -0
  116. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/config.py +0 -0
  117. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/core.py +0 -0
  118. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/delete.py +0 -0
  119. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/describe.py +0 -0
  120. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/dev.py +0 -0
  121. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/hub.py +0 -0
  122. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/import_.py +0 -0
  123. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/latex.py +0 -0
  124. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/list.py +0 -0
  125. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/__init__.py +0 -0
  126. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/core.py +0 -0
  127. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/xr.py +0 -0
  128. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/new.py +0 -0
  129. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/notebooks.py +0 -0
  130. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/office.py +0 -0
  131. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/overleaf.py +0 -0
  132. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/scheduler.py +0 -0
  133. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/sync.py +0 -0
  134. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/update.py +0 -0
  135. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/conda.py +0 -0
  136. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/config.py +0 -0
  137. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/core.py +0 -0
  138. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/datasets.py +0 -0
  139. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dependencies.py +0 -0
  140. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/detect.py +0 -0
  141. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/docker.py +0 -0
  142. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/__init__.py +0 -0
  143. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/core.py +0 -0
  144. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/zip.py +0 -0
  145. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/environments.py +0 -0
  146. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/fs.py +0 -0
  147. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/github.py +0 -0
  148. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/gui.py +0 -0
  149. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/hub.py +0 -0
  150. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/install.py +0 -0
  151. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/invenio.py +0 -0
  152. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/julia.py +0 -0
  153. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyter.py +0 -0
  154. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyterlab/__init__.py +0 -0
  155. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyterlab/routes.py +0 -0
  156. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/package.json +0 -0
  157. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
  158. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/schemas/calkit/plugin.json +0 -0
  159. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
  160. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
  161. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
  162. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
  163. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
  164. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
  165. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
  166. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/remoteEntry.ac9035764d5b2adbb542.js +0 -0
  167. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/style.js +0 -0
  168. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/third-party-licenses.json +0 -0
  169. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/latex.py +0 -0
  170. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/licenses.py +0 -0
  171. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/magics.py +0 -0
  172. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/matlab.py +0 -0
  173. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/__init__.py +0 -0
  174. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/core.py +0 -0
  175. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/io.py +0 -0
  176. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/iteration.py +0 -0
  177. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/pipeline.py +0 -0
  178. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/notebooks.py +0 -0
  179. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/office.py +0 -0
  180. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/ops.py +0 -0
  181. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/overleaf.py +0 -0
  182. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/releases.py +0 -0
  183. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/README.md +0 -0
  184. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/__init__.py +0 -0
  185. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/Dockerfile +0 -0
  186. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/README.md +0 -0
  187. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/base.json +0 -0
  188. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/devcontainer.json +0 -0
  189. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/check-envs.sh +0 -0
  190. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/post-create.sh +0 -0
  191. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/post-start.sh +0 -0
  192. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/update-content.sh +0 -0
  193. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/github-actions/example.yml +0 -0
  194. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/README.md +0 -0
  195. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/extensions.json +0 -0
  196. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/settings.json +0 -0
  197. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/schema.py +0 -0
  198. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/server.py +0 -0
  199. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/__init__.py +0 -0
  200. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/core.py +0 -0
  201. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/__init__.py +0 -0
  202. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/article/paper.tex +0 -0
  203. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/core.py +0 -0
  204. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/jfm.bst +0 -0
  205. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/jfm.cls +0 -0
  206. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  207. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/paper.tex +0 -0
  208. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/upmath.sty +0 -0
  209. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/__init__.py +0 -0
  210. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/__init__.py +0 -0
  211. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/__init__.py +0 -0
  212. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_core.py +0 -0
  213. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_lock.py +0 -0
  214. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_subprojects.py +0 -0
  215. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_xr.py +0 -0
  216. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_check.py +0 -0
  217. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_config.py +0 -0
  218. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_core.py +0 -0
  219. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_delete.py +0 -0
  220. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_describe.py +0 -0
  221. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_hub.py +0 -0
  222. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_import.py +0 -0
  223. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_latex.py +0 -0
  224. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_list.py +0 -0
  225. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_new.py +0 -0
  226. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_notebooks.py +0 -0
  227. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_overleaf.py +0 -0
  228. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_scheduler.py +0 -0
  229. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_sync.py +0 -0
  230. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_update.py +0 -0
  231. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/__init__.py +0 -0
  232. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/test_core.py +0 -0
  233. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/test_zip.py +0 -0
  234. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/__init__.py +0 -0
  235. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/conftest.py +0 -0
  236. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/test_routes.py +0 -0
  237. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/__init__.py +0 -0
  238. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_core.py +0 -0
  239. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_iteration.py +0 -0
  240. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_pipeline.py +0 -0
  241. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_calc.py +0 -0
  242. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_check.py +0 -0
  243. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_conda.py +0 -0
  244. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_config.py +0 -0
  245. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_core.py +0 -0
  246. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_dependencies.py +0 -0
  247. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_detect.py +0 -0
  248. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_docker.py +0 -0
  249. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_docs_references.py +0 -0
  250. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_environments.py +0 -0
  251. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_fs.py +0 -0
  252. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_hub.py +0 -0
  253. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_install.py +0 -0
  254. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_invenio.py +0 -0
  255. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_julia.py +0 -0
  256. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_jupyter.py +0 -0
  257. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_keyring_windows.py +0 -0
  258. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_licenses.py +0 -0
  259. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_magics.py +0 -0
  260. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_matlab.py +0 -0
  261. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_notebooks.py +0 -0
  262. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_overleaf.py +0 -0
  263. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_releases.py +0 -0
  264. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_resources.py +0 -0
  265. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_schema.py +0 -0
  266. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_templates.py +0 -0
  267. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_workspace.py +0 -0
  268. {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/workspace.py +0 -0
  269. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/CNAME +0 -0
  270. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/acknowledgements.md +0 -0
  271. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/ai-tools.md +0 -0
  272. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/apps.md +0 -0
  273. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/browser-ext/index.md +0 -0
  274. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/browser-ext/privacy.md +0 -0
  275. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/calculations.md +0 -0
  276. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/cli-reference.md +0 -0
  277. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/cloud-integration.md +0 -0
  278. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/datasets.md +0 -0
  279. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/environments.md +0 -0
  280. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/examples.md +0 -0
  281. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/governance.md +0 -0
  282. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/help.md +0 -0
  283. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hpc.md +0 -0
  284. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hub/index.md +0 -0
  285. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hub/self-hosting.md +0 -0
  286. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/c-to-the-k-white.svg +0 -0
  287. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/calkit-fragmentation-compendium.png +0 -0
  288. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/calkit-no-bg.png +0 -0
  289. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/caltech.png +0 -0
  290. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/connect-zenodo.png +0 -0
  291. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/all-green.png +0 -0
  292. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/collect-data-stale.png +0 -0
  293. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/new-env.png +0 -0
  294. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/new-notebook.png +0 -0
  295. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/pipeline-badge.png +0 -0
  296. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab-params.png +0 -0
  297. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/pipeline.png +0 -0
  298. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/plos-osi-code-2024-03.png +0 -0
  299. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/schmidt-sciences.png +0 -0
  300. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/vscode-nb-params.png +0 -0
  301. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/index.md +0 -0
  302. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/installation.md +0 -0
  303. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/jupyterlab.md +0 -0
  304. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/latex.md +0 -0
  305. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/local-server.md +0 -0
  306. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/overleaf.md +0 -0
  307. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/index.md +0 -0
  308. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/manual-steps.md +0 -0
  309. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/running-and-logging.md +0 -0
  310. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/questions.md +0 -0
  311. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/quickstart.md +0 -0
  312. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/references.md +0 -0
  313. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/releases.md +0 -0
  314. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/reproducibility.md +0 -0
  315. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/requirements.md +0 -0
  316. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/schemas/calkit.json +0 -0
  317. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/subprojects.md +0 -0
  318. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  319. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/ai-agents.md +0 -0
  320. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/conda-envs.md +0 -0
  321. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/existing-project.md +0 -0
  322. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/first-project.md +0 -0
  323. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/github-actions.md +0 -0
  324. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  325. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  326. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  327. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  328. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  329. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  330. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  331. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  332. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  333. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  334. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  335. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  336. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  337. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  338. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  339. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/create-project.png +0 -0
  340. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  341. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/excel-chart.png +0 -0
  342. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/excel-data.png +0 -0
  343. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  344. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/needs-clone.png +0 -0
  345. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/new-stage.png +0 -0
  346. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  347. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  348. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/status-more-rows.png +0 -0
  349. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  350. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/untracked-data.png +0 -0
  351. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/updated-publication.png +0 -0
  352. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  353. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/workflow-page.png +0 -0
  354. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/clone.png +0 -0
  355. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/create-project.png +0 -0
  356. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  357. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  358. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  359. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/new-token.png +0 -0
  360. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/reclone.png +0 -0
  361. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  362. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/quick-actions.png +0 -0
  363. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/run-proc.png +0 -0
  364. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
  365. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
  366. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
  367. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
  368. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
  369. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
  370. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
  371. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/index.md +0 -0
  372. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/jupyterlab.md +0 -0
  373. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/latex-codespaces.md +0 -0
  374. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/matlab.md +0 -0
  375. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/notebook-pipeline.md +0 -0
  376. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/office.md +0 -0
  377. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/openfoam.md +0 -0
  378. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/procedures.md +0 -0
  379. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/vscode-slurm-notebook.md +0 -0
  380. {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/version-control.md +0 -0
  381. {calkit_python-0.44.0 → calkit_python-0.44.1}/flake.lock +0 -0
  382. {calkit_python-0.44.0 → calkit_python-0.44.1}/flake.nix +0 -0
  383. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.env.example +0 -0
  384. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.gitattributes +0 -0
  385. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.gitignore +0 -0
  386. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.vscode/launch.json +0 -0
  387. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/LICENSE +0 -0
  388. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/Makefile +0 -0
  389. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/README.md +0 -0
  390. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/.gitignore +0 -0
  391. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/.python-version +0 -0
  392. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/Dockerfile +0 -0
  393. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/Makefile +0 -0
  394. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/alembic.ini +0 -0
  395. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/__init__.py +0 -0
  396. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/README +0 -0
  397. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/env.py +0 -0
  398. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/script.py.mako +0 -0
  399. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/.keep +0 -0
  400. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +0 -0
  401. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +0 -0
  402. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +0 -0
  403. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +0 -0
  404. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +0 -0
  405. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +0 -0
  406. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +0 -0
  407. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +0 -0
  408. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +0 -0
  409. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +0 -0
  410. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +0 -0
  411. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +0 -0
  412. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +0 -0
  413. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +0 -0
  414. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +0 -0
  415. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +0 -0
  416. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +0 -0
  417. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +0 -0
  418. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +0 -0
  419. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +0 -0
  420. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +0 -0
  421. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +0 -0
  422. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +0 -0
  423. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +0 -0
  424. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +0 -0
  425. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +0 -0
  426. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +0 -0
  427. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +0 -0
  428. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +0 -0
  429. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +0 -0
  430. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +0 -0
  431. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +0 -0
  432. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +0 -0
  433. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +0 -0
  434. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +0 -0
  435. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +0 -0
  436. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +0 -0
  437. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +0 -0
  438. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +0 -0
  439. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +0 -0
  440. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +0 -0
  441. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +0 -0
  442. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +0 -0
  443. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +0 -0
  444. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +0 -0
  445. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +0 -0
  446. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +0 -0
  447. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/__init__.py +0 -0
  448. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/deps.py +0 -0
  449. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/main.py +0 -0
  450. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/__init__.py +0 -0
  451. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/accounts.py +0 -0
  452. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/datasets.py +0 -0
  453. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/feature_votes.py +0 -0
  454. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/login.py +0 -0
  455. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/misc.py +0 -0
  456. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/orgs.py +0 -0
  457. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/__init__.py +0 -0
  458. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/dvc.py +0 -0
  459. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/fs.py +0 -0
  460. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/releases.py +0 -0
  461. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/references.py +0 -0
  462. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/users.py +0 -0
  463. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/arxiv.py +0 -0
  464. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/client.py +0 -0
  465. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/config.py +0 -0
  466. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/core.py +0 -0
  467. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/db.py +0 -0
  468. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/dvc.py +0 -0
  469. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/new_account.html +0 -0
  470. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/project_invitation.html +0 -0
  471. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/release_share.html +0 -0
  472. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/reset_password.html +0 -0
  473. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/test_email.html +0 -0
  474. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/new_account.mjml +0 -0
  475. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/project_invitation.mjml +0 -0
  476. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/release_share.mjml +0 -0
  477. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/reset_password.mjml +0 -0
  478. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/test_email.mjml +0 -0
  479. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/git.py +0 -0
  480. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/github.py +0 -0
  481. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/main.py +0 -0
  482. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/messaging.py +0 -0
  483. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/mixpanel.py +0 -0
  484. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/__init__.py +0 -0
  485. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/projects.py +0 -0
  486. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/releases.py +0 -0
  487. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/orgs.py +0 -0
  488. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/pdftext.py +0 -0
  489. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/projects.py +0 -0
  490. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/security.py +0 -0
  491. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/storage.py +0 -0
  492. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/stripe.py +0 -0
  493. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/subscriptions.py +0 -0
  494. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/__init__.py +0 -0
  495. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/__init__.py +0 -0
  496. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/__init__.py +0 -0
  497. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
  498. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_dvc.py +0 -0
  499. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_fs.py +0 -0
  500. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +0 -0
  501. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_feature_votes.py +0 -0
  502. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_login.py +0 -0
  503. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_misc.py +0 -0
  504. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_releases.py +0 -0
  505. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_users.py +0 -0
  506. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/conftest.py +0 -0
  507. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_arxiv.py +0 -0
  508. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_client.py +0 -0
  509. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_core.py +0 -0
  510. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_db.py +0 -0
  511. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_dvc.py +0 -0
  512. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_git.py +0 -0
  513. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_pdftext.py +0 -0
  514. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_projects.py +0 -0
  515. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_users.py +0 -0
  516. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_version.py +0 -0
  517. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/users.py +0 -0
  518. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/version.py +0 -0
  519. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/zenodo.py +0 -0
  520. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/zotero.py +0 -0
  521. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/pyproject.toml +0 -0
  522. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/backend-pre-start.py +0 -0
  523. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/create-initial-data.py +0 -0
  524. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/format.sh +0 -0
  525. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/generate-client.py +0 -0
  526. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/lint.sh +0 -0
  527. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/rotate-fernet-secrets.py +0 -0
  528. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/test.sh +0 -0
  529. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/tests-start.sh +0 -0
  530. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/alloy/config.alloy +0 -0
  531. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/dashboards/dashboards.yml +0 -0
  532. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/dashboards/fastapi.json +0 -0
  533. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/datasources/datasources.yml +0 -0
  534. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/loki/loki.yml +0 -0
  535. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/prometheus/prometheus.yml +0 -0
  536. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.override.yml +0 -0
  537. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.traefik.yml +0 -0
  538. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.yml +0 -0
  539. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/database-migrations.md +0 -0
  540. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/deployment.md +0 -0
  541. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/development.md +0 -0
  542. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.dockerignore +0 -0
  543. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.gitignore +0 -0
  544. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.nvmrc +0 -0
  545. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/Dockerfile +0 -0
  546. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/Makefile +0 -0
  547. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/README.md +0 -0
  548. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/biome.json +0 -0
  549. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/index.html +0 -0
  550. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/modify-openapi-operationids.js +0 -0
  551. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/nginx-backend-not-found.conf +0 -0
  552. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/nginx.conf +0 -0
  553. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/openapi-ts.config.ts +0 -0
  554. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/package-lock.json +0 -0
  555. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/package.json +0 -0
  556. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/playwright.config.ts +0 -0
  557. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/c-to-the-k.svg +0 -0
  558. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/calkit-no-bg.svg +0 -0
  559. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/calkit.svg +0 -0
  560. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/fastapi-logo.svg +0 -0
  561. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/favicon.png +0 -0
  562. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/kdot.svg +0 -0
  563. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/.gitignore +0 -0
  564. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/LICENSE-busytex +0 -0
  565. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex.js +0 -0
  566. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex.wasm +0 -0
  567. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex_pipeline.js +0 -0
  568. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex_worker.js +0 -0
  569. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/scripts/download-tex-engine.sh +0 -0
  570. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/client.gen.ts +0 -0
  571. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/index.ts +0 -0
  572. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/types.gen.ts +0 -0
  573. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/utils.gen.ts +0 -0
  574. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client.gen.ts +0 -0
  575. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/auth.gen.ts +0 -0
  576. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/bodySerializer.gen.ts +0 -0
  577. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/params.gen.ts +0 -0
  578. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/pathSerializer.gen.ts +0 -0
  579. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/queryKeySerializer.gen.ts +0 -0
  580. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/serverSentEvents.gen.ts +0 -0
  581. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/types.gen.ts +0 -0
  582. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/utils.gen.ts +0 -0
  583. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Admin/AddUser.tsx +0 -0
  584. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Admin/EditUser.tsx +0 -0
  585. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ActionsMenu.tsx +0 -0
  586. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ClearableInput.tsx +0 -0
  587. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/CodeEditorPane.tsx +0 -0
  588. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/CommentsPanel.tsx +0 -0
  589. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +0 -0
  590. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +0 -0
  591. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/DeleteAlert.tsx +0 -0
  592. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/GlobalSearch.tsx +0 -0
  593. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/LoadingSpinner.tsx +0 -0
  594. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Mermaid.tsx +0 -0
  595. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Navbar.tsx +0 -0
  596. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotBuiltAlert.tsx +0 -0
  597. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotFound.tsx +0 -0
  598. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotificationBell.tsx +0 -0
  599. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PageMenu.tsx +0 -0
  600. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PdfCanvas.tsx +0 -0
  601. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +0 -0
  602. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +0 -0
  603. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/RefPicker.tsx +0 -0
  604. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Sidebar.tsx +0 -0
  605. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Tooltip.tsx +0 -0
  606. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Topbar.tsx +0 -0
  607. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/UserMenu.tsx +0 -0
  608. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Datasets/DatasetFromExisting.tsx +0 -0
  609. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Datasets/UploadDataset.tsx +0 -0
  610. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Environments/ViewEnvironment.tsx +0 -0
  611. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/FigureFromExisting.tsx +0 -0
  612. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/FigureView.tsx +0 -0
  613. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/UploadFigure.tsx +0 -0
  614. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/EditFileInfo.tsx +0 -0
  615. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/FileContent.tsx +0 -0
  616. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/FileEditorModal.tsx +0 -0
  617. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/SelectedItemInfo.tsx +0 -0
  618. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/UploadFile.tsx +0 -0
  619. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/AddPath.tsx +0 -0
  620. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/DiscardChanges.tsx +0 -0
  621. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/IgnorePath.tsx +0 -0
  622. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/NewStage.tsx +0 -0
  623. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/SaveFiles.tsx +0 -0
  624. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Notebooks/NotebookView.tsx +0 -0
  625. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Orgs/AddMember.tsx +0 -0
  626. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Orgs/NewOrg.tsx +0 -0
  627. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +0 -0
  628. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Presentations/PresentationView.tsx +0 -0
  629. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/AddCollaborator.tsx +0 -0
  630. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CloneProject.tsx +0 -0
  631. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CreateIssue.tsx +0 -0
  632. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CreateQuestion.tsx +0 -0
  633. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/EditProject.tsx +0 -0
  634. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/HelpContent.tsx +0 -0
  635. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/InviteLinks.tsx +0 -0
  636. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +0 -0
  637. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/NewProject.tsx +0 -0
  638. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/ProjectShowcase.tsx +0 -0
  639. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/ProjectStatus.tsx +0 -0
  640. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/ImportOverleaf.tsx +0 -0
  641. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/LatexEditor.tsx +0 -0
  642. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/NewPublication.tsx +0 -0
  643. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/PdfAnnotator.tsx +0 -0
  644. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/PublicationView.tsx +0 -0
  645. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +0 -0
  646. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +0 -0
  647. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/EditReferenceItemModal.tsx +0 -0
  648. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/FileViewModal.tsx +0 -0
  649. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +0 -0
  650. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/LabelExistingReferences.tsx +0 -0
  651. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/NewReferencesCollection.tsx +0 -0
  652. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ReferenceItemModal.tsx +0 -0
  653. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +0 -0
  654. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +0 -0
  655. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/NewRelease.tsx +0 -0
  656. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/PathPicker.tsx +0 -0
  657. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +0 -0
  658. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleaseViewer.tsx +0 -0
  659. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleasesTable.tsx +0 -0
  660. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ShareDialog.tsx +0 -0
  661. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/releaseSort.ts +0 -0
  662. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/Appearance.tsx +0 -0
  663. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/ChangePassword.tsx +0 -0
  664. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +0 -0
  665. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +0 -0
  666. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +0 -0
  667. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/NewToken.tsx +0 -0
  668. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/PickSubscription.tsx +0 -0
  669. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/Subscription.tsx +0 -0
  670. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +0 -0
  671. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UserInformation.tsx +0 -0
  672. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UserTokens.tsx +0 -0
  673. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useAuth.ts +0 -0
  674. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useCustomToast.ts +0 -0
  675. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/analytics.test.ts +0 -0
  676. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/analytics.ts +0 -0
  677. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/api.test.ts +0 -0
  678. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/api.ts +0 -0
  679. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/auth.test.ts +0 -0
  680. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/auth.ts +0 -0
  681. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/bibtex.test.ts +0 -0
  682. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/bibtex.ts +0 -0
  683. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/core.ts +0 -0
  684. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/errors.ts +0 -0
  685. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/github.test.ts +0 -0
  686. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/github.ts +0 -0
  687. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/google.ts +0 -0
  688. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/keyboard.ts +0 -0
  689. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexCompiler.ts +0 -0
  690. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.mapPaths.test.ts +0 -0
  691. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.test.ts +0 -0
  692. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.ts +0 -0
  693. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/layout.ts +0 -0
  694. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/pipelineYaml.test.ts +0 -0
  695. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/pipelineYaml.ts +0 -0
  696. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/releases.ts +0 -0
  697. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/staleChunks.test.ts +0 -0
  698. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/staleChunks.ts +0 -0
  699. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/strings.test.ts +0 -0
  700. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/strings.ts +0 -0
  701. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/zenodo.ts +0 -0
  702. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/zotero.ts +0 -0
  703. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/main.tsx +0 -0
  704. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/__root.tsx +0 -0
  705. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +0 -0
  706. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/$appName.tsx +0 -0
  707. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/index.tsx +0 -0
  708. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps.tsx +0 -0
  709. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +0 -0
  710. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +0 -0
  711. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +0 -0
  712. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +0 -0
  713. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +0 -0
  714. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +0 -0
  715. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +0 -0
  716. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +0 -0
  717. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +0 -0
  718. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +0 -0
  719. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +0 -0
  720. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +0 -0
  721. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +0 -0
  722. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +0 -0
  723. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +0 -0
  724. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/index.tsx +0 -0
  725. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/admin.tsx +0 -0
  726. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/datasets.tsx +0 -0
  727. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/index.tsx +0 -0
  728. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/learn.tsx +0 -0
  729. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/orgs.tsx +0 -0
  730. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/projects.tsx +0 -0
  731. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/settings.tsx +0 -0
  732. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout.tsx +0 -0
  733. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/google.tsx +0 -0
  734. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/zenodo.tsx +0 -0
  735. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/zotero.tsx +0 -0
  736. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/checkout.tsx +0 -0
  737. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/join/$token.tsx +0 -0
  738. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/login/device.tsx +0 -0
  739. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/login/index.tsx +0 -0
  740. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/recover-password.tsx +0 -0
  741. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/reset-password.tsx +0 -0
  742. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/signup.tsx +0 -0
  743. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/theme.tsx +0 -0
  744. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/vite-env.d.ts +0 -0
  745. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/auth.setup.ts +0 -0
  746. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/config.ts +0 -0
  747. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/figures-pagination.spec.ts +0 -0
  748. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/login.spec.ts +0 -0
  749. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/reset-password.spec.ts +0 -0
  750. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/user-settings.spec.ts +0 -0
  751. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/mailcatcher.ts +0 -0
  752. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/random.ts +0 -0
  753. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/user.ts +0 -0
  754. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tsconfig.json +0 -0
  755. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tsconfig.node.json +0 -0
  756. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/vite.config.ts +0 -0
  757. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/vitest.config.ts +0 -0
  758. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/build-push.sh +0 -0
  759. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/build.sh +0 -0
  760. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/deploy.sh +0 -0
  761. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/pem-to-env.sh +0 -0
  762. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/test-local.sh +0 -0
  763. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/test.sh +0 -0
  764. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/Dockerfile +0 -0
  765. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/README.md +0 -0
  766. {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/proxy.py +0 -0
  767. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/.yarnrc.yml +0 -0
  768. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/babel.config.js +0 -0
  769. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/install.json +0 -0
  770. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/jest.config.js +0 -0
  771. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
  772. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/package.json +0 -0
  773. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/schema/plugin.json +0 -0
  774. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
  775. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/calkit-config.ts +0 -0
  776. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
  777. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
  778. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
  779. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
  780. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
  781. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
  782. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
  783. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
  784. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
  785. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
  786. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/feature-flags.ts +0 -0
  787. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
  788. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
  789. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
  790. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/icons.ts +0 -0
  791. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/index.ts +0 -0
  792. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/io-tracker.ts +0 -0
  793. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/pipeline-state.ts +0 -0
  794. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/queryClient.ts +0 -0
  795. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/request.ts +0 -0
  796. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
  797. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/base.css +0 -0
  798. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/cell-output-marker.css +0 -0
  799. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/environment-editor.css +0 -0
  800. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/environment-selector.css +0 -0
  801. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
  802. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/index.css +0 -0
  803. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/index.js +0 -0
  804. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
  805. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
  806. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/sidebar.css +0 -0
  807. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/tsconfig.json +0 -0
  808. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/tsconfig.test.json +0 -0
  809. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/.gitignore +0 -0
  810. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/README.md +0 -0
  811. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
  812. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/package.json +0 -0
  813. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
  814. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
  815. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
  816. {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/yarn.lock +0 -0
  817. {calkit_python-0.44.0 → calkit_python-0.44.1}/mkdocs.yml +0 -0
  818. {calkit_python-0.44.0 → calkit_python-0.44.1}/pyproject.toml +0 -0
  819. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/generate-docs-references.py +0 -0
  820. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/install.ps1 +0 -0
  821. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/install.sh +0 -0
  822. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/list-changes.py +0 -0
  823. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/make-calk9.sh +0 -0
  824. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/sync-docs.py +0 -0
  825. {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/sync-resources.py +0 -0
  826. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/dvc-md5-dir/osx-arm64.txt +0 -0
  827. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-julia.ipynb +0 -0
  828. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-params.ipynb +0 -0
  829. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-subdir.ipynb +0 -0
  830. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/pipeline.ipynb +0 -0
  831. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/script.py +0 -0
  832. {calkit_python-0.44.0 → calkit_python-0.44.1}/test/test-log.log +0 -0
  833. {calkit_python-0.44.0 → calkit_python-0.44.1}/uv.lock +0 -0
  834. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/.gitignore +0 -0
  835. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/.vscodeignore +0 -0
  836. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/LICENSE +0 -0
  837. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/README.md +0 -0
  838. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/changelog-notes.md +0 -0
  839. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/images/calkit-icon.svg +0 -0
  840. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/images/calkit-no-bg.png +0 -0
  841. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/package-lock.json +0 -0
  842. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/package.json +0 -0
  843. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/schemas/calkit.json +0 -0
  844. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/scripts/gen-changelog.js +0 -0
  845. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/scripts/set-proposed-api.js +0 -0
  846. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/environments.ts +0 -0
  847. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/figures/core.ts +0 -0
  848. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/figures/view.ts +0 -0
  849. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/notebooks.ts +0 -0
  850. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/pipeline/core.ts +0 -0
  851. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/sidebar.ts +0 -0
  852. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/environments.test.ts +0 -0
  853. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/figures.test.ts +0 -0
  854. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
  855. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/notebooks.test.ts +0 -0
  856. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/pipeline.test.ts +0 -0
  857. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/sidebar.test.ts +0 -0
  858. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/types.ts +0 -0
  859. {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/tsconfig.json +0 -0
@@ -27,6 +27,15 @@ This guide will help you get started.
27
27
  - [Miniforge](https://conda-forge.org/download/)
28
28
  - [uv](https://docs.astral.sh/uv/getting-started/installation/)
29
29
  - [Pixi](https://pixi.sh/latest/)
30
+ 1. **Create the virtual environment:**
31
+ ```bash
32
+ uv sync --all-packages
33
+ ```
34
+ This repo is a uv workspace: the hub backend is a member, and both it
35
+ and the `calkit` package share a single `.venv` at the repo root.
36
+ Always pass `--all-packages`, since a bare `uv sync` installs only one
37
+ member and uninstalls the other's dependencies, leaving either the
38
+ `calkit` CLI or the hub backend unable to import its dependencies.
30
39
  1. **Run tests** to ensure everything is working:
31
40
  ```bash
32
41
  uv run pytest
@@ -6,7 +6,10 @@ help: ## Show this help.
6
6
  .PHONY: install
7
7
  install: ## Create the project's virtual environment.
8
8
  @echo "🚀 Creating virtual environment"
9
- @uv sync
9
+ # --all-packages, since a bare `uv sync` would install only this
10
+ # package and uninstall the hub backend's dependencies from the
11
+ # workspace's single shared .venv
12
+ @uv sync --all-packages
10
13
 
11
14
  .PHONY: dev
12
15
  dev: ## Start up the hub containers for development.
@@ -57,8 +60,8 @@ sync-docs: schema ## Sync documentation content from docs/*.md into README.md.
57
60
  @echo "🚀 Syncing documentation"
58
61
  @uv run python scripts/sync-docs.py
59
62
 
60
- .PHONY: changes
61
- changes: ## List each product's commits since its last release.
63
+ .PHONY: unreleased
64
+ unreleased: ## List each product's commits since its last release.
62
65
  @uv run python scripts/list-changes.py
63
66
 
64
67
  .PHONY: sync-resources
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: calkit-python
3
- Version: 0.44.0
3
+ Version: 0.44.1
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -13,6 +13,12 @@ from git.exc import InvalidGitRepositoryError
13
13
 
14
14
  __all__ = ["InvalidGitRepositoryError", "get_repo"]
15
15
 
16
+ # Marks the block of exemptions ensure_path_is_not_filtered maintains, so
17
+ # it's clear in a file Calkit shares with whatever installed the filter.
18
+ CALKIT_ATTRIBUTES_COMMENT = (
19
+ "# Added by Calkit: pipeline outputs must be committed unfiltered"
20
+ )
21
+
16
22
 
17
23
  def get_repo(path: str | None = None) -> git.Repo:
18
24
  """Return a git.Repo for ``path`` (or cwd), searching parent dirs.
@@ -460,6 +466,106 @@ def ensure_dvc_pointer_is_not_ignored(repo, path: str) -> None:
460
466
  f.write(exception + "\n")
461
467
 
462
468
 
469
+ def get_filter_driver(repo: git.Repo, path: str | PathLike) -> str | None:
470
+ """The name of the clean/smudge filter Git applies to ``path``, if any.
471
+
472
+ Asks Git rather than reading attributes files, since a filter can be
473
+ declared in any of several places with different precedence---most
474
+ relevantly ``$GIT_DIR/info/attributes``, where ``nbstripout --install``
475
+ puts it, which is per-clone and never committed.
476
+ """
477
+ path = Path(path).as_posix()
478
+ try:
479
+ # -z gives NUL-separated <path> <attr> <value> triples, so a path
480
+ # containing ": " can't be mistaken for a field separator.
481
+ out = repo.git.check_attr("-z", "filter", "--", path)
482
+ except git.GitCommandError as e:
483
+ warnings.warn(
484
+ f"Failed to check Git attributes for {path}: {e}", stacklevel=2
485
+ )
486
+ return None
487
+ fields = out.split("\0")
488
+ if len(fields) < 3:
489
+ return None
490
+ value = fields[2]
491
+ # Git reports these two when no driver applies; anything else names one.
492
+ if value in ("unspecified", "unset"):
493
+ return None
494
+ return value
495
+
496
+
497
+ def ensure_path_is_not_filtered(
498
+ repo: git.Repo, path: str | PathLike
499
+ ) -> bool | None:
500
+ """Ensure Git stores ``path`` byte-for-byte, applying no clean filter.
501
+
502
+ A clean filter rewrites content on its way into Git while leaving the
503
+ working tree alone, and Git compares the filtered forms, so the committed
504
+ bytes can differ from the file on disk with nothing showing up as
505
+ modified. For a pipeline output that is fatal: DVC hashes the working
506
+ tree file, so anything reading the repository instead---the Calkit hub,
507
+ a fresh clone, a collaborator---sees a hash that disagrees with
508
+ ``dvc.lock`` and reports the stage stale forever. ``nbstripout`` does
509
+ exactly this to notebooks.
510
+
511
+ The exemption is written to ``$GIT_DIR/info/attributes`` because that
512
+ file outranks every other source of attributes, including the
513
+ ``.gitattributes`` and the ``$GIT_DIR/info/attributes`` line
514
+ ``nbstripout --install`` writes. Returns True if a rule was added, None
515
+ if the path was already unfiltered.
516
+ """
517
+ path = Path(path).as_posix()
518
+ if get_filter_driver(repo, path) is None:
519
+ return
520
+ attributes_path = os.path.join(repo.git_dir, "info", "attributes")
521
+ # Quoted only when it has to be: an unquoted pattern is what a reader
522
+ # expects, and Git only needs the quotes for whitespace.
523
+ pattern = f'"{path}"' if any(c.isspace() for c in path) else path
524
+ # ``-filter`` unsets the attribute rather than leaving it unspecified, so
525
+ # no lower-precedence rule can put a driver back.
526
+ rule = f"{pattern} -filter"
527
+ existing_lines = []
528
+ if os.path.isfile(attributes_path):
529
+ with open(attributes_path, "r", encoding="utf-8") as f:
530
+ existing_lines = f.read().splitlines()
531
+ # Within one attributes file the last matching line wins, so the rule goes
532
+ # at the end. If it's already in there, a filter still applying means
533
+ # something was appended after it -- another `nbstripout --install`, most
534
+ # likely -- and moving ours back to the end is what fixes that. Dropping
535
+ # the old copy first keeps the file from growing a duplicate each time.
536
+ lines = [line for line in existing_lines if line != rule]
537
+ if CALKIT_ATTRIBUTES_COMMENT not in lines:
538
+ lines.append(CALKIT_ATTRIBUTES_COMMENT)
539
+ lines.append(rule)
540
+ os.makedirs(os.path.dirname(attributes_path), exist_ok=True)
541
+ with open(attributes_path, "w", encoding="utf-8") as f:
542
+ f.write("\n".join(lines) + "\n")
543
+ # Nothing higher-precedence than this file should exist, but a filter that
544
+ # survives the rewrite would otherwise strip content silently on the next
545
+ # commit, so say so rather than reporting success.
546
+ if get_filter_driver(repo, path) is not None:
547
+ warnings.warn(
548
+ f"{path} is still filtered by Git despite an exemption in "
549
+ f"{attributes_path}",
550
+ stacklevel=2,
551
+ )
552
+ return
553
+ # The rule alone doesn't fix what's already committed: Git trusts the
554
+ # index's cached stat info, so an unchanged file is never re-read and the
555
+ # filtered blob stays. Renormalizing re-hashes it through the new
556
+ # attributes, staging the real content so the next commit repairs the
557
+ # repository rather than waiting for the stage to run again.
558
+ if ls_files(repo, "--", path):
559
+ try:
560
+ repo.git.add("--renormalize", "--", path)
561
+ except git.GitCommandError as e:
562
+ warnings.warn(
563
+ f"Failed to renormalize {path} after unfiltering it: {e}",
564
+ stacklevel=2,
565
+ )
566
+ return True
567
+
568
+
463
569
  def resolve_ref(repo: git.Repo, ref: str) -> str | None:
464
570
  """Return the commit a revision points at, fetching if it isn't here.
465
571
 
@@ -1582,6 +1582,16 @@ def to_dvc(
1582
1582
  calkit.git.ensure_path_is_ignored(repo, path=out.path)
1583
1583
  elif isinstance(out, PathOutput) and out.storage == "git":
1584
1584
  calkit.git.ensure_path_is_not_ignored(repo, path=out.path)
1585
+ if out.path.endswith(".ipynb"):
1586
+ # A notebook stage's storage is declared here, in the
1587
+ # pipeline, so a clean filter installed in the clone
1588
+ # (nbstripout) must not overrule it by stripping the
1589
+ # outputs back out on the way into Git. That would
1590
+ # commit bytes that don't match what DVC hashed, with
1591
+ # nothing showing as modified locally.
1592
+ calkit.git.ensure_path_is_not_filtered(
1593
+ repo, path=out.path
1594
+ )
1585
1595
  elif isinstance(out, PathOutput) and out.storage == "dvc-zip":
1586
1596
  calkit.git.ensure_path_is_ignored(repo, path=out.path)
1587
1597
  calkit.dvc.zip.add(out.path, is_stage_output=True)
@@ -515,3 +515,79 @@ def test_check_branch_is_current(tmp_dir):
515
515
  msg = calkit.git.check_branch_is_current(repo)
516
516
  assert msg is not None
517
517
  assert f"'origin/{default_branch}'" in msg
518
+
519
+
520
+ def _install_stripping_filter(repo: git.Repo, pattern: str = "*.ipynb"):
521
+ """Configure a clean filter that mangles content, the way nbstripout does.
522
+
523
+ A stand-in for nbstripout so the test doesn't need it installed: what
524
+ matters is that Git rewrites content on its way into the object store,
525
+ not what the rewrite is.
526
+ """
527
+ # Spelled with no quotes, spaces, or backslashes in any token: Git runs
528
+ # filter commands through a shell---its bundled sh on Windows---which eats
529
+ # the backslashes in a Windows interpreter path, leaving a command that
530
+ # never runs. Marked required so that failure is a loud error instead of a
531
+ # silent pass-through that looks like the content was never filtered.
532
+ repo.git.config("filter.stripper.clean", "sed -e s/.*/stripped/")
533
+ repo.git.config("filter.stripper.required", "true")
534
+ attributes = Path(repo.git_dir) / "info" / "attributes"
535
+ attributes.parent.mkdir(parents=True, exist_ok=True)
536
+ attributes.write_text(f"{pattern} filter=stripper\n")
537
+
538
+
539
+ def test_get_filter_driver(tmp_dir):
540
+ repo = git.Repo.init()
541
+ Path("nb.ipynb").write_text("real content")
542
+ assert calkit.git.get_filter_driver(repo, "nb.ipynb") is None
543
+ _install_stripping_filter(repo)
544
+ assert calkit.git.get_filter_driver(repo, "nb.ipynb") == "stripper"
545
+ # A path the pattern doesn't cover is untouched.
546
+ assert calkit.git.get_filter_driver(repo, "notes.txt") is None
547
+
548
+
549
+ def test_ensure_path_is_not_filtered(tmp_dir):
550
+ repo = git.Repo.init()
551
+ repo.git.config("user.email", "test@example.com")
552
+ repo.git.config("user.name", "Test")
553
+ path = ".calkit/notebooks/executed/nb.ipynb"
554
+ Path(path).parent.mkdir(parents=True)
555
+ Path(path).write_text("real content")
556
+ Path("other.ipynb").write_text("real content")
557
+ attributes = Path(repo.git_dir) / "info" / "attributes"
558
+ # A repo with no filters is left completely alone.
559
+ assert calkit.git.ensure_path_is_not_filtered(repo, path=path) is None
560
+ assert not attributes.exists()
561
+ _install_stripping_filter(repo)
562
+ repo.git.add("-A")
563
+ repo.git.commit("-m", "Init")
564
+ # The committed bytes don't match the working tree, and nothing shows as
565
+ # modified, which is what makes this worth guarding against.
566
+ assert repo.git.show(f"HEAD:{path}") == "stripped", (
567
+ "the stand-in clean filter didn't run, so there's nothing here for "
568
+ "the exemption to fix; check that its command works on this platform"
569
+ )
570
+ assert not repo.git.status("--porcelain")
571
+ assert calkit.git.ensure_path_is_not_filtered(repo, path=path)
572
+ assert calkit.git.get_filter_driver(repo, path) is None
573
+ # The exemption is scoped: everything else stays filtered.
574
+ assert calkit.git.get_filter_driver(repo, "other.ipynb") == "stripper"
575
+ # Already-committed content is repaired rather than left for the next run.
576
+ repo.git.commit("-m", "Unfilter")
577
+ assert repo.git.show(f"HEAD:{path}") == "real content"
578
+ assert repo.git.show("HEAD:other.ipynb") == "stripped"
579
+ # Idempotent: a second call neither re-adds the rule nor errors.
580
+ before = attributes.read_text()
581
+ assert calkit.git.ensure_path_is_not_filtered(repo, path=path) is None
582
+ assert attributes.read_text() == before
583
+ # Re-installing the filter appends a pattern after our exemption, and the
584
+ # last matching line in the file wins, so the notebook is filtered again.
585
+ with open(attributes, "a", encoding="utf-8") as f:
586
+ f.write("*.ipynb filter=stripper\n")
587
+ assert calkit.git.get_filter_driver(repo, path) == "stripper"
588
+ # Moving the exemption back to the end restores it, without the file
589
+ # accumulating a copy of the rule per call.
590
+ assert calkit.git.ensure_path_is_not_filtered(repo, path=path)
591
+ assert calkit.git.get_filter_driver(repo, path) is None
592
+ rule = f"{path} -filter"
593
+ assert attributes.read_text().splitlines().count(rule) == 1
@@ -2,12 +2,16 @@
2
2
 
3
3
  import os
4
4
  import subprocess
5
+ import sys
5
6
  import warnings
7
+ from pathlib import Path
6
8
 
7
9
  import git
8
10
  import pytest
9
11
 
10
12
  import calkit
13
+ import calkit.git
14
+ import calkit.notebooks
11
15
  import calkit.pipeline
12
16
  from calkit.environments import get_env_lock_fpath
13
17
  from calkit.models.pipeline import LatexStage
@@ -2203,7 +2207,6 @@ def test_get_concurrent_scheduler_stages():
2203
2207
 
2204
2208
 
2205
2209
  def test_get_matrix_item_targets(tmp_dir):
2206
- import sys
2207
2210
 
2208
2211
  subprocess.check_call(["git", "init"])
2209
2212
  subprocess.check_call([sys.executable, "-m", "dvc", "init"])
@@ -2471,3 +2474,49 @@ def test_ref_resolver_is_not_shared_between_projects(tmp_dir):
2471
2474
  finally:
2472
2475
  os.chdir(cwd)
2473
2476
  assert shas["one"] != shas["two"]
2477
+
2478
+
2479
+ def test_to_dvc_unfilters_notebook_outputs(tmp_dir):
2480
+ # Notebook output storage is declared in the pipeline, so a filter
2481
+ # installed in the clone (nbstripout) must not overrule it by stripping
2482
+ # the outputs back out on the way into Git---that commits bytes that
2483
+ # disagree with what DVC hashed, with nothing showing as modified locally.
2484
+ repo = git.Repo.init()
2485
+ # Spelled with no quotes, spaces, or backslashes in any token: Git runs
2486
+ # filter commands through a shell---its bundled sh on Windows---which eats
2487
+ # the backslashes in a Windows interpreter path, leaving a command that
2488
+ # never runs. Marked required so that failure is a loud error instead of a
2489
+ # silent pass-through that looks like the content was never filtered.
2490
+ repo.git.config("filter.stripper.clean", "sed -e s/.*/stripped/")
2491
+ repo.git.config("filter.stripper.required", "true")
2492
+ attributes = Path(repo.git_dir) / "info" / "attributes"
2493
+ attributes.parent.mkdir(parents=True, exist_ok=True)
2494
+ attributes.write_text("*.ipynb filter=stripper\n")
2495
+ nb_path = "notebooks/my-notebook.ipynb"
2496
+ os.makedirs("notebooks")
2497
+ with open(nb_path, "w") as f:
2498
+ f.write("{}")
2499
+ ck_info = {
2500
+ "environments": {
2501
+ "py": {"kind": "uv-venv", "path": "requirements.txt"},
2502
+ },
2503
+ "pipeline": {
2504
+ "stages": {
2505
+ "notebook-1": {
2506
+ "kind": "jupyter-notebook",
2507
+ "environment": "py",
2508
+ "notebook_path": nb_path,
2509
+ "html_storage": "git",
2510
+ "executed_ipynb_storage": "git",
2511
+ },
2512
+ }
2513
+ },
2514
+ }
2515
+ calkit.pipeline.to_dvc(ck_info=ck_info, write=True)
2516
+ executed_path = calkit.notebooks.get_executed_notebook_path(
2517
+ notebook_path=nb_path, to="notebook", as_posix=True
2518
+ )
2519
+ assert calkit.git.get_filter_driver(repo, executed_path) is None
2520
+ # Scoped to what the pipeline declares: the source notebook a user cleans
2521
+ # on purpose keeps its filter.
2522
+ assert calkit.git.get_filter_driver(repo, nb_path) == "stripper"
@@ -138,6 +138,18 @@ tables:
138
138
 
139
139
  Like the other artifacts, a table is identified by its path.
140
140
 
141
+ On the Calkit Hub, tables show up on the project's Tables page, where each
142
+ one can be searched, sorted, and linked to by cell.
143
+ Declaring a table isn't required to appear there: CSV, TSV, and JSON Lines
144
+ files in a `tables` or `results` directory are detected automatically, as are
145
+ LaTeX tables written to their own file, i.e., a `.tex` file in those
146
+ directories holding a bare `tabular` environment, or one wrapped in a
147
+ `standalone` document.
148
+ A paper that happens to contain a table is not detected as one, since a table
149
+ pulled out of a larger document is a fragment of that document rather than an
150
+ artifact of its own.
151
+ Declaring one only adds a title and description of your own.
152
+
141
153
  Columns aren't described yet, and neither is a symbolic name for a table.
142
154
  Both are expected to arrive alongside symbol metadata, which is where
143
155
  per-column types and units belong.
@@ -36,6 +36,10 @@ we can focus on three rules:
36
36
  Git commits.
37
37
  This can be done by installing `nbstripout` and running
38
38
  `nbstripout --install` in the project directory.
39
+ Note that the notebooks Calkit generates as pipeline outputs (those under
40
+ `.calkit/notebooks`) are exempted from stripping automatically when the
41
+ pipeline is compiled, since their outputs are the pipeline's results and
42
+ stripping them would commit content that doesn't match what DVC hashed.
39
43
  1. A notebook must run in one of the project's [environments](environments.md).
40
44
  1. Notebooks should be incorporated into the project's
41
45
  [pipeline](pipeline/index.md).
@@ -76,6 +76,86 @@ If instead you are running the built image (plain `docker compose up`, not
76
76
  `make dev`), the frontend is a static Nginx build and will keep serving old code
77
77
  until you rebuild it: `docker compose build frontend`.
78
78
 
79
+ ### A frontend request fails with a network error
80
+
81
+ A network error (as opposed to an HTTP status) means nothing answered, so the
82
+ backend is most likely not running. Check with `docker compose ps -a`: if
83
+ `backend` shows `exited (1)`, read `docker compose logs backend` for the
84
+ traceback.
85
+
86
+ An `ImportError` or `ModuleNotFoundError` from `calkit` there — for example
87
+ `cannot import name 'MARIMO_DETECT_N_BYTES' from 'calkit.notebooks'` — usually
88
+ means the container's virtual environment is stale, not that the code is wrong.
89
+ In dev, `docker-compose.override.yml` mounts the repo at `/app` and masks the
90
+ image's environment with an **anonymous volume** at `/app/.venv`. That volume
91
+ outlives `docker compose build` and `up --force-recreate`, so an environment
92
+ created months ago keeps shadowing the working tree no matter how often the
93
+ image is rebuilt. Renew it explicitly:
94
+
95
+ ```sh
96
+ docker compose build backend
97
+ docker compose up -d --renew-anon-volumes backend
98
+ ```
99
+
100
+ `--renew-anon-volumes` only discards anonymous volumes; named volumes such as
101
+ the database keep their data. Reach for this after merging a branch that changes
102
+ dependencies or moves code between calkit-python and the backend.
103
+
104
+ Once the volume is current, calkit-python is installed as an editable workspace
105
+ member resolving to `/app/calkit`, so host edits to it are live and this should
106
+ not recur until the environment itself needs to change.
107
+
108
+ ### Postgres errors that a column does not exist
109
+
110
+ A log full of `ERROR: column project.<something> does not exist` means the
111
+ schema is behind the models: migrations did not run. Check why in the prestart
112
+ logs, not the backend's:
113
+
114
+ ```sh
115
+ docker compose logs prestart
116
+ ```
117
+
118
+ `Can't locate revision identified by '<rev>'` means `alembic_version` points at
119
+ a revision that isn't in `backend/app/alembic/versions/`, so alembic refuses to
120
+ run anything and the schema freezes wherever it was. This comes from having
121
+ migrated the dev database while on a branch whose migration was later squashed,
122
+ renamed, or abandoned — the revision can be gone from git entirely, so don't
123
+ assume it is recoverable (`git log --all -S '<rev>'` to find out).
124
+
125
+ The reliable fix on a dev database is to recreate it, since all data is seeded
126
+ by `create-initial-data.py` anyway:
127
+
128
+ ```sh
129
+ docker compose down db
130
+ docker volume rm calkit_app-db-data
131
+ docker compose up -d db backend
132
+ ```
133
+
134
+ Repairing in place is possible but fiddly: the abandoned branch has usually
135
+ applied *some* of its DDL, so the database is genuinely half-migrated rather
136
+ than merely mis-stamped. It takes `alembic stamp <rev> --purge` (plain `stamp`
137
+ also reads the current revision and hits the same error) to a revision known to
138
+ predate the divergence, then hand-applying whatever the next migration would
139
+ have done that isn't already there, then `alembic upgrade head`.
140
+
141
+ Either way, verify the result against a from-scratch migration rather than
142
+ trusting the stamp — build a scratch database, migrate it from empty, and diff:
143
+
144
+ ```sh
145
+ docker compose exec db psql -U postgres -d postgres -c "CREATE DATABASE app_check"
146
+ docker compose exec -e POSTGRES_DB=app_check backend alembic upgrade head
147
+ docker compose exec db pg_dump -U postgres -d app --schema-only > /tmp/a.sql
148
+ docker compose exec db pg_dump -U postgres -d app_check --schema-only > /tmp/b.sql
149
+ diff /tmp/a.sql /tmp/b.sql
150
+ docker compose exec db psql -U postgres -d postgres -c "DROP DATABASE app_check"
151
+ ```
152
+
153
+ Note that `alembic check` is not a clean signal here: it reports drift
154
+ (a missing `ck_account_name_lowercase` check constraint, some foreign-key
155
+ churn) even against a perfectly migrated database, because the models don't
156
+ declare those constraints. The from-scratch diff is what distinguishes real
157
+ divergence from that baseline noise.
158
+
79
159
  ## Common Patterns
80
160
 
81
161
  ### Modifying API Contracts
@@ -53,12 +53,20 @@ go there and install it.
53
53
 
54
54
  The backend is a member of the repo's uv workspace, which installs
55
55
  calkit-python from the working tree.
56
- From this directory you can install all the dependencies with:
56
+ The workspace shares a single virtual environment at the repo root, so
57
+ install with `--all-packages`:
57
58
 
58
59
  ```console
59
- $ uv sync
60
+ $ uv sync --all-packages
60
61
  ```
61
62
 
63
+ A bare `uv sync` installs only one workspace member and uninstalls the
64
+ other's dependencies, so running it here breaks the `calkit` CLI, and
65
+ running it at the repo root leaves the backend unable to start with
66
+ `ModuleNotFoundError` on packages like `mixpanel`.
67
+ Always pass `--all-packages`, in particular after merging a change that
68
+ touches dependencies.
69
+
62
70
  Then you can start a shell session with the new environment (which lives at
63
71
  the repo root) with:
64
72