calkit-python 0.37.4__tar.gz → 0.37.6__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 (316) hide show
  1. {calkit_python-0.37.4 → calkit_python-0.37.6}/PKG-INFO +1 -1
  2. calkit_python-0.37.6/calkit/cli/dev.py +47 -0
  3. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/main/core.py +2 -0
  4. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/notebooks.py +3 -3
  5. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/invenio.py +3 -0
  6. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/jupyter.py +7 -2
  7. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_new.py +64 -2
  8. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/cli-reference.md +36 -0
  9. {calkit_python-0.37.4 → calkit_python-0.37.6}/pyproject.toml +1 -0
  10. {calkit_python-0.37.4 → calkit_python-0.37.6}/uv.lock +29 -3
  11. {calkit_python-0.37.4 → calkit_python-0.37.6}/.gitignore +0 -0
  12. {calkit_python-0.37.4 → calkit_python-0.37.6}/.pre-commit-config.yaml +0 -0
  13. {calkit_python-0.37.4 → calkit_python-0.37.6}/.prettierignore +0 -0
  14. {calkit_python-0.37.4 → calkit_python-0.37.6}/.python-version +0 -0
  15. {calkit_python-0.37.4 → calkit_python-0.37.6}/.vscode/launch.json +0 -0
  16. {calkit_python-0.37.4 → calkit_python-0.37.6}/.vscode/tasks.json +0 -0
  17. {calkit_python-0.37.4 → calkit_python-0.37.6}/.yarnrc.yml +0 -0
  18. {calkit_python-0.37.4 → calkit_python-0.37.6}/CITATION.cff +0 -0
  19. {calkit_python-0.37.4 → calkit_python-0.37.6}/CODE_OF_CONDUCT.md +0 -0
  20. {calkit_python-0.37.4 → calkit_python-0.37.6}/CONTRIBUTING.md +0 -0
  21. {calkit_python-0.37.4 → calkit_python-0.37.6}/LICENSE +0 -0
  22. {calkit_python-0.37.4 → calkit_python-0.37.6}/Makefile +0 -0
  23. {calkit_python-0.37.4 → calkit_python-0.37.6}/README.md +0 -0
  24. {calkit_python-0.37.4 → calkit_python-0.37.6}/babel.config.js +0 -0
  25. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/__init__.py +0 -0
  26. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/__main__.py +0 -0
  27. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/calc.py +0 -0
  28. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/check.py +0 -0
  29. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/__init__.py +0 -0
  30. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/check.py +0 -0
  31. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/cloud.py +0 -0
  32. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/config.py +0 -0
  33. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/core.py +0 -0
  34. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/describe.py +0 -0
  35. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/import_.py +0 -0
  36. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/latex.py +0 -0
  37. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/list.py +0 -0
  38. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/main/__init__.py +0 -0
  39. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/main/xr.py +0 -0
  40. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/new.py +0 -0
  41. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/office.py +0 -0
  42. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/overleaf.py +0 -0
  43. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/slurm.py +0 -0
  44. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cli/update.py +0 -0
  45. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/cloud.py +0 -0
  46. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/conda.py +0 -0
  47. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/config.py +0 -0
  48. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/core.py +0 -0
  49. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/datasets.py +0 -0
  50. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/detect.py +0 -0
  51. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/docker.py +0 -0
  52. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/dvc/__init__.py +0 -0
  53. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/dvc/core.py +0 -0
  54. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/dvc/zip.py +0 -0
  55. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/environments.py +0 -0
  56. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/fs.py +0 -0
  57. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/git.py +0 -0
  58. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/github.py +0 -0
  59. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/gui.py +0 -0
  60. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/julia.py +0 -0
  61. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/jupyterlab/__init__.py +0 -0
  62. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/jupyterlab/routes.py +0 -0
  63. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/package.json +0 -0
  64. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
  65. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/schemas/calkit/plugin.json +0 -0
  66. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
  67. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
  68. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
  69. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
  70. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
  71. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
  72. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
  73. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/remoteEntry.65469af996e7a96aa983.js +0 -0
  74. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/style.js +0 -0
  75. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/labextension/static/third-party-licenses.json +0 -0
  76. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/licenses.py +0 -0
  77. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/magics.py +0 -0
  78. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/matlab.py +0 -0
  79. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/models/__init__.py +0 -0
  80. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/models/core.py +0 -0
  81. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/models/io.py +0 -0
  82. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/models/iteration.py +0 -0
  83. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/models/pipeline.py +0 -0
  84. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/notebooks.py +0 -0
  85. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/office.py +0 -0
  86. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/ops.py +0 -0
  87. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/overleaf.py +0 -0
  88. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/pipeline.py +0 -0
  89. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/releases.py +0 -0
  90. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/server.py +0 -0
  91. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/__init__.py +0 -0
  92. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/core.py +0 -0
  93. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/__init__.py +0 -0
  94. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/article/paper.tex +0 -0
  95. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/core.py +0 -0
  96. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/jfm/jfm.bst +0 -0
  97. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/jfm/jfm.cls +0 -0
  98. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  99. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/jfm/paper.tex +0 -0
  100. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/templates/latex/jfm/upmath.sty +0 -0
  101. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/__init__.py +0 -0
  102. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/__init__.py +0 -0
  103. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/main/__init__.py +0 -0
  104. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/main/test_core.py +0 -0
  105. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/main/test_xr.py +0 -0
  106. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_check.py +0 -0
  107. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_config.py +0 -0
  108. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_import.py +0 -0
  109. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_latex.py +0 -0
  110. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_list.py +0 -0
  111. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_notebooks.py +0 -0
  112. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_overleaf.py +0 -0
  113. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/cli/test_update.py +0 -0
  114. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/dvc/__init__.py +0 -0
  115. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/dvc/test_core.py +0 -0
  116. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/dvc/test_zip.py +0 -0
  117. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/jupyterlab/__init__.py +0 -0
  118. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/jupyterlab/test_routes.py +0 -0
  119. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/models/__init__.py +0 -0
  120. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/models/test_iteration.py +0 -0
  121. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/models/test_pipeline.py +0 -0
  122. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_calc.py +0 -0
  123. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_check.py +0 -0
  124. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_conda.py +0 -0
  125. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_core.py +0 -0
  126. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_detect.py +0 -0
  127. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_docker.py +0 -0
  128. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_environments.py +0 -0
  129. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_fs.py +0 -0
  130. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_git.py +0 -0
  131. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_invenio.py +0 -0
  132. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_julia.py +0 -0
  133. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_jupyter.py +0 -0
  134. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_magics.py +0 -0
  135. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_matlab.py +0 -0
  136. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_notebooks.py +0 -0
  137. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_pipeline.py +0 -0
  138. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_releases.py +0 -0
  139. {calkit_python-0.37.4 → calkit_python-0.37.6}/calkit/tests/test_templates.py +0 -0
  140. {calkit_python-0.37.4 → calkit_python-0.37.6}/conftest.py +0 -0
  141. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/CNAME +0 -0
  142. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/apps.md +0 -0
  143. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/calculations.md +0 -0
  144. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/calkit-yaml.md +0 -0
  145. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/cloud-integration.md +0 -0
  146. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/datasets.md +0 -0
  147. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/dependencies.md +0 -0
  148. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/environments.md +0 -0
  149. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/examples.md +0 -0
  150. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/governance.md +0 -0
  151. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/help.md +0 -0
  152. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/c-to-the-k-white.svg +0 -0
  153. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/calkit-fragmentation-compendium.png +0 -0
  154. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/calkit-no-bg.png +0 -0
  155. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/connect-zenodo.png +0 -0
  156. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab/all-green.png +0 -0
  157. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab/collect-data-stale.png +0 -0
  158. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab/new-env.png +0 -0
  159. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab/new-notebook.png +0 -0
  160. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab/pipeline-badge.png +0 -0
  161. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/jupyterlab-params.png +0 -0
  162. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/plos-osi-code-2024-03.png +0 -0
  163. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/img/vscode-nb-params.png +0 -0
  164. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/index.md +0 -0
  165. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/installation.md +0 -0
  166. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/jupyterlab.md +0 -0
  167. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/local-server.md +0 -0
  168. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/notebooks.md +0 -0
  169. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/overleaf.md +0 -0
  170. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/pipeline/index.md +0 -0
  171. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/pipeline/manual-steps.md +0 -0
  172. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/pipeline/running-and-logging.md +0 -0
  173. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/pipeline/slurm.md +0 -0
  174. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/quickstart.md +0 -0
  175. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/references.md +0 -0
  176. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/releases.md +0 -0
  177. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/reproducibility.md +0 -0
  178. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  179. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/conda-envs.md +0 -0
  180. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/existing-project.md +0 -0
  181. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/first-project.md +0 -0
  182. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/github-actions.md +0 -0
  183. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/actions-repo-secrets.png +0 -0
  184. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  185. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  186. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  187. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  188. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  189. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  190. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  191. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  192. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  193. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  194. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  195. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  196. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  197. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  198. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/create-project.png +0 -0
  199. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  200. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/excel-chart.png +0 -0
  201. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/excel-data.png +0 -0
  202. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  203. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/needs-clone.png +0 -0
  204. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/new-stage.png +0 -0
  205. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  206. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  207. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/status-more-rows.png +0 -0
  208. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  209. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/untracked-data.png +0 -0
  210. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/updated-publication.png +0 -0
  211. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  212. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/office/workflow-page.png +0 -0
  213. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/clone.png +0 -0
  214. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/create-project.png +0 -0
  215. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  216. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  217. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  218. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/new-token.png +0 -0
  219. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/reclone.png +0 -0
  220. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  221. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/quick-actions.png +0 -0
  222. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/run-proc.png +0 -0
  223. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
  224. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
  225. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
  226. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
  227. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
  228. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
  229. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
  230. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/index.md +0 -0
  231. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/jupyterlab.md +0 -0
  232. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/latex-codespaces.md +0 -0
  233. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/matlab.md +0 -0
  234. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/notebook-pipeline.md +0 -0
  235. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/office.md +0 -0
  236. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/openfoam.md +0 -0
  237. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/procedures.md +0 -0
  238. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/tutorials/vscode-slurm-notebook.md +0 -0
  239. {calkit_python-0.37.4 → calkit_python-0.37.6}/docs/version-control.md +0 -0
  240. {calkit_python-0.37.4 → calkit_python-0.37.6}/install.json +0 -0
  241. {calkit_python-0.37.4 → calkit_python-0.37.6}/jest.config.js +0 -0
  242. {calkit_python-0.37.4 → calkit_python-0.37.6}/jupyter-config/server-config/calkit.json +0 -0
  243. {calkit_python-0.37.4 → calkit_python-0.37.6}/mkdocs.yml +0 -0
  244. {calkit_python-0.37.4 → calkit_python-0.37.6}/package.json +0 -0
  245. {calkit_python-0.37.4 → calkit_python-0.37.6}/schema/plugin.json +0 -0
  246. {calkit_python-0.37.4 → calkit_python-0.37.6}/scripts/generate-docs-references.py +0 -0
  247. {calkit_python-0.37.4 → calkit_python-0.37.6}/scripts/install.ps1 +0 -0
  248. {calkit_python-0.37.4 → calkit_python-0.37.6}/scripts/install.sh +0 -0
  249. {calkit_python-0.37.4 → calkit_python-0.37.6}/scripts/make-calk9.sh +0 -0
  250. {calkit_python-0.37.4 → calkit_python-0.37.6}/scripts/sync-docs.py +0 -0
  251. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/__tests__/useQueries.spec.ts +0 -0
  252. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/calkit-config.ts +0 -0
  253. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/cell-output-marker.ts +0 -0
  254. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/commit-dialog.tsx +0 -0
  255. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/environment-editor.tsx +0 -0
  256. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/notebook-registration.tsx +0 -0
  257. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/notebook-toolbar.tsx +0 -0
  258. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/pipeline-status-bar.tsx +0 -0
  259. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/project-info-editor.tsx +0 -0
  260. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/sidebar-settings.tsx +0 -0
  261. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/sidebar.tsx +0 -0
  262. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/components/stage-editor.tsx +0 -0
  263. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/feature-flags.ts +0 -0
  264. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/file-browser-menu.ts +0 -0
  265. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/hooks/__tests__/useQueries.test.tsx +0 -0
  266. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/hooks/useQueries.ts +0 -0
  267. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/icons.ts +0 -0
  268. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/index.ts +0 -0
  269. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/io-tracker.ts +0 -0
  270. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/pipeline-state.ts +0 -0
  271. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/queryClient.ts +0 -0
  272. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/request.ts +0 -0
  273. {calkit_python-0.37.4 → calkit_python-0.37.6}/src/shims-mainmenu.d.ts +0 -0
  274. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/base.css +0 -0
  275. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/cell-output-marker.css +0 -0
  276. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/environment-editor.css +0 -0
  277. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/environment-selector.css +0 -0
  278. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/img/calkit-no-bg.png +0 -0
  279. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/index.css +0 -0
  280. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/index.js +0 -0
  281. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/notebook-toolbar.css +0 -0
  282. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/pipeline-status-bar.css +0 -0
  283. {calkit_python-0.37.4 → calkit_python-0.37.6}/style/sidebar.css +0 -0
  284. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/dvc-md5-dir/osx-arm64.txt +0 -0
  285. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/nb-julia.ipynb +0 -0
  286. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/nb-params.ipynb +0 -0
  287. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/nb-subdir.ipynb +0 -0
  288. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/pipeline.ipynb +0 -0
  289. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/script.py +0 -0
  290. {calkit_python-0.37.4 → calkit_python-0.37.6}/test/test-log.log +0 -0
  291. {calkit_python-0.37.4 → calkit_python-0.37.6}/tsconfig.json +0 -0
  292. {calkit_python-0.37.4 → calkit_python-0.37.6}/tsconfig.test.json +0 -0
  293. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/.gitignore +0 -0
  294. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/README.md +0 -0
  295. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/jupyter_server_test_config.py +0 -0
  296. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/package.json +0 -0
  297. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/playwright.config.js +0 -0
  298. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/tests/calkit.spec.ts +0 -0
  299. {calkit_python-0.37.4 → calkit_python-0.37.6}/ui-tests/yarn.lock +0 -0
  300. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/.gitignore +0 -0
  301. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/.vscodeignore +0 -0
  302. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/CHANGELOG.md +0 -0
  303. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/LICENSE +0 -0
  304. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/README.md +0 -0
  305. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/images/calkit-no-bg.png +0 -0
  306. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/package-lock.json +0 -0
  307. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/package.json +0 -0
  308. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/scripts/set-proposed-api.js +0 -0
  309. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/environments.ts +0 -0
  310. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/extension.ts +0 -0
  311. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/notebooks.ts +0 -0
  312. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/test/environments.test.ts +0 -0
  313. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/test/notebooks.test.ts +0 -0
  314. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/src/types.ts +0 -0
  315. {calkit_python-0.37.4 → calkit_python-0.37.6}/vscode-ext/tsconfig.json +0 -0
  316. {calkit_python-0.37.4 → calkit_python-0.37.6}/yarn.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.37.4
