calkit-python 0.44.0__tar.gz → 0.44.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {calkit_python-0.44.0 → calkit_python-0.44.1}/CONTRIBUTING.md +9 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/Makefile +6 -3
- {calkit_python-0.44.0 → calkit_python-0.44.1}/PKG-INFO +1 -1
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/git.py +106 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/pipeline.py +10 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_git.py +76 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_pipeline.py +50 -1
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/calkit-yaml.md +12 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/notebooks.md +4 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/AGENTS.md +80 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/README.md +10 -2
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/core.py +270 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/core.py +19 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/pipeline.py +53 -37
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_core.py +150 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_pipeline.py +57 -0
- calkit_python-0.44.1/hub/backend/prestart.sh +16 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/index.ts +6 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/schemas.gen.ts +84 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/sdk.gen.ts +46 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/types.gen.ts +91 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +17 -11
- calkit_python-0.44.1/hub/frontend/src/components/Common/Markdown.test.tsx +60 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Markdown.tsx +55 -27
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/SidebarItems.tsx +3 -1
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/EditQuestion.tsx +30 -3
- calkit_python-0.44.1/hub/frontend/src/components/Tables/TableThumbnail.tsx +172 -0
- calkit_python-0.44.1/hub/frontend/src/components/Tables/TableView.test.tsx +117 -0
- calkit_python-0.44.1/hub/frontend/src/components/Tables/TableView.tsx +550 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useProject.ts +27 -0
- calkit_python-0.44.1/hub/frontend/src/lib/tables.test.ts +286 -0
- calkit_python-0.44.1/hub/frontend/src/lib/tables.ts +477 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routeTree.gen.ts +23 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +11 -6
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +51 -2
- calkit_python-0.44.1/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/tables.tsx +366 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/extension.ts +0 -24
- calkit_python-0.44.0/hub/backend/prestart.sh +0 -10
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.claude-plugin/marketplace.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.dockerignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitattributes +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.gitmodules +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.prettierignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.prettierrc.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.python-version +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.vscode/launch.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/.vscode/tasks.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/AGENTS.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/CITATION.cff +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/LICENSE +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/action.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/actions/run/example.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/.claude-plugin/plugin.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/conventions/SKILL.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/options.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/package-lock.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/popup.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-128.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-16.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-32.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit-48.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/icons/calkit.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/public/manifest.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/build-content.mjs +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/package-manifest.mjs +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/store-screenshots.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/scripts/watch.mjs +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/background/index.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/github.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/overleaf.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/content/references.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/api.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/auth.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/calkit-yaml.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/calkit-yaml.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/detect.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/detect.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hub-url.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hubs.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/hubs.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/latex.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/latex.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/lifecycle.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/messages.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/messages.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/pickers.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/storage.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/types.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/ui.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/core/ui.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/options/options.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/popup/popup.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/popup/popup.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/src/viewer/viewer.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/tsconfig.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/viewer.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vite.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vite.content.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/browser-ext/vitest.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/__main__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/calc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/check.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/check.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/delete.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/describe.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/dev.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/hub.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/import_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/latex.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/list.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/main/xr.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/new.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/office.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/scheduler.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/sync.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/cli/update.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/conda.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/datasets.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dependencies.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/detect.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/docker.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/dvc/zip.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/environments.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/fs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/github.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/gui.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/hub.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/install.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/invenio.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/julia.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyter.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/jupyterlab/routes.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/remoteEntry.ac9035764d5b2adbb542.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/latex.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/licenses.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/magics.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/matlab.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/io.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/iteration.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/notebooks.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/office.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/ops.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/overleaf.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/releases.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/Dockerfile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/base.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/devcontainer.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/check-envs.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/post-create.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/post-start.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/devcontainer/scripts/update-content.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/github-actions/example.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/extensions.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/resources/vscode/settings.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/schema.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/server.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_lock.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_subprojects.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/main/test_xr.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_delete.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_describe.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_hub.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_scheduler.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_sync.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/cli/test_update.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/dvc/test_zip.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/conftest.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_dependencies.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_detect.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_docker.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_docs_references.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_environments.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_fs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_hub.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_install.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_julia.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_keyring_windows.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_licenses.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_overleaf.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_releases.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_resources.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_schema.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/tests/test_workspace.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/calkit/workspace.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/CNAME +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/acknowledgements.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/ai-tools.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/apps.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/browser-ext/index.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/browser-ext/privacy.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/calculations.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/cli-reference.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/cloud-integration.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/datasets.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/environments.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/examples.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/governance.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/help.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hpc.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hub/index.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/hub/self-hosting.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/caltech.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/pipeline.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/schmidt-sciences.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/index.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/installation.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/jupyterlab.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/latex.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/local-server.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/overleaf.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/index.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/questions.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/quickstart.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/references.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/releases.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/reproducibility.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/requirements.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/schemas/calkit.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/subprojects.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/ai-agents.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/index.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/office.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/tutorials/vscode-slurm-notebook.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/docs/version-control.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/flake.lock +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/flake.nix +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.env.example +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.gitattributes +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/.vscode/launch.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/LICENSE +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/Makefile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/.python-version +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/Dockerfile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/Makefile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/alembic.ini +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/README +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/env.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/script.py.mako +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/.keep +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/deps.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/main.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/accounts.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/datasets.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/feature_votes.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/login.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/misc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/orgs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/dvc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/fs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/projects/releases.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/references.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/api/routes/users.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/arxiv.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/client.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/db.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/dvc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/new_account.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/project_invitation.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/release_share.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/reset_password.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/build/test_email.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/new_account.mjml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/project_invitation.mjml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/release_share.mjml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/reset_password.mjml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/email-templates/src/test_email.mjml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/git.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/github.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/main.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/messaging.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/mixpanel.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/projects.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/models/releases.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/orgs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/pdftext.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/projects.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/security.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/storage.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/stripe.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/subscriptions.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_dvc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_fs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_feature_votes.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_login.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_misc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_releases.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/api/routes/test_users.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/conftest.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_arxiv.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_client.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_core.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_db.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_dvc.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_git.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_pdftext.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_projects.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_users.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/tests/test_version.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/users.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/version.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/zenodo.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/app/zotero.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/pyproject.toml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/backend-pre-start.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/create-initial-data.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/format.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/generate-client.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/lint.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/rotate-fernet-secrets.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/scripts/test.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/backend/tests-start.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/alloy/config.alloy +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/dashboards/dashboards.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/dashboards/fastapi.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/grafana/provisioning/datasources/datasources.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/loki/loki.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/config/prometheus/prometheus.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.override.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.traefik.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docker-compose.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/database-migrations.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/deployment.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/docs/dev/development.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.dockerignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/.nvmrc +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/Dockerfile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/Makefile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/biome.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/index.html +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/modify-openapi-operationids.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/nginx-backend-not-found.conf +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/nginx.conf +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/openapi-ts.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/package-lock.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/playwright.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/c-to-the-k.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/calkit-no-bg.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/calkit.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/fastapi-logo.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/favicon.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/assets/images/kdot.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/LICENSE-busytex +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex.wasm +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex_pipeline.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/public/tex/busytex_worker.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/scripts/download-tex-engine.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/client.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/index.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/types.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client/utils.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/client.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/auth.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/bodySerializer.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/params.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/pathSerializer.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/queryKeySerializer.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/serverSentEvents.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/types.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/client/core/utils.gen.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Admin/AddUser.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Admin/EditUser.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ActionsMenu.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ClearableInput.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/CodeEditorPane.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/CommentsPanel.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/DeleteAlert.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/GlobalSearch.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/LoadingSpinner.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Mermaid.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Navbar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotBuiltAlert.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotFound.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/NotificationBell.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PageMenu.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PdfCanvas.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/RefPicker.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Sidebar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Tooltip.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/Topbar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Common/UserMenu.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Datasets/DatasetFromExisting.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Datasets/UploadDataset.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Environments/ViewEnvironment.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/FigureFromExisting.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/FigureView.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Figures/UploadFigure.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/EditFileInfo.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/FileContent.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/FileEditorModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/SelectedItemInfo.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Files/UploadFile.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/AddPath.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/DiscardChanges.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/IgnorePath.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/NewStage.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Local/SaveFiles.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Notebooks/NotebookView.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Orgs/AddMember.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Orgs/NewOrg.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Presentations/PresentationView.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/AddCollaborator.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CloneProject.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CreateIssue.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/CreateQuestion.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/EditProject.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/HelpContent.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/InviteLinks.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/NewProject.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/ProjectShowcase.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Projects/ProjectStatus.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/ImportOverleaf.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/LatexEditor.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/NewPublication.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/PdfAnnotator.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Publications/PublicationView.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/EditReferenceItemModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/FileViewModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/LabelExistingReferences.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/NewReferencesCollection.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ReferenceItemModal.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/NewRelease.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/PathPicker.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleaseViewer.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ReleasesTable.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/ShareDialog.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/Releases/releaseSort.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/Appearance.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/ChangePassword.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/NewToken.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/PickSubscription.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/Subscription.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UserInformation.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/components/UserSettings/UserTokens.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useAuth.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/hooks/useCustomToast.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/analytics.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/analytics.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/api.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/api.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/auth.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/auth.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/bibtex.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/bibtex.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/core.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/errors.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/github.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/github.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/google.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/keyboard.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexCompiler.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.mapPaths.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/latexProject.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/layout.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/pipelineYaml.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/pipelineYaml.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/releases.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/staleChunks.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/staleChunks.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/strings.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/strings.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/zenodo.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/lib/zotero.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/main.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/__root.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/$appName.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/index.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/$accountName/index.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/admin.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/datasets.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/index.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/learn.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/orgs.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/projects.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout/settings.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/_layout.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/google.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/zenodo.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/auth/zotero.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/checkout.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/join/$token.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/login/device.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/login/index.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/recover-password.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/reset-password.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/routes/signup.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/theme.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/src/vite-env.d.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/auth.setup.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/figures-pagination.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/login.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/reset-password.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/user-settings.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/mailcatcher.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/random.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tests/utils/user.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tsconfig.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/tsconfig.node.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/vite.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/frontend/vitest.config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/build-push.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/build.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/deploy.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/pem-to-env.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/test-local.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/scripts/test.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/Dockerfile +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/hub/texmf-proxy/proxy.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/.yarnrc.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/babel.config.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/install.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/jest.config.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/schema/plugin.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/calkit-config.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/feature-flags.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/icons.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/index.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/io-tracker.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/pipeline-state.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/queryClient.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/request.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/base.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/cell-output-marker.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/environment-editor.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/environment-selector.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/index.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/index.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/style/sidebar.css +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/tsconfig.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/tsconfig.test.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/jupyterlab-ext/yarn.lock +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/mkdocs.yml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/pyproject.toml +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/generate-docs-references.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/install.ps1 +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/install.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/list-changes.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/sync-docs.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/scripts/sync-resources.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-params.ipynb +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/pipeline.ipynb +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/script.py +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/test/test-log.log +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/uv.lock +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/.gitignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/.vscodeignore +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/LICENSE +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/README.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/changelog-notes.md +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/images/calkit-icon.svg +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/images/calkit-no-bg.png +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/package-lock.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/package.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/schemas/calkit.json +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/scripts/gen-changelog.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/scripts/set-proposed-api.js +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/environments.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/figures/core.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/figures/view.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/notebooks.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/pipeline/core.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/sidebar.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/environments.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/figures.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/notebooks.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/pipeline.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/test/sidebar.test.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/src/types.ts +0 -0
- {calkit_python-0.44.0 → calkit_python-0.44.1}/vscode-ext/tsconfig.json +0 -0
|
@@ -27,6 +27,15 @@ This guide will help you get started.
|
|
|
27
27
|
- [Miniforge](https://conda-forge.org/download/)
|
|
28
28
|
- [uv](https://docs.astral.sh/uv/getting-started/installation/)
|
|
29
29
|
- [Pixi](https://pixi.sh/latest/)
|
|
30
|
+
1. **Create the virtual environment:**
|
|
31
|
+
```bash
|
|
32
|
+
uv sync --all-packages
|
|
33
|
+
```
|
|
34
|
+
This repo is a uv workspace: the hub backend is a member, and both it
|
|
35
|
+
and the `calkit` package share a single `.venv` at the repo root.
|
|
36
|
+
Always pass `--all-packages`, since a bare `uv sync` installs only one
|
|
37
|
+
member and uninstalls the other's dependencies, leaving either the
|
|
38
|
+
`calkit` CLI or the hub backend unable to import its dependencies.
|
|
30
39
|
1. **Run tests** to ensure everything is working:
|
|
31
40
|
```bash
|
|
32
41
|
uv run pytest
|
|
@@ -6,7 +6,10 @@ help: ## Show this help.
|
|
|
6
6
|
.PHONY: install
|
|
7
7
|
install: ## Create the project's virtual environment.
|
|
8
8
|
@echo "🚀 Creating virtual environment"
|
|
9
|
-
|
|
9
|
+
# --all-packages, since a bare `uv sync` would install only this
|
|
10
|
+
# package and uninstall the hub backend's dependencies from the
|
|
11
|
+
# workspace's single shared .venv
|
|
12
|
+
@uv sync --all-packages
|
|
10
13
|
|
|
11
14
|
.PHONY: dev
|
|
12
15
|
dev: ## Start up the hub containers for development.
|
|
@@ -57,8 +60,8 @@ sync-docs: schema ## Sync documentation content from docs/*.md into README.md.
|
|
|
57
60
|
@echo "🚀 Syncing documentation"
|
|
58
61
|
@uv run python scripts/sync-docs.py
|
|
59
62
|
|
|
60
|
-
.PHONY:
|
|
61
|
-
|
|
63
|
+
.PHONY: unreleased
|
|
64
|
+
unreleased: ## List each product's commits since its last release.
|
|
62
65
|
@uv run python scripts/list-changes.py
|
|
63
66
|
|
|
64
67
|
.PHONY: sync-resources
|
|
@@ -13,6 +13,12 @@ from git.exc import InvalidGitRepositoryError
|
|
|
13
13
|
|
|
14
14
|
__all__ = ["InvalidGitRepositoryError", "get_repo"]
|
|
15
15
|
|
|
16
|
+
# Marks the block of exemptions ensure_path_is_not_filtered maintains, so
|
|
17
|
+
# it's clear in a file Calkit shares with whatever installed the filter.
|
|
18
|
+
CALKIT_ATTRIBUTES_COMMENT = (
|
|
19
|
+
"# Added by Calkit: pipeline outputs must be committed unfiltered"
|
|
20
|
+
)
|
|
21
|
+
|
|
16
22
|
|
|
17
23
|
def get_repo(path: str | None = None) -> git.Repo:
|
|
18
24
|
"""Return a git.Repo for ``path`` (or cwd), searching parent dirs.
|
|
@@ -460,6 +466,106 @@ def ensure_dvc_pointer_is_not_ignored(repo, path: str) -> None:
|
|
|
460
466
|
f.write(exception + "\n")
|
|
461
467
|
|
|
462
468
|
|
|
469
|
+
def get_filter_driver(repo: git.Repo, path: str | PathLike) -> str | None:
|
|
470
|
+
"""The name of the clean/smudge filter Git applies to ``path``, if any.
|
|
471
|
+
|
|
472
|
+
Asks Git rather than reading attributes files, since a filter can be
|
|
473
|
+
declared in any of several places with different precedence---most
|
|
474
|
+
relevantly ``$GIT_DIR/info/attributes``, where ``nbstripout --install``
|
|
475
|
+
puts it, which is per-clone and never committed.
|
|
476
|
+
"""
|
|
477
|
+
path = Path(path).as_posix()
|
|
478
|
+
try:
|
|
479
|
+
# -z gives NUL-separated <path> <attr> <value> triples, so a path
|
|
480
|
+
# containing ": " can't be mistaken for a field separator.
|
|
481
|
+
out = repo.git.check_attr("-z", "filter", "--", path)
|
|
482
|
+
except git.GitCommandError as e:
|
|
483
|
+
warnings.warn(
|
|
484
|
+
f"Failed to check Git attributes for {path}: {e}", stacklevel=2
|
|
485
|
+
)
|
|
486
|
+
return None
|
|
487
|
+
fields = out.split("\0")
|
|
488
|
+
if len(fields) < 3:
|
|
489
|
+
return None
|
|
490
|
+
value = fields[2]
|
|
491
|
+
# Git reports these two when no driver applies; anything else names one.
|
|
492
|
+
if value in ("unspecified", "unset"):
|
|
493
|
+
return None
|
|
494
|
+
return value
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
def ensure_path_is_not_filtered(
|
|
498
|
+
repo: git.Repo, path: str | PathLike
|
|
499
|
+
) -> bool | None:
|
|
500
|
+
"""Ensure Git stores ``path`` byte-for-byte, applying no clean filter.
|
|
501
|
+
|
|
502
|
+
A clean filter rewrites content on its way into Git while leaving the
|
|
503
|
+
working tree alone, and Git compares the filtered forms, so the committed
|
|
504
|
+
bytes can differ from the file on disk with nothing showing up as
|
|
505
|
+
modified. For a pipeline output that is fatal: DVC hashes the working
|
|
506
|
+
tree file, so anything reading the repository instead---the Calkit hub,
|
|
507
|
+
a fresh clone, a collaborator---sees a hash that disagrees with
|
|
508
|
+
``dvc.lock`` and reports the stage stale forever. ``nbstripout`` does
|
|
509
|
+
exactly this to notebooks.
|
|
510
|
+
|
|
511
|
+
The exemption is written to ``$GIT_DIR/info/attributes`` because that
|
|
512
|
+
file outranks every other source of attributes, including the
|
|
513
|
+
``.gitattributes`` and the ``$GIT_DIR/info/attributes`` line
|
|
514
|
+
``nbstripout --install`` writes. Returns True if a rule was added, None
|
|
515
|
+
if the path was already unfiltered.
|
|
516
|
+
"""
|
|
517
|
+
path = Path(path).as_posix()
|
|
518
|
+
if get_filter_driver(repo, path) is None:
|
|
519
|
+
return
|
|
520
|
+
attributes_path = os.path.join(repo.git_dir, "info", "attributes")
|
|
521
|
+
# Quoted only when it has to be: an unquoted pattern is what a reader
|
|
522
|
+
# expects, and Git only needs the quotes for whitespace.
|
|
523
|
+
pattern = f'"{path}"' if any(c.isspace() for c in path) else path
|
|
524
|
+
# ``-filter`` unsets the attribute rather than leaving it unspecified, so
|
|
525
|
+
# no lower-precedence rule can put a driver back.
|
|
526
|
+
rule = f"{pattern} -filter"
|
|
527
|
+
existing_lines = []
|
|
528
|
+
if os.path.isfile(attributes_path):
|
|
529
|
+
with open(attributes_path, "r", encoding="utf-8") as f:
|
|
530
|
+
existing_lines = f.read().splitlines()
|
|
531
|
+
# Within one attributes file the last matching line wins, so the rule goes
|
|
532
|
+
# at the end. If it's already in there, a filter still applying means
|
|
533
|
+
# something was appended after it -- another `nbstripout --install`, most
|
|
534
|
+
# likely -- and moving ours back to the end is what fixes that. Dropping
|
|
535
|
+
# the old copy first keeps the file from growing a duplicate each time.
|
|
536
|
+
lines = [line for line in existing_lines if line != rule]
|
|
537
|
+
if CALKIT_ATTRIBUTES_COMMENT not in lines:
|
|
538
|
+
lines.append(CALKIT_ATTRIBUTES_COMMENT)
|
|
539
|
+
lines.append(rule)
|
|
540
|
+
os.makedirs(os.path.dirname(attributes_path), exist_ok=True)
|
|
541
|
+
with open(attributes_path, "w", encoding="utf-8") as f:
|
|
542
|
+
f.write("\n".join(lines) + "\n")
|
|
543
|
+
# Nothing higher-precedence than this file should exist, but a filter that
|
|
544
|
+
# survives the rewrite would otherwise strip content silently on the next
|
|
545
|
+
# commit, so say so rather than reporting success.
|
|
546
|
+
if get_filter_driver(repo, path) is not None:
|
|
547
|
+
warnings.warn(
|
|
548
|
+
f"{path} is still filtered by Git despite an exemption in "
|
|
549
|
+
f"{attributes_path}",
|
|
550
|
+
stacklevel=2,
|
|
551
|
+
)
|
|
552
|
+
return
|
|
553
|
+
# The rule alone doesn't fix what's already committed: Git trusts the
|
|
554
|
+
# index's cached stat info, so an unchanged file is never re-read and the
|
|
555
|
+
# filtered blob stays. Renormalizing re-hashes it through the new
|
|
556
|
+
# attributes, staging the real content so the next commit repairs the
|
|
557
|
+
# repository rather than waiting for the stage to run again.
|
|
558
|
+
if ls_files(repo, "--", path):
|
|
559
|
+
try:
|
|
560
|
+
repo.git.add("--renormalize", "--", path)
|
|
561
|
+
except git.GitCommandError as e:
|
|
562
|
+
warnings.warn(
|
|
563
|
+
f"Failed to renormalize {path} after unfiltering it: {e}",
|
|
564
|
+
stacklevel=2,
|
|
565
|
+
)
|
|
566
|
+
return True
|
|
567
|
+
|
|
568
|
+
|
|
463
569
|
def resolve_ref(repo: git.Repo, ref: str) -> str | None:
|
|
464
570
|
"""Return the commit a revision points at, fetching if it isn't here.
|
|
465
571
|
|
|
@@ -1582,6 +1582,16 @@ def to_dvc(
|
|
|
1582
1582
|
calkit.git.ensure_path_is_ignored(repo, path=out.path)
|
|
1583
1583
|
elif isinstance(out, PathOutput) and out.storage == "git":
|
|
1584
1584
|
calkit.git.ensure_path_is_not_ignored(repo, path=out.path)
|
|
1585
|
+
if out.path.endswith(".ipynb"):
|
|
1586
|
+
# A notebook stage's storage is declared here, in the
|
|
1587
|
+
# pipeline, so a clean filter installed in the clone
|
|
1588
|
+
# (nbstripout) must not overrule it by stripping the
|
|
1589
|
+
# outputs back out on the way into Git. That would
|
|
1590
|
+
# commit bytes that don't match what DVC hashed, with
|
|
1591
|
+
# nothing showing as modified locally.
|
|
1592
|
+
calkit.git.ensure_path_is_not_filtered(
|
|
1593
|
+
repo, path=out.path
|
|
1594
|
+
)
|
|
1585
1595
|
elif isinstance(out, PathOutput) and out.storage == "dvc-zip":
|
|
1586
1596
|
calkit.git.ensure_path_is_ignored(repo, path=out.path)
|
|
1587
1597
|
calkit.dvc.zip.add(out.path, is_stage_output=True)
|
|
@@ -515,3 +515,79 @@ def test_check_branch_is_current(tmp_dir):
|
|
|
515
515
|
msg = calkit.git.check_branch_is_current(repo)
|
|
516
516
|
assert msg is not None
|
|
517
517
|
assert f"'origin/{default_branch}'" in msg
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
def _install_stripping_filter(repo: git.Repo, pattern: str = "*.ipynb"):
|
|
521
|
+
"""Configure a clean filter that mangles content, the way nbstripout does.
|
|
522
|
+
|
|
523
|
+
A stand-in for nbstripout so the test doesn't need it installed: what
|
|
524
|
+
matters is that Git rewrites content on its way into the object store,
|
|
525
|
+
not what the rewrite is.
|
|
526
|
+
"""
|
|
527
|
+
# Spelled with no quotes, spaces, or backslashes in any token: Git runs
|
|
528
|
+
# filter commands through a shell---its bundled sh on Windows---which eats
|
|
529
|
+
# the backslashes in a Windows interpreter path, leaving a command that
|
|
530
|
+
# never runs. Marked required so that failure is a loud error instead of a
|
|
531
|
+
# silent pass-through that looks like the content was never filtered.
|
|
532
|
+
repo.git.config("filter.stripper.clean", "sed -e s/.*/stripped/")
|
|
533
|
+
repo.git.config("filter.stripper.required", "true")
|
|
534
|
+
attributes = Path(repo.git_dir) / "info" / "attributes"
|
|
535
|
+
attributes.parent.mkdir(parents=True, exist_ok=True)
|
|
536
|
+
attributes.write_text(f"{pattern} filter=stripper\n")
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def test_get_filter_driver(tmp_dir):
|
|
540
|
+
repo = git.Repo.init()
|
|
541
|
+
Path("nb.ipynb").write_text("real content")
|
|
542
|
+
assert calkit.git.get_filter_driver(repo, "nb.ipynb") is None
|
|
543
|
+
_install_stripping_filter(repo)
|
|
544
|
+
assert calkit.git.get_filter_driver(repo, "nb.ipynb") == "stripper"
|
|
545
|
+
# A path the pattern doesn't cover is untouched.
|
|
546
|
+
assert calkit.git.get_filter_driver(repo, "notes.txt") is None
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
def test_ensure_path_is_not_filtered(tmp_dir):
|
|
550
|
+
repo = git.Repo.init()
|
|
551
|
+
repo.git.config("user.email", "test@example.com")
|
|
552
|
+
repo.git.config("user.name", "Test")
|
|
553
|
+
path = ".calkit/notebooks/executed/nb.ipynb"
|
|
554
|
+
Path(path).parent.mkdir(parents=True)
|
|
555
|
+
Path(path).write_text("real content")
|
|
556
|
+
Path("other.ipynb").write_text("real content")
|
|
557
|
+
attributes = Path(repo.git_dir) / "info" / "attributes"
|
|
558
|
+
# A repo with no filters is left completely alone.
|
|
559
|
+
assert calkit.git.ensure_path_is_not_filtered(repo, path=path) is None
|
|
560
|
+
assert not attributes.exists()
|
|
561
|
+
_install_stripping_filter(repo)
|
|
562
|
+
repo.git.add("-A")
|
|
563
|
+
repo.git.commit("-m", "Init")
|
|
564
|
+
# The committed bytes don't match the working tree, and nothing shows as
|
|
565
|
+
# modified, which is what makes this worth guarding against.
|
|
566
|
+
assert repo.git.show(f"HEAD:{path}") == "stripped", (
|
|
567
|
+
"the stand-in clean filter didn't run, so there's nothing here for "
|
|
568
|
+
"the exemption to fix; check that its command works on this platform"
|
|
569
|
+
)
|
|
570
|
+
assert not repo.git.status("--porcelain")
|
|
571
|
+
assert calkit.git.ensure_path_is_not_filtered(repo, path=path)
|
|
572
|
+
assert calkit.git.get_filter_driver(repo, path) is None
|
|
573
|
+
# The exemption is scoped: everything else stays filtered.
|
|
574
|
+
assert calkit.git.get_filter_driver(repo, "other.ipynb") == "stripper"
|
|
575
|
+
# Already-committed content is repaired rather than left for the next run.
|
|
576
|
+
repo.git.commit("-m", "Unfilter")
|
|
577
|
+
assert repo.git.show(f"HEAD:{path}") == "real content"
|
|
578
|
+
assert repo.git.show("HEAD:other.ipynb") == "stripped"
|
|
579
|
+
# Idempotent: a second call neither re-adds the rule nor errors.
|
|
580
|
+
before = attributes.read_text()
|
|
581
|
+
assert calkit.git.ensure_path_is_not_filtered(repo, path=path) is None
|
|
582
|
+
assert attributes.read_text() == before
|
|
583
|
+
# Re-installing the filter appends a pattern after our exemption, and the
|
|
584
|
+
# last matching line in the file wins, so the notebook is filtered again.
|
|
585
|
+
with open(attributes, "a", encoding="utf-8") as f:
|
|
586
|
+
f.write("*.ipynb filter=stripper\n")
|
|
587
|
+
assert calkit.git.get_filter_driver(repo, path) == "stripper"
|
|
588
|
+
# Moving the exemption back to the end restores it, without the file
|
|
589
|
+
# accumulating a copy of the rule per call.
|
|
590
|
+
assert calkit.git.ensure_path_is_not_filtered(repo, path=path)
|
|
591
|
+
assert calkit.git.get_filter_driver(repo, path) is None
|
|
592
|
+
rule = f"{path} -filter"
|
|
593
|
+
assert attributes.read_text().splitlines().count(rule) == 1
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
4
|
import subprocess
|
|
5
|
+
import sys
|
|
5
6
|
import warnings
|
|
7
|
+
from pathlib import Path
|
|
6
8
|
|
|
7
9
|
import git
|
|
8
10
|
import pytest
|
|
9
11
|
|
|
10
12
|
import calkit
|
|
13
|
+
import calkit.git
|
|
14
|
+
import calkit.notebooks
|
|
11
15
|
import calkit.pipeline
|
|
12
16
|
from calkit.environments import get_env_lock_fpath
|
|
13
17
|
from calkit.models.pipeline import LatexStage
|
|
@@ -2203,7 +2207,6 @@ def test_get_concurrent_scheduler_stages():
|
|
|
2203
2207
|
|
|
2204
2208
|
|
|
2205
2209
|
def test_get_matrix_item_targets(tmp_dir):
|
|
2206
|
-
import sys
|
|
2207
2210
|
|
|
2208
2211
|
subprocess.check_call(["git", "init"])
|
|
2209
2212
|
subprocess.check_call([sys.executable, "-m", "dvc", "init"])
|
|
@@ -2471,3 +2474,49 @@ def test_ref_resolver_is_not_shared_between_projects(tmp_dir):
|
|
|
2471
2474
|
finally:
|
|
2472
2475
|
os.chdir(cwd)
|
|
2473
2476
|
assert shas["one"] != shas["two"]
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
def test_to_dvc_unfilters_notebook_outputs(tmp_dir):
|
|
2480
|
+
# Notebook output storage is declared in the pipeline, so a filter
|
|
2481
|
+
# installed in the clone (nbstripout) must not overrule it by stripping
|
|
2482
|
+
# the outputs back out on the way into Git---that commits bytes that
|
|
2483
|
+
# disagree with what DVC hashed, with nothing showing as modified locally.
|
|
2484
|
+
repo = git.Repo.init()
|
|
2485
|
+
# Spelled with no quotes, spaces, or backslashes in any token: Git runs
|
|
2486
|
+
# filter commands through a shell---its bundled sh on Windows---which eats
|
|
2487
|
+
# the backslashes in a Windows interpreter path, leaving a command that
|
|
2488
|
+
# never runs. Marked required so that failure is a loud error instead of a
|
|
2489
|
+
# silent pass-through that looks like the content was never filtered.
|
|
2490
|
+
repo.git.config("filter.stripper.clean", "sed -e s/.*/stripped/")
|
|
2491
|
+
repo.git.config("filter.stripper.required", "true")
|
|
2492
|
+
attributes = Path(repo.git_dir) / "info" / "attributes"
|
|
2493
|
+
attributes.parent.mkdir(parents=True, exist_ok=True)
|
|
2494
|
+
attributes.write_text("*.ipynb filter=stripper\n")
|
|
2495
|
+
nb_path = "notebooks/my-notebook.ipynb"
|
|
2496
|
+
os.makedirs("notebooks")
|
|
2497
|
+
with open(nb_path, "w") as f:
|
|
2498
|
+
f.write("{}")
|
|
2499
|
+
ck_info = {
|
|
2500
|
+
"environments": {
|
|
2501
|
+
"py": {"kind": "uv-venv", "path": "requirements.txt"},
|
|
2502
|
+
},
|
|
2503
|
+
"pipeline": {
|
|
2504
|
+
"stages": {
|
|
2505
|
+
"notebook-1": {
|
|
2506
|
+
"kind": "jupyter-notebook",
|
|
2507
|
+
"environment": "py",
|
|
2508
|
+
"notebook_path": nb_path,
|
|
2509
|
+
"html_storage": "git",
|
|
2510
|
+
"executed_ipynb_storage": "git",
|
|
2511
|
+
},
|
|
2512
|
+
}
|
|
2513
|
+
},
|
|
2514
|
+
}
|
|
2515
|
+
calkit.pipeline.to_dvc(ck_info=ck_info, write=True)
|
|
2516
|
+
executed_path = calkit.notebooks.get_executed_notebook_path(
|
|
2517
|
+
notebook_path=nb_path, to="notebook", as_posix=True
|
|
2518
|
+
)
|
|
2519
|
+
assert calkit.git.get_filter_driver(repo, executed_path) is None
|
|
2520
|
+
# Scoped to what the pipeline declares: the source notebook a user cleans
|
|
2521
|
+
# on purpose keeps its filter.
|
|
2522
|
+
assert calkit.git.get_filter_driver(repo, nb_path) == "stripper"
|
|
@@ -138,6 +138,18 @@ tables:
|
|
|
138
138
|
|
|
139
139
|
Like the other artifacts, a table is identified by its path.
|
|
140
140
|
|
|
141
|
+
On the Calkit Hub, tables show up on the project's Tables page, where each
|
|
142
|
+
one can be searched, sorted, and linked to by cell.
|
|
143
|
+
Declaring a table isn't required to appear there: CSV, TSV, and JSON Lines
|
|
144
|
+
files in a `tables` or `results` directory are detected automatically, as are
|
|
145
|
+
LaTeX tables written to their own file, i.e., a `.tex` file in those
|
|
146
|
+
directories holding a bare `tabular` environment, or one wrapped in a
|
|
147
|
+
`standalone` document.
|
|
148
|
+
A paper that happens to contain a table is not detected as one, since a table
|
|
149
|
+
pulled out of a larger document is a fragment of that document rather than an
|
|
150
|
+
artifact of its own.
|
|
151
|
+
Declaring one only adds a title and description of your own.
|
|
152
|
+
|
|
141
153
|
Columns aren't described yet, and neither is a symbolic name for a table.
|
|
142
154
|
Both are expected to arrive alongside symbol metadata, which is where
|
|
143
155
|
per-column types and units belong.
|
|
@@ -36,6 +36,10 @@ we can focus on three rules:
|
|
|
36
36
|
Git commits.
|
|
37
37
|
This can be done by installing `nbstripout` and running
|
|
38
38
|
`nbstripout --install` in the project directory.
|
|
39
|
+
Note that the notebooks Calkit generates as pipeline outputs (those under
|
|
40
|
+
`.calkit/notebooks`) are exempted from stripping automatically when the
|
|
41
|
+
pipeline is compiled, since their outputs are the pipeline's results and
|
|
42
|
+
stripping them would commit content that doesn't match what DVC hashed.
|
|
39
43
|
1. A notebook must run in one of the project's [environments](environments.md).
|
|
40
44
|
1. Notebooks should be incorporated into the project's
|
|
41
45
|
[pipeline](pipeline/index.md).
|
|
@@ -76,6 +76,86 @@ If instead you are running the built image (plain `docker compose up`, not
|
|
|
76
76
|
`make dev`), the frontend is a static Nginx build and will keep serving old code
|
|
77
77
|
until you rebuild it: `docker compose build frontend`.
|
|
78
78
|
|
|
79
|
+
### A frontend request fails with a network error
|
|
80
|
+
|
|
81
|
+
A network error (as opposed to an HTTP status) means nothing answered, so the
|
|
82
|
+
backend is most likely not running. Check with `docker compose ps -a`: if
|
|
83
|
+
`backend` shows `exited (1)`, read `docker compose logs backend` for the
|
|
84
|
+
traceback.
|
|
85
|
+
|
|
86
|
+
An `ImportError` or `ModuleNotFoundError` from `calkit` there — for example
|
|
87
|
+
`cannot import name 'MARIMO_DETECT_N_BYTES' from 'calkit.notebooks'` — usually
|
|
88
|
+
means the container's virtual environment is stale, not that the code is wrong.
|
|
89
|
+
In dev, `docker-compose.override.yml` mounts the repo at `/app` and masks the
|
|
90
|
+
image's environment with an **anonymous volume** at `/app/.venv`. That volume
|
|
91
|
+
outlives `docker compose build` and `up --force-recreate`, so an environment
|
|
92
|
+
created months ago keeps shadowing the working tree no matter how often the
|
|
93
|
+
image is rebuilt. Renew it explicitly:
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
docker compose build backend
|
|
97
|
+
docker compose up -d --renew-anon-volumes backend
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`--renew-anon-volumes` only discards anonymous volumes; named volumes such as
|
|
101
|
+
the database keep their data. Reach for this after merging a branch that changes
|
|
102
|
+
dependencies or moves code between calkit-python and the backend.
|
|
103
|
+
|
|
104
|
+
Once the volume is current, calkit-python is installed as an editable workspace
|
|
105
|
+
member resolving to `/app/calkit`, so host edits to it are live and this should
|
|
106
|
+
not recur until the environment itself needs to change.
|
|
107
|
+
|
|
108
|
+
### Postgres errors that a column does not exist
|
|
109
|
+
|
|
110
|
+
A log full of `ERROR: column project.<something> does not exist` means the
|
|
111
|
+
schema is behind the models: migrations did not run. Check why in the prestart
|
|
112
|
+
logs, not the backend's:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
docker compose logs prestart
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
`Can't locate revision identified by '<rev>'` means `alembic_version` points at
|
|
119
|
+
a revision that isn't in `backend/app/alembic/versions/`, so alembic refuses to
|
|
120
|
+
run anything and the schema freezes wherever it was. This comes from having
|
|
121
|
+
migrated the dev database while on a branch whose migration was later squashed,
|
|
122
|
+
renamed, or abandoned — the revision can be gone from git entirely, so don't
|
|
123
|
+
assume it is recoverable (`git log --all -S '<rev>'` to find out).
|
|
124
|
+
|
|
125
|
+
The reliable fix on a dev database is to recreate it, since all data is seeded
|
|
126
|
+
by `create-initial-data.py` anyway:
|
|
127
|
+
|
|
128
|
+
```sh
|
|
129
|
+
docker compose down db
|
|
130
|
+
docker volume rm calkit_app-db-data
|
|
131
|
+
docker compose up -d db backend
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Repairing in place is possible but fiddly: the abandoned branch has usually
|
|
135
|
+
applied *some* of its DDL, so the database is genuinely half-migrated rather
|
|
136
|
+
than merely mis-stamped. It takes `alembic stamp <rev> --purge` (plain `stamp`
|
|
137
|
+
also reads the current revision and hits the same error) to a revision known to
|
|
138
|
+
predate the divergence, then hand-applying whatever the next migration would
|
|
139
|
+
have done that isn't already there, then `alembic upgrade head`.
|
|
140
|
+
|
|
141
|
+
Either way, verify the result against a from-scratch migration rather than
|
|
142
|
+
trusting the stamp — build a scratch database, migrate it from empty, and diff:
|
|
143
|
+
|
|
144
|
+
```sh
|
|
145
|
+
docker compose exec db psql -U postgres -d postgres -c "CREATE DATABASE app_check"
|
|
146
|
+
docker compose exec -e POSTGRES_DB=app_check backend alembic upgrade head
|
|
147
|
+
docker compose exec db pg_dump -U postgres -d app --schema-only > /tmp/a.sql
|
|
148
|
+
docker compose exec db pg_dump -U postgres -d app_check --schema-only > /tmp/b.sql
|
|
149
|
+
diff /tmp/a.sql /tmp/b.sql
|
|
150
|
+
docker compose exec db psql -U postgres -d postgres -c "DROP DATABASE app_check"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Note that `alembic check` is not a clean signal here: it reports drift
|
|
154
|
+
(a missing `ck_account_name_lowercase` check constraint, some foreign-key
|
|
155
|
+
churn) even against a perfectly migrated database, because the models don't
|
|
156
|
+
declare those constraints. The from-scratch diff is what distinguishes real
|
|
157
|
+
divergence from that baseline noise.
|
|
158
|
+
|
|
79
159
|
## Common Patterns
|
|
80
160
|
|
|
81
161
|
### Modifying API Contracts
|
|
@@ -53,12 +53,20 @@ go there and install it.
|
|
|
53
53
|
|
|
54
54
|
The backend is a member of the repo's uv workspace, which installs
|
|
55
55
|
calkit-python from the working tree.
|
|
56
|
-
|
|
56
|
+
The workspace shares a single virtual environment at the repo root, so
|
|
57
|
+
install with `--all-packages`:
|
|
57
58
|
|
|
58
59
|
```console
|
|
59
|
-
$ uv sync
|
|
60
|
+
$ uv sync --all-packages
|
|
60
61
|
```
|
|
61
62
|
|
|
63
|
+
A bare `uv sync` installs only one workspace member and uninstalls the
|
|
64
|
+
other's dependencies, so running it here breaks the `calkit` CLI, and
|
|
65
|
+
running it at the repo root leaves the backend unable to start with
|
|
66
|
+
`ModuleNotFoundError` on packages like `mixpanel`.
|
|
67
|
+
Always pass `--all-packages`, in particular after merging a change that
|
|
68
|
+
touches dependencies.
|
|
69
|
+
|
|
62
70
|
Then you can start a shell session with the new environment (which lives at
|
|
63
71
|
the repo root) with:
|
|
64
72
|
|