calkit-python 0.47.11__tar.gz → 0.47.12__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 (1099) hide show
  1. {calkit_python-0.47.11 → calkit_python-0.47.12}/PKG-INFO +1 -1
  2. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/check.py +4 -0
  3. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/main/core.py +4 -0
  4. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/docker.py +29 -0
  5. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/latex.py +1 -1
  6. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/questions.py +12 -2
  7. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/devcontainer.json +1 -1
  8. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/vscode/settings.json +1 -1
  9. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_docker.py +24 -0
  10. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_questions.py +8 -0
  11. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/comparisons.md +66 -0
  12. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/pipeline/index.md +1 -1
  13. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/privacy.md +33 -17
  14. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/existing-project.md +1 -1
  15. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/main.py +2 -0
  16. calkit_python-0.47.12/hub/backend/app/api/routes/analytics.py +196 -0
  17. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/core.py +2 -0
  18. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/git.py +71 -1
  19. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/mixpanel.py +40 -0
  20. calkit_python-0.47.12/hub/backend/app/tests/api/routes/test_analytics.py +146 -0
  21. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_git.py +93 -2
  22. calkit_python-0.47.12/hub/backend/app/tests/test_mixpanel.py +75 -0
  23. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Markdown.test.tsx +10 -0
  24. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Markdown.tsx +21 -4
  25. calkit_python-0.47.12/hub/frontend/src/components/Files/FileContent.test.tsx +45 -0
  26. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Files/FileContent.tsx +25 -2
  27. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/analytics.test.ts +142 -21
  28. calkit_python-0.47.12/hub/frontend/src/lib/analytics.ts +281 -0
  29. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/environments.ts +1 -1
  30. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/strings.test.ts +32 -1
  31. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/strings.ts +23 -0
  32. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/main.tsx +7 -3
  33. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/__root.tsx +3 -2
  34. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +6 -1
  35. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +6 -7
  36. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/Dockerfile +6 -1
  37. {calkit_python-0.47.11 → calkit_python-0.47.12}/uv.lock +6 -3
  38. calkit_python-0.47.11/hub/backend/app/tests/test_mixpanel.py +0 -30
  39. calkit_python-0.47.11/hub/frontend/src/lib/analytics.ts +0 -96
  40. {calkit_python-0.47.11 → calkit_python-0.47.12}/.claude-plugin/marketplace.json +0 -0
  41. {calkit_python-0.47.11 → calkit_python-0.47.12}/.dockerignore +0 -0
  42. {calkit_python-0.47.11 → calkit_python-0.47.12}/.dvc/.gitignore +0 -0
  43. {calkit_python-0.47.11 → calkit_python-0.47.12}/.dvc/config +0 -0
  44. {calkit_python-0.47.11 → calkit_python-0.47.12}/.dvcignore +0 -0
  45. {calkit_python-0.47.11 → calkit_python-0.47.12}/.gitattributes +0 -0
  46. {calkit_python-0.47.11 → calkit_python-0.47.12}/.gitignore +0 -0
  47. {calkit_python-0.47.11 → calkit_python-0.47.12}/.gitmodules +0 -0
  48. {calkit_python-0.47.11 → calkit_python-0.47.12}/.pre-commit-config.yaml +0 -0
  49. {calkit_python-0.47.11 → calkit_python-0.47.12}/.prettierignore +0 -0
  50. {calkit_python-0.47.11 → calkit_python-0.47.12}/.prettierrc.json +0 -0
  51. {calkit_python-0.47.11 → calkit_python-0.47.12}/.python-version +0 -0
  52. {calkit_python-0.47.11 → calkit_python-0.47.12}/.vscode/launch.json +0 -0
  53. {calkit_python-0.47.11 → calkit_python-0.47.12}/.vscode/tasks.json +0 -0
  54. {calkit_python-0.47.11 → calkit_python-0.47.12}/AGENTS.md +0 -0
  55. {calkit_python-0.47.11 → calkit_python-0.47.12}/CITATION.cff +0 -0
  56. {calkit_python-0.47.11 → calkit_python-0.47.12}/CODE_OF_CONDUCT.md +0 -0
  57. {calkit_python-0.47.11 → calkit_python-0.47.12}/CONTRIBUTING.md +0 -0
  58. {calkit_python-0.47.11 → calkit_python-0.47.12}/LICENSE +0 -0
  59. {calkit_python-0.47.11 → calkit_python-0.47.12}/Makefile +0 -0
  60. {calkit_python-0.47.11 → calkit_python-0.47.12}/README.md +0 -0
  61. {calkit_python-0.47.11 → calkit_python-0.47.12}/actions/run/README.md +0 -0
  62. {calkit_python-0.47.11 → calkit_python-0.47.12}/actions/run/action.yml +0 -0
  63. {calkit_python-0.47.11 → calkit_python-0.47.12}/actions/run/example.yml +0 -0
  64. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/.claude-plugin/plugin.json +0 -0
  65. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
  66. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/build-paper-pipeline/SKILL.md +0 -0
  67. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/check-questions/SKILL.md +0 -0
  68. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/check-reproducibility/SKILL.md +0 -0
  69. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/conventions/SKILL.md +0 -0
  70. {calkit_python-0.47.11 → calkit_python-0.47.12}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
  71. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/.gitignore +0 -0
  72. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/.python-version +0 -0
  73. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/Makefile +0 -0
  74. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/README.md +0 -0
  75. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/main.py +0 -0
  76. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/pyproject.toml +0 -0
  77. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/resources/icon.ico +0 -0
  78. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/resources/screenshot.png +0 -0
  79. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/tests/test_main.py +0 -0
  80. {calkit_python-0.47.11 → calkit_python-0.47.12}/assistant/uv.lock +0 -0
  81. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/.gitignore +0 -0
  82. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/README.md +0 -0
  83. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/options.html +0 -0
  84. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/package-lock.json +0 -0
  85. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/package.json +0 -0
  86. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/popup.html +0 -0
  87. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/icons/calkit-128.png +0 -0
  88. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/icons/calkit-16.png +0 -0
  89. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/icons/calkit-32.png +0 -0
  90. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/icons/calkit-48.png +0 -0
  91. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/icons/calkit.svg +0 -0
  92. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/public/manifest.json +0 -0
  93. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/scripts/build-content.mjs +0 -0
  94. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/scripts/package-manifest.mjs +0 -0
  95. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/scripts/store-screenshots.py +0 -0
  96. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/scripts/watch.mjs +0 -0
  97. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/background/index.ts +0 -0
  98. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/content/github.ts +0 -0
  99. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/content/overleaf.ts +0 -0
  100. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/content/references.ts +0 -0
  101. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/api.ts +0 -0
  102. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/auth.ts +0 -0
  103. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/calkit-yaml.test.ts +0 -0
  104. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/calkit-yaml.ts +0 -0
  105. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/detect.test.ts +0 -0
  106. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/detect.ts +0 -0
  107. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/hub-url.ts +0 -0
  108. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/hubs.test.ts +0 -0
  109. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/hubs.ts +0 -0
  110. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/latex.test.ts +0 -0
  111. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/latex.ts +0 -0
  112. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/lifecycle.ts +0 -0
  113. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/messages.test.ts +0 -0
  114. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/messages.ts +0 -0
  115. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/pickers.ts +0 -0
  116. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/storage.ts +0 -0
  117. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/types.ts +0 -0
  118. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/ui.test.ts +0 -0
  119. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/core/ui.ts +0 -0
  120. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/options/options.ts +0 -0
  121. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/popup/popup.css +0 -0
  122. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/popup/popup.ts +0 -0
  123. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/src/viewer/viewer.ts +0 -0
  124. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/tsconfig.json +0 -0
  125. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/viewer.html +0 -0
  126. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/vite.config.ts +0 -0
  127. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/vite.content.config.ts +0 -0
  128. {calkit_python-0.47.11 → calkit_python-0.47.12}/browser-ext/vitest.config.ts +0 -0
  129. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/__init__.py +0 -0
  130. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/__main__.py +0 -0
  131. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/calc.py +0 -0
  132. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/__init__.py +0 -0
  133. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/config.py +0 -0
  134. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/core.py +0 -0
  135. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/delete.py +0 -0
  136. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/describe.py +0 -0
  137. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/dev.py +0 -0
  138. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/hub.py +0 -0
  139. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/import_.py +0 -0
  140. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/latex.py +0 -0
  141. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/list.py +0 -0
  142. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/main/__init__.py +0 -0
  143. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/main/xr.py +0 -0
  144. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/new.py +0 -0
  145. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/notebooks.py +0 -0
  146. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/office.py +0 -0
  147. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/overleaf.py +0 -0
  148. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/scheduler.py +0 -0
  149. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/show.py +0 -0
  150. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/sync.py +0 -0
  151. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/cli/update.py +0 -0
  152. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/conda.py +0 -0
  153. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/config.py +0 -0
  154. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/core.py +0 -0
  155. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/datasets.py +0 -0
  156. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/dependencies.py +0 -0
  157. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/detect.py +0 -0
  158. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/docx.py +0 -0
  159. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/dvc/__init__.py +0 -0
  160. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/dvc/core.py +0 -0
  161. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/dvc/zip.py +0 -0
  162. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/environments.py +0 -0
  163. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/fs.py +0 -0
  164. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/git.py +0 -0
  165. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/github.py +0 -0
  166. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/gui.py +0 -0
  167. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/hub.py +0 -0
  168. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/install.py +0 -0
  169. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/invenio.py +0 -0
  170. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/julia.py +0 -0
  171. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/jupyter.py +0 -0
  172. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/jupyterlab/__init__.py +0 -0
  173. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/jupyterlab/routes.py +0 -0
  174. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/package.json +0 -0
  175. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
  176. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/schemas/calkit/plugin.json +0 -0
  177. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/506.c34b070098184e33.js +0 -0
  178. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/57d13a7399cec3c5.png +0 -0
  179. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/616.528427eb54a4a0c0.js +0 -0
  180. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/740.6bf87276e9e5788a.js +0 -0
  181. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/899.f9b9f9bf705a6493.js +0 -0
  182. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/935.46ecc6bf99aa593a.js +0 -0
  183. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/remoteEntry.109a3a8379365e59.js +0 -0
  184. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/style.js +0 -0
  185. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/labextension/static/third-party-licenses.json +0 -0
  186. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/licenses.py +0 -0
  187. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/magics.py +0 -0
  188. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/markdown.py +0 -0
  189. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/matlab.py +0 -0
  190. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/__init__.py +0 -0
  191. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/core.py +0 -0
  192. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/docx.py +0 -0
  193. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/io.py +0 -0
  194. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/iteration.py +0 -0
  195. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/models/pipeline.py +0 -0
  196. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/notebooks.py +0 -0
  197. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/office.py +0 -0
  198. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/ops.py +0 -0
  199. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/overleaf.py +0 -0
  200. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/pipeline.py +0 -0
  201. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/procedures.py +0 -0
  202. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/provenance.py +0 -0
  203. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/releases.py +0 -0
  204. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/reproducibility.py +0 -0
  205. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/README.md +0 -0
  206. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/__init__.py +0 -0
  207. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/Dockerfile +0 -0
  208. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/README.md +0 -0
  209. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/base.json +0 -0
  210. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/scripts/check-envs.sh +0 -0
  211. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/scripts/post-create.sh +0 -0
  212. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/scripts/post-start.sh +0 -0
  213. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/devcontainer/scripts/update-content.sh +0 -0
  214. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/github-actions/example.yml +0 -0
  215. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/vscode/README.md +0 -0
  216. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/resources/vscode/extensions.json +0 -0
  217. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/schema.py +0 -0
  218. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/server.py +0 -0
  219. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/__init__.py +0 -0
  220. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/core.py +0 -0
  221. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/__init__.py +0 -0
  222. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/article/paper.tex +0 -0
  223. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/core.py +0 -0
  224. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/ieee-conference/paper.tex +0 -0
  225. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/jfm/jfm.bst +0 -0
  226. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/jfm/jfm.cls +0 -0
  227. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  228. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/jfm/paper.tex +0 -0
  229. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/jfm/upmath.sty +0 -0
  230. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/templates/latex/report/paper.tex +0 -0
  231. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/__init__.py +0 -0
  232. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/__init__.py +0 -0
  233. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/main/__init__.py +0 -0
  234. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/main/test_core.py +0 -0
  235. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/main/test_lock.py +0 -0
  236. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/main/test_subprojects.py +0 -0
  237. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/main/test_xr.py +0 -0
  238. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_check.py +0 -0
  239. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_config.py +0 -0
  240. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_core.py +0 -0
  241. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_delete.py +0 -0
  242. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_describe.py +0 -0
  243. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_hub.py +0 -0
  244. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_import.py +0 -0
  245. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_latex.py +0 -0
  246. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_list.py +0 -0
  247. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_new.py +0 -0
  248. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_notebooks.py +0 -0
  249. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_overleaf.py +0 -0
  250. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_scheduler.py +0 -0
  251. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_show.py +0 -0
  252. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_sync.py +0 -0
  253. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/cli/test_update.py +0 -0
  254. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/dvc/__init__.py +0 -0
  255. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/dvc/test_core.py +0 -0
  256. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/dvc/test_zip.py +0 -0
  257. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/jupyterlab/__init__.py +0 -0
  258. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/jupyterlab/conftest.py +0 -0
  259. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/jupyterlab/test_routes.py +0 -0
  260. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/models/__init__.py +0 -0
  261. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/models/test_core.py +0 -0
  262. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/models/test_iteration.py +0 -0
  263. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/models/test_pipeline.py +0 -0
  264. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_calc.py +0 -0
  265. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_conda.py +0 -0
  266. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_config.py +0 -0
  267. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_core.py +0 -0
  268. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_dependencies.py +0 -0
  269. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_detect.py +0 -0
  270. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_docs_references.py +0 -0
  271. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_docx.py +0 -0
  272. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_environments.py +0 -0
  273. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_fs.py +0 -0
  274. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_git.py +0 -0
  275. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_hub.py +0 -0
  276. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_install.py +0 -0
  277. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_invenio.py +0 -0
  278. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_julia.py +0 -0
  279. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_jupyter.py +0 -0
  280. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_keyring_windows.py +0 -0
  281. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_licenses.py +0 -0
  282. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_magics.py +0 -0
  283. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_markdown.py +0 -0
  284. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_matlab.py +0 -0
  285. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_models.py +0 -0
  286. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_notebooks.py +0 -0
  287. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_overleaf.py +0 -0
  288. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_pipeline.py +0 -0
  289. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_procedures.py +0 -0
  290. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_provenance.py +0 -0
  291. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_releases.py +0 -0
  292. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_reproducibility.py +0 -0
  293. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_resources.py +0 -0
  294. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_schema.py +0 -0
  295. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_templates.py +0 -0
  296. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/tests/test_workspace.py +0 -0
  297. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit/workspace.py +0 -0
  298. {calkit_python-0.47.11 → calkit_python-0.47.12}/calkit.yaml +0 -0
  299. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/CNAME +0 -0
  300. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/acknowledgements.md +0 -0
  301. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/ai-tools.md +0 -0
  302. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/apps.md +0 -0
  303. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/browser-ext/index.md +0 -0
  304. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/browser-ext/privacy.md +0 -0
  305. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/calculations.md +0 -0
  306. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/calkit-yaml.md +0 -0
  307. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/cli-reference.md +0 -0
  308. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/cloud-integration.md +0 -0
  309. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/datasets.md +0 -0
  310. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/dev/latex-word.md +0 -0
  311. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/environments.md +0 -0
  312. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/examples.md +0 -0
  313. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/governance.md +0 -0
  314. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/help.md +0 -0
  315. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/hpc.md +0 -0
  316. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/hub/index.md +0 -0
  317. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/hub/self-hosting.md +0 -0
  318. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/c-to-the-k-white.svg +0 -0
  319. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/calkit-fragmentation-compendium.png +0 -0
  320. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/calkit-no-bg.png +0 -0
  321. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/caltech.png +0 -0
  322. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/connect-zenodo.png +0 -0
  323. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab/all-green.png +0 -0
  324. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab/collect-data-stale.png +0 -0
  325. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab/new-env.png +0 -0
  326. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab/new-notebook.png +0 -0
  327. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab/pipeline-badge.png +0 -0
  328. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/jupyterlab-params.png +0 -0
  329. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/latex-word-round-trip.png +0 -0
  330. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/pipeline.png +0 -0
  331. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/plos-osi-code-2024-03.png +0 -0
  332. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/schmidt-sciences.png +0 -0
  333. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/img/vscode-nb-params.png +0 -0
  334. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/index.md +0 -0
  335. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/installation.md +0 -0
  336. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/jupyterlab.md +0 -0
  337. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/latex.md +0 -0
  338. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/local-server.md +0 -0
  339. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/notebooks.md +0 -0
  340. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/overleaf.md +0 -0
  341. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/pipeline/manual-steps.md +0 -0
  342. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/pipeline/markdown.md +0 -0
  343. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/pipeline/running-and-logging.md +0 -0
  344. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/provenance.md +0 -0
  345. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/questions.md +0 -0
  346. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/quickstart.md +0 -0
  347. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/references.md +0 -0
  348. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/releases.md +0 -0
  349. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/reproducibility.md +0 -0
  350. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/requirements.md +0 -0
  351. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/schemas/calkit.json +0 -0
  352. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/subprojects.md +0 -0
  353. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  354. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/ai-agents.md +0 -0
  355. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/conda-envs.md +0 -0
  356. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/first-project.md +0 -0
  357. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/github-actions.md +0 -0
  358. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  359. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  360. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  361. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  362. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  363. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  364. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  365. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  366. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  367. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  368. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  369. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  370. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  371. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  372. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  373. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/create-project.png +0 -0
  374. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  375. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/excel-chart.png +0 -0
  376. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/excel-data.png +0 -0
  377. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  378. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/needs-clone.png +0 -0
  379. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/new-stage.png +0 -0
  380. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  381. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  382. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/status-more-rows.png +0 -0
  383. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  384. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/untracked-data.png +0 -0
  385. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/updated-publication.png +0 -0
  386. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  387. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/office/workflow-page.png +0 -0
  388. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/clone.png +0 -0
  389. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/create-project.png +0 -0
  390. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  391. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  392. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  393. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/new-token.png +0 -0
  394. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/reclone.png +0 -0
  395. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  396. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/quick-actions.png +0 -0
  397. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/run-proc.png +0 -0
  398. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
  399. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
  400. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
  401. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
  402. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
  403. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
  404. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
  405. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/index.md +0 -0
  406. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/jupyterlab.md +0 -0
  407. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/latex-codespaces.md +0 -0
  408. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/latex-word.md +0 -0
  409. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/matlab.md +0 -0
  410. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/notebook-pipeline.md +0 -0
  411. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/office.md +0 -0
  412. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/openfoam.md +0 -0
  413. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/procedures.md +0 -0
  414. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/runnable-readme.md +0 -0
  415. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/vscode-slurm-notebook.md +0 -0
  416. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/tutorials/writing-first.md +0 -0
  417. {calkit_python-0.47.11 → calkit_python-0.47.12}/docs/version-control.md +0 -0
  418. {calkit_python-0.47.11 → calkit_python-0.47.12}/dvc.lock +0 -0
  419. {calkit_python-0.47.11 → calkit_python-0.47.12}/dvc.yaml +0 -0
  420. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/.gitignore +0 -0
  421. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/README.md +0 -0
  422. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-authoring/.gitignore +0 -0
  423. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-authoring/authoring/Dockerfile +0 -0
  424. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-authoring/calkit.yaml +0 -0
  425. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-variant/solution/calkit.yaml +0 -0
  426. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-variant/solution/make_design_report.py +0 -0
  427. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-variant/solution/solve.sh +0 -0
  428. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/overlay-variant/tests/test_calkit.py +0 -0
  429. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/patch_variant.py +0 -0
  430. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/setup.sh +0 -0
  431. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/harbor-tb-science/tamper.sh +0 -0
  432. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.calkit/env-locks/py/osx-arm64.txt +0 -0
  433. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.calkit/env-locks/py/win-64.txt +0 -0
  434. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.calkit/env-locks/tex/amd64.json +0 -0
  435. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.calkit/env-locks/tex/arm64.json +0 -0
  436. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.dvc/.gitignore +0 -0
  437. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.dvc/config +0 -0
  438. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.dvcignore +0 -0
  439. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.gitattributes +0 -0
  440. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/.gitignore +0 -0
  441. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/README.md +0 -0
  442. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/calkit.yaml +0 -0
  443. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/dvc.lock +0 -0
  444. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/dvc.yaml +0 -0
  445. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/figures/.gitignore +0 -0
  446. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/paper/.gitignore +0 -0
  447. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/paper/figures/.gitignore +0 -0
  448. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/paper/main.tex +0 -0
  449. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/paper/methods.tex +0 -0
  450. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/paper/refs.bib +0 -0
  451. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/requirements.txt +0 -0
  452. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/latex-word/scripts/plot-wake.py +0 -0
  453. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/jl/Manifest.toml +0 -0
  454. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/jl/Project.toml +0 -0
  455. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/py/.python-version +0 -0
  456. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/py/pyproject.toml +0 -0
  457. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/py/uv.lock +0 -0
  458. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/.Rbuildignore +0 -0
  459. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/.Rprofile +0 -0
  460. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/DESCRIPTION +0 -0
  461. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/renv/.gitignore +0 -0
  462. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/renv/activate.R +0 -0
  463. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/renv/settings.json +0 -0
  464. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.calkit/envs/r/renv.lock +0 -0
  465. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.dvc/.gitignore +0 -0
  466. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.dvc/config +0 -0
  467. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.dvcignore +0 -0
  468. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/.gitignore +0 -0
  469. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/README.md +0 -0
  470. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/calkit.yaml +0 -0
  471. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/data/data.csv +0 -0
  472. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/data/data2.csv +0 -0
  473. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/dvc.lock +0 -0
  474. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/dvc.yaml +0 -0
  475. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/figures/data2.png +0 -0
  476. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/figures/figure.png +0 -0
  477. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown/results/fit.json +0 -0
  478. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/.dvc/.gitignore +0 -0
  479. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/.dvc/config +0 -0
  480. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/.dvcignore +0 -0
  481. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/.gitignore +0 -0
  482. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/.python-version +0 -0
  483. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/README.md +0 -0
  484. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/calkit.yaml +0 -0
  485. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/dvc.lock +0 -0
  486. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/dvc.yaml +0 -0
  487. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/figures/waves.png +0 -0
  488. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/pyproject.toml +0 -0
  489. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/src/wavetools/__init__.py +0 -0
  490. {calkit_python-0.47.11 → calkit_python-0.47.12}/examples/markdown-python/uv.lock +0 -0
  491. {calkit_python-0.47.11 → calkit_python-0.47.12}/flake.lock +0 -0
  492. {calkit_python-0.47.11 → calkit_python-0.47.12}/flake.nix +0 -0
  493. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/.env.example +0 -0
  494. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/.gitattributes +0 -0
  495. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/.gitignore +0 -0
  496. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/.vscode/launch.json +0 -0
  497. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/AGENTS.md +0 -0
  498. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/LICENSE +0 -0
  499. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/Makefile +0 -0
  500. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/README.md +0 -0
  501. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/.gitignore +0 -0
  502. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/.python-version +0 -0
  503. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/Dockerfile +0 -0
  504. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/Makefile +0 -0
  505. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/README.md +0 -0
  506. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/alembic.ini +0 -0
  507. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/__init__.py +0 -0
  508. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/README +0 -0
  509. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/env.py +0 -0
  510. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/script.py.mako +0 -0
  511. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/.keep +0 -0
  512. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +0 -0
  513. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +0 -0
  514. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +0 -0
  515. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +0 -0
  516. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +0 -0
  517. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +0 -0
  518. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +0 -0
  519. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +0 -0
  520. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +0 -0
  521. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +0 -0
  522. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +0 -0
  523. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +0 -0
  524. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +0 -0
  525. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +0 -0
  526. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +0 -0
  527. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +0 -0
  528. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +0 -0
  529. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +0 -0
  530. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +0 -0
  531. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +0 -0
  532. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/97762605447f_add_onboarding_flags_and_feedback.py +0 -0
  533. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +0 -0
  534. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +0 -0
  535. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +0 -0
  536. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +0 -0
  537. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +0 -0
  538. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +0 -0
  539. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +0 -0
  540. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +0 -0
  541. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +0 -0
  542. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/c4e1d7a92b35_add_analytics_consent_to_user.py +0 -0
  543. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +0 -0
  544. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +0 -0
  545. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +0 -0
  546. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +0 -0
  547. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +0 -0
  548. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +0 -0
  549. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +0 -0
  550. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +0 -0
  551. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +0 -0
  552. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +0 -0
  553. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +0 -0
  554. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +0 -0
  555. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +0 -0
  556. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +0 -0
  557. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +0 -0
  558. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +0 -0
  559. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +0 -0
  560. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +0 -0
  561. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/__init__.py +0 -0
  562. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/deps.py +0 -0
  563. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/__init__.py +0 -0
  564. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/accounts.py +0 -0
  565. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/datasets.py +0 -0
  566. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/feedback.py +0 -0
  567. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/login.py +0 -0
  568. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/misc.py +0 -0
  569. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/orgs.py +0 -0
  570. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/__init__.py +0 -0
  571. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/activity.py +0 -0
  572. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/datasets.py +0 -0
  573. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/dvc.py +0 -0
  574. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/figures.py +0 -0
  575. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/fs.py +0 -0
  576. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/pipeline.py +0 -0
  577. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/projects/releases.py +0 -0
  578. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/references.py +0 -0
  579. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/api/routes/users.py +0 -0
  580. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/arxiv.py +0 -0
  581. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/cache.py +0 -0
  582. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/client.py +0 -0
  583. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/config.py +0 -0
  584. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/core.py +0 -0
  585. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/db.py +0 -0
  586. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/dvc.py +0 -0
  587. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/new_account.html +0 -0
  588. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/project_invitation.html +0 -0
  589. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/release_share.html +0 -0
  590. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/reset_password.html +0 -0
  591. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/test_email.html +0 -0
  592. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/build/verify_email.html +0 -0
  593. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/new_account.mjml +0 -0
  594. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/project_invitation.mjml +0 -0
  595. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/release_share.mjml +0 -0
  596. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/reset_password.mjml +0 -0
  597. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/test_email.mjml +0 -0
  598. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/email-templates/src/verify_email.mjml +0 -0
  599. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/formatting.py +0 -0
  600. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/github.py +0 -0
  601. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/imports.py +0 -0
  602. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/index.py +0 -0
  603. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/main.py +0 -0
  604. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/messaging.py +0 -0
  605. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/models/__init__.py +0 -0
  606. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/models/core.py +0 -0
  607. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/models/projects.py +0 -0
  608. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/models/releases.py +0 -0
  609. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/orgs.py +0 -0
  610. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/pdftext.py +0 -0
  611. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/pipeline.py +0 -0
  612. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/projects.py +0 -0
  613. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/security.py +0 -0
  614. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/storage.py +0 -0
  615. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/stripe.py +0 -0
  616. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/subscriptions.py +0 -0
  617. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tasks.py +0 -0
  618. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/__init__.py +0 -0
  619. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/__init__.py +0 -0
  620. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/__init__.py +0 -0
  621. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
  622. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_activity.py +0 -0
  623. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_core.py +0 -0
  624. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_datasets.py +0 -0
  625. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_dvc.py +0 -0
  626. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_figure_upload.py +0 -0
  627. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_figures.py +0 -0
  628. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_fs.py +0 -0
  629. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_misc.py +0 -0
  630. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +0 -0
  631. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_pipeline.py +0 -0
  632. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_publications.py +0 -0
  633. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_reference_items.py +0 -0
  634. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/projects/test_templates.py +0 -0
  635. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/test_feedback.py +0 -0
  636. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/test_login.py +0 -0
  637. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/test_misc.py +0 -0
  638. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/test_releases.py +0 -0
  639. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/api/routes/test_users.py +0 -0
  640. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/conftest.py +0 -0
  641. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_arxiv.py +0 -0
  642. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_cache.py +0 -0
  643. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_client.py +0 -0
  644. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_core.py +0 -0
  645. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_db.py +0 -0
  646. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_dvc.py +0 -0
  647. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_formatting.py +0 -0
  648. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_index.py +0 -0
  649. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_pdftext.py +0 -0
  650. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_pipeline.py +0 -0
  651. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_projects.py +0 -0
  652. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_tasks.py +0 -0
  653. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_users.py +0 -0
  654. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/tests/test_version.py +0 -0
  655. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/thumbnails.py +0 -0
  656. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/users.py +0 -0
  657. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/version.py +0 -0
  658. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/warm.py +0 -0
  659. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/zenodo.py +0 -0
  660. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/app/zotero.py +0 -0
  661. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/prestart.sh +0 -0
  662. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/pyproject.toml +0 -0
  663. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/backend-pre-start.py +0 -0
  664. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/create-initial-data.py +0 -0
  665. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/delete-user.py +0 -0
  666. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/format.sh +0 -0
  667. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/generate-client.py +0 -0
  668. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/lint.sh +0 -0
  669. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/rotate-fernet-secrets.py +0 -0
  670. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/scripts/test.sh +0 -0
  671. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/backend/tests-start.sh +0 -0
  672. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/alloy/config.alloy +0 -0
  673. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/grafana/provisioning/dashboards/dashboards.yml +0 -0
  674. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/grafana/provisioning/dashboards/fastapi.json +0 -0
  675. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/grafana/provisioning/dashboards/warm-queue.json +0 -0
  676. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/grafana/provisioning/datasources/datasources.yml +0 -0
  677. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/loki/loki.yml +0 -0
  678. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/config/prometheus/prometheus.yml +0 -0
  679. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docker-compose.override.yml +0 -0
  680. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docker-compose.traefik.yml +0 -0
  681. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docker-compose.yml +0 -0
  682. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docs/dev/database-migrations.md +0 -0
  683. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docs/dev/deployment.md +0 -0
  684. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/docs/dev/development.md +0 -0
  685. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/.dockerignore +0 -0
  686. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/.gitignore +0 -0
  687. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/.nvmrc +0 -0
  688. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/Dockerfile +0 -0
  689. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/Makefile +0 -0
  690. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/README.md +0 -0
  691. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/biome.json +0 -0
  692. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/index.html +0 -0
  693. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/modify-openapi-operationids.js +0 -0
  694. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/nginx-backend-not-found.conf +0 -0
  695. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/nginx.conf +0 -0
  696. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/openapi-ts.config.ts +0 -0
  697. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/package-lock.json +0 -0
  698. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/package.json +0 -0
  699. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/playwright.config.ts +0 -0
  700. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/c-to-the-k.svg +0 -0
  701. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/calkit-no-bg.svg +0 -0
  702. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/calkit.svg +0 -0
  703. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/fastapi-logo.svg +0 -0
  704. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/favicon.png +0 -0
  705. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/assets/images/kdot.svg +0 -0
  706. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/.gitignore +0 -0
  707. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/LICENSE-busytex +0 -0
  708. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/busytex.js +0 -0
  709. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/busytex.wasm +0 -0
  710. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/busytex_pipeline.js +0 -0
  711. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/public/tex/busytex_worker.js +0 -0
  712. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/scripts/download-tex-engine.sh +0 -0
  713. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/client/client.gen.ts +0 -0
  714. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/client/index.ts +0 -0
  715. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/client/types.gen.ts +0 -0
  716. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/client/utils.gen.ts +0 -0
  717. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/client.gen.ts +0 -0
  718. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/auth.gen.ts +0 -0
  719. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/bodySerializer.gen.ts +0 -0
  720. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/params.gen.ts +0 -0
  721. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/pathSerializer.gen.ts +0 -0
  722. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/queryKeySerializer.gen.ts +0 -0
  723. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/serverSentEvents.gen.ts +0 -0
  724. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/types.gen.ts +0 -0
  725. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/core/utils.gen.ts +0 -0
  726. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/index.ts +0 -0
  727. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/schemas.gen.ts +0 -0
  728. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/sdk.gen.ts +0 -0
  729. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/client/types.gen.ts +0 -0
  730. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Admin/AddUser.tsx +0 -0
  731. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Admin/EditUser.tsx +0 -0
  732. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Admin/FeatureVotesTable.tsx +0 -0
  733. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Admin/FeedbackTable.tsx +0 -0
  734. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ActionsMenu.tsx +0 -0
  735. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +0 -0
  736. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ClearableInput.tsx +0 -0
  737. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/CodeEditorPane.tsx +0 -0
  738. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/CommentsPanel.tsx +0 -0
  739. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +0 -0
  740. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +0 -0
  741. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/DeleteAlert.tsx +0 -0
  742. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/DiscardChangesDialog.tsx +0 -0
  743. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/FeatureVoteButton.tsx +0 -0
  744. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/FilterableSelect.tsx +0 -0
  745. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/GlobalSearch.tsx +0 -0
  746. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/HelpFeedback.tsx +0 -0
  747. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/InputsRow.tsx +0 -0
  748. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/LoadingSpinner.tsx +0 -0
  749. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Mermaid.tsx +0 -0
  750. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Navbar.tsx +0 -0
  751. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/NoArtifactFound.tsx +0 -0
  752. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/NotBuiltAlert.tsx +0 -0
  753. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/NotFound.tsx +0 -0
  754. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/NotificationBell.tsx +0 -0
  755. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/OAuthButtons.tsx +0 -0
  756. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/PageMenu.tsx +0 -0
  757. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/PdfCanvas.tsx +0 -0
  758. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +0 -0
  759. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +0 -0
  760. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/RefPicker.tsx +0 -0
  761. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/SandboxedHtml.test.tsx +0 -0
  762. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/SandboxedHtml.tsx +0 -0
  763. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Sidebar.tsx +0 -0
  764. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/SidebarItems.tsx +0 -0
  765. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/TexText.test.tsx +0 -0
  766. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/TexText.tsx +0 -0
  767. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Tooltip.tsx +0 -0
  768. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/Topbar.tsx +0 -0
  769. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Common/UserMenu.tsx +0 -0
  770. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Datasets/BrowseDatasets.tsx +0 -0
  771. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Datasets/DataEntryGrid.tsx +0 -0
  772. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Datasets/DatasetViewer.tsx +0 -0
  773. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Datasets/NewDataset.tsx +0 -0
  774. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Environments/NewEnvironment.tsx +0 -0
  775. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Environments/ViewEnvironment.tsx +0 -0
  776. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Figures/FigureEditLauncher.tsx +0 -0
  777. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Figures/FigureEditor.tsx +0 -0
  778. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Figures/FigureFromExisting.tsx +0 -0
  779. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Figures/FigureView.tsx +0 -0
  780. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Figures/UploadFigure.tsx +0 -0
  781. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Files/EditFileInfo.tsx +0 -0
  782. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Files/FileEditorModal.tsx +0 -0
  783. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Files/SelectedItemInfo.tsx +0 -0
  784. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Files/UploadFile.tsx +0 -0
  785. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Local/AddPath.tsx +0 -0
  786. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Local/DiscardChanges.tsx +0 -0
  787. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Local/IgnorePath.tsx +0 -0
  788. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Local/NewStage.tsx +0 -0
  789. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Local/SaveFiles.tsx +0 -0
  790. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Notebooks/NotebookRunLauncher.tsx +0 -0
  791. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Notebooks/NotebookRunner.tsx +0 -0
  792. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Notebooks/NotebookView.tsx +0 -0
  793. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/AccountSetupCard.tsx +0 -0
  794. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/ChecklistCard.tsx +0 -0
  795. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/CommandBlock.tsx +0 -0
  796. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/FeaturedProjects.tsx +0 -0
  797. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/ProjectChecklist.tsx +0 -0
  798. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/ReproAudit.test.ts +0 -0
  799. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/ReproAudit.tsx +0 -0
  800. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Onboarding/StartPaths.tsx +0 -0
  801. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Orgs/AddMember.tsx +0 -0
  802. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Orgs/NewOrg.tsx +0 -0
  803. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Pipeline/PipelineEditorModal.tsx +0 -0
  804. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +0 -0
  805. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Presentations/PresentationView.tsx +0 -0
  806. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/AddCollaborator.tsx +0 -0
  807. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/CloneProject.tsx +0 -0
  808. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/CreateIssue.tsx +0 -0
  809. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/CreateQuestion.tsx +0 -0
  810. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/EditProject.tsx +0 -0
  811. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/EditQuestion.tsx +0 -0
  812. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/HelpContent.tsx +0 -0
  813. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/InviteLinks.tsx +0 -0
  814. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +0 -0
  815. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/NewProjectModal.tsx +0 -0
  816. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/ProjectShowcase.tsx +0 -0
  817. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/ProjectStatus.tsx +0 -0
  818. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/QuestionModal.tsx +0 -0
  819. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/RecentChanges.test.ts +0 -0
  820. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Projects/RecentChanges.tsx +0 -0
  821. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/ImportOverleaf.test.ts +0 -0
  822. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/ImportOverleaf.tsx +0 -0
  823. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/LatexEditor.tsx +0 -0
  824. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/NewPublication.tsx +0 -0
  825. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/PdfAnnotator.tsx +0 -0
  826. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/PublicationComponents.test.ts +0 -0
  827. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/PublicationComponents.tsx +0 -0
  828. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Publications/PublicationView.tsx +0 -0
  829. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +0 -0
  830. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +0 -0
  831. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/EditReferenceItemModal.tsx +0 -0
  832. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/FileViewModal.tsx +0 -0
  833. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +0 -0
  834. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/LabelExistingReferences.tsx +0 -0
  835. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/NewReferencesCollection.tsx +0 -0
  836. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/ReferenceItemModal.tsx +0 -0
  837. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +0 -0
  838. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +0 -0
  839. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/NewRelease.tsx +0 -0
  840. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/PathPicker.tsx +0 -0
  841. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +0 -0
  842. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/ReleaseViewer.tsx +0 -0
  843. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/ReleasesTable.tsx +0 -0
  844. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/ShareDialog.tsx +0 -0
  845. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Releases/releaseSort.ts +0 -0
  846. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Tables/TableThumbnail.tsx +0 -0
  847. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Tables/TableView.test.tsx +0 -0
  848. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/Tables/TableView.tsx +0 -0
  849. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/Appearance.tsx +0 -0
  850. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/ChangePassword.tsx +0 -0
  851. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +0 -0
  852. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +0 -0
  853. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +0 -0
  854. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/NewToken.tsx +0 -0
  855. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/OnboardingChecklists.tsx +0 -0
  856. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/PickSubscription.tsx +0 -0
  857. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/Privacy.tsx +0 -0
  858. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/Subscription.tsx +0 -0
  859. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +0 -0
  860. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/UserInformation.tsx +0 -0
  861. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/components/UserSettings/UserTokens.tsx +0 -0
  862. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useAuth.ts +0 -0
  863. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useCustomToast.ts +0 -0
  864. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useOnboarding.ts +0 -0
  865. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useProject.ts +0 -0
  866. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useRefreshProject.ts +0 -0
  867. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useSubmitOnCmdEnter.test.ts +0 -0
  868. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/hooks/useSubmitOnCmdEnter.ts +0 -0
  869. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/api.test.ts +0 -0
  870. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/api.ts +0 -0
  871. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/auth.test.ts +0 -0
  872. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/auth.ts +0 -0
  873. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/bibtex.test.ts +0 -0
  874. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/bibtex.ts +0 -0
  875. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/core.ts +0 -0
  876. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/csv.test.ts +0 -0
  877. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/csv.ts +0 -0
  878. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/environments.test.ts +0 -0
  879. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/errors.ts +0 -0
  880. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/figureScript.test.ts +0 -0
  881. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/figureScript.ts +0 -0
  882. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/fuzzy.test.ts +0 -0
  883. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/fuzzy.ts +0 -0
  884. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/github.test.ts +0 -0
  885. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/github.ts +0 -0
  886. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/google.ts +0 -0
  887. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/keyboard.ts +0 -0
  888. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/latexCompiler.ts +0 -0
  889. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/latexProject.mapPaths.test.ts +0 -0
  890. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/latexProject.test.ts +0 -0
  891. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/latexProject.ts +0 -0
  892. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/layout.ts +0 -0
  893. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/notebook.test.ts +0 -0
  894. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/notebook.ts +0 -0
  895. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/onboarding.test.ts +0 -0
  896. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/onboarding.ts +0 -0
  897. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/pipelineYaml.test.ts +0 -0
  898. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/pipelineYaml.ts +0 -0
  899. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/projectFiles.ts +0 -0
  900. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/provenance.test.ts +0 -0
  901. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/provenance.ts +0 -0
  902. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/pyodide.test.ts +0 -0
  903. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/pyodide.ts +0 -0
  904. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/releases.ts +0 -0
  905. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/staleChunks.test.ts +0 -0
  906. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/staleChunks.ts +0 -0
  907. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/tables.test.ts +0 -0
  908. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/tables.ts +0 -0
  909. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/tex.test.ts +0 -0
  910. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/tex.ts +0 -0
  911. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/zenodo.ts +0 -0
  912. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/lib/zotero.ts +0 -0
  913. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routeTree.gen.ts +0 -0
  914. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +0 -0
  915. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/$appName.tsx +0 -0
  916. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/index.tsx +0 -0
  917. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps.tsx +0 -0
  918. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +0 -0
  919. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +0 -0
  920. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +0 -0
  921. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +0 -0
  922. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +0 -0
  923. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +0 -0
  924. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +0 -0
  925. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +0 -0
  926. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +0 -0
  927. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +0 -0
  928. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/questions.$questionNumber.tsx +0 -0
  929. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +0 -0
  930. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +0 -0
  931. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +0 -0
  932. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/tables.tsx +0 -0
  933. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +0 -0
  934. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +0 -0
  935. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/$accountName/index.tsx +0 -0
  936. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/admin.tsx +0 -0
  937. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/datasets.tsx +0 -0
  938. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/index.tsx +0 -0
  939. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/new.tsx +0 -0
  940. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/orgs.tsx +0 -0
  941. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/projects.tsx +0 -0
  942. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout/settings.tsx +0 -0
  943. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/_layout.tsx +0 -0
  944. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/auth/google.tsx +0 -0
  945. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/auth/zenodo.tsx +0 -0
  946. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/auth/zotero.tsx +0 -0
  947. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/checkout.tsx +0 -0
  948. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/join/$token.tsx +0 -0
  949. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/login/device.tsx +0 -0
  950. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/login/index.tsx +0 -0
  951. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/recover-password.tsx +0 -0
  952. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/reset-password.tsx +0 -0
  953. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/signup.tsx +0 -0
  954. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/routes/verify-email.tsx +0 -0
  955. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/theme.tsx +0 -0
  956. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/src/vite-env.d.ts +0 -0
  957. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/auth.setup.ts +0 -0
  958. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/config.ts +0 -0
  959. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/figures-pagination.spec.ts +0 -0
  960. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/login.spec.ts +0 -0
  961. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/reset-password.spec.ts +0 -0
  962. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/user-settings.spec.ts +0 -0
  963. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/utils/mailcatcher.ts +0 -0
  964. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/utils/random.ts +0 -0
  965. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tests/utils/user.ts +0 -0
  966. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tsconfig.json +0 -0
  967. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/tsconfig.node.json +0 -0
  968. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/vite.config.ts +0 -0
  969. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/frontend/vitest.config.ts +0 -0
  970. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/build-push.sh +0 -0
  971. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/build.sh +0 -0
  972. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/deploy.sh +0 -0
  973. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/pem-to-env.sh +0 -0
  974. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/test-local.sh +0 -0
  975. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/scripts/test.sh +0 -0
  976. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/texmf-proxy/Dockerfile +0 -0
  977. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/texmf-proxy/README.md +0 -0
  978. {calkit_python-0.47.11 → calkit_python-0.47.12}/hub/texmf-proxy/proxy.py +0 -0
  979. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/README.md +0 -0
  980. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/entrypoint.sh +0 -0
  981. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/packages.txt +0 -0
  982. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/scan-arxiv.py +0 -0
  983. {calkit_python-0.47.11 → calkit_python-0.47.12}/images/latex/sizes.json +0 -0
  984. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/.yarnrc.yml +0 -0
  985. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/babel.config.js +0 -0
  986. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/install.json +0 -0
  987. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/jest.config.js +0 -0
  988. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
  989. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/package.json +0 -0
  990. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/schema/plugin.json +0 -0
  991. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
  992. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/calkit-config.ts +0 -0
  993. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
  994. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
  995. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
  996. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
  997. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
  998. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
  999. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
  1000. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
  1001. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
  1002. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
  1003. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/feature-flags.ts +0 -0
  1004. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
  1005. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
  1006. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
  1007. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/icons.ts +0 -0
  1008. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/index.ts +0 -0
  1009. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/io-tracker.ts +0 -0
  1010. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/pipeline-state.ts +0 -0
  1011. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/queryClient.ts +0 -0
  1012. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/request.ts +0 -0
  1013. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
  1014. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/base.css +0 -0
  1015. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/cell-output-marker.css +0 -0
  1016. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/environment-editor.css +0 -0
  1017. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/environment-selector.css +0 -0
  1018. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
  1019. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/index.css +0 -0
  1020. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/index.js +0 -0
  1021. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
  1022. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
  1023. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/style/sidebar.css +0 -0
  1024. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/tsconfig.json +0 -0
  1025. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/tsconfig.test.json +0 -0
  1026. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/.gitignore +0 -0
  1027. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/README.md +0 -0
  1028. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
  1029. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/package.json +0 -0
  1030. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
  1031. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
  1032. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
  1033. {calkit_python-0.47.11 → calkit_python-0.47.12}/jupyterlab-ext/yarn.lock +0 -0
  1034. {calkit_python-0.47.11 → calkit_python-0.47.12}/mkdocs.yml +0 -0
  1035. {calkit_python-0.47.11 → calkit_python-0.47.12}/pyproject.toml +0 -0
  1036. {calkit_python-0.47.11 → calkit_python-0.47.12}/results/latex-word-round-trip/.gitignore +0 -0
  1037. {calkit_python-0.47.11 → calkit_python-0.47.12}/results/latex-word-round-trip.json +0 -0
  1038. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/generate-docs-references.py +0 -0
  1039. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/install.ps1 +0 -0
  1040. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/install.sh +0 -0
  1041. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/latex-word-round-trip.py +0 -0
  1042. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/list-changes.py +0 -0
  1043. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/make-ck9.sh +0 -0
  1044. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/plot-latex-word-round-trip.py +0 -0
  1045. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/sync-docs.py +0 -0
  1046. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/sync-resources.py +0 -0
  1047. {calkit_python-0.47.11 → calkit_python-0.47.12}/scripts/update-latex-image-tag.sh +0 -0
  1048. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/README.md +0 -0
  1049. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/accepted.docx +0 -0
  1050. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/export.docx +0 -0
  1051. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/libreoffice-accepted.docx +0 -0
  1052. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/libreoffice-returned.docx +0 -0
  1053. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/main.tex +0 -0
  1054. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/make-libreoffice-fixtures.py +0 -0
  1055. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/methods.tex +0 -0
  1056. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/resolved.docx +0 -0
  1057. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/returned.docx +0 -0
  1058. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/docx/word-import.docx +0 -0
  1059. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/dvc-md5-dir/osx-arm64.txt +0 -0
  1060. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/nb-julia.ipynb +0 -0
  1061. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/nb-params.ipynb +0 -0
  1062. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/nb-subdir.ipynb +0 -0
  1063. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/pipeline.ipynb +0 -0
  1064. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/script.py +0 -0
  1065. {calkit_python-0.47.11 → calkit_python-0.47.12}/test/test-log.log +0 -0
  1066. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/.gitignore +0 -0
  1067. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/.vscodeignore +0 -0
  1068. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/LICENSE +0 -0
  1069. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/README.md +0 -0
  1070. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/changelog-notes.md +0 -0
  1071. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/images/calkit-icon.svg +0 -0
  1072. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/images/calkit-no-bg.png +0 -0
  1073. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/package-lock.json +0 -0
  1074. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/package.json +0 -0
  1075. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/schemas/calkit.json +0 -0
  1076. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/scripts/gen-changelog.js +0 -0
  1077. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/scripts/set-proposed-api.js +0 -0
  1078. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/environments.ts +0 -0
  1079. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/extension.ts +0 -0
  1080. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/figures/core.ts +0 -0
  1081. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/figures/view.ts +0 -0
  1082. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/latex/core.ts +0 -0
  1083. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/markdown/core.ts +0 -0
  1084. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/markdown/view.ts +0 -0
  1085. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/notebooks.ts +0 -0
  1086. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/pipeline/core.ts +0 -0
  1087. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/sidebar.ts +0 -0
  1088. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/environments.test.ts +0 -0
  1089. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/figures.test.ts +0 -0
  1090. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
  1091. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/latex.test.ts +0 -0
  1092. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/markdown.test.ts +0 -0
  1093. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/notebooks.test.ts +0 -0
  1094. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/pipeline.test.ts +0 -0
  1095. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/sidebar.test.ts +0 -0
  1096. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/test/yaml.test.ts +0 -0
  1097. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/types.ts +0 -0
  1098. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/src/yaml.ts +0 -0
  1099. {calkit_python-0.47.11 → calkit_python-0.47.12}/vscode-ext/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: calkit-python
3
- Version: 0.47.11
3
+ Version: 0.47.12
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -1458,12 +1458,16 @@ def check_docker_env(
1458
1458
  # Leaving the tag would fake a registry digest on the
1459
1459
  # image, making every later push look unnecessary
1460
1460
  ck_docker.untag_image(remote_ref)
1461
+ hint = ck_docker.registry_login_hint(
1462
+ remote_ref, push_output
1463
+ )
1461
1464
  warn(
1462
1465
  f"Failed to push image to {remote_ref}; its lock "
1463
1466
  "file will record no digest, so anyone else who "
1464
1467
  "uses this project will rebuild this image rather "
1465
1468
  "than pull it\n"
1466
1469
  + textwrap.indent(push_output.strip()[-500:], " ")
1470
+ + (f"\n{hint}" if hint else "")
1467
1471
  )
1468
1472
  identity = dict(identity, RepoDigests=remote_digests)
1469
1473
  elif fpath is None:
@@ -1780,9 +1780,13 @@ def push(
1780
1780
  if not success:
1781
1781
  # Leaving the tag would fake a registry digest on the image
1782
1782
  calkit.docker.untag_image(remote_ref)
1783
+ hint = calkit.docker.registry_login_hint(
1784
+ remote_ref, push_output
1785
+ )
1783
1786
  warn(
1784
1787
  f"Failed to push image to {remote_ref}\n"
1785
1788
  + textwrap.indent(push_output.strip()[-500:], " ")
1789
+ + (f"\n{hint}" if hint else "")
1786
1790
  )
1787
1791
  if "git" in selected:
1788
1792
  typer.echo("Pushing to Git remote")
@@ -1144,6 +1144,35 @@ def is_auth_error(output: str) -> bool:
1144
1144
  return any(marker in lowered for marker in _AUTH_ERROR_MARKERS)
1145
1145
 
1146
1146
 
1147
+ def registry_login_hint(ref: str, output: str) -> str:
1148
+ """Return how to log in to a registry that refused a push, or ''.
1149
+
1150
+ Calkit walks the user through creating a token itself when it can
1151
+ prompt, so this is for when it can't: a push from a pipeline, a script
1152
+ or an agent would otherwise end on the registry's bare "unauthorized",
1153
+ which says nothing about what to do next.
1154
+ """
1155
+ if not is_auth_error(output):
1156
+ return ""
1157
+ host = ref.split("/", 1)[0]
1158
+ if host != "ghcr.io":
1159
+ return (
1160
+ f"{host} refused the push; log Docker in to it with "
1161
+ f"'docker login {host}' and push again"
1162
+ )
1163
+ return (
1164
+ "The GitHub Container Registry refused the push: no credential "
1165
+ "Calkit has can write packages. To fix this, either:\n"
1166
+ " - run 'calkit push docker' in a terminal, which walks you "
1167
+ "through creating a token and remembers it; or\n"
1168
+ " - create a token with the 'write:packages' scope at\n"
1169
+ f" {GITHUB_PACKAGES_TOKEN_URL}\n"
1170
+ " log Docker in with it, pasting the token as the password:\n"
1171
+ f" docker login ghcr.io -u {get_github_username()}\n"
1172
+ " and push again with 'calkit push docker'"
1173
+ )
1174
+
1175
+
1147
1176
  def get_github_token_scopes(token: str) -> set[str]:
1148
1177
  """Return the OAuth scopes a GitHub token carries.
1149
1178
 
@@ -55,7 +55,7 @@ WORKING_NAME = "working"
55
55
  # of a full TeX Live image. Pinned to an exact tag rather than :latest so
56
56
  # a document keeps building against the same TeX until this is moved
57
57
  # deliberately; what it carries is recorded in images/latex/README.md.
58
- DEFAULT_LATEX_IMAGE = "ghcr.io/calkit/latex:0.1.4"
58
+ DEFAULT_LATEX_IMAGE = "ghcr.io/calkit/latex:0.1.5"
59
59
  # The environment created for a document that doesn't have one, wherever
60
60
  # that happens: a new publication, an Overleaf import, or a stage whose
61
61
  # environment is worked out from what it runs. Copied where it's used,
@@ -248,6 +248,17 @@ class _Formatter(string.Formatter):
248
248
  raise KeyError(field_name)
249
249
  return kwargs[field_name], field_name
250
250
 
251
+ def format_field(self, value: Any, format_spec: str) -> Any:
252
+ # A value the spec can't format, e.g., a null under ':.2f', raises
253
+ # TypeError, which callers don't expect; as ValueError it is
254
+ # reported as a template that cannot render rather than a crash
255
+ try:
256
+ return super().format_field(value, format_spec)
257
+ except TypeError as e:
258
+ raise ValueError(
259
+ f"{value!r} cannot be formatted as {format_spec!r}"
260
+ ) from e
261
+
251
262
 
252
263
  _FORMATTER = _Formatter()
253
264
  _PLACEHOLDER = re.compile(r"(?<!\{)\{([^{}:!]+)(?:[:!][^{}]*)?\}(?!\})")
@@ -933,8 +944,7 @@ def _check_publication_label(
933
944
  sources = _find_latex_sources(ev["path"], ck_info, wdir)
934
945
  if not sources:
935
946
  return "skipped", (
936
- f"label {label!r} not checked: no LaTeX stage produces "
937
- f"{ev['path']}"
947
+ f"label {label!r} not checked: no LaTeX stage produces {ev['path']}"
938
948
  )
939
949
  pattern = re.compile(r"\\label\{" + re.escape(label) + r"\}")
940
950
  for src in sources:
@@ -31,7 +31,7 @@
31
31
  "settings": {
32
32
  "latex-workshop.bibtex-format.tab": "4 spaces",
33
33
  "latex-workshop.latex.autoBuild.run": "onSave",
34
- "latex-workshop.docker.image.latex": "ghcr.io/calkit/latex:0.1.4",
34
+ "latex-workshop.docker.image.latex": "ghcr.io/calkit/latex:0.1.5",
35
35
  "latex-workshop.docker.enabled": true,
36
36
  "dvc.doNotShowSetupAfterInstall": true,
37
37
  "workbench.editorAssociations": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "latex-workshop.bibtex-format.tab": "4 spaces",
3
3
  "latex-workshop.latex.autoBuild.run": "onSave",
4
- "latex-workshop.docker.image.latex": "ghcr.io/calkit/latex:0.1.4",
4
+ "latex-workshop.docker.image.latex": "ghcr.io/calkit/latex:0.1.5",
5
5
  "latex-workshop.docker.enabled": true,
6
6
  "dvc.doNotShowSetupAfterInstall": true,
7
7
  "workbench.editorAssociations": {
@@ -351,6 +351,30 @@ def test_is_auth_error():
351
351
  assert not is_auth_error("")
352
352
 
353
353
 
354
+ def test_registry_login_hint(monkeypatch):
355
+ import calkit.docker
356
+
357
+ monkeypatch.setattr(
358
+ calkit.docker, "get_github_username", lambda: "someone"
359
+ )
360
+ ref = "ghcr.io/o/p/img:latest"
361
+ # A refusal from GHCR says how to get a token that can push, since a
362
+ # push that can't prompt otherwise ends on a bare "unauthorized"
363
+ hint = calkit.docker.registry_login_hint(
364
+ ref, "error from registry: unauthorized"
365
+ )
366
+ assert calkit.docker.GITHUB_PACKAGES_TOKEN_URL in hint
367
+ assert "docker login ghcr.io -u someone" in hint
368
+ assert "calkit push docker" in hint
369
+ # Another registry gets only what Calkit knows: log in to it
370
+ hint = calkit.docker.registry_login_hint(
371
+ "docker.io/someone/img:v1", "unauthorized: authentication required"
372
+ )
373
+ assert "docker login docker.io" in hint
374
+ # Anything other than refused credentials is no login problem
375
+ assert calkit.docker.registry_login_hint(ref, "manifest unknown") == ""
376
+
377
+
354
378
  def test_login_to_registry_ignores_other_registries():
355
379
  # Only GHCR has credentials Calkit can obtain; everything else relies
356
380
  # on the user's own docker login
@@ -70,6 +70,14 @@ def test_render():
70
70
  render("{missing}", values)
71
71
  with pytest.raises(ValueError):
72
72
  render("{best:.2f}", values)
73
+ # A value the spec can't take at all, e.g., a null, is a ValueError
74
+ # too, not a TypeError nothing expects
75
+ for bad in (None, {"a": 1}):
76
+ with pytest.raises(ValueError, match="cannot be formatted"):
77
+ render("{x:.2f}", {"x": bad})
78
+ # The check reports it as a problem rather than crashing
79
+ problems = calkit.questions._placeholder_problems("{x:.2f}", {"x": None})
80
+ assert problems and "cannot render" in problems[0]
73
81
 
74
82
 
75
83
  def _commit(msg: str) -> str:
@@ -129,6 +129,72 @@ Calkit isn't limited to one article, layout, or kind of environment,
129
129
  and its questions state claims apart from any document,
130
130
  with the check reporting stale or untraceable evidence.
131
131
 
132
+ ## Project templates
133
+
134
+ A template repository starts a project from a fixed layout,
135
+ not from a tool you install.
136
+ [The Turing Way's reproducible project template](https://github.com/the-turing-way/reproducible-project-template)
137
+ is a GitHub template repo with folders for `data`, `models`, `src`,
138
+ `notebooks`, `reports`, and `project-management`,
139
+ plus the files a project is expected to have:
140
+ a README, a license, a code of conduct, contribution guidelines, and
141
+ issue templates.
142
+ It's about repository hygiene,
143
+ and nothing in it runs the project.
144
+
145
+ [Cookiecutter Data Science](https://cookiecutter-data-science.drivendata.org/)
146
+ is the data science equivalent, generated with `ccds`.
147
+ It asks which environment manager, dependency file, testing framework,
148
+ linter, docs, license, and dataset storage to use,
149
+ then writes a `pyproject.toml`, a Makefile, and a Python package with
150
+ modules for data, features, modeling, and plots.
151
+ Its docs hold that analysis is a DAG and raw data is immutable,
152
+ and the Makefile has targets like `make requirements`, `make test`, and
153
+ `make data`,
154
+ but wiring the graph up is left to the user,
155
+ with Make, Airflow, Luigi, and Snakemake suggested.
156
+
157
+ The [TU Delft Jupyter Book starterkit](https://github.com/TUD-JB-OS/starterkit)
158
+ starts from the other end, the document.
159
+ A GitHub Action builds a MyST site and a PDF on every push,
160
+ and a `pixi` environment and lock file are included to build them
161
+ locally.
162
+ It's for a thesis, so its content is chapters,
163
+ one of which is a notebook that renders into the book,
164
+ and it includes an analysis stack, e.g., NumPy and Matplotlib.
165
+
166
+ None gives single-button reproducibility.
167
+ The starterkit builds the document in one command,
168
+ and ccds gives you a few convenience targets,
169
+ but no template declares the analysis as a graph of stages,
170
+ so nothing skips a step whose inputs haven't changed,
171
+ and nothing reports an output that's out of date.
172
+ showyourwork gets closer, since it builds the article from a
173
+ Snakemake workflow and reruns it on every push,
174
+ but it does that with tooling of its own rather than by including
175
+ other tools' config.
176
+ With the templates, reproducibility is a property the user maintains
177
+ by hand.
178
+
179
+ The templates do keep code, notebooks, models, and reports in one
180
+ repository,
181
+ which is a shared home rather than a silo,
182
+ and better than splitting the analysis and the writing across separate
183
+ repos or apps.
184
+ What they don't provide is the vertical integration.
185
+ Nothing declares how the writing and the analysis relate,
186
+ so a figure or number in the report is placed there by hand,
187
+ not read from an output,
188
+ and the report can drift from the analysis it's meant to describe.
189
+ Cookiecutter Data Science also keeps data out of the repository,
190
+ syncing it to cloud storage or Git LFS,
191
+ with no record in the project of which data produced which output.
192
+ Calkit declares the environments, the pipeline, and the publication
193
+ together,
194
+ so a change to the data reruns what depends on it,
195
+ and a question's answer is read from the pipeline output that computes
196
+ it.
197
+
132
198
  ## Environment management
133
199
 
134
200
  Tools like conda, uv, pixi, renv, Docker, and Julia's package manager
@@ -34,7 +34,7 @@ environments:
34
34
  python: "3.13"
35
35
  texlive:
36
36
  kind: docker
37
- image: ghcr.io/calkit/latex:0.1.4
37
+ image: ghcr.io/calkit/latex:0.1.5
38
38
 
39
39
  # Define the pipeline
40
40
  pipeline:
@@ -1,6 +1,6 @@
1
1
  # Privacy policy
2
2
 
3
- Last updated: 2026-09-14
3
+ Last updated: 2026-09-29
4
4
 
5
5
  This covers the Calkit hub at [calkit.io](https://calkit.io), the Calkit
6
6
  command line tool and Python package, and the Calkit browser extension.
@@ -11,10 +11,11 @@ Calkit is run by Pete Bachant as a sole proprietor, who is responsible for
11
11
  the information described here. Questions and requests go to
12
12
  [help@calkit.io](mailto:help@calkit.io).
13
13
 
14
- The short version: we keep what's needed to run your account, and, only if
15
- you allow it, a record of which features you use so we can make Calkit
16
- better. Your data is never sold, never used for advertising, and never
17
- shared with anyone for their own purposes.
14
+ The short version: we keep what's needed to run your account, count
15
+ anonymous page views to see how the site is used, and, only if you allow
16
+ it, keep a record of which features you use so we can make Calkit better.
17
+ Your data is never sold, never used for advertising, and never shared with
18
+ anyone for their own purposes.
18
19
 
19
20
  ## How usage information is used
20
21
 
@@ -47,20 +48,33 @@ watch what any one person is doing.
47
48
 
48
49
  ### Usage information
49
50
 
50
- When you first visit the hub, it asks whether you allow usage information
51
- to be recorded. If you accept, the hub records the pages you visit and the
52
- features you use, along with basic browser and device information and an
53
- approximate location derived from your IP address. While you're signed in,
54
- this is associated with your account, and includes actions recorded by the
55
- hub's server, such as creating a project or publishing a release.
56
-
57
- If you reject, none of it is recorded, and nothing for this purpose is
51
+ The hub always counts anonymous page views, and keeps fuller usage
52
+ information only if you allow it.
53
+
54
+ Anonymous page views record which pages are opened, when, and whether the
55
+ visit looks like a person rather than a bot. They are not linked to your
56
+ account, no identifier is stored on your device, and no IP address is sent
57
+ to our analytics provider, so they can't be traced back to you. The hub
58
+ briefly uses your IP address and browser's user agent to tell one day's
59
+ visits apart, then discards them. These counts are used only to see how
60
+ much each part of the site is used.
61
+
62
+ When you first visit, the hub also asks whether you allow fuller usage
63
+ information to be recorded. If you accept, page views stop being anonymous
64
+ and the hub records the pages you visit and the features you use, along with
65
+ an approximate location derived from your IP address. While you're signed
66
+ in, this is associated with your account, and includes actions recorded by
67
+ the hub's server, such as creating a project or publishing a release.
68
+
69
+ If you reject, only the anonymous page views described above are kept; none
70
+ of the fuller information is recorded, and nothing for this purpose is
58
71
  stored on your device. Once you're signed in, your choice is saved to your
59
72
  account, so it applies on every device you use.
60
73
 
61
74
  You can change your choice at any time under Settings → Privacy. Stopping
62
- it stops future recording. To have usage information that was already
63
- recorded deleted, email [help@calkit.io](mailto:help@calkit.io).
75
+ it stops future recording of the fuller information. To have usage
76
+ information that was already recorded deleted, email
77
+ [help@calkit.io](mailto:help@calkit.io).
64
78
 
65
79
  ### Server logs
66
80
 
@@ -89,8 +103,10 @@ governed by that service's policy.
89
103
 
90
104
  - **Account information and your work**: needed to provide the service you
91
105
  signed up for.
92
- - **Usage information**: only with your consent, which you can withdraw at
93
- any time.
106
+ - **Anonymous page views**: our legitimate interest in understanding how the
107
+ site is used, without identifying you or storing anything on your device.
108
+ - **Fuller usage information**: only with your consent, which you can
109
+ withdraw at any time.
94
110
  - **Server logs**: our legitimate interest in keeping the service running
95
111
  and secure.
96
112
 
@@ -377,7 +377,7 @@ The project also compiles some LaTeX documents.
377
377
  We can create a Docker environment called `tex` for these with:
378
378
 
379
379
  ```sh
380
- calkit new docker-env --name tex --image ghcr.io/calkit/latex:0.1.4
380
+ calkit new docker-env --name tex --image ghcr.io/calkit/latex:0.1.5
381
381
  ```
382
382
 
383
383
  This environment uses Calkit's LaTeX Docker image,
@@ -2,6 +2,7 @@ from fastapi import APIRouter
2
2
 
3
3
  from app.api.routes import (
4
4
  accounts,
5
+ analytics,
5
6
  datasets,
6
7
  feedback,
7
8
  login,
@@ -15,6 +16,7 @@ from app.api.routes.projects import releases
15
16
 
16
17
  api_router = APIRouter()
17
18
  api_router.include_router(accounts.router, tags=["accounts"])
19
+ api_router.include_router(analytics.router, tags=["analytics"])
18
20
  api_router.include_router(login.router, tags=["login"])
19
21
  api_router.include_router(users.router, tags=["users"])
20
22
  api_router.include_router(misc.router, tags=["misc"])
@@ -0,0 +1,196 @@
1
+ """Receive anonymous page views.
2
+
3
+ Page views are counted here rather than in the browser so that nothing has to
4
+ be stored on the visitor's device, which is what lets them be collected
5
+ without consent. The visitor is identified for the day by a keyed hash of the
6
+ request's IP address and user agent, which groups one visitor's views for the
7
+ day without being linkable across days; the raw values are never kept.
8
+ """
9
+
10
+ import hashlib
11
+ import hmac
12
+ import re
13
+
14
+ from fastapi import (
15
+ APIRouter,
16
+ BackgroundTasks,
17
+ HTTPException,
18
+ Request,
19
+ Response,
20
+ )
21
+ from pydantic import BaseModel, Field, ValidationError
22
+
23
+ from app import cache, mixpanel
24
+ from app.config import settings
25
+ from app.core import utcnow
26
+
27
+ router = APIRouter()
28
+
29
+ # A batch is what the browser accumulated between flushes, which is bounded on
30
+ # that side too; the cap here is what stops a crafted request from fanning out
31
+ # into unbounded work. Paths are route templates, so they are short.
32
+ MAX_VIEWS_PER_REQUEST = 20
33
+ MAX_PATH_LENGTH = 200
34
+ MAX_NAME_LENGTH = 100
35
+ MAX_BODY_BYTES = 64 * 1024
36
+
37
+ # The browser sends a batch at most every 15 seconds, so this is far more than
38
+ # a real session needs while still bounding what one address can do. The
39
+ # endpoint is unauthenticated and fans out into outbound calls, so without
40
+ # this a small flood could tie up workers and run up analytics cost.
41
+ RATE_LIMIT_REQUESTS = 60
42
+ RATE_LIMIT_WINDOW_SECONDS = 60
43
+
44
+ # User agents that name themselves as crawlers or command-line clients. Bots
45
+ # driving a real browser don't show up here, which is why the interaction
46
+ # signal exists.
47
+ _BOT_UA_RE = re.compile(
48
+ r"bot|crawl|spider|slurp|curl|wget|python|httpclient|scrapy|headless|"
49
+ r"phantom|selenium|puppeteer|playwright|lighthouse|pingdom|uptimerobot|"
50
+ r"facebookexternalhit|monitor|preview",
51
+ re.IGNORECASE,
52
+ )
53
+
54
+
55
+ class PageViewIn(BaseModel):
56
+ # The page's resolved path, e.g., "/pete/proj/datasets", with any secret
57
+ # parameter, e.g., an invitation token, left as its placeholder
58
+ path: str = Field(max_length=MAX_PATH_LENGTH)
59
+ # The owner and project a project page belongs to; names, not secrets,
60
+ # which is what lets interest in a project be measured
61
+ owner_name: str | None = Field(default=None, max_length=MAX_NAME_LENGTH)
62
+ project_name: str | None = Field(default=None, max_length=MAX_NAME_LENGTH)
63
+ # Milliseconds between the view and the batch being sent
64
+ dwell_ms: int = Field(default=0, ge=0)
65
+
66
+
67
+ class SignalsIn(BaseModel):
68
+ # Whether the browser was driven (navigator.webdriver)
69
+ webdriver: bool = False
70
+ # Whether any real input, e.g., a pointer, key, or scroll, happened; a
71
+ # bot that only loads pages reports none
72
+ interacted: bool = False
73
+
74
+
75
+ class PageViewsIn(BaseModel):
76
+ views: list[PageViewIn] = Field(max_length=MAX_VIEWS_PER_REQUEST)
77
+ signals: SignalsIn = Field(default_factory=SignalsIn)
78
+
79
+
80
+ def _client_ip(request: Request) -> str:
81
+ # Behind the proxy the socket address is the proxy's, so the forwarded
82
+ # headers are what actually name the visitor
83
+ for header in ("cf-connecting-ip", "x-real-ip"):
84
+ value = request.headers.get(header)
85
+ if value:
86
+ return value.strip()
87
+ forwarded = request.headers.get("x-forwarded-for")
88
+ if forwarded:
89
+ return forwarded.split(",")[0].strip()
90
+ return request.client.host if request.client else ""
91
+
92
+
93
+ def _visitor_id(request: Request) -> str:
94
+ """A per-day identifier derived from the request alone.
95
+
96
+ The date is mixed in so the same visitor gets a new identifier each day,
97
+ which is what keeps their views from being linkable over time, and the
98
+ secret keeps the value from being reversed without it.
99
+ """
100
+ material = "|".join(
101
+ [
102
+ utcnow().date().isoformat(),
103
+ _client_ip(request),
104
+ request.headers.get("user-agent", ""),
105
+ ]
106
+ )
107
+ digest = hmac.new(
108
+ settings.SECRET_KEY.encode(), material.encode(), hashlib.sha256
109
+ ).hexdigest()
110
+ return digest[:32]
111
+
112
+
113
+ def _is_bot(signals: SignalsIn, user_agent: str) -> bool:
114
+ return signals.webdriver or bool(_BOT_UA_RE.search(user_agent))
115
+
116
+
117
+ def _rate_limited(ip: str) -> bool:
118
+ """Whether this address has used up its allowance.
119
+
120
+ Counted in the shared cache so the limit holds across API workers. If the
121
+ cache is unavailable the request goes through: analytics is not worth
122
+ failing a page over, and the caps on body size and views still bound the
123
+ work.
124
+ """
125
+ client = cache.get_client()
126
+ if client is None:
127
+ return False
128
+ key = f"pageviews:{ip}"
129
+ try:
130
+ count = client.incr(key)
131
+ if count == 1:
132
+ client.expire(key, RATE_LIMIT_WINDOW_SECONDS)
133
+ return count > RATE_LIMIT_REQUESTS
134
+ except Exception:
135
+ return False
136
+
137
+
138
+ def _record(
139
+ visitor_id: str,
140
+ views: list[PageViewIn],
141
+ bot: bool,
142
+ interacted: bool,
143
+ ) -> None:
144
+ for view in views:
145
+ mixpanel.track_anonymous_pageview(
146
+ visitor_id=visitor_id,
147
+ path=view.path,
148
+ bot=bot,
149
+ interacted=interacted,
150
+ dwell_ms=view.dwell_ms,
151
+ owner_name=view.owner_name,
152
+ project_name=view.project_name,
153
+ )
154
+
155
+
156
+ @router.post("/pageviews", status_code=204, include_in_schema=False)
157
+ async def post_pageviews(
158
+ request: Request, background_tasks: BackgroundTasks
159
+ ) -> Response:
160
+ """Record a batch of anonymous page views.
161
+
162
+ Deliberately unauthenticated: the visitor is not signed in for this
163
+ purpose, and the request carries no identifier of its own. The browser
164
+ sends this as a `text/plain` beacon, so the body is parsed by hand rather
165
+ than through a JSON content type, which a cross-origin beacon could not
166
+ set without a preflight. Sending to Mixpanel happens after the response,
167
+ since a beacon has nobody waiting on it.
168
+ """
169
+ if not settings.MIXPANEL_TOKEN:
170
+ return Response(status_code=204)
171
+ ip = _client_ip(request)
172
+ if _rate_limited(ip):
173
+ raise HTTPException(429, "Too many requests")
174
+ content_length = request.headers.get("content-length")
175
+ if (
176
+ content_length
177
+ and content_length.isdigit()
178
+ and int(content_length) > MAX_BODY_BYTES
179
+ ):
180
+ raise HTTPException(413, "Batch too large")
181
+ body = await request.body()
182
+ if len(body) > MAX_BODY_BYTES:
183
+ raise HTTPException(413, "Batch too large")
184
+ try:
185
+ payload = PageViewsIn.model_validate_json(body)
186
+ except ValidationError:
187
+ raise HTTPException(422, "Invalid page view batch")
188
+ user_agent = request.headers.get("user-agent", "")
189
+ background_tasks.add_task(
190
+ _record,
191
+ _visitor_id(request),
192
+ payload.views,
193
+ _is_bot(payload.signals, user_agent),
194
+ payload.signals.interacted,
195
+ )
196
+ return Response(status_code=204)
@@ -117,6 +117,7 @@ from app.git import (
117
117
  record_project_update,
118
118
  resolve_commit_sha,
119
119
  search_refs,
120
+ seed_shared_read_clone,
120
121
  )
121
122
  from app.models import (
122
123
  Account,
@@ -1183,6 +1184,7 @@ def post_project(
1183
1184
  commit_msg = "Create README.md, DVC config, and calkit.yaml"
1184
1185
  repo.git.commit(["-m", commit_msg])
1185
1186
  push_and_expire(project, repo)
1187
+ seed_shared_read_clone(project, repo)
1186
1188
  except Exception as e:
1187
1189
  # The project row is already committed, and it would block a retry
1188
1190
  # since a Git repo can only back one project, so remove it and let