3
+ Version: 0.37.6
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -0,0 +1,47 @@
1
+ """CLI for Calkit developers, hidden from the typical help menu."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import subprocess
6
+ import sys
7
+ from typing import Annotated
8
+
9
+ import typer
10
+
11
+ import calkit
12
+
13
+ dev_app = typer.Typer(no_args_is_help=True)
14
+
15
+
16
+ @dev_app.command(
17
+ name="python",
18
+ add_help_option=False,
19
+ context_settings={
20
+ "ignore_unknown_options": True,
21
+ "allow_extra_args": True,
22
+ },
23
+ )
24
+ def run_python(
25
+ ctx: typer.Context,
26
+ help: Annotated[bool, typer.Option("-h", "--help")] = False,
27
+ ):
28
+ """Start an Python shell in Calkit's environment."""
29
+ subprocess.run([sys.executable] + sys.argv[3:])
30
+
31
+
32
+ @dev_app.command(
33
+ name="ipython",
34
+ add_help_option=False,
35
+ context_settings={
36
+ "ignore_unknown_options": True,
37
+ "allow_extra_args": True,
38
+ },
39
+ )
40
+ def run_ipython(
41
+ ctx: typer.Context,
42
+ help: Annotated[bool, typer.Option("-h", "--help")] = False,
43
+ ):
44
+ """Start an IPython shell in Calkit's environment."""
45
+ from IPython import start_ipython
46
+
47
+ start_ipython(argv=sys.argv[3:], user_ns={"calkit": calkit})
@@ -47,6 +47,7 @@ from calkit.cli.check import (
47
47
  from calkit.cli.cloud import cloud_app
48
48
  from calkit.cli.config import config_app
49
49
  from calkit.cli.describe import describe_app
50
+ from calkit.cli.dev import dev_app
50
51
  from calkit.cli.import_ import import_app
51
52
  from calkit.cli.latex import latex_app
52
53
  from calkit.cli.list import list_app
@@ -84,6 +85,7 @@ app.add_typer(latex_app, name="latex", help="Work with LaTeX.")
84
85
  app.add_typer(overleaf_app, name="overleaf", help="Interact with Overleaf.")
85
86
  app.add_typer(cloud_app, name="cloud", help="Interact with a Calkit Cloud.")
86
87
  app.add_typer(slurm_app, name="slurm", help="Work with SLURM.")
88
+ app.add_typer(dev_app, name="dev", help="Developer tools.", hidden=True)
87
89
 
88
90
 
89
91
  def _to_shell_cmd(cmd: list[str]) -> str:
@@ -586,9 +586,9 @@ def execute_notebook(
586
586
  run_in_env(cmd, env_name=env_name, no_check=no_check, verbose=verbose)
587
587
  if not no_replace:
588
588
  # Replace original notebook outputs with those from executed version
589
- with open(fpath_out_exec, "r") as f:
589
+ with open(fpath_out_exec, "r", encoding="utf-8") as f:
590
590
  executed_nb = json.load(f)
591
- with open(path, "r") as f:
591
+ with open(path, "r", encoding="utf-8") as f:
592
592
  original_nb = json.load(f)
593
593
  for orig_cell, exec_cell in zip(
594
594
  original_nb.get("cells", []), executed_nb.get("cells", [])
@@ -600,7 +600,7 @@ def execute_notebook(
600
600
  and "execution_count" in exec_cell
601
601
  ):
602
602
  orig_cell["execution_count"] = exec_cell["execution_count"]
603
- with open(path, "w") as f:
603
+ with open(path, "w", encoding="utf-8") as f:
604
604
  json.dump(original_nb, f, indent=1)
605
605
  for to_fmt in to:
606
606
  if to_fmt != "notebook":
@@ -34,6 +34,9 @@ def get_token(service: ServiceName = DEFAULT_SERVICE) -> str:
34
34
 
35
35
 
36
36
  def get_base_url(service: ServiceName = DEFAULT_SERVICE) -> str:
37
+ override = os.getenv(f"CALKIT_INVENIO_BASE_URL_{service.upper()}")
38
+ if override:
39
+ return override
37
40
  current_env = calkit.config.get_env()
38
41
  if service == "zenodo":
39
42
  if (
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import subprocess
6
+ import sys
6
7
 
7
8
  from pydantic import BaseModel
8
9
 
@@ -15,7 +16,9 @@ class Server(BaseModel):
15
16
 
16
17
  def get_servers() -> list[Server]:
17
18
  out = (
18
- subprocess.check_output(["jupyter", "server", "list"])
19
+ subprocess.check_output(
20
+ [sys.executable, "-m", "jupyter", "server", "list"]
21
+ )
19
22
  .decode()
20
23
  .strip()
21
24
  .split("\n")
@@ -33,6 +36,8 @@ def start_server(wdir=None, no_browser=False):
33
36
  """Start a Jupyter server."""
34
37
  subprocess.Popen(
35
38
  [
39
+ sys.executable,
40
+ "-m",
36
41
  "jupyter",
37
42
  "lab",
38
43
  "-y",
@@ -45,4 +50,4 @@ def start_server(wdir=None, no_browser=False):
45
50
  def stop_server(url: str):
46
51
  # Extract the port from the URL
47
52
  port = url.split(":")[2][:4]
48
- subprocess.call(["jupyter", "server", "stop", port])
53
+ subprocess.call([sys.executable, "-m", "jupyter", "server", "stop", port])
@@ -1,6 +1,7 @@
1
1
  """Tests for ``cli.new``."""
2
2
 
3
3
  import os
4
+ import re
4
5
  import subprocess
5
6
 
6
7
  import git
@@ -548,7 +549,65 @@ def test_new_julia_env(tmp_dir):
548
549
  assert not os.path.isfile("envs/empty/Manifest.toml")
549
550
 
550
551
 
551
- def test_new_release(tmp_dir):
552
+ def test_new_release(tmp_dir, monkeypatch, httpserver):
553
+ # Set up a mock Zenodo API so the test doesn't depend on the real sandbox
554
+ record_id = "test-record-abc123"
555
+ doi = "10.5072/zenodo.test123"
556
+ # Point the Zenodo base URL at the local mock server and provide a dummy
557
+ # token so no real credentials are needed. Both env vars are inherited
558
+ # by every subprocess started by this test.
559
+ monkeypatch.setenv(
560
+ "CALKIT_INVENIO_BASE_URL_ZENODO",
561
+ httpserver.url_for("").rstrip("/"),
562
+ )
563
+ monkeypatch.setenv("ZENODO_TOKEN", "test-token")
564
+ # POST /records – create a new draft record
565
+ httpserver.expect_request(
566
+ re.compile(r"^/records$"), method="POST"
567
+ ).respond_with_json({"id": record_id, "pids": {}})
568
+ # POST /records/{id}/draft/files – initiate a file upload slot
569
+ httpserver.expect_request(
570
+ re.compile(rf"^/records/{record_id}/draft/files$"), method="POST"
571
+ ).respond_with_json({"entries": []})
572
+ # PUT /records/{id}/draft/files/{filename}/content – stream file bytes
573
+ httpserver.expect_request(
574
+ re.compile(rf"^/records/{record_id}/draft/files/.+/content$"),
575
+ method="PUT",
576
+ ).respond_with_data("", status=200)
577
+ # POST /records/{id}/draft/files/{filename}/commit – finalise upload
578
+ httpserver.expect_request(
579
+ re.compile(rf"^/records/{record_id}/draft/files/.+/commit$"),
580
+ method="POST",
581
+ ).respond_with_json({"key": "file", "status": "completed"})
582
+ # POST /records/{id}/draft/pids/doi – reserve a DOI for a draft
583
+ httpserver.expect_request(
584
+ re.compile(rf"^/records/{record_id}/draft/pids/doi$"), method="POST"
585
+ ).respond_with_json({"pids": {"doi": {"identifier": doi}}})
586
+ # GET /records/{id}/draft/files – list files already in the draft
587
+ # (used by --reupload to decide which files to delete first)
588
+ httpserver.expect_request(
589
+ re.compile(rf"^/records/{record_id}/draft/files$"), method="GET"
590
+ ).respond_with_json({"entries": []})
591
+ # POST /records/{id}/draft/actions/publish – publish the draft
592
+ httpserver.expect_request(
593
+ re.compile(rf"^/records/{record_id}/draft/actions/publish$"),
594
+ method="POST",
595
+ ).respond_with_json(
596
+ {"id": record_id, "pids": {"doi": {"identifier": doi}}}
597
+ )
598
+ # GET /records/{id} – fetch the published record for post-test assertions
599
+ httpserver.expect_request(
600
+ re.compile(rf"^/records/{record_id}$"), method="GET"
601
+ ).respond_with_json(
602
+ {
603
+ "metadata": {
604
+ "license": {"id": "cc-by-4.0"},
605
+ "related_identifiers": [
606
+ {"identifier": ("https://github.com/calkit/test-project")}
607
+ ],
608
+ }
609
+ }
610
+ )
552
611
  subprocess.check_call(
553
612
  [
554
613
  "calkit",
@@ -661,7 +720,10 @@ def test_new_release(tmp_dir):
661
720
  # )
662
721
 
663
722
 
664
- def test_new_release_is_runnable(tmp_dir):
723
+ def test_new_release_is_runnable(tmp_dir, monkeypatch):
724
+ # Provide a dummy Zenodo token so `new_release` can pass its early
725
+ # token-validation step even in dry-run mode.
726
+ monkeypatch.setenv("ZENODO_TOKEN", "test-token")
665
727
  subprocess.check_call(["calkit", "init"])
666
728
  with open("calkit.yaml", "w") as f:
667
729
  calkit.ryaml.dump(
@@ -42,6 +42,7 @@
42
42
  | [`overleaf`](#command-group-overleaf) | Interact with Overleaf. |
43
43
  | [`cloud`](#command-group-cloud) | Interact with a Calkit Cloud. |
44
44
  | [`slurm`](#command-group-slurm) | Work with SLURM. |
45
+ | [`dev`](#command-group-dev) | Developer tools. |
45
46
 
46
47
  ## Top-level command details
47
48
 
@@ -2757,3 +2758,38 @@ Options:
2757
2758
  | Option | Type | Required | Default | Description |
2758
2759
  | ---------------- | ------- | -------- | ------- | ----------------------------------- |
2759
2760
  | `--follow`, `-f` | boolean | no | False | Follow the log output like tail -f. |
2761
+
2762
+ <a id="command-group-dev"></a>
2763
+
2764
+ ### `calkit dev`
2765
+
2766
+ Developer tools.
2767
+
2768
+ | Command | Description |
2769
+ | ------------------------------------ | ----------------------------------------------- |
2770
+ | [`python`](#subcommand-dev-python) | Start an Python shell in Calkit's environment. |
2771
+ | [`ipython`](#subcommand-dev-ipython) | Start an IPython shell in Calkit's environment. |
2772
+
2773
+ <a id="subcommand-dev-python"></a>
2774
+
2775
+ #### `calkit dev python`
2776
+
2777
+ Start an Python shell in Calkit's environment.
2778
+
2779
+ Usage:
2780
+
2781
+ ```text
2782
+ calkit dev python [OPTIONS]
2783
+ ```
2784
+
2785
+ <a id="subcommand-dev-ipython"></a>
2786
+
2787
+ #### `calkit dev ipython`
2788
+
2789
+ Start an IPython shell in Calkit's environment.
2790
+
2791
+ Usage:
2792
+
2793
+ ```text
2794
+ calkit dev ipython [OPTIONS]
2795
+ ```
@@ -85,6 +85,7 @@ dev = [
85
85
  "mkdocs-material",
86
86
  "mkdocs-mermaid2-plugin",
87
87
  "pytest-env>=1.1.5",
88
+ "pytest-httpserver>=1.0.0",
88
89
  "pytest-xdist>=3.8.0",
89
90
  "pypdf>=6.4.2",
90
91
  "mkdocs-glightbox>=0.5.2",
@@ -798,6 +798,7 @@ dev = [
798
798
  { name = "pytest-asyncio" },
799
799
  { name = "pytest-cov" },
800
800
  { name = "pytest-env" },
801
+ { name = "pytest-httpserver" },
801
802
  { name = "pytest-jupyter", extra = ["server"] },
802
803
  { name = "pytest-test-utils" },
803
804
  { name = "pytest-xdist" },
@@ -861,6 +862,7 @@ dev = [
861
862
  { name = "pytest-asyncio" },
862
863
  { name = "pytest-cov" },
863
864
  { name = "pytest-env", specifier = ">=1.1.5" },
865
+ { name = "pytest-httpserver", specifier = ">=1.0.0" },
864
866
  { name = "pytest-jupyter", extras = ["server"], specifier = ">=0.6.0" },
865
867
  { name = "pytest-test-utils" },
866
868
  { name = "pytest-xdist", specifier = ">=3.8.0" },
@@ -2398,14 +2400,14 @@ wheels = [
2398
2400
 
2399
2401
  [[package]]
2400
2402
  name = "gitpython"
2401
- version = "3.1.46"
2403
+ version = "3.1.47"
2402
2404
  source = { registry = "https://pypi.org/simple" }
2403
2405
  dependencies = [
2404
2406
  { name = "gitdb" },
2405
2407
  ]
2406
- sdist = { url = "https://files.pythonhosted.org/packages/df/b5/59d16470a1f0dfe8c793f9ef56fd3826093fc52b3bd96d6b9d6c26c7e27b/gitpython-3.1.46.tar.gz", hash = "sha256:400124c7d0ef4ea03f7310ac2fbf7151e09ff97f2a3288d64a440c584a29c37f", size = 215371, upload-time = "2026-01-01T15:37:32.073Z" }
2408
+ sdist = { url = "https://files.pythonhosted.org/packages/c1/bd/50db468e9b1310529a19fce651b3b0e753b5c07954d486cba31bbee9a5d5/gitpython-3.1.47.tar.gz", hash = "sha256:dba27f922bd2b42cb54c87a8ab3cb6beb6bf07f3d564e21ac848913a05a8a3cd", size = 216978, upload-time = "2026-04-22T02:44:44.059Z" }
2407
2409
  wheels = [
2408
- { url = "https://files.pythonhosted.org/packages/6a/09/e21df6aef1e1ffc0c816f0522ddc3f6dcded766c3261813131c78a704470/gitpython-3.1.46-py3-none-any.whl", hash = "sha256:79812ed143d9d25b6d176a10bb511de0f9c67b1fa641d82097b0ab90398a2058", size = 208620, upload-time = "2026-01-01T15:37:30.574Z" },
2410
+ { url = "https://files.pythonhosted.org/packages/f2/c5/a1bc0996af85757903cf2bf444a7824e68e0035ce63fb41d6f76f9def68b/gitpython-3.1.47-py3-none-any.whl", hash = "sha256:489f590edfd6d20571b2c0e72c6a6ac6915ee8b8cd04572330e3842207a78905", size = 209547, upload-time = "2026-04-22T02:44:41.271Z" },
2409
2411
  ]
2410
2412
 
2411
2413
  [[package]]
@@ -5465,6 +5467,18 @@ wheels = [
5465
5467
  { url = "https://files.pythonhosted.org/packages/61/af/99b52a8524983bfece35e51e65a0b517b22920c023e57855c95e744e19e4/pytest_env-1.5.0-py3-none-any.whl", hash = "sha256:89a15686ac837c9cd009a8a2d52bd55865e2f23c82094247915dae4540c87161", size = 10122, upload-time = "2026-02-17T18:31:37.496Z" },
5466
5468
  ]
5467
5469
 
5470
+ [[package]]
5471
+ name = "pytest-httpserver"
5472
+ version = "1.1.5"
5473
+ source = { registry = "https://pypi.org/simple" }
5474
+ dependencies = [
5475
+ { name = "werkzeug" },
5476
+ ]
5477
+ sdist = { url = "https://files.pythonhosted.org/packages/50/17/ad187f46998814014f7cda309de700b87c0eb4b2e111e18bc8c819be7116/pytest_httpserver-1.1.5.tar.gz", hash = "sha256:dc3d82e1fe00e491829d8939c549bf4bd9b39a260f87113c619b9d517c2f8ff1", size = 70974, upload-time = "2026-02-14T13:27:23.412Z" }
5478
+ wheels = [
5479
+ { url = "https://files.pythonhosted.org/packages/ec/df/0bdf90b84c6a586a9fd2b509523a3ab26b1cc1b1dba2fb62a32e4411ea9e/pytest_httpserver-1.1.5-py3-none-any.whl", hash = "sha256:ee83feb587ab652c0c6729598db2820e9048233bac8df756818b7845a1621d0a", size = 23330, upload-time = "2026-02-14T13:27:22.119Z" },
5480
+ ]
5481
+
5468
5482
  [[package]]
5469
5483
  name = "pytest-jupyter"
5470
5484
  version = "0.11.0"
@@ -6786,6 +6800,18 @@ wheels = [
6786
6800
  { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" },
6787
6801
  ]
6788
6802
 
6803
+ [[package]]
6804
+ name = "werkzeug"
6805
+ version = "3.1.8"
6806
+ source = { registry = "https://pypi.org/simple" }
6807
+ dependencies = [
6808
+ { name = "markupsafe" },
6809
+ ]
6810
+ sdist = { url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz", hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z" }
6811
+ wheels = [
6812
+ { url = "https://files.pythonhosted.org/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl", hash = "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", size = 226459, upload-time = "2026-04-02T18:49:12.72Z" },
6813
+ ]
6814
+
6789
6815
  [[package]]
6790
6816
  name = "wrapt"
6791
6817
  version = "2.1.1"
File without changes
File without changes
File without changes