calkit-python 0.41.24__tar.gz → 0.42.0__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 (903) hide show
  1. calkit_python-0.42.0/.dockerignore +29 -0
  2. calkit_python-0.42.0/.gitignore +27 -0
  3. calkit_python-0.42.0/.pre-commit-config.yaml +52 -0
  4. calkit_python-0.42.0/.prettierignore +10 -0
  5. calkit_python-0.42.0/AGENTS.md +55 -0
  6. calkit_python-0.42.0/CONTRIBUTING.md +131 -0
  7. calkit_python-0.42.0/Makefile +117 -0
  8. calkit_python-0.42.0/PKG-INFO +406 -0
  9. calkit_python-0.42.0/README.md +347 -0
  10. calkit_python-0.42.0/agent-plugin/skills/conventions/SKILL.md +306 -0
  11. calkit_python-0.42.0/browser-ext/.gitignore +6 -0
  12. calkit_python-0.42.0/browser-ext/README.md +200 -0
  13. calkit_python-0.42.0/browser-ext/options.html +12 -0
  14. calkit_python-0.42.0/browser-ext/package-lock.json +2065 -0
  15. calkit_python-0.42.0/browser-ext/package.json +31 -0
  16. calkit_python-0.42.0/browser-ext/popup.html +12 -0
  17. calkit_python-0.42.0/browser-ext/public/icons/calkit-128.png +0 -0
  18. calkit_python-0.42.0/browser-ext/public/icons/calkit-16.png +0 -0
  19. calkit_python-0.42.0/browser-ext/public/icons/calkit-32.png +0 -0
  20. calkit_python-0.42.0/browser-ext/public/icons/calkit-48.png +0 -0
  21. calkit_python-0.42.0/browser-ext/public/manifest.json +95 -0
  22. calkit_python-0.42.0/browser-ext/scripts/build-content.mjs +10 -0
  23. calkit_python-0.42.0/browser-ext/scripts/package-manifest.mjs +27 -0
  24. calkit_python-0.42.0/browser-ext/scripts/store-screenshots.py +77 -0
  25. calkit_python-0.42.0/browser-ext/scripts/watch.mjs +23 -0
  26. calkit_python-0.42.0/browser-ext/src/background/index.ts +356 -0
  27. calkit_python-0.42.0/browser-ext/src/content/github.ts +1227 -0
  28. calkit_python-0.42.0/browser-ext/src/content/overleaf.ts +854 -0
  29. calkit_python-0.42.0/browser-ext/src/content/references.ts +539 -0
  30. calkit_python-0.42.0/browser-ext/src/core/api.ts +229 -0
  31. calkit_python-0.42.0/browser-ext/src/core/auth.ts +159 -0
  32. calkit_python-0.42.0/browser-ext/src/core/calkit-yaml.test.ts +49 -0
  33. calkit_python-0.42.0/browser-ext/src/core/calkit-yaml.ts +24 -0
  34. calkit_python-0.42.0/browser-ext/src/core/detect.test.ts +268 -0
  35. calkit_python-0.42.0/browser-ext/src/core/detect.ts +285 -0
  36. calkit_python-0.42.0/browser-ext/src/core/hub-url.ts +30 -0
  37. calkit_python-0.42.0/browser-ext/src/core/hubs.test.ts +143 -0
  38. calkit_python-0.42.0/browser-ext/src/core/hubs.ts +184 -0
  39. calkit_python-0.42.0/browser-ext/src/core/latex.test.ts +32 -0
  40. calkit_python-0.42.0/browser-ext/src/core/latex.ts +27 -0
  41. calkit_python-0.42.0/browser-ext/src/core/lifecycle.ts +63 -0
  42. calkit_python-0.42.0/browser-ext/src/core/messages.test.ts +30 -0
  43. calkit_python-0.42.0/browser-ext/src/core/messages.ts +334 -0
  44. calkit_python-0.42.0/browser-ext/src/core/pickers.ts +221 -0
  45. calkit_python-0.42.0/browser-ext/src/core/storage.ts +144 -0
  46. calkit_python-0.42.0/browser-ext/src/core/types.ts +226 -0
  47. calkit_python-0.42.0/browser-ext/src/core/ui.test.ts +125 -0
  48. calkit_python-0.42.0/browser-ext/src/core/ui.ts +602 -0
  49. calkit_python-0.42.0/browser-ext/src/options/options.ts +275 -0
  50. calkit_python-0.42.0/browser-ext/src/popup/popup.css +217 -0
  51. calkit_python-0.42.0/browser-ext/src/popup/popup.ts +282 -0
  52. calkit_python-0.42.0/browser-ext/src/viewer/viewer.ts +155 -0
  53. calkit_python-0.42.0/browser-ext/tsconfig.json +21 -0
  54. calkit_python-0.42.0/browser-ext/viewer.html +12 -0
  55. calkit_python-0.42.0/browser-ext/vite.config.ts +39 -0
  56. calkit_python-0.42.0/browser-ext/vite.content.config.ts +32 -0
  57. calkit_python-0.42.0/browser-ext/vitest.config.ts +8 -0
  58. calkit_python-0.42.0/calkit/__init__.py +125 -0
  59. calkit_python-0.42.0/calkit/calc.py +255 -0
  60. calkit_python-0.42.0/calkit/cli/config.py +444 -0
  61. calkit_python-0.42.0/calkit/cli/core.py +151 -0
  62. calkit_python-0.42.0/calkit/cli/describe.py +97 -0
  63. calkit_python-0.42.0/calkit/cli/hub.py +102 -0
  64. calkit_python-0.42.0/calkit/cli/import_.py +513 -0
  65. calkit_python-0.42.0/calkit/cli/latex.py +590 -0
  66. calkit_python-0.42.0/calkit/cli/list.py +461 -0
  67. calkit_python-0.42.0/calkit/cli/main/core.py +3506 -0
  68. calkit_python-0.42.0/calkit/cli/main/xr.py +679 -0
  69. calkit_python-0.42.0/calkit/cli/new.py +3911 -0
  70. calkit_python-0.42.0/calkit/cli/overleaf.py +685 -0
  71. calkit_python-0.42.0/calkit/cli/update.py +1268 -0
  72. calkit_python-0.42.0/calkit/config.py +546 -0
  73. calkit_python-0.42.0/calkit/core.py +850 -0
  74. calkit_python-0.42.0/calkit/datasets.py +71 -0
  75. calkit_python-0.42.0/calkit/detect.py +2390 -0
  76. calkit_python-0.42.0/calkit/dvc/core.py +882 -0
  77. calkit_python-0.42.0/calkit/fs.py +1145 -0
  78. calkit_python-0.42.0/calkit/git.py +449 -0
  79. calkit_python-0.42.0/calkit/github.py +70 -0
  80. calkit_python-0.42.0/calkit/hub.py +503 -0
  81. calkit_python-0.42.0/calkit/invenio.py +141 -0
  82. calkit_python-0.42.0/calkit/latex.py +274 -0
  83. calkit_python-0.42.0/calkit/models/core.py +477 -0
  84. calkit_python-0.42.0/calkit/models/pipeline.py +1505 -0
  85. calkit_python-0.42.0/calkit/overleaf.py +1072 -0
  86. calkit_python-0.42.0/calkit/pipeline.py +1818 -0
  87. calkit_python-0.42.0/calkit/templates/core.py +119 -0
  88. calkit_python-0.42.0/calkit/tests/cli/main/test_core.py +2070 -0
  89. calkit_python-0.42.0/calkit/tests/cli/main/test_subprojects.py +428 -0
  90. calkit_python-0.42.0/calkit/tests/cli/test_config.py +184 -0
  91. calkit_python-0.42.0/calkit/tests/cli/test_core.py +46 -0
  92. calkit_python-0.42.0/calkit/tests/cli/test_describe.py +78 -0
  93. calkit_python-0.42.0/calkit/tests/cli/test_hub.py +211 -0
  94. calkit_python-0.42.0/calkit/tests/cli/test_latex.py +327 -0
  95. calkit_python-0.42.0/calkit/tests/cli/test_list.py +248 -0
  96. calkit_python-0.42.0/calkit/tests/cli/test_new.py +1793 -0
  97. calkit_python-0.42.0/calkit/tests/cli/test_overleaf.py +635 -0
  98. calkit_python-0.42.0/calkit/tests/cli/test_update.py +240 -0
  99. calkit_python-0.42.0/calkit/tests/dvc/test_core.py +436 -0
  100. calkit_python-0.42.0/calkit/tests/models/test_core.py +56 -0
  101. calkit_python-0.42.0/calkit/tests/models/test_pipeline.py +626 -0
  102. calkit_python-0.42.0/calkit/tests/test_conda.py +517 -0
  103. calkit_python-0.42.0/calkit/tests/test_config.py +326 -0
  104. calkit_python-0.42.0/calkit/tests/test_detect.py +1410 -0
  105. calkit_python-0.42.0/calkit/tests/test_fs.py +401 -0
  106. calkit_python-0.42.0/calkit/tests/test_git.py +463 -0
  107. calkit_python-0.42.0/calkit/tests/test_hub.py +513 -0
  108. calkit_python-0.42.0/calkit/tests/test_keyring_windows.py +195 -0
  109. calkit_python-0.42.0/calkit/tests/test_overleaf.py +152 -0
  110. calkit_python-0.42.0/calkit/tests/test_pipeline.py +2473 -0
  111. calkit_python-0.42.0/docs/browser-ext/index.md +124 -0
  112. calkit_python-0.42.0/docs/browser-ext/privacy.md +82 -0
  113. calkit_python-0.42.0/docs/calkit-yaml.md +42 -0
  114. calkit_python-0.42.0/docs/cli-reference.md +3573 -0
  115. calkit_python-0.42.0/docs/cloud-integration.md +5 -0
  116. calkit_python-0.42.0/docs/datasets.md +31 -0
  117. calkit_python-0.42.0/docs/environments.md +783 -0
  118. calkit_python-0.42.0/docs/governance.md +142 -0
  119. calkit_python-0.42.0/docs/hpc.md +203 -0
  120. calkit_python-0.42.0/docs/hub/index.md +49 -0
  121. calkit_python-0.42.0/docs/hub/self-hosting.md +88 -0
  122. calkit_python-0.42.0/docs/index.md +56 -0
  123. calkit_python-0.42.0/docs/installation.md +130 -0
  124. calkit_python-0.42.0/docs/latex.md +194 -0
  125. calkit_python-0.42.0/docs/local-server.md +23 -0
  126. calkit_python-0.42.0/docs/notebooks.md +328 -0
  127. calkit_python-0.42.0/docs/overleaf.md +219 -0
  128. calkit_python-0.42.0/docs/pipeline/index.md +480 -0
  129. calkit_python-0.42.0/docs/quickstart.md +107 -0
  130. calkit_python-0.42.0/docs/references.md +20 -0
  131. calkit_python-0.42.0/docs/releases.md +124 -0
  132. calkit_python-0.42.0/docs/tutorials/ai-agents.md +174 -0
  133. calkit_python-0.42.0/docs/tutorials/existing-project.md +595 -0
  134. calkit_python-0.42.0/docs/tutorials/latex-codespaces.md +363 -0
  135. calkit_python-0.42.0/docs/tutorials/notebook-pipeline.md +208 -0
  136. calkit_python-0.42.0/docs/tutorials/office.md +352 -0
  137. calkit_python-0.42.0/docs/tutorials/openfoam.md +313 -0
  138. calkit_python-0.42.0/docs/version-control.md +251 -0
  139. calkit_python-0.42.0/hub/.env.example +97 -0
  140. calkit_python-0.42.0/hub/.gitattributes +2 -0
  141. calkit_python-0.42.0/hub/.gitignore +11 -0
  142. calkit_python-0.42.0/hub/.vscode/launch.json +28 -0
  143. calkit_python-0.42.0/hub/AGENTS.md +126 -0
  144. calkit_python-0.42.0/hub/LICENSE +40 -0
  145. calkit_python-0.42.0/hub/Makefile +55 -0
  146. calkit_python-0.42.0/hub/README.md +85 -0
  147. calkit_python-0.42.0/hub/backend/.gitignore +9 -0
  148. calkit_python-0.42.0/hub/backend/.python-version +1 -0
  149. calkit_python-0.42.0/hub/backend/Dockerfile +69 -0
  150. calkit_python-0.42.0/hub/backend/Makefile +8 -0
  151. calkit_python-0.42.0/hub/backend/README.md +236 -0
  152. calkit_python-0.42.0/hub/backend/alembic.ini +71 -0
  153. calkit_python-0.42.0/hub/backend/app/__init__.py +4 -0
  154. calkit_python-0.42.0/hub/backend/app/alembic/README +1 -0
  155. calkit_python-0.42.0/hub/backend/app/alembic/env.py +84 -0
  156. calkit_python-0.42.0/hub/backend/app/alembic/script.py.mako +25 -0
  157. calkit_python-0.42.0/hub/backend/app/alembic/versions/.keep +0 -0
  158. calkit_python-0.42.0/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +37 -0
  159. calkit_python-0.42.0/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +41 -0
  160. calkit_python-0.42.0/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +33 -0
  161. calkit_python-0.42.0/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +37 -0
  162. calkit_python-0.42.0/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +40 -0
  163. calkit_python-0.42.0/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +37 -0
  164. calkit_python-0.42.0/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +29 -0
  165. calkit_python-0.42.0/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +120 -0
  166. calkit_python-0.42.0/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +49 -0
  167. calkit_python-0.42.0/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +29 -0
  168. calkit_python-0.42.0/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +33 -0
  169. calkit_python-0.42.0/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +36 -0
  170. calkit_python-0.42.0/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +31 -0
  171. calkit_python-0.42.0/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +29 -0
  172. calkit_python-0.42.0/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +29 -0
  173. calkit_python-0.42.0/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +29 -0
  174. calkit_python-0.42.0/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +59 -0
  175. calkit_python-0.42.0/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +37 -0
  176. calkit_python-0.42.0/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +29 -0
  177. calkit_python-0.42.0/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +31 -0
  178. calkit_python-0.42.0/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +69 -0
  179. calkit_python-0.42.0/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +35 -0
  180. calkit_python-0.42.0/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +55 -0
  181. calkit_python-0.42.0/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +53 -0
  182. calkit_python-0.42.0/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +36 -0
  183. calkit_python-0.42.0/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +39 -0
  184. calkit_python-0.42.0/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +65 -0
  185. calkit_python-0.42.0/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +119 -0
  186. calkit_python-0.42.0/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +38 -0
  187. calkit_python-0.42.0/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +42 -0
  188. calkit_python-0.42.0/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +66 -0
  189. calkit_python-0.42.0/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +36 -0
  190. calkit_python-0.42.0/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +29 -0
  191. calkit_python-0.42.0/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +38 -0
  192. calkit_python-0.42.0/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +127 -0
  193. calkit_python-0.42.0/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +46 -0
  194. calkit_python-0.42.0/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +90 -0
  195. calkit_python-0.42.0/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +41 -0
  196. calkit_python-0.42.0/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +197 -0
  197. calkit_python-0.42.0/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +54 -0
  198. calkit_python-0.42.0/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +69 -0
  199. calkit_python-0.42.0/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +36 -0
  200. calkit_python-0.42.0/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +105 -0
  201. calkit_python-0.42.0/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +34 -0
  202. calkit_python-0.42.0/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +235 -0
  203. calkit_python-0.42.0/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +33 -0
  204. calkit_python-0.42.0/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +37 -0
  205. calkit_python-0.42.0/hub/backend/app/api/__init__.py +0 -0
  206. calkit_python-0.42.0/hub/backend/app/api/deps.py +242 -0
  207. calkit_python-0.42.0/hub/backend/app/api/main.py +26 -0
  208. calkit_python-0.42.0/hub/backend/app/api/routes/__init__.py +0 -0
  209. calkit_python-0.42.0/hub/backend/app/api/routes/accounts.py +55 -0
  210. calkit_python-0.42.0/hub/backend/app/api/routes/datasets.py +81 -0
  211. calkit_python-0.42.0/hub/backend/app/api/routes/feature_votes.py +95 -0
  212. calkit_python-0.42.0/hub/backend/app/api/routes/login.py +789 -0
  213. calkit_python-0.42.0/hub/backend/app/api/routes/misc.py +506 -0
  214. calkit_python-0.42.0/hub/backend/app/api/routes/orgs.py +448 -0
  215. calkit_python-0.42.0/hub/backend/app/api/routes/projects/__init__.py +17 -0
  216. calkit_python-0.42.0/hub/backend/app/api/routes/projects/core.py +8141 -0
  217. calkit_python-0.42.0/hub/backend/app/api/routes/projects/dvc.py +163 -0
  218. calkit_python-0.42.0/hub/backend/app/api/routes/projects/fs.py +499 -0
  219. calkit_python-0.42.0/hub/backend/app/api/routes/projects/releases.py +2191 -0
  220. calkit_python-0.42.0/hub/backend/app/api/routes/references.py +225 -0
  221. calkit_python-0.42.0/hub/backend/app/api/routes/users.py +865 -0
  222. calkit_python-0.42.0/hub/backend/app/arxiv.py +54 -0
  223. calkit_python-0.42.0/hub/backend/app/client.py +84 -0
  224. calkit_python-0.42.0/hub/backend/app/config.py +266 -0
  225. calkit_python-0.42.0/hub/backend/app/core.py +131 -0
  226. calkit_python-0.42.0/hub/backend/app/db.py +77 -0
  227. calkit_python-0.42.0/hub/backend/app/dvc.py +379 -0
  228. calkit_python-0.42.0/hub/backend/app/email-templates/build/new_account.html +25 -0
  229. calkit_python-0.42.0/hub/backend/app/email-templates/build/project_invitation.html +50 -0
  230. calkit_python-0.42.0/hub/backend/app/email-templates/build/release_share.html +24 -0
  231. calkit_python-0.42.0/hub/backend/app/email-templates/build/reset_password.html +25 -0
  232. calkit_python-0.42.0/hub/backend/app/email-templates/build/test_email.html +25 -0
  233. calkit_python-0.42.0/hub/backend/app/email-templates/src/new_account.mjml +15 -0
  234. calkit_python-0.42.0/hub/backend/app/email-templates/src/project_invitation.mjml +15 -0
  235. calkit_python-0.42.0/hub/backend/app/email-templates/src/release_share.mjml +16 -0
  236. calkit_python-0.42.0/hub/backend/app/email-templates/src/reset_password.mjml +17 -0
  237. calkit_python-0.42.0/hub/backend/app/email-templates/src/test_email.mjml +11 -0
  238. calkit_python-0.42.0/hub/backend/app/git.py +1372 -0
  239. calkit_python-0.42.0/hub/backend/app/github.py +142 -0
  240. calkit_python-0.42.0/hub/backend/app/main.py +161 -0
  241. calkit_python-0.42.0/hub/backend/app/messaging.py +155 -0
  242. calkit_python-0.42.0/hub/backend/app/mixpanel.py +126 -0
  243. calkit_python-0.42.0/hub/backend/app/models/__init__.py +6 -0
  244. calkit_python-0.42.0/hub/backend/app/models/core.py +1306 -0
  245. calkit_python-0.42.0/hub/backend/app/models/projects.py +73 -0
  246. calkit_python-0.42.0/hub/backend/app/models/releases.py +496 -0
  247. calkit_python-0.42.0/hub/backend/app/orgs.py +14 -0
  248. calkit_python-0.42.0/hub/backend/app/pdftext.py +131 -0
  249. calkit_python-0.42.0/hub/backend/app/pipeline.py +659 -0
  250. calkit_python-0.42.0/hub/backend/app/projects.py +1159 -0
  251. calkit_python-0.42.0/hub/backend/app/security.py +124 -0
  252. calkit_python-0.42.0/hub/backend/app/storage.py +449 -0
  253. calkit_python-0.42.0/hub/backend/app/stripe.py +128 -0
  254. calkit_python-0.42.0/hub/backend/app/subscriptions.py +153 -0
  255. calkit_python-0.42.0/hub/backend/app/tests/__init__.py +81 -0
  256. calkit_python-0.42.0/hub/backend/app/tests/api/__init__.py +0 -0
  257. calkit_python-0.42.0/hub/backend/app/tests/api/routes/__init__.py +0 -0
  258. calkit_python-0.42.0/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
  259. calkit_python-0.42.0/hub/backend/app/tests/api/routes/projects/test_core.py +2640 -0
  260. calkit_python-0.42.0/hub/backend/app/tests/api/routes/projects/test_dvc.py +260 -0
  261. calkit_python-0.42.0/hub/backend/app/tests/api/routes/projects/test_fs.py +202 -0
  262. calkit_python-0.42.0/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +459 -0
  263. calkit_python-0.42.0/hub/backend/app/tests/api/routes/test_feature_votes.py +72 -0
  264. calkit_python-0.42.0/hub/backend/app/tests/api/routes/test_login.py +435 -0
  265. calkit_python-0.42.0/hub/backend/app/tests/api/routes/test_misc.py +86 -0
  266. calkit_python-0.42.0/hub/backend/app/tests/api/routes/test_releases.py +623 -0
  267. calkit_python-0.42.0/hub/backend/app/tests/api/routes/test_users.py +613 -0
  268. calkit_python-0.42.0/hub/backend/app/tests/conftest.py +40 -0
  269. calkit_python-0.42.0/hub/backend/app/tests/test_arxiv.py +70 -0
  270. calkit_python-0.42.0/hub/backend/app/tests/test_client.py +1 -0
  271. calkit_python-0.42.0/hub/backend/app/tests/test_core.py +21 -0
  272. calkit_python-0.42.0/hub/backend/app/tests/test_db.py +30 -0
  273. calkit_python-0.42.0/hub/backend/app/tests/test_dvc.py +121 -0
  274. calkit_python-0.42.0/hub/backend/app/tests/test_git.py +238 -0
  275. calkit_python-0.42.0/hub/backend/app/tests/test_pdftext.py +79 -0
  276. calkit_python-0.42.0/hub/backend/app/tests/test_pipeline.py +745 -0
  277. calkit_python-0.42.0/hub/backend/app/tests/test_projects.py +330 -0
  278. calkit_python-0.42.0/hub/backend/app/tests/test_users.py +143 -0
  279. calkit_python-0.42.0/hub/backend/app/tests/test_version.py +55 -0
  280. calkit_python-0.42.0/hub/backend/app/users.py +757 -0
  281. calkit_python-0.42.0/hub/backend/app/version.py +70 -0
  282. calkit_python-0.42.0/hub/backend/app/zenodo.py +10 -0
  283. calkit_python-0.42.0/hub/backend/app/zotero.py +1150 -0
  284. calkit_python-0.42.0/hub/backend/prestart.sh +10 -0
  285. calkit_python-0.42.0/hub/backend/pyproject.toml +94 -0
  286. calkit_python-0.42.0/hub/backend/scripts/backend-pre-start.py +4 -0
  287. calkit_python-0.42.0/hub/backend/scripts/create-initial-data.py +22 -0
  288. calkit_python-0.42.0/hub/backend/scripts/format.sh +5 -0
  289. calkit_python-0.42.0/hub/backend/scripts/generate-client.py +9 -0
  290. calkit_python-0.42.0/hub/backend/scripts/lint.sh +8 -0
  291. calkit_python-0.42.0/hub/backend/scripts/rotate-fernet-secrets.py +130 -0
  292. calkit_python-0.42.0/hub/backend/scripts/test.sh +8 -0
  293. calkit_python-0.42.0/hub/backend/tests-start.sh +53 -0
  294. calkit_python-0.42.0/hub/config/alloy/config.alloy +73 -0
  295. calkit_python-0.42.0/hub/config/grafana/provisioning/dashboards/dashboards.yml +12 -0
  296. calkit_python-0.42.0/hub/config/grafana/provisioning/dashboards/fastapi.json +242 -0
  297. calkit_python-0.42.0/hub/config/grafana/provisioning/datasources/datasources.yml +22 -0
  298. calkit_python-0.42.0/hub/config/loki/loki.yml +38 -0
  299. calkit_python-0.42.0/hub/config/prometheus/prometheus.yml +16 -0
  300. calkit_python-0.42.0/hub/docker-compose.override.yml +171 -0
  301. calkit_python-0.42.0/hub/docker-compose.traefik.yml +80 -0
  302. calkit_python-0.42.0/hub/docker-compose.yml +430 -0
  303. calkit_python-0.42.0/hub/docs/dev/database-migrations.md +21 -0
  304. calkit_python-0.42.0/hub/docs/dev/deployment.md +326 -0
  305. calkit_python-0.42.0/hub/docs/dev/development.md +187 -0
  306. calkit_python-0.42.0/hub/frontend/.dockerignore +2 -0
  307. calkit_python-0.42.0/hub/frontend/.gitignore +32 -0
  308. calkit_python-0.42.0/hub/frontend/.nvmrc +1 -0
  309. calkit_python-0.42.0/hub/frontend/Dockerfile +45 -0
  310. calkit_python-0.42.0/hub/frontend/Makefile +22 -0
  311. calkit_python-0.42.0/hub/frontend/README.md +124 -0
  312. calkit_python-0.42.0/hub/frontend/biome.json +45 -0
  313. calkit_python-0.42.0/hub/frontend/index.html +13 -0
  314. calkit_python-0.42.0/hub/frontend/modify-openapi-operationids.js +36 -0
  315. calkit_python-0.42.0/hub/frontend/nginx-backend-not-found.conf +9 -0
  316. calkit_python-0.42.0/hub/frontend/nginx.conf +46 -0
  317. calkit_python-0.42.0/hub/frontend/openapi-ts.config.ts +29 -0
  318. calkit_python-0.42.0/hub/frontend/package-lock.json +20173 -0
  319. calkit_python-0.42.0/hub/frontend/package.json +85 -0
  320. calkit_python-0.42.0/hub/frontend/playwright.config.ts +95 -0
  321. calkit_python-0.42.0/hub/frontend/public/assets/images/c-to-the-k.svg +77 -0
  322. calkit_python-0.42.0/hub/frontend/public/assets/images/calkit-no-bg.svg +165 -0
  323. calkit_python-0.42.0/hub/frontend/public/assets/images/calkit.svg +174 -0
  324. calkit_python-0.42.0/hub/frontend/public/assets/images/fastapi-logo.svg +51 -0
  325. calkit_python-0.42.0/hub/frontend/public/assets/images/favicon.png +0 -0
  326. calkit_python-0.42.0/hub/frontend/public/assets/images/kdot.svg +22 -0
  327. calkit_python-0.42.0/hub/frontend/public/tex/.gitignore +14 -0
  328. calkit_python-0.42.0/hub/frontend/public/tex/LICENSE-busytex +67 -0
  329. calkit_python-0.42.0/hub/frontend/public/tex/busytex.js +8555 -0
  330. calkit_python-0.42.0/hub/frontend/public/tex/busytex.wasm +0 -0
  331. calkit_python-0.42.0/hub/frontend/public/tex/busytex_pipeline.js +750 -0
  332. calkit_python-0.42.0/hub/frontend/public/tex/busytex_worker.js +34 -0
  333. calkit_python-0.42.0/hub/frontend/scripts/download-tex-engine.sh +59 -0
  334. calkit_python-0.42.0/hub/frontend/src/client/client/client.gen.ts +172 -0
  335. calkit_python-0.42.0/hub/frontend/src/client/client/index.ts +25 -0
  336. calkit_python-0.42.0/hub/frontend/src/client/client/types.gen.ts +204 -0
  337. calkit_python-0.42.0/hub/frontend/src/client/client/utils.gen.ts +211 -0
  338. calkit_python-0.42.0/hub/frontend/src/client/client.gen.ts +26 -0
  339. calkit_python-0.42.0/hub/frontend/src/client/core/auth.gen.ts +48 -0
  340. calkit_python-0.42.0/hub/frontend/src/client/core/bodySerializer.gen.ts +96 -0
  341. calkit_python-0.42.0/hub/frontend/src/client/core/params.gen.ts +186 -0
  342. calkit_python-0.42.0/hub/frontend/src/client/core/pathSerializer.gen.ts +187 -0
  343. calkit_python-0.42.0/hub/frontend/src/client/core/queryKeySerializer.gen.ts +139 -0
  344. calkit_python-0.42.0/hub/frontend/src/client/core/serverSentEvents.gen.ts +265 -0
  345. calkit_python-0.42.0/hub/frontend/src/client/core/types.gen.ts +124 -0
  346. calkit_python-0.42.0/hub/frontend/src/client/core/utils.gen.ts +146 -0
  347. calkit_python-0.42.0/hub/frontend/src/client/index.ts +1074 -0
  348. calkit_python-0.42.0/hub/frontend/src/client/schemas.gen.ts +9527 -0
  349. calkit_python-0.42.0/hub/frontend/src/client/sdk.gen.ts +7657 -0
  350. calkit_python-0.42.0/hub/frontend/src/client/types.gen.ts +11989 -0
  351. calkit_python-0.42.0/hub/frontend/src/components/Admin/AddUser.tsx +189 -0
  352. calkit_python-0.42.0/hub/frontend/src/components/Admin/EditUser.tsx +179 -0
  353. calkit_python-0.42.0/hub/frontend/src/components/Common/ActionsMenu.tsx +75 -0
  354. calkit_python-0.42.0/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +1007 -0
  355. calkit_python-0.42.0/hub/frontend/src/components/Common/ClearableInput.tsx +58 -0
  356. calkit_python-0.42.0/hub/frontend/src/components/Common/CodeEditorPane.tsx +166 -0
  357. calkit_python-0.42.0/hub/frontend/src/components/Common/CommentsPanel.tsx +450 -0
  358. calkit_python-0.42.0/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +41 -0
  359. calkit_python-0.42.0/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +64 -0
  360. calkit_python-0.42.0/hub/frontend/src/components/Common/DeleteAlert.tsx +157 -0
  361. calkit_python-0.42.0/hub/frontend/src/components/Common/GlobalSearch.tsx +308 -0
  362. calkit_python-0.42.0/hub/frontend/src/components/Common/LoadingSpinner.tsx +17 -0
  363. calkit_python-0.42.0/hub/frontend/src/components/Common/Markdown.tsx +195 -0
  364. calkit_python-0.42.0/hub/frontend/src/components/Common/Mermaid.tsx +259 -0
  365. calkit_python-0.42.0/hub/frontend/src/components/Common/Navbar.tsx +45 -0
  366. calkit_python-0.42.0/hub/frontend/src/components/Common/NotBuiltAlert.tsx +83 -0
  367. calkit_python-0.42.0/hub/frontend/src/components/Common/NotFound.tsx +43 -0
  368. calkit_python-0.42.0/hub/frontend/src/components/Common/NotificationBell.tsx +148 -0
  369. calkit_python-0.42.0/hub/frontend/src/components/Common/PageMenu.tsx +32 -0
  370. calkit_python-0.42.0/hub/frontend/src/components/Common/PdfCanvas.tsx +112 -0
  371. calkit_python-0.42.0/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +1212 -0
  372. calkit_python-0.42.0/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +185 -0
  373. calkit_python-0.42.0/hub/frontend/src/components/Common/RefPicker.tsx +210 -0
  374. calkit_python-0.42.0/hub/frontend/src/components/Common/Sidebar.tsx +91 -0
  375. calkit_python-0.42.0/hub/frontend/src/components/Common/SidebarItems.tsx +144 -0
  376. calkit_python-0.42.0/hub/frontend/src/components/Common/Tooltip.tsx +11 -0
  377. calkit_python-0.42.0/hub/frontend/src/components/Common/Topbar.tsx +228 -0
  378. calkit_python-0.42.0/hub/frontend/src/components/Common/UserMenu.tsx +75 -0
  379. calkit_python-0.42.0/hub/frontend/src/components/Datasets/DatasetFromExisting.tsx +157 -0
  380. calkit_python-0.42.0/hub/frontend/src/components/Datasets/UploadDataset.tsx +177 -0
  381. calkit_python-0.42.0/hub/frontend/src/components/Environments/ViewEnvironment.tsx +58 -0
  382. calkit_python-0.42.0/hub/frontend/src/components/Figures/FigureFromExisting.tsx +159 -0
  383. calkit_python-0.42.0/hub/frontend/src/components/Figures/FigureView.tsx +188 -0
  384. calkit_python-0.42.0/hub/frontend/src/components/Figures/UploadFigure.tsx +176 -0
  385. calkit_python-0.42.0/hub/frontend/src/components/Files/EditFileInfo.tsx +216 -0
  386. calkit_python-0.42.0/hub/frontend/src/components/Files/FileContent.tsx +153 -0
  387. calkit_python-0.42.0/hub/frontend/src/components/Files/FileEditorModal.tsx +297 -0
  388. calkit_python-0.42.0/hub/frontend/src/components/Files/SelectedItemInfo.tsx +350 -0
  389. calkit_python-0.42.0/hub/frontend/src/components/Files/UploadFile.tsx +145 -0
  390. calkit_python-0.42.0/hub/frontend/src/components/Local/AddPath.tsx +146 -0
  391. calkit_python-0.42.0/hub/frontend/src/components/Local/DiscardChanges.tsx +92 -0
  392. calkit_python-0.42.0/hub/frontend/src/components/Local/IgnorePath.tsx +141 -0
  393. calkit_python-0.42.0/hub/frontend/src/components/Local/NewStage.tsx +403 -0
  394. calkit_python-0.42.0/hub/frontend/src/components/Local/SaveFiles.tsx +181 -0
  395. calkit_python-0.42.0/hub/frontend/src/components/Notebooks/NotebookView.tsx +37 -0
  396. calkit_python-0.42.0/hub/frontend/src/components/Orgs/AddMember.tsx +112 -0
  397. calkit_python-0.42.0/hub/frontend/src/components/Orgs/NewOrg.tsx +148 -0
  398. calkit_python-0.42.0/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +338 -0
  399. calkit_python-0.42.0/hub/frontend/src/components/Presentations/PresentationView.tsx +334 -0
  400. calkit_python-0.42.0/hub/frontend/src/components/Projects/AddCollaborator.tsx +144 -0
  401. calkit_python-0.42.0/hub/frontend/src/components/Projects/CloneProject.tsx +52 -0
  402. calkit_python-0.42.0/hub/frontend/src/components/Projects/CreateIssue.tsx +147 -0
  403. calkit_python-0.42.0/hub/frontend/src/components/Projects/CreateQuestion.tsx +127 -0
  404. calkit_python-0.42.0/hub/frontend/src/components/Projects/EditProject.tsx +128 -0
  405. calkit_python-0.42.0/hub/frontend/src/components/Projects/EditQuestion.tsx +353 -0
  406. calkit_python-0.42.0/hub/frontend/src/components/Projects/HelpContent.tsx +357 -0
  407. calkit_python-0.42.0/hub/frontend/src/components/Projects/InviteLinks.tsx +426 -0
  408. calkit_python-0.42.0/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +108 -0
  409. calkit_python-0.42.0/hub/frontend/src/components/Projects/NewProject.tsx +327 -0
  410. calkit_python-0.42.0/hub/frontend/src/components/Projects/ProjectShowcase.tsx +105 -0
  411. calkit_python-0.42.0/hub/frontend/src/components/Projects/ProjectStatus.tsx +148 -0
  412. calkit_python-0.42.0/hub/frontend/src/components/Publications/ImportOverleaf.tsx +426 -0
  413. calkit_python-0.42.0/hub/frontend/src/components/Publications/LatexEditor.tsx +879 -0
  414. calkit_python-0.42.0/hub/frontend/src/components/Publications/NewPublication.tsx +294 -0
  415. calkit_python-0.42.0/hub/frontend/src/components/Publications/PdfAnnotator.tsx +478 -0
  416. calkit_python-0.42.0/hub/frontend/src/components/Publications/PublicationView.tsx +81 -0
  417. calkit_python-0.42.0/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +93 -0
  418. calkit_python-0.42.0/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +95 -0
  419. calkit_python-0.42.0/hub/frontend/src/components/References/EditReferenceItemModal.tsx +263 -0
  420. calkit_python-0.42.0/hub/frontend/src/components/References/FileViewModal.tsx +43 -0
  421. calkit_python-0.42.0/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +356 -0
  422. calkit_python-0.42.0/hub/frontend/src/components/References/LabelExistingReferences.tsx +130 -0
  423. calkit_python-0.42.0/hub/frontend/src/components/References/NewReferencesCollection.tsx +120 -0
  424. calkit_python-0.42.0/hub/frontend/src/components/References/ReferenceItemModal.tsx +543 -0
  425. calkit_python-0.42.0/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +299 -0
  426. calkit_python-0.42.0/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +242 -0
  427. calkit_python-0.42.0/hub/frontend/src/components/Releases/NewRelease.tsx +669 -0
  428. calkit_python-0.42.0/hub/frontend/src/components/Releases/PathPicker.tsx +326 -0
  429. calkit_python-0.42.0/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +202 -0
  430. calkit_python-0.42.0/hub/frontend/src/components/Releases/ReleaseViewer.tsx +1149 -0
  431. calkit_python-0.42.0/hub/frontend/src/components/Releases/ReleasesTable.tsx +533 -0
  432. calkit_python-0.42.0/hub/frontend/src/components/Releases/ShareDialog.tsx +330 -0
  433. calkit_python-0.42.0/hub/frontend/src/components/Releases/releaseSort.ts +21 -0
  434. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/Appearance.tsx +38 -0
  435. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/ChangePassword.tsx +126 -0
  436. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +348 -0
  437. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +35 -0
  438. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +102 -0
  439. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/NewToken.tsx +160 -0
  440. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/PickSubscription.tsx +541 -0
  441. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/Subscription.tsx +182 -0
  442. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +123 -0
  443. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/UserInformation.tsx +157 -0
  444. calkit_python-0.42.0/hub/frontend/src/components/UserSettings/UserTokens.tsx +113 -0
  445. calkit_python-0.42.0/hub/frontend/src/hooks/useAuth.ts +209 -0
  446. calkit_python-0.42.0/hub/frontend/src/hooks/useCustomToast.ts +23 -0
  447. calkit_python-0.42.0/hub/frontend/src/hooks/useProject.ts +395 -0
  448. calkit_python-0.42.0/hub/frontend/src/lib/analytics.test.ts +83 -0
  449. calkit_python-0.42.0/hub/frontend/src/lib/analytics.ts +25 -0
  450. calkit_python-0.42.0/hub/frontend/src/lib/api.test.ts +40 -0
  451. calkit_python-0.42.0/hub/frontend/src/lib/api.ts +54 -0
  452. calkit_python-0.42.0/hub/frontend/src/lib/auth.test.ts +188 -0
  453. calkit_python-0.42.0/hub/frontend/src/lib/auth.ts +204 -0
  454. calkit_python-0.42.0/hub/frontend/src/lib/bibtex.test.ts +90 -0
  455. calkit_python-0.42.0/hub/frontend/src/lib/bibtex.ts +142 -0
  456. calkit_python-0.42.0/hub/frontend/src/lib/core.ts +14 -0
  457. calkit_python-0.42.0/hub/frontend/src/lib/errors.ts +30 -0
  458. calkit_python-0.42.0/hub/frontend/src/lib/github.test.ts +119 -0
  459. calkit_python-0.42.0/hub/frontend/src/lib/github.ts +58 -0
  460. calkit_python-0.42.0/hub/frontend/src/lib/google.ts +39 -0
  461. calkit_python-0.42.0/hub/frontend/src/lib/keyboard.ts +10 -0
  462. calkit_python-0.42.0/hub/frontend/src/lib/latexCompiler.ts +300 -0
  463. calkit_python-0.42.0/hub/frontend/src/lib/latexProject.mapPaths.test.ts +156 -0
  464. calkit_python-0.42.0/hub/frontend/src/lib/latexProject.test.ts +93 -0
  465. calkit_python-0.42.0/hub/frontend/src/lib/latexProject.ts +359 -0
  466. calkit_python-0.42.0/hub/frontend/src/lib/layout.ts +3 -0
  467. calkit_python-0.42.0/hub/frontend/src/lib/pipelineYaml.test.ts +142 -0
  468. calkit_python-0.42.0/hub/frontend/src/lib/pipelineYaml.ts +127 -0
  469. calkit_python-0.42.0/hub/frontend/src/lib/releases.ts +160 -0
  470. calkit_python-0.42.0/hub/frontend/src/lib/strings.test.ts +41 -0
  471. calkit_python-0.42.0/hub/frontend/src/lib/strings.ts +104 -0
  472. calkit_python-0.42.0/hub/frontend/src/lib/zenodo.ts +22 -0
  473. calkit_python-0.42.0/hub/frontend/src/lib/zotero.ts +48 -0
  474. calkit_python-0.42.0/hub/frontend/src/main.tsx +63 -0
  475. calkit_python-0.42.0/hub/frontend/src/routeTree.gen.ts +904 -0
  476. calkit_python-0.42.0/hub/frontend/src/routes/__root.tsx +34 -0
  477. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +64 -0
  478. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +211 -0
  479. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +139 -0
  480. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +194 -0
  481. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +350 -0
  482. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +546 -0
  483. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +718 -0
  484. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +895 -0
  485. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +629 -0
  486. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +306 -0
  487. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +392 -0
  488. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +378 -0
  489. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +644 -0
  490. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +962 -0
  491. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +103 -0
  492. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +88 -0
  493. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +580 -0
  494. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +62 -0
  495. calkit_python-0.42.0/hub/frontend/src/routes/_layout/$accountName/index.tsx +245 -0
  496. calkit_python-0.42.0/hub/frontend/src/routes/_layout/admin.tsx +185 -0
  497. calkit_python-0.42.0/hub/frontend/src/routes/_layout/datasets.tsx +203 -0
  498. calkit_python-0.42.0/hub/frontend/src/routes/_layout/index.tsx +288 -0
  499. calkit_python-0.42.0/hub/frontend/src/routes/_layout/learn.tsx +82 -0
  500. calkit_python-0.42.0/hub/frontend/src/routes/_layout/orgs.tsx +171 -0
  501. calkit_python-0.42.0/hub/frontend/src/routes/_layout/projects.tsx +183 -0
  502. calkit_python-0.42.0/hub/frontend/src/routes/_layout/settings.tsx +101 -0
  503. calkit_python-0.42.0/hub/frontend/src/routes/_layout.tsx +109 -0
  504. calkit_python-0.42.0/hub/frontend/src/routes/auth/google.tsx +115 -0
  505. calkit_python-0.42.0/hub/frontend/src/routes/auth/zenodo.tsx +91 -0
  506. calkit_python-0.42.0/hub/frontend/src/routes/auth/zotero.tsx +116 -0
  507. calkit_python-0.42.0/hub/frontend/src/routes/checkout.tsx +45 -0
  508. calkit_python-0.42.0/hub/frontend/src/routes/join/$token.tsx +72 -0
  509. calkit_python-0.42.0/hub/frontend/src/routes/login/device.tsx +201 -0
  510. calkit_python-0.42.0/hub/frontend/src/routes/login/index.tsx +249 -0
  511. calkit_python-0.42.0/hub/frontend/src/routes/recover-password.tsx +110 -0
  512. calkit_python-0.42.0/hub/frontend/src/routes/reset-password.tsx +124 -0
  513. calkit_python-0.42.0/hub/frontend/src/routes/signup.tsx +180 -0
  514. calkit_python-0.42.0/hub/frontend/src/theme.tsx +87 -0
  515. calkit_python-0.42.0/hub/frontend/src/vite-env.d.ts +11 -0
  516. calkit_python-0.42.0/hub/frontend/tests/auth.setup.ts +39 -0
  517. calkit_python-0.42.0/hub/frontend/tests/config.ts +21 -0
  518. calkit_python-0.42.0/hub/frontend/tests/login.spec.ts +78 -0
  519. calkit_python-0.42.0/hub/frontend/tests/reset-password.spec.ts +123 -0
  520. calkit_python-0.42.0/hub/frontend/tests/user-settings.spec.ts +338 -0
  521. calkit_python-0.42.0/hub/frontend/tests/utils/mailcatcher.ts +59 -0
  522. calkit_python-0.42.0/hub/frontend/tests/utils/random.ts +13 -0
  523. calkit_python-0.42.0/hub/frontend/tests/utils/user.ts +38 -0
  524. calkit_python-0.42.0/hub/frontend/tsconfig.json +27 -0
  525. calkit_python-0.42.0/hub/frontend/tsconfig.node.json +10 -0
  526. calkit_python-0.42.0/hub/frontend/vite.config.ts +119 -0
  527. calkit_python-0.42.0/hub/frontend/vitest.config.ts +8 -0
  528. calkit_python-0.42.0/hub/scripts/build-push.sh +10 -0
  529. calkit_python-0.42.0/hub/scripts/build.sh +10 -0
  530. calkit_python-0.42.0/hub/scripts/deploy.sh +15 -0
  531. calkit_python-0.42.0/hub/scripts/pem-to-env.sh +17 -0
  532. calkit_python-0.42.0/hub/scripts/test-local.sh +15 -0
  533. calkit_python-0.42.0/hub/scripts/test.sh +11 -0
  534. calkit_python-0.42.0/hub/texmf-proxy/Dockerfile +17 -0
  535. calkit_python-0.42.0/hub/texmf-proxy/README.md +35 -0
  536. calkit_python-0.42.0/hub/texmf-proxy/proxy.py +85 -0
  537. calkit_python-0.42.0/mkdocs.yml +114 -0
  538. calkit_python-0.42.0/pyproject.toml +229 -0
  539. calkit_python-0.42.0/test/pipeline.ipynb +101 -0
  540. calkit_python-0.42.0/uv.lock +9767 -0
  541. calkit_python-0.42.0/vscode-ext/images/calkit-icon.svg +22 -0
  542. calkit_python-0.42.0/vscode-ext/src/pipeline/core.ts +183 -0
  543. calkit_python-0.42.0/vscode-ext/src/sidebar.ts +1326 -0
  544. calkit_python-0.42.0/vscode-ext/src/test/pipeline.test.ts +165 -0
  545. calkit_python-0.42.0/vscode-ext/src/test/sidebar.test.ts +94 -0
  546. calkit_python-0.41.24/.gitignore +0 -27
  547. calkit_python-0.41.24/.pre-commit-config.yaml +0 -25
  548. calkit_python-0.41.24/.prettierignore +0 -9
  549. calkit_python-0.41.24/AGENTS.md +0 -54
  550. calkit_python-0.41.24/CONTRIBUTING.md +0 -104
  551. calkit_python-0.41.24/Makefile +0 -73
  552. calkit_python-0.41.24/PKG-INFO +0 -406
  553. calkit_python-0.41.24/README.md +0 -347
  554. calkit_python-0.41.24/agent-plugin/skills/conventions/SKILL.md +0 -306
  555. calkit_python-0.41.24/calkit/__init__.py +0 -125
  556. calkit_python-0.41.24/calkit/calc.py +0 -255
  557. calkit_python-0.41.24/calkit/cli/cloud.py +0 -64
  558. calkit_python-0.41.24/calkit/cli/config.py +0 -345
  559. calkit_python-0.41.24/calkit/cli/core.py +0 -105
  560. calkit_python-0.41.24/calkit/cli/describe.py +0 -63
  561. calkit_python-0.41.24/calkit/cli/import_.py +0 -513
  562. calkit_python-0.41.24/calkit/cli/latex.py +0 -250
  563. calkit_python-0.41.24/calkit/cli/list.py +0 -367
  564. calkit_python-0.41.24/calkit/cli/main/core.py +0 -3451
  565. calkit_python-0.41.24/calkit/cli/main/xr.py +0 -681
  566. calkit_python-0.41.24/calkit/cli/new.py +0 -3846
  567. calkit_python-0.41.24/calkit/cli/overleaf.py +0 -685
  568. calkit_python-0.41.24/calkit/cli/update.py +0 -1268
  569. calkit_python-0.41.24/calkit/cloud.py +0 -437
  570. calkit_python-0.41.24/calkit/config.py +0 -227
  571. calkit_python-0.41.24/calkit/core.py +0 -850
  572. calkit_python-0.41.24/calkit/datasets.py +0 -71
  573. calkit_python-0.41.24/calkit/detect.py +0 -2351
  574. calkit_python-0.41.24/calkit/dvc/core.py +0 -846
  575. calkit_python-0.41.24/calkit/fs.py +0 -1145
  576. calkit_python-0.41.24/calkit/git.py +0 -368
  577. calkit_python-0.41.24/calkit/github.py +0 -70
  578. calkit_python-0.41.24/calkit/invenio.py +0 -141
  579. calkit_python-0.41.24/calkit/models/core.py +0 -469
  580. calkit_python-0.41.24/calkit/models/pipeline.py +0 -1367
  581. calkit_python-0.41.24/calkit/overleaf.py +0 -825
  582. calkit_python-0.41.24/calkit/pipeline.py +0 -1760
  583. calkit_python-0.41.24/calkit/templates/core.py +0 -120
  584. calkit_python-0.41.24/calkit/tests/cli/main/test_core.py +0 -2031
  585. calkit_python-0.41.24/calkit/tests/cli/main/test_subprojects.py +0 -428
  586. calkit_python-0.41.24/calkit/tests/cli/test_cloud.py +0 -180
  587. calkit_python-0.41.24/calkit/tests/cli/test_config.py +0 -99
  588. calkit_python-0.41.24/calkit/tests/cli/test_latex.py +0 -165
  589. calkit_python-0.41.24/calkit/tests/cli/test_list.py +0 -159
  590. calkit_python-0.41.24/calkit/tests/cli/test_new.py +0 -1632
  591. calkit_python-0.41.24/calkit/tests/cli/test_overleaf.py +0 -443
  592. calkit_python-0.41.24/calkit/tests/cli/test_update.py +0 -235
  593. calkit_python-0.41.24/calkit/tests/dvc/test_core.py +0 -398
  594. calkit_python-0.41.24/calkit/tests/models/test_core.py +0 -46
  595. calkit_python-0.41.24/calkit/tests/models/test_pipeline.py +0 -514
  596. calkit_python-0.41.24/calkit/tests/test_cloud.py +0 -449
  597. calkit_python-0.41.24/calkit/tests/test_conda.py +0 -514
  598. calkit_python-0.41.24/calkit/tests/test_detect.py +0 -1355
  599. calkit_python-0.41.24/calkit/tests/test_fs.py +0 -397
  600. calkit_python-0.41.24/calkit/tests/test_git.py +0 -401
  601. calkit_python-0.41.24/calkit/tests/test_pipeline.py +0 -2396
  602. calkit_python-0.41.24/docs/calkit-yaml.md +0 -42
  603. calkit_python-0.41.24/docs/cli-reference.md +0 -3445
  604. calkit_python-0.41.24/docs/cloud-integration.md +0 -27
  605. calkit_python-0.41.24/docs/datasets.md +0 -31
  606. calkit_python-0.41.24/docs/environments.md +0 -750
  607. calkit_python-0.41.24/docs/governance.md +0 -141
  608. calkit_python-0.41.24/docs/hpc.md +0 -203
  609. calkit_python-0.41.24/docs/index.md +0 -56
  610. calkit_python-0.41.24/docs/installation.md +0 -130
  611. calkit_python-0.41.24/docs/local-server.md +0 -23
  612. calkit_python-0.41.24/docs/notebooks.md +0 -328
  613. calkit_python-0.41.24/docs/overleaf.md +0 -206
  614. calkit_python-0.41.24/docs/pipeline/index.md +0 -478
  615. calkit_python-0.41.24/docs/quickstart.md +0 -107
  616. calkit_python-0.41.24/docs/references.md +0 -6
  617. calkit_python-0.41.24/docs/releases.md +0 -124
  618. calkit_python-0.41.24/docs/tutorials/ai-agents.md +0 -144
  619. calkit_python-0.41.24/docs/tutorials/existing-project.md +0 -595
  620. calkit_python-0.41.24/docs/tutorials/latex-codespaces.md +0 -363
  621. calkit_python-0.41.24/docs/tutorials/notebook-pipeline.md +0 -208
  622. calkit_python-0.41.24/docs/tutorials/office.md +0 -352
  623. calkit_python-0.41.24/docs/tutorials/openfoam.md +0 -313
  624. calkit_python-0.41.24/docs/version-control.md +0 -251
  625. calkit_python-0.41.24/mkdocs.yml +0 -108
  626. calkit_python-0.41.24/pyproject.toml +0 -191
  627. calkit_python-0.41.24/test/pipeline.ipynb +0 -101
  628. calkit_python-0.41.24/uv.lock +0 -8149
  629. calkit_python-0.41.24/vscode-ext/src/pipeline/core.ts +0 -173
  630. calkit_python-0.41.24/vscode-ext/src/sidebar.ts +0 -1329
  631. calkit_python-0.41.24/vscode-ext/src/test/pipeline.test.ts +0 -150
  632. {calkit_python-0.41.24 → calkit_python-0.42.0}/.claude-plugin/marketplace.json +0 -0
  633. {calkit_python-0.41.24 → calkit_python-0.42.0}/.gitattributes +0 -0
  634. {calkit_python-0.41.24 → calkit_python-0.42.0}/.gitmodules +0 -0
  635. {calkit_python-0.41.24 → calkit_python-0.42.0}/.prettierrc.json +0 -0
  636. {calkit_python-0.41.24 → calkit_python-0.42.0}/.python-version +0 -0
  637. {calkit_python-0.41.24 → calkit_python-0.42.0}/.vscode/launch.json +0 -0
  638. {calkit_python-0.41.24 → calkit_python-0.42.0}/.vscode/tasks.json +0 -0
  639. {calkit_python-0.41.24 → calkit_python-0.42.0}/CITATION.cff +0 -0
  640. {calkit_python-0.41.24 → calkit_python-0.42.0}/CODE_OF_CONDUCT.md +0 -0
  641. {calkit_python-0.41.24 → calkit_python-0.42.0}/LICENSE +0 -0
  642. {calkit_python-0.41.24 → calkit_python-0.42.0}/agent-plugin/.claude-plugin/plugin.json +0 -0
  643. {calkit_python-0.41.24 → calkit_python-0.42.0}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
  644. {calkit_python-0.41.24 → calkit_python-0.42.0}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
  645. /calkit_python-0.41.24/vscode-ext/images/calkit-icon.svg → /calkit_python-0.42.0/browser-ext/public/icons/calkit.svg +0 -0
  646. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/__main__.py +0 -0
  647. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/check.py +0 -0
  648. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/__init__.py +0 -0
  649. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/check.py +0 -0
  650. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/delete.py +0 -0
  651. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/dev.py +0 -0
  652. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/main/__init__.py +0 -0
  653. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/notebooks.py +0 -0
  654. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/office.py +0 -0
  655. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/scheduler.py +0 -0
  656. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/cli/sync.py +0 -0
  657. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/conda.py +0 -0
  658. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/dependencies.py +0 -0
  659. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/docker.py +0 -0
  660. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/dvc/__init__.py +0 -0
  661. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/dvc/zip.py +0 -0
  662. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/environments.py +0 -0
  663. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/gui.py +0 -0
  664. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/install.py +0 -0
  665. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/julia.py +0 -0
  666. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/jupyter.py +0 -0
  667. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/jupyterlab/__init__.py +0 -0
  668. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/jupyterlab/routes.py +0 -0
  669. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/package.json +0 -0
  670. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
  671. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/schemas/calkit/plugin.json +0 -0
  672. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
  673. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
  674. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
  675. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
  676. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
  677. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
  678. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
  679. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/remoteEntry.ac9035764d5b2adbb542.js +0 -0
  680. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/style.js +0 -0
  681. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/labextension/static/third-party-licenses.json +0 -0
  682. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/licenses.py +0 -0
  683. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/magics.py +0 -0
  684. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/matlab.py +0 -0
  685. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/models/__init__.py +0 -0
  686. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/models/io.py +0 -0
  687. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/models/iteration.py +0 -0
  688. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/notebooks.py +0 -0
  689. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/office.py +0 -0
  690. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/ops.py +0 -0
  691. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/releases.py +0 -0
  692. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/server.py +0 -0
  693. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/__init__.py +0 -0
  694. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/__init__.py +0 -0
  695. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/article/paper.tex +0 -0
  696. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/core.py +0 -0
  697. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/jfm/jfm.bst +0 -0
  698. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/jfm/jfm.cls +0 -0
  699. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  700. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/jfm/paper.tex +0 -0
  701. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/templates/latex/jfm/upmath.sty +0 -0
  702. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/__init__.py +0 -0
  703. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/__init__.py +0 -0
  704. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/main/__init__.py +0 -0
  705. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/main/test_lock.py +0 -0
  706. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/main/test_xr.py +0 -0
  707. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_check.py +0 -0
  708. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_delete.py +0 -0
  709. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_import.py +0 -0
  710. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_notebooks.py +0 -0
  711. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_scheduler.py +0 -0
  712. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/cli/test_sync.py +0 -0
  713. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/dvc/__init__.py +0 -0
  714. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/dvc/test_zip.py +0 -0
  715. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/jupyterlab/__init__.py +0 -0
  716. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/jupyterlab/conftest.py +0 -0
  717. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/jupyterlab/test_routes.py +0 -0
  718. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/models/__init__.py +0 -0
  719. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/models/test_iteration.py +0 -0
  720. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_calc.py +0 -0
  721. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_check.py +0 -0
  722. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_core.py +0 -0
  723. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_dependencies.py +0 -0
  724. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_docker.py +0 -0
  725. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_environments.py +0 -0
  726. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_install.py +0 -0
  727. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_invenio.py +0 -0
  728. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_julia.py +0 -0
  729. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_jupyter.py +0 -0
  730. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_licenses.py +0 -0
  731. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_magics.py +0 -0
  732. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_matlab.py +0 -0
  733. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_notebooks.py +0 -0
  734. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_releases.py +0 -0
  735. {calkit_python-0.41.24 → calkit_python-0.42.0}/calkit/tests/test_templates.py +0 -0
  736. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/CNAME +0 -0
  737. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/acknowledgements.md +0 -0
  738. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/ai-tools.md +0 -0
  739. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/apps.md +0 -0
  740. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/calculations.md +0 -0
  741. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/dependencies.md +0 -0
  742. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/examples.md +0 -0
  743. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/help.md +0 -0
  744. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/c-to-the-k-white.svg +0 -0
  745. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/calkit-fragmentation-compendium.png +0 -0
  746. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/calkit-no-bg.png +0 -0
  747. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/caltech.png +0 -0
  748. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/connect-zenodo.png +0 -0
  749. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab/all-green.png +0 -0
  750. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab/collect-data-stale.png +0 -0
  751. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab/new-env.png +0 -0
  752. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab/new-notebook.png +0 -0
  753. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab/pipeline-badge.png +0 -0
  754. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/jupyterlab-params.png +0 -0
  755. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/pipeline.png +0 -0
  756. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/plos-osi-code-2024-03.png +0 -0
  757. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/schmidt-sciences.png +0 -0
  758. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/img/vscode-nb-params.png +0 -0
  759. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/jupyterlab.md +0 -0
  760. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/pipeline/manual-steps.md +0 -0
  761. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/pipeline/running-and-logging.md +0 -0
  762. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/questions.md +0 -0
  763. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/reproducibility.md +0 -0
  764. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/subprojects.md +0 -0
  765. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  766. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/conda-envs.md +0 -0
  767. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/first-project.md +0 -0
  768. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/github-actions.md +0 -0
  769. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  770. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  771. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  772. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  773. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  774. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  775. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  776. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  777. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  778. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  779. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  780. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  781. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  782. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  783. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  784. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/create-project.png +0 -0
  785. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  786. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/excel-chart.png +0 -0
  787. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/excel-data.png +0 -0
  788. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  789. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/needs-clone.png +0 -0
  790. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/new-stage.png +0 -0
  791. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  792. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  793. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/status-more-rows.png +0 -0
  794. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  795. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/untracked-data.png +0 -0
  796. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/updated-publication.png +0 -0
  797. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  798. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/office/workflow-page.png +0 -0
  799. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/clone.png +0 -0
  800. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/create-project.png +0 -0
  801. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  802. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  803. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  804. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/new-token.png +0 -0
  805. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/reclone.png +0 -0
  806. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  807. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/quick-actions.png +0 -0
  808. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/run-proc.png +0 -0
  809. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
  810. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
  811. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
  812. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
  813. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
  814. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
  815. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
  816. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/index.md +0 -0
  817. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/jupyterlab.md +0 -0
  818. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/matlab.md +0 -0
  819. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/procedures.md +0 -0
  820. {calkit_python-0.41.24 → calkit_python-0.42.0}/docs/tutorials/vscode-slurm-notebook.md +0 -0
  821. {calkit_python-0.41.24 → calkit_python-0.42.0}/flake.lock +0 -0
  822. {calkit_python-0.41.24 → calkit_python-0.42.0}/flake.nix +0 -0
  823. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/.yarnrc.yml +0 -0
  824. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/babel.config.js +0 -0
  825. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/install.json +0 -0
  826. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/jest.config.js +0 -0
  827. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
  828. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/package.json +0 -0
  829. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/schema/plugin.json +0 -0
  830. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
  831. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/calkit-config.ts +0 -0
  832. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
  833. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
  834. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
  835. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
  836. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
  837. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
  838. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
  839. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
  840. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
  841. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
  842. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/feature-flags.ts +0 -0
  843. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
  844. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
  845. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
  846. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/icons.ts +0 -0
  847. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/index.ts +0 -0
  848. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/io-tracker.ts +0 -0
  849. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/pipeline-state.ts +0 -0
  850. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/queryClient.ts +0 -0
  851. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/request.ts +0 -0
  852. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
  853. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/base.css +0 -0
  854. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/cell-output-marker.css +0 -0
  855. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/environment-editor.css +0 -0
  856. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/environment-selector.css +0 -0
  857. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
  858. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/index.css +0 -0
  859. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/index.js +0 -0
  860. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
  861. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
  862. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/style/sidebar.css +0 -0
  863. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/tsconfig.json +0 -0
  864. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/tsconfig.test.json +0 -0
  865. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/.gitignore +0 -0
  866. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/README.md +0 -0
  867. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
  868. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/package.json +0 -0
  869. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
  870. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
  871. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
  872. {calkit_python-0.41.24 → calkit_python-0.42.0}/jupyterlab-ext/yarn.lock +0 -0
  873. {calkit_python-0.41.24 → calkit_python-0.42.0}/scripts/generate-docs-references.py +0 -0
  874. {calkit_python-0.41.24 → calkit_python-0.42.0}/scripts/install.ps1 +0 -0
  875. {calkit_python-0.41.24 → calkit_python-0.42.0}/scripts/install.sh +0 -0
  876. {calkit_python-0.41.24 → calkit_python-0.42.0}/scripts/make-calk9.sh +0 -0
  877. {calkit_python-0.41.24 → calkit_python-0.42.0}/scripts/sync-docs.py +0 -0
  878. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/dvc-md5-dir/osx-arm64.txt +0 -0
  879. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/nb-julia.ipynb +0 -0
  880. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/nb-params.ipynb +0 -0
  881. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/nb-subdir.ipynb +0 -0
  882. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/script.py +0 -0
  883. {calkit_python-0.41.24 → calkit_python-0.42.0}/test/test-log.log +0 -0
  884. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/.gitignore +0 -0
  885. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/.vscodeignore +0 -0
  886. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/CHANGELOG.md +0 -0
  887. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/LICENSE +0 -0
  888. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/README.md +0 -0
  889. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/images/calkit-no-bg.png +0 -0
  890. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/package-lock.json +0 -0
  891. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/package.json +0 -0
  892. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/scripts/set-proposed-api.js +0 -0
  893. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/environments.ts +0 -0
  894. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/extension.ts +0 -0
  895. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/figures/core.ts +0 -0
  896. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/figures/view.ts +0 -0
  897. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/notebooks.ts +0 -0
  898. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/test/environments.test.ts +0 -0
  899. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/test/figures.test.ts +0 -0
  900. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
  901. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/test/notebooks.test.ts +0 -0
  902. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/src/types.ts +0 -0
  903. {calkit_python-0.41.24 → calkit_python-0.42.0}/vscode-ext/tsconfig.json +0 -0
@@ -0,0 +1,29 @@
1
+ # The hub backend image builds with this directory as its context so it can
2
+ # install the calkit-python workspace member; keep everything it doesn't need
3
+ # out of the context
4
+ #
5
+ # .git is deliberately NOT excluded: hatch-vcs reads the release tags out of
6
+ # it to version calkit-python and the hub backend at install time. It is
7
+ # bind-mounted into the one RUN that needs it, so it never lands in a layer.
8
+ .venv
9
+ .env
10
+ **/__pycache__
11
+ *.pyc
12
+ **/.mypy_cache
13
+ **/.pytest_cache
14
+ **/node_modules
15
+ **/.venv
16
+ .coverage
17
+ coverage.xml
18
+ htmlcov
19
+ dist
20
+ site
21
+ docs
22
+ examples
23
+ test
24
+ calk9
25
+ jupyterlab-ext
26
+ vscode-ext
27
+ hub/frontend
28
+ hub/texmf-proxy
29
+ hub/node_modules
@@ -0,0 +1,27 @@
1
+ dev.ipynb
2
+ *.pyc
3
+ .DS_Store
4
+ .vscode/settings.json
5
+ site
6
+ .env
7
+ .venv
8
+ .coverage*
9
+ coverage.xml
10
+ import.log
11
+ tsconfig.tsbuildinfo
12
+ jupyterlab-ext/lib
13
+ node_modules
14
+ .yarn
15
+ *.eslintcache
16
+ *.stylelintcache
17
+ calkit/labextension
18
+ coverage
19
+ junit.xml
20
+ calk9
21
+ dist
22
+ *.vsix
23
+ vscode-ext/out
24
+ .claude
25
+ TODO.md
26
+ **/__pycache__/
27
+ CLAUDE.md
@@ -0,0 +1,52 @@
1
+ # Python linting/formatting runs the uv-managed ruff over the whole repo
2
+ # with the root pyproject config, so the version and rules can't drift
3
+ # between packages. The hub frontend is formatted by its own pinned Biome
4
+ # to match hub/frontend/biome.json exactly.
5
+ repos:
6
+ - repo: https://github.com/pre-commit/pre-commit-hooks
7
+ rev: "v4.4.0"
8
+ hooks:
9
+ - id: check-added-large-files
10
+ - id: check-case-conflict
11
+ - id: check-merge-conflict
12
+ exclude: ^docs/overleaf\.md$
13
+ - id: check-toml
14
+ - id: end-of-file-fixer
15
+ exclude: ^hub/frontend/src/client/
16
+ - id: trailing-whitespace
17
+ exclude: ^hub/frontend/src/client/
18
+ - id: check-yaml
19
+ args: ["--unsafe"]
20
+ - id: check-json
21
+ # The hub has JSONC files (tsconfig.json, .vscode/launch.json)
22
+ exclude: ^hub/
23
+
24
+ - repo: local
25
+ hooks:
26
+ - id: ruff-check
27
+ name: ruff check
28
+ language: system
29
+ entry: bash -c 'uv run ruff check --fix --exit-non-zero-on-fix .'
30
+ pass_filenames: false
31
+ files: \.pyi?$
32
+ - id: ruff-format
33
+ name: ruff format
34
+ language: system
35
+ entry: bash -c 'uv run ruff format .'
36
+ pass_filenames: false
37
+ files: \.pyi?$
38
+
39
+ - repo: https://github.com/pre-commit/mirrors-prettier
40
+ rev: "v3.0.3"
41
+ hooks:
42
+ - id: prettier
43
+ exclude: calkit|^hub/
44
+
45
+ - repo: local
46
+ hooks:
47
+ - id: biome-format-hub-frontend
48
+ name: biome format (hub frontend)
49
+ language: system
50
+ entry: bash -c 'cd hub/frontend && npx biome format --write ./src'
51
+ pass_filenames: false
52
+ files: ^hub/frontend/src/.*\.(jsx?|tsx?|jsonc?|css)$
@@ -0,0 +1,10 @@
1
+ node_modules
2
+ **/node_modules
3
+ **/lib
4
+ **/package.json
5
+ calkit
6
+ .mypy_cache
7
+ .pytest_cache
8
+ .ruff_cache
9
+ .venv
10
+ browser-ext/dist
@@ -0,0 +1,55 @@
1
+ # Agent instructions for working on Calkit
2
+
3
+ ## Repo structure
4
+
5
+ - The main Python package/CLI lives in `calkit`
6
+ - The JupyterLab extension lives in `src`
7
+ - The VS Code extension lives in `vscode-ext`
8
+ - The Chrome extension lives in `browser-ext`
9
+
10
+ ## Working
11
+
12
+ See `CONTRIBUTING.md` for tool usage, style guidelines, etc.
13
+
14
+ To run tests, use `uv run pytest`.
15
+
16
+ To sync the docs and format all the code, run `make format`.
17
+
18
+ Before finishing a change, type-check it. The CLI gate is mypy
19
+ (`uv run mypy <changed files>`, or `make check` for the full suite), and the
20
+ VS Code editor uses Pylance (Pyright). Keep new code clean under both, and do
21
+ not introduce new type errors.
22
+
23
+ Wrap prose at natural breakpoints in phrases or punctuation to keep max
24
+ line length below 80 characters.
25
+
26
+ In the docs, MkDocs Material admonitions (`!!! note`, `!!! tip`, etc.) must be
27
+ preceded by a `<!-- prettier-ignore -->` comment. Otherwise Prettier reformats
28
+ the block and strips the 4-space indentation of the admonition body, which
29
+ breaks rendering.
30
+
31
+ Agents should never make commits to Git.
32
+
33
+ Prefer tests that include multiple scenarios to comprehensively test
34
+ a feature in one function over many different test functions.
35
+
36
+ Do not write docstrings in test functions.
37
+
38
+ Do not put blank lines inside function bodies; separate logical sections with
39
+ comments instead. This only applies to blank lines we write, not ones the
40
+ formatter inserts, e.g., ruff-format adds one after an in-function import
41
+ block. Don't hoist imports to module scope just to avoid those; imports are
42
+ kept inside functions to keep CLI startup fast.
43
+
44
+ For prose, only use one space after punctuation.
45
+
46
+ Don't overzealously split up functions just because they're long.
47
+ Functions should usually be used ~3 times before abstracting.
48
+ Otherwise, split up long ones into logical sections with comments.
49
+ The only exception here is if splitting up a function makes it easier to
50
+ write meaningful unit tests.
51
+ If a function is only used inside one other function, nest it inside the
52
+ caller at the top.
53
+
54
+ No spaces on either side of en or em dashes used for ranges or pauses in prose,
55
+ respectively.
@@ -0,0 +1,131 @@
1
+ # Contributing to Calkit
2
+
3
+ Thank you for considering contributing to Calkit!
4
+ We welcome contributions of all kinds, including code, documentation,
5
+ bug reports, and feature suggestions.
6
+ This guide will help you get started.
7
+
8
+ ## 🛠 How to contribute
9
+
10
+ ### 1. Find an issue to work on
11
+
12
+ - Check the **[backlog](https://github.com/orgs/calkit/projects/1/views/1)**
13
+ for issues that are ready to be worked on.
14
+ - Look for issues labeled `good first issue` if you're new.
15
+ - If you have an idea, open a new issue and discuss it before coding.
16
+
17
+ ### 2. Set up your development environment
18
+
19
+ 1. [**Fork** the repository](https://github.com/calkit/calkit/fork).
20
+ 1. **Clone** your fork locally:
21
+ ```bash
22
+ git clone https://github.com/{your-username}/calkit.git
23
+ cd calkit
24
+ ```
25
+ 1. **Install system-level dependencies:**
26
+ - [Docker](https://docker.com)
27
+ - [Miniforge](https://conda-forge.org/download/)
28
+ - [uv](https://docs.astral.sh/uv/getting-started/installation/)
29
+ - [Pixi](https://pixi.sh/latest/)
30
+ 1. **Run tests** to ensure everything is working:
31
+ ```bash
32
+ uv run pytest
33
+ ```
34
+ 1. Install the Calkit CLI in dev mode:
35
+ ```sh
36
+ uv tool install -e .
37
+ ```
38
+ 1. Install the JupyterLab extension in development mode
39
+ (if working on the JupyterLab extension):
40
+ ```sh
41
+ uv run jupyter labextension develop . --overwrite
42
+ ```
43
+ 1. Start the JupyterLab extension TypeScript compiler in watch mode
44
+ (if working on the JupyterLab extension):
45
+ ```sh
46
+ make jlab-dev
47
+ ```
48
+ 1. Start JupyterLab:
49
+ ```sh
50
+ uv run jupyter lab
51
+ ```
52
+ 1. **Set up pre-commit hooks** to auto-enforce code style standards:
53
+ ```bash
54
+ uv tool install prek
55
+ prek install
56
+ ```
57
+ This will run automated checks before each commit.
58
+
59
+ ### 3. Make your changes
60
+
61
+ - Create a new branch:
62
+ ```bash
63
+ git checkout -b your-feature-name
64
+ ```
65
+ - Fix automatically-checked formatting issues:
66
+ ```bash
67
+ make format
68
+ ```
69
+ - Follow style guidelines not automatically checked:
70
+ - No blank lines inside functions/methods
71
+ - Type hints required for all functions
72
+ - NumPy-style docstrings
73
+ - Commit your changes
74
+ (use the imperative mood and capitalize the first letter,
75
+ but don't use punctuation):
76
+ ```bash
77
+ git add .
78
+ git commit -m "Short description of your change"
79
+ ```
80
+ - Push your branch:
81
+ ```bash
82
+ git push origin your-feature-name -u
83
+ ```
84
+
85
+ ### 4. Submit a pull request (PR)
86
+
87
+ - Open a **Pull request** on GitHub.
88
+ - Link the PR to the issue it resolves by adding "resolves #{issue number}"
89
+ to the description.
90
+ - Wait for a review and make necessary changes.
91
+
92
+ ## Releasing the browser extension
93
+
94
+ Publishing a GitHub release tagged `browser-ext/vX.Y.Z` builds and tests the
95
+ extension, stamps that version into `manifest.json` and `package.json`,
96
+ strips source maps, and attaches a store-ready zip to the release.
97
+ The version comes from the tag because the Chrome Web Store rejects an
98
+ upload whose manifest version isn't higher than the last one, and a version
99
+ kept in sync by hand eventually isn't.
100
+ Uncheck "set as the latest release" for these, since they aren't
101
+ calkit-python releases.
102
+
103
+ The same workflow uploads to the Chrome Web Store once the
104
+ `CHROME_EXTENSION_ID` repository variable is set, using the
105
+ `CHROME_CLIENT_ID`, `CHROME_CLIENT_SECRET`, and `CHROME_REFRESH_TOKEN`
106
+ secrets (an OAuth client for the Web Store API, authorized for the
107
+ publishing account).
108
+ Until that variable exists the upload step is skipped and the zip on the
109
+ release is uploaded by hand.
110
+
111
+ `make browser-ext` builds and packages the same zip locally.
112
+ The packaged manifest drops the local development hub's host permission,
113
+ which is why it is built from a staged copy rather than from `dist`, the
114
+ directory loaded unpacked during development.
115
+ The store listing's text lives in `browser-ext/store/listing.md`, and its
116
+ screenshots are generated from `docs/img/browser-ext` by
117
+ `browser-ext/scripts/store-screenshots.py`.
118
+
119
+ ## 💡 Other ways to contribute
120
+
121
+ - **Report bugs**: Open an issue with detailed reproduction steps.
122
+ - **Improve documentation**: Help us make Calkit's docs better.
123
+ - **Suggest features**: Share your ideas for improvements.
124
+
125
+ ## 🎉 Join the community
126
+
127
+ - Participate in **[GitHub Discussions](https://github.com/calkit/discussions)**.
128
+ - Join our [**Discord**](https://discord.gg/m2MBC79HzD) for real-time collaboration.
129
+ - Follow our updates on [**LinkedIn**](https://linkedin.com/company/calkit).
130
+
131
+ We appreciate your help in making Calkit better! 🚀
@@ -0,0 +1,117 @@
1
+ .PHONY: help
2
+ help: ## Show this help.
3
+ @uv run python -c "import re; \
4
+ [[print(f'\033[36m{m[0]:<20}\033[0m {m[1]}') for m in re.findall(r'^([a-zA-Z_-]+):.*?## (.*)$$', open(makefile).read(), re.M)] for makefile in ('$(MAKEFILE_LIST)').strip().split()]"
5
+
6
+ .PHONY: install
7
+ install: ## Create the project's virtual environment.
8
+ @echo "🚀 Creating virtual environment"
9
+ @uv sync
10
+
11
+ .PHONY: dev
12
+ dev: ## Start up the hub containers for development.
13
+ @$(MAKE) -C hub dev
14
+
15
+ .PHONY: frontend-client
16
+ frontend-client: ## Regenerate the hub frontend's API client.
17
+ @$(MAKE) -C hub/frontend client
18
+
19
+ .PHONY: format
20
+ format: sync-docs ## Automatically format files.
21
+ @echo "🚀 Linting code with pre-commit"
22
+ @uv run pre-commit run -a
23
+
24
+ .PHONY: check
25
+ check: format ## Run code quality tools.
26
+ @echo "🚀 Checking lock file consistency with 'pyproject.toml'"
27
+ @uv lock --locked
28
+ @echo "🚀 Static type checking with mypy"
29
+ @uv run --all-packages mypy
30
+ @echo "🚀 Checking for obsolete dependencies with deptry"
31
+ @uv run deptry .
32
+
33
+ .PHONY: test
34
+ test: ## Test the code with pytest.
35
+ @echo "🚀 Testing code with pytest"
36
+ @uv run pytest
37
+
38
+ .PHONY: test-cov
39
+ test-cov: ## Test the code coverage with pytest.
40
+ @echo "🚀 Testing code coverage with pytest"
41
+ @uv run pytest --cov --cov-config=pyproject.toml
42
+
43
+ .PHONY: test-docs
44
+ test-docs: sync-docs ## Test if documentation can be built without warnings or errors.
45
+ @uv run mkdocs build -s
46
+
47
+ .PHONY: sync-docs
48
+ sync-docs: ## Sync documentation content from docs/*.md into README.md.
49
+ @echo "🚀 Generating docs references"
50
+ @uv run python scripts/generate-docs-references.py
51
+ @echo "🚀 Syncing documentation"
52
+ @uv run python scripts/sync-docs.py
53
+
54
+ .PHONY: docs
55
+ docs: sync-docs ## Build and serve the documentation.
56
+ @uv run mkdocs serve --livereload
57
+
58
+ .PHONY: import-profile
59
+ import-profile: ## Profile the import time of the CLI.
60
+ uv run python -X importtime -m calkit --help 2> import.log && uvx tuna import.log
61
+
62
+ .PHONY: jlab-dev
63
+ jlab-dev: ## Develop the JupyterLab extension.
64
+ cd jupyterlab-ext && uv run jlpm run watch
65
+
66
+ .PHONY: jlab
67
+ jlab: ## Build the JupyterLab extension.
68
+ cd jupyterlab-ext && uv run jlpm run build:prod
69
+
70
+ .PHONY: test-jlab
71
+ test-jlab: ## Run JupyterLab extension unit tests with Jest.
72
+ @echo "🚀 Running JupyterLab extension unit tests"
73
+ @cd jupyterlab-ext && uv run jlpm test
74
+
75
+ .PHONY: test-jlab-ui
76
+ test-jlab-ui: ## Run the JupyterLab UI integration tests.
77
+ @echo "🚀 Running JupyterLab UI tests with Playwright"
78
+ @cd jupyterlab-ext && uv run jlpm run build:prod
79
+ @uv run --directory=jupyterlab-ext/ui-tests jlpm install
80
+ @uv run --directory=jupyterlab-ext/ui-tests jlpm playwright install
81
+ @uv run --directory=jupyterlab-ext/ui-tests jlpm playwright test -u --reporter=list
82
+
83
+ .PHONY: browser-ext
84
+ browser-ext: ## Build the browser extension and package it as a ZIP.
85
+ @echo "🚀 Building the browser extension"
86
+ @cd browser-ext && npm ci && npm run build
87
+ @echo "📦 Packaging the browser extension ZIP"
88
+ @mkdir -p browser-ext/zip
89
+ # Packaged from a staged copy, never from dist: dist is what gets loaded
90
+ # unpacked for development, and the published manifest drops the local
91
+ # hub's host permission, which development needs.
92
+ @rm -rf browser-ext/zip/stage
93
+ @mkdir -p browser-ext/zip/stage
94
+ @cp -R browser-ext/dist/. browser-ext/zip/stage/
95
+ @cd browser-ext && node scripts/package-manifest.mjs zip/stage/manifest.json
96
+ # Source maps are useful loading unpacked, but only bloat a store upload, so
97
+ # they stay in dist and are excluded from the archive.
98
+ # zip adds to an existing archive rather than replacing it, so a rebuild at
99
+ # the same commit would otherwise keep files the build no longer produces.
100
+ # $$ escapes the shell's expansion from Make's own.
101
+ @rm -f "browser-ext/zip/calkit-browser-ext.zip"
102
+ @cd browser-ext/zip/stage && zip -qr \
103
+ "../calkit-browser-ext.zip" . \
104
+ -x '.*' '*/.*' '*.map'
105
+ @rm -rf browser-ext/zip/stage
106
+
107
+ .PHONY: browser-ext-dev
108
+ browser-ext-dev: ## Rebuild the browser extension on every change.
109
+ @echo "🚀 Watching the browser extension"
110
+ # Rebuilds on save. Chrome still needs the extension reloaded, since it
111
+ # reads a content script from disk when a page loads. Vite doesn't type
112
+ # check, so run 'cd browser-ext && npm run check' alongside this.
113
+ @cd browser-ext && npm ci && npm run dev
114
+
115
+ .PHONY: browser-ext-clean-zips
116
+ browser-ext-clean-zips: ## Delete all built browser extension ZIPs.
117
+ @rm -rf browser-ext/zip