calkit-python 0.49.0__tar.gz → 0.49.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.49.0 → calkit_python-0.49.1}/PKG-INFO +1 -1
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/__init__.py +2 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/check.py +12 -18
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/core.py +7 -17
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/list.py +67 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/main/core.py +7 -4
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/core.py +89 -60
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/dvc/core.py +2 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/environments.py +3 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/core.py +15 -3
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/requirements.py +40 -6
- calkit_python-0.49.0/calkit/dependencies.py → calkit_python-0.49.1/calkit/requirements.py +190 -65
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/main/test_core.py +3 -5
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_check.py +5 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_list.py +81 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/models/test_core.py +1 -1
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_environments.py +5 -1
- calkit_python-0.49.0/calkit/tests/test_dependencies.py → calkit_python-0.49.1/calkit/tests/test_requirements.py +171 -46
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_workspace.py +25 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/workspace.py +22 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/calkit-yaml.md +2 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/cli-reference.md +21 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/environments.md +22 -22
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/pipeline/index.md +77 -48
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/requirements.md +20 -23
- {calkit_python-0.49.0/vscode-ext → calkit_python-0.49.1/docs}/schemas/calkit.json +331 -3
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/core.py +7 -5
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/pipeline.py +58 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_pipeline.py +81 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Figures/FigureView.tsx +124 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/ProjectChecklist.tsx +16 -6
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/QuestionModal.tsx +202 -3
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routeTree.gen.ts +23 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/figures.tsx +1 -113
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/index.tsx +91 -108
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/questions.$questionNumber.tsx +7 -2
- calkit_python-0.49.1/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/questions.index.tsx +65 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout.tsx +12 -2
- {calkit_python-0.49.0 → calkit_python-0.49.1}/mkdocs.yml +1 -1
- {calkit_python-0.49.0/docs → calkit_python-0.49.1/vscode-ext}/schemas/calkit.json +331 -3
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.calkit/env-locks/tex/amd64.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.calkit/env-locks/tex/arm64.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.claude-plugin/marketplace.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.dockerignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.dvc/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.dvc/config +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.dvcignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.gitattributes +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.gitmodules +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.prettierignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.prettierrc.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.python-version +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.vscode/launch.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/.vscode/tasks.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/AGENTS.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/CITATION.cff +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/CONTRIBUTING.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/LICENSE +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/Makefile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/actions/run/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/actions/run/action.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/actions/run/example.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/.claude-plugin/plugin.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/build-paper-pipeline/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/check-questions/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/check-reproducibility/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/conventions/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/.python-version +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/Makefile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/main.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/pyproject.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/resources/icon.ico +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/resources/screenshot.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/tests/test_main.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/assistant/uv.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/options.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/package-lock.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/popup.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/icons/calkit-128.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/icons/calkit-16.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/icons/calkit-32.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/icons/calkit-48.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/icons/calkit.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/public/manifest.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/scripts/build-content.mjs +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/scripts/package-manifest.mjs +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/scripts/store-screenshots.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/scripts/watch.mjs +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/background/index.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/content/github.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/content/overleaf.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/content/references.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/api.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/auth.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/calkit-yaml.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/calkit-yaml.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/detect.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/detect.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/hub-url.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/hubs.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/hubs.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/latex.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/latex.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/lifecycle.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/messages.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/messages.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/pickers.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/storage.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/types.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/ui.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/core/ui.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/options/options.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/popup/popup.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/popup/popup.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/src/viewer/viewer.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/tsconfig.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/viewer.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/vite.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/vite.content.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/browser-ext/vitest.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/__main__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/calc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/delete.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/describe.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/dev.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/hub.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/import_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/latex.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/main/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/main/xr.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/new.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/office.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/scheduler.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/show.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/sync.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/cli/update.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/conda.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/conditions.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/datasets.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/detect.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/docker.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/docx.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/dvc/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/dvc/zip.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/fs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/git.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/github.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/gui.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/hub.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/install.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/invenio.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/julia.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/jupyter.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/jupyterlab/routes.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/schemas/calkit/package.json.orig +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/506.c34b070098184e33.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/57d13a7399cec3c5.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/616.528427eb54a4a0c0.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/740.6bf87276e9e5788a.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/899.f9b9f9bf705a6493.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/935.46ecc6bf99aa593a.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/remoteEntry.109a3a8379365e59.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/latex.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/licenses.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/magics.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/markdown.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/matlab.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/base.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/docx.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/io.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/iteration.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/notebooks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/office.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/ops.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/overleaf.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/procedures.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/provenance.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/questions.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/releases.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/reproducibility.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/base.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/devcontainer.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/scripts/check-envs.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/scripts/post-create.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/scripts/post-start.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/devcontainer/scripts/update-content.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/github-actions/example.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/vscode/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/vscode/extensions.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/resources/vscode/settings.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/schema.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/server.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/ieee-conference/paper.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/templates/latex/report/paper.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/main/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/main/test_lock.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/main/test_subprojects.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/main/test_xr.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_delete.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_describe.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_hub.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_notebooks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_scheduler.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_show.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_sync.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/cli/test_update.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/dvc/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/dvc/test_core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/dvc/test_zip.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/jupyterlab/conftest.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_conditions.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_detect.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_docker.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_docs_references.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_docx.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_fs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_git.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_hub.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_install.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_julia.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_keyring_windows.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_licenses.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_markdown.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_models.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_overleaf.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_procedures.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_provenance.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_questions.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_releases.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_reproducibility.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_resources.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_schema.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/tests/test_upgrade.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit/upgrade.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/.calkit/env-locks/clib/osx-arm64.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/.calkit/env-locks/pure/osx-arm64.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/.gitattributes +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/dvc.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/dvc.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/requirements-clib.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/requirements-pure.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/cli-build.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/docker-image-check.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/imports.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/ruamel-yaml-clib/clib.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/ruamel-yaml-clib/pure.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/results/ruamel-yaml-clib.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/scripts/compare-dvc-lock-parsing.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/scripts/parse-dvc-lock.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/scripts/time-cli-build.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/scripts/time-docker-image-check.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/decisions/scripts/time-imports.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/CNAME +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/acknowledgements.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/ai-tools.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/apps.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/browser-ext/index.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/browser-ext/privacy.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/calculations.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/cloud-integration.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/comparisons.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/datasets.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/dev/latex-word.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/examples.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/governance.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/help.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/hpc.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/hub/index.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/hub/self-hosting.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/caltech.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/latex-word-round-trip.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/pipeline.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/schmidt-sciences.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/index.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/installation.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/jupyterlab.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/latex.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/local-server.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/notebooks.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/one-pager/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/one-pager/2027-budget.csv +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/one-pager/main.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/one-pager/one-pager.lua +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/one-pager/template.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/overleaf.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/pipeline/markdown.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/privacy.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/provenance.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/questions.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/quickstart.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/references.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/releases.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/reproducibility.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/index.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/research_flow.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/simulator.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/simulator.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/simulator.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/roi/worker.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/subprojects.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/ai-agents.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/index.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/latex-word.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/office.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/runnable-readme.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/vscode-slurm-notebook.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/tutorials/writing-first.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/docs/version-control.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/dvc.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/dvc.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-authoring/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-authoring/authoring/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-authoring/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-variant/solution/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-variant/solution/make_design_report.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-variant/solution/solve.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/overlay-variant/tests/test_calkit.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/patch_variant.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/setup.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/harbor-tb-science/tamper.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.calkit/env-locks/py/osx-arm64.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.calkit/env-locks/py/win-64.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.calkit/env-locks/tex/amd64.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.calkit/env-locks/tex/arm64.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.dvc/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.dvc/config +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.dvcignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.gitattributes +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/dvc.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/dvc.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/figures/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/paper/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/paper/figures/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/paper/main.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/paper/methods.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/paper/refs.bib +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/requirements.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/latex-word/scripts/plot-wake.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/jl/Manifest.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/jl/Project.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/py/.python-version +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/py/pyproject.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/py/uv.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/.Rbuildignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/.Rprofile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/DESCRIPTION +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/renv/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/renv/activate.R +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/renv/settings.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.calkit/envs/r/renv.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.dvc/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.dvc/config +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.dvcignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/data/data.csv +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/data/data2.csv +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/dvc.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/dvc.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/figures/data2.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/figures/figure.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown/results/fit.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/.dvc/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/.dvc/config +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/.dvcignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/.python-version +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/dvc.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/dvc.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/figures/waves.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/pyproject.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/src/wavetools/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/markdown-python/uv.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/.dvc/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/.dvc/config +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/.dvcignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/calkit.yaml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/envs/plotting.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/scripts/plot.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/examples/multi-hpc/scripts/run.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/flake.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/flake.nix +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/.env.example +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/.gitattributes +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/.vscode/launch.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/AGENTS.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/LICENSE +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/Makefile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/.python-version +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/Makefile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/alembic.ini +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/README +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/env.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/script.py.mako +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/.keep +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/07c8236476c4_add_fields_to_usertoken.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/10a05eaedfbd_add_dataset_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/1546aa334cd5_make_project_description_nullable.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/1a31ce608336_add_cascade_delete_relationships.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/1fb6e38eb0e9_add_deviceauth_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/208e7457f3ba_add_title_to_project.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/2e7c25a00842_add_is_public_to_project.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/38e178698db2_update_subscription_model_to_use_plan_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/3b1e67e9c318_add_usertoken_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/4dac15c0282a_add_stripe_customer_id_to_user.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/4e1c917fcca4_add_status_columns_to_project_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/5ba89308431f_add_project_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/5d6f8217c890_add_subscriber_user_id_to_org_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/65b2d15cc702_add_github_username_field_to_user.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/697c3c1a8a27_add_git_repo_url_to_project.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/6f3a3afbea8b_add_number_field_to_question.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/7076d9b5c887_use_account_for_project_owner.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/71e1d1e69bbd_add_table_for_storing_user_github_tokens.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/799476973bce_add_created_ts_to_user_github_token_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/7cacee34034c_add_parent_child_relationship_to_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/97762605447f_add_onboarding_flags_and_feedback.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/9c0a54914c78_add_max_length_for_string_varchar_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/9c4f70636d73_add_fields_to_usertoken.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/a333fc5aa994_index_project_folders_synced_with_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/a4af19842927_create_table_to_store_user_zenodo_tokens.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/ab7816be480b_drop_items.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/ac622559475f_save_timestamps_for_github_token_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/af024967630d_lowercase_account_names.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/c1f9a3e27d48_consolidate_comment_tables.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/c46a78ba506c_add_created_column_to_account.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/c4e1d7a92b35_add_analytics_consent_to_user.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/c749b39072d3_add_figurecomment.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/c7c41c3f0d22_add_user_external_credential_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d01ce914143d_make_question_a_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d21ed1c9537e_add_zenodo_user_id_column_to_user.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d3a8021fb433_add_table_for_user_project_access.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d4e5f6a7b8c9_ghless_membership_and_invitations.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d6366015af35_add_discount_code_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/d98dd8ec85a3_edit_replace_id_integers_in_all_models_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/dcef842dee10_add_refreshtoken_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/e1b0fa2a6d34_backfill_external_credentials_from_legacy_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/e2412789c190_initialize_models.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/e6b898df78ed_mark_comments_moved_into_latex_source.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/e7671197c00b_add_account_table.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/ed74edb0a9e6_create_table_for_user_overleaf_token.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/edcabfca98df_add_subscription_and_org_membership_.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/f0e23e048b1b_add_fields_to_project.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/f3a9c1b7e240_add_releases_feature.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/f5ad6445ad03_enable_user_project_access_to_be_null.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/alembic/versions/f74a96172dbd_add_table_for_locking_project_files.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/deps.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/main.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/accounts.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/analytics.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/datasets.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/feedback.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/login.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/misc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/orgs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/activity.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/datasets.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/dvc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/figures.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/fs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/latex_comments.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/projects/releases.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/references.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/api/routes/users.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/arxiv.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/cache.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/client.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/db.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/dvc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/new_account.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/project_invitation.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/release_share.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/reset_password.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/test_email.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/build/verify_email.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/new_account.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/project_invitation.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/release_share.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/reset_password.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/test_email.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/email-templates/src/verify_email.mjml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/formatting.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/git.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/github.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/imports.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/index.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/main.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/messaging.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/mixpanel.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/models/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/models/core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/models/projects.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/models/releases.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/orgs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/pdftext.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/projects.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/security.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/storage.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/stripe.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/subscriptions.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tasks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/__init__.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_activity.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_datasets.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_dvc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_figure_upload.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_figures.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_fs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_latex_comments.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_misc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_overleaf_links.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_pipeline.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_publications.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_reference_items.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/projects/test_templates.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_analytics.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_feedback.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_login.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_misc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_orgs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_releases.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/api/routes/test_users.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/conftest.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_arxiv.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_cache.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_client.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_core.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_db.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_dvc.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_formatting.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_git.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_index.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_mixpanel.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_pdftext.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_projects.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_stripe.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_tasks.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_users.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/tests/test_version.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/thumbnails.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/users.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/version.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/warm.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/zenodo.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/app/zotero.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/prestart.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/pyproject.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/backend-pre-start.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/create-initial-data.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/delete-user.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/format.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/generate-client.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/lint.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/rotate-fernet-secrets.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/scripts/test.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/backend/tests-start.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/alloy/config.alloy +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/grafana/provisioning/dashboards/dashboards.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/grafana/provisioning/dashboards/fastapi.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/grafana/provisioning/dashboards/warm-queue.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/grafana/provisioning/datasources/datasources.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/loki/loki.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/config/prometheus/prometheus.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docker-compose.override.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docker-compose.traefik.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docker-compose.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docs/dev/database-migrations.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docs/dev/deployment.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/docs/dev/development.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/.dockerignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/.nvmrc +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/Makefile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/biome.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/index.html +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/modify-openapi-operationids.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/nginx-backend-not-found.conf +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/nginx.conf +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/openapi-ts.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/package-lock.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/playwright.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/c-to-the-k.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/calkit-no-bg.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/calkit.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/fastapi-logo.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/favicon.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/assets/images/kdot.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/LICENSE-busytex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/busytex.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/busytex.wasm +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/busytex_pipeline.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/public/tex/busytex_worker.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/scripts/download-tex-engine.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/client/client.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/client/index.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/client/types.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/client/utils.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/client.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/auth.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/bodySerializer.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/params.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/pathSerializer.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/queryKeySerializer.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/serverSentEvents.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/types.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/core/utils.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/index.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/schemas.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/sdk.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/client/types.gen.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Admin/AddUser.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Admin/EditUser.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Admin/EditUserSubscription.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Admin/FeatureVotesTable.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Admin/FeedbackTable.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ActionsMenu.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ArtifactCompareModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ClearableInput.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/CodeEditorPane.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/CommentsPanel.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ConnectGitHubPrompt.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ConnectZoteroPrompt.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/DeleteAlert.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/DiscardChangesDialog.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/FeatureVoteButton.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/FilterableSelect.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/GlobalSearch.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/HelpFeedback.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/InputsRow.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/LoadingSpinner.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Markdown.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Markdown.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Mermaid.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Navbar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/NoArtifactFound.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/NotBuiltAlert.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/NotFound.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/NotificationBell.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/OAuthButtons.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/PageMenu.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/PdfCanvas.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/PdfDocumentViewer.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/ProjectCommandPalette.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/RefPicker.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/SandboxedHtml.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/SandboxedHtml.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Sidebar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/SidebarItems.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/TexText.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/TexText.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Tooltip.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/Topbar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Common/UserMenu.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Datasets/BrowseDatasets.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Datasets/DataEntryGrid.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Datasets/DatasetViewer.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Datasets/NewDataset.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Environments/NewEnvironment.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Environments/ViewEnvironment.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Figures/FigureEditLauncher.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Figures/FigureEditor.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Figures/FigureFromExisting.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Figures/UploadFigure.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/EditFileInfo.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/FileContent.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/FileContent.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/FileEditorModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/SelectedItemInfo.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Files/UploadFile.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Local/AddPath.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Local/DiscardChanges.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Local/IgnorePath.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Local/NewStage.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Local/SaveFiles.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Notebooks/NotebookRunLauncher.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Notebooks/NotebookRunner.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Notebooks/NotebookView.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/AccountSetupCard.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/ChecklistCard.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/CommandBlock.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/FeaturedProjects.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/ReproAudit.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/ReproAudit.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Onboarding/StartPaths.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Orgs/AddMember.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Orgs/NewOrg.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Pipeline/PipelineEditorModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Pipeline/StageEditorModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Presentations/PresentationView.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/AddCollaborator.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/CloneProject.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/CreateIssue.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/CreateQuestion.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/EditProject.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/EditQuestion.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/HelpContent.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/InviteLinks.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/MakeProjectPublic.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/NewProjectModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/ProjectShowcase.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/ProjectStatus.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/RecentChanges.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Projects/RecentChanges.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/ImportOverleaf.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/ImportOverleaf.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/LatexEditor.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/NewPublication.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/PdfAnnotator.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/PublicationComponents.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/PublicationComponents.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Publications/PublicationView.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/DeleteReferenceItemDialog.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/DeleteReferencesCollectionDialog.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/EditReferenceItemModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/FileViewModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/ImportFromZoteroModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/LabelExistingReferences.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/NewReferencesCollection.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/ReferenceItemModal.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/References/ReferencesInfoPanel.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/ArtifactReleasesPanel.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/NewRelease.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/PathPicker.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/ReleasePdfAnnotator.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/ReleaseViewer.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/ReleasesTable.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/ShareDialog.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Releases/releaseSort.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Tables/TableThumbnail.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Tables/TableView.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/Tables/TableView.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/Appearance.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/ChangePassword.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/ConnectedAccounts.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/DeleteAccount.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/DeleteConfirmation.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/NewToken.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/OnboardingChecklists.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/PickSubscription.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/Privacy.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/Subscription.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/UpdateOverleafToken.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/UserInformation.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/components/UserSettings/UserTokens.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useAuth.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useCustomToast.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useOnboarding.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useProject.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useRefreshProject.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useSubmitOnCmdEnter.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/hooks/useSubmitOnCmdEnter.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/analytics.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/analytics.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/api.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/api.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/auth.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/auth.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/bibtex.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/bibtex.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/core.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/csv.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/csv.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/environments.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/environments.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/errors.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/figureScript.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/figureScript.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/fuzzy.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/fuzzy.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/github.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/github.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/google.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/keyboard.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexComments.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexComments.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexCompiler.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexProject.mapPaths.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexProject.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/latexProject.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/layout.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/notebook.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/notebook.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/onboarding.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/onboarding.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/pipelineYaml.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/pipelineYaml.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/projectFiles.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/provenance.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/provenance.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/pyodide.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/pyodide.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/releases.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/staleChunks.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/staleChunks.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/strings.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/strings.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/tables.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/tables.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/tex.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/tex.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/zenodo.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/lib/zotero.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/main.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/__root.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/app.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/$appName.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps/index.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/apps.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/collaborators.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/datasets.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/environments.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/files.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/history.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/local.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/notebooks.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/pipeline.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/presentations.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/publications.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/references.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/releases.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/software.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/_layout/tables.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/$projectName/releases/$releaseName.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/$accountName/index.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/admin.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/datasets.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/index.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/new.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/orgs.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/projects.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout/settings.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/_layout.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/auth/google.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/auth/zenodo.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/auth/zotero.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/checkout.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/join/$token.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/login/device.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/login/index.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/recover-password.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/reset-password.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/signup.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/routes/verify-email.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/theme.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/src/vite-env.d.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/auth.setup.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/figures-pagination.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/login.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/reset-password.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/user-settings.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/utils/mailcatcher.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/utils/random.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tests/utils/user.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tsconfig.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/tsconfig.node.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/vite.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/frontend/vitest.config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/build-push.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/build.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/deploy.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/pem-to-env.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/test-local.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/scripts/test.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/texmf-proxy/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/texmf-proxy/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/hub/texmf-proxy/proxy.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/Dockerfile +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/entrypoint.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/packages.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/scan-arxiv.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/images/latex/sizes.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/.yarnrc.yml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/babel.config.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/install.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/jest.config.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/schema/plugin.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/calkit-config.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/cell-output-marker.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/sidebar.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/feature-flags.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/file-browser-menu.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/icons.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/index.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/io-tracker.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/pipeline-state.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/queryClient.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/request.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/base.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/cell-output-marker.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/environment-editor.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/environment-selector.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/index.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/index.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/notebook-toolbar.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/style/sidebar.css +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/tsconfig.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/tsconfig.test.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/ui-tests/yarn.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/jupyterlab-ext/yarn.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/pyproject.toml +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/references.bib +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/results/2027-budget.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/results/latex-word-round-trip/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/results/latex-word-round-trip.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/results/research-flow.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/budget.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/check-clib-marker.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/generate-docs-references.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/install.ps1 +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/install.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/latex-word-round-trip.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/list-changes.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/make-ck9.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/plot-latex-word-round-trip.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/plot-research-flow.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/research-flow.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/sync-docs.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/sync-resources.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/scripts/update-latex-image-tag.sh +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/accepted.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/export.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/libreoffice-accepted.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/libreoffice-returned.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/main.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/make-libreoffice-fixtures.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/methods.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/resolved.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/returned.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/docx/word-import.docx +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/latex-comments/intro.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/latex-comments/main.pdf +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/latex-comments/main.tex +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/nb-params.ipynb +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/pipeline.ipynb +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/script.py +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/test/test-log.log +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/uv.lock +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/.gitignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/.vscodeignore +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/LICENSE +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/README.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/changelog-notes.md +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/images/calkit-icon.svg +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/images/calkit-no-bg.png +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/package-lock.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/package.json +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/scripts/gen-changelog.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/scripts/set-proposed-api.js +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/environments.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/extension.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/figures/core.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/figures/view.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/latex/core.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/latex/review.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/markdown/core.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/markdown/view.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/notebooks.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/pipeline/core.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/sidebar.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/environments.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/figures.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/latex.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/markdown.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/notebooks.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/pipeline.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/sidebar.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/test/yaml.test.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/types.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/src/yaml.ts +0 -0
- {calkit_python-0.49.0 → calkit_python-0.49.1}/vscode-ext/tsconfig.json +0 -0
|
@@ -13,7 +13,6 @@ if TYPE_CHECKING:
|
|
|
13
13
|
conda,
|
|
14
14
|
config,
|
|
15
15
|
datasets,
|
|
16
|
-
dependencies,
|
|
17
16
|
detect,
|
|
18
17
|
docker,
|
|
19
18
|
docx,
|
|
@@ -44,6 +43,7 @@ if TYPE_CHECKING:
|
|
|
44
43
|
questions,
|
|
45
44
|
releases,
|
|
46
45
|
reproducibility,
|
|
46
|
+
requirements,
|
|
47
47
|
resources,
|
|
48
48
|
schema,
|
|
49
49
|
server,
|
|
@@ -60,7 +60,6 @@ _SUBMODULES = {
|
|
|
60
60
|
"conda",
|
|
61
61
|
"config",
|
|
62
62
|
"datasets",
|
|
63
|
-
"dependencies",
|
|
64
63
|
"detect",
|
|
65
64
|
"docker",
|
|
66
65
|
"docx",
|
|
@@ -91,6 +90,7 @@ _SUBMODULES = {
|
|
|
91
90
|
"questions",
|
|
92
91
|
"releases",
|
|
93
92
|
"reproducibility",
|
|
93
|
+
"requirements",
|
|
94
94
|
"resources",
|
|
95
95
|
"schema",
|
|
96
96
|
"server",
|
|
@@ -2199,7 +2199,7 @@ def check_project_requirements(
|
|
|
2199
2199
|
typer.echo("Checking project requirements")
|
|
2200
2200
|
dotenv.load_dotenv(dotenv_path=".env", verbose=verbose)
|
|
2201
2201
|
if no_cache:
|
|
2202
|
-
calkit.
|
|
2202
|
+
calkit.requirements.cache_clear()
|
|
2203
2203
|
try:
|
|
2204
2204
|
calkit.check_requirements(use_cache=not no_cache)
|
|
2205
2205
|
except Exception as e:
|
|
@@ -2240,7 +2240,9 @@ def check_stage_runs() -> None:
|
|
|
2240
2240
|
recorded = stage_runs.get(name)
|
|
2241
2241
|
if not isinstance(recorded, dict):
|
|
2242
2242
|
problems.append(f"Stage '{name}' has no recorded run")
|
|
2243
|
-
elif recorded.get("
|
|
2243
|
+
elif recorded.get("dvc_lock_hash") != calkit.dvc.stage_lock_hash(
|
|
2244
|
+
locked
|
|
2245
|
+
):
|
|
2244
2246
|
problems.append(
|
|
2245
2247
|
f"Stage '{name}' has changed in dvc.lock since its last "
|
|
2246
2248
|
"recorded run"
|
|
@@ -2263,28 +2265,20 @@ def check_env_vars(
|
|
|
2263
2265
|
] = False,
|
|
2264
2266
|
) -> None:
|
|
2265
2267
|
"""Check that the project's required environmental variables exist."""
|
|
2268
|
+
from calkit.core import _normalize_requirement
|
|
2269
|
+
|
|
2266
2270
|
typer.echo("Checking project environmental variables")
|
|
2267
2271
|
dotenv.load_dotenv(dotenv_path=".env")
|
|
2268
2272
|
ck_info = calkit.load_calkit_info()
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2273
|
+
for raw in calkit.get_requirements(ck_info):
|
|
2274
|
+
req = _normalize_requirement(raw)
|
|
2275
|
+
if req["kind"] != "env-var":
|
|
2276
|
+
continue
|
|
2277
|
+
name = req["name"]
|
|
2272
2278
|
if verbose:
|
|
2273
2279
|
typer.echo(f"Checking for environmental variable '{name}'")
|
|
2274
|
-
# Pull the dep's attrs to honor any per-var default.
|
|
2275
|
-
attrs: dict = {}
|
|
2276
|
-
for dep in deps:
|
|
2277
|
-
if isinstance(dep, dict) and dep.get("name") == name:
|
|
2278
|
-
attrs = dep
|
|
2279
|
-
break
|
|
2280
|
-
if isinstance(dep, dict) and list(dep.keys()) == [name]:
|
|
2281
|
-
attrs = dep[name] or {}
|
|
2282
|
-
break
|
|
2283
2280
|
if name not in os.environ:
|
|
2284
|
-
|
|
2285
|
-
value = calkit.dependencies.prompt_and_store_env_var(
|
|
2286
|
-
name, default=attrs.get("default")
|
|
2287
|
-
)
|
|
2281
|
+
value = calkit.requirements.prompt_for_env_var_req(req)
|
|
2288
2282
|
if value is None:
|
|
2289
2283
|
raise_error(f"No value provided for '{name}'")
|
|
2290
2284
|
message = "✅ All set!"
|
|
@@ -6,7 +6,7 @@ import os
|
|
|
6
6
|
import re
|
|
7
7
|
import subprocess
|
|
8
8
|
from enum import Enum
|
|
9
|
-
from typing import
|
|
9
|
+
from typing import Any, NoReturn
|
|
10
10
|
|
|
11
11
|
import typer
|
|
12
12
|
from typer.core import TyperCommand, TyperGroup
|
|
@@ -28,10 +28,6 @@ class EnvDefaultsModeChoice(str, Enum):
|
|
|
28
28
|
merge = "merge"
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
if TYPE_CHECKING:
|
|
32
|
-
import click
|
|
33
|
-
|
|
34
|
-
|
|
35
31
|
class AliasGroup(TyperGroup):
|
|
36
32
|
"""TyperGroup that resolves command aliases defined with '|' in the name."""
|
|
37
33
|
|
|
@@ -87,21 +83,19 @@ class OptionalValueCommand(TyperCommand):
|
|
|
87
83
|
|
|
88
84
|
|
|
89
85
|
def complete_stage_names(
|
|
90
|
-
ctx:
|
|
91
|
-
|
|
92
|
-
incomplete: str,
|
|
93
|
-
) -> list:
|
|
86
|
+
ctx: object, param: object, incomplete: str
|
|
87
|
+
) -> list[str]:
|
|
94
88
|
"""Return pipeline stage names for shell tab-completion.
|
|
95
89
|
|
|
96
90
|
``ctx`` and ``param`` are part of the Click completion-callback signature
|
|
97
|
-
but are unused here, so they accept
|
|
98
|
-
tests
|
|
91
|
+
but are unused here, so they accept anything, e.g., ``None`` when called
|
|
92
|
+
directly in tests. Typer bundles its own Click, so its types would only
|
|
93
|
+
tie this to that copy.
|
|
99
94
|
"""
|
|
100
95
|
if not os.path.isfile("calkit.yaml"):
|
|
101
96
|
return []
|
|
102
97
|
try:
|
|
103
98
|
import ruamel.yaml
|
|
104
|
-
from click.shell_completion import CompletionItem
|
|
105
99
|
|
|
106
100
|
ryaml = ruamel.yaml.YAML()
|
|
107
101
|
with open("calkit.yaml") as f:
|
|
@@ -122,11 +116,7 @@ def complete_stage_names(
|
|
|
122
116
|
sp_stages = sp_info.get("pipeline", {}).get("stages", {})
|
|
123
117
|
for stage in sp_stages:
|
|
124
118
|
candidates.append(f"{sp_name}:{stage}")
|
|
125
|
-
return [
|
|
126
|
-
CompletionItem(name)
|
|
127
|
-
for name in candidates
|
|
128
|
-
if name.startswith(incomplete)
|
|
129
|
-
]
|
|
119
|
+
return [name for name in candidates if name.startswith(incomplete)]
|
|
130
120
|
except Exception:
|
|
131
121
|
return []
|
|
132
122
|
|
|
@@ -394,6 +394,73 @@ def list_environments(
|
|
|
394
394
|
typer.echo(f" {k}: {v}")
|
|
395
395
|
|
|
396
396
|
|
|
397
|
+
@list_app.command(name="requirements|reqs")
|
|
398
|
+
def list_requirements(
|
|
399
|
+
json_output: Annotated[
|
|
400
|
+
bool, typer.Option("--json", help="Output result as JSON.")
|
|
401
|
+
] = False,
|
|
402
|
+
) -> None:
|
|
403
|
+
"""List what a machine needs to run the project.
|
|
404
|
+
|
|
405
|
+
That's the project's requirements, then those of each environment and
|
|
406
|
+
stage, each with where it was declared. Nothing is checked; use
|
|
407
|
+
'calkit check reqs' for that.
|
|
408
|
+
"""
|
|
409
|
+
from calkit.core import _normalize_requirement
|
|
410
|
+
|
|
411
|
+
ck_info = calkit.load_calkit_info()
|
|
412
|
+
sources: list[tuple[str, list]] = [
|
|
413
|
+
("project", calkit.get_requirements(ck_info))
|
|
414
|
+
]
|
|
415
|
+
for name, env in (ck_info.get("environments") or {}).items():
|
|
416
|
+
if not isinstance(env, dict):
|
|
417
|
+
continue
|
|
418
|
+
if env.get("requirements"):
|
|
419
|
+
sources.append((f"environment '{name}'", env["requirements"]))
|
|
420
|
+
# An option a switch defines in place is named after its position
|
|
421
|
+
for n, option in enumerate(env.get("switch") or [], start=1):
|
|
422
|
+
use = option.get("use") if isinstance(option, dict) else None
|
|
423
|
+
if isinstance(use, dict) and use.get("requirements"):
|
|
424
|
+
sources.append(
|
|
425
|
+
(f"environment '{name}.{n}'", use["requirements"])
|
|
426
|
+
)
|
|
427
|
+
stages = (ck_info.get("pipeline") or {}).get("stages") or {}
|
|
428
|
+
for name, stage in stages.items():
|
|
429
|
+
if isinstance(stage, dict) and stage.get("requirements"):
|
|
430
|
+
sources.append((f"stage '{name}'", stage["requirements"]))
|
|
431
|
+
result = []
|
|
432
|
+
for source, reqs in sources:
|
|
433
|
+
for raw in reqs:
|
|
434
|
+
try:
|
|
435
|
+
req = _normalize_requirement(raw)
|
|
436
|
+
except ValueError as e:
|
|
437
|
+
raise_error(f"In {source}: {e}")
|
|
438
|
+
result.append({"source": source, **req})
|
|
439
|
+
if json_output:
|
|
440
|
+
echo_json(result)
|
|
441
|
+
return
|
|
442
|
+
property_kinds = calkit.system_property_requirement_kinds()
|
|
443
|
+
last_source = None
|
|
444
|
+
for req in result:
|
|
445
|
+
req = dict(req)
|
|
446
|
+
source = req.pop("source")
|
|
447
|
+
if source != last_source:
|
|
448
|
+
if last_source is not None:
|
|
449
|
+
typer.echo()
|
|
450
|
+
typer.echo(source[0].upper() + source[1:] + ":")
|
|
451
|
+
last_source = source
|
|
452
|
+
name = req.pop("name")
|
|
453
|
+
kind = req.pop("kind")
|
|
454
|
+
# A property requirement's name is its kind
|
|
455
|
+
typer.echo(
|
|
456
|
+
f" - {name}" if kind in property_kinds else f" - {name} ({kind})"
|
|
457
|
+
)
|
|
458
|
+
for k, v in req.items():
|
|
459
|
+
if isinstance(v, str):
|
|
460
|
+
v = " ".join(v.split())
|
|
461
|
+
typer.echo(f" {k}: {v}")
|
|
462
|
+
|
|
463
|
+
|
|
397
464
|
@list_app.command(name="templates")
|
|
398
465
|
def list_templates(
|
|
399
466
|
kind: Annotated[
|
|
@@ -211,7 +211,7 @@ def _exec_with_version(version_spec: str) -> None:
|
|
|
211
211
|
Strips ``--use-version`` from ``sys.argv`` before re-invoking so the
|
|
212
212
|
child process doesn't loop. Requires ``uv`` to be available on PATH.
|
|
213
213
|
"""
|
|
214
|
-
from calkit.
|
|
214
|
+
from calkit.requirements import _format_uvx_from
|
|
215
215
|
|
|
216
216
|
if shutil.which("uvx") is None:
|
|
217
217
|
raise_error(
|
|
@@ -548,7 +548,7 @@ def get_status(
|
|
|
548
548
|
# than enforces, so anything still unset is a warning: it must not stop
|
|
549
549
|
# the rest of the status from being shown.
|
|
550
550
|
if ck_info:
|
|
551
|
-
missing_env_vars = calkit.
|
|
551
|
+
missing_env_vars = calkit.requirements.resolve_env_var_deps(ck_info)
|
|
552
552
|
if missing_env_vars:
|
|
553
553
|
warn(
|
|
554
554
|
"Missing environmental variable(s): "
|
|
@@ -2082,10 +2082,13 @@ def _tell_hub_we_pushed(targets: list[str], git_args: list[str]) -> None:
|
|
|
2082
2082
|
# The remote git actually pushed to: whatever was named on the
|
|
2083
2083
|
# command line, else the branch's own upstream, else origin.
|
|
2084
2084
|
named = [a for a in git_args if not a.startswith("-")]
|
|
2085
|
+
upstream = repo.active_branch.tracking_branch()
|
|
2085
2086
|
if named:
|
|
2086
2087
|
body["remote"] = named[0]
|
|
2088
|
+
elif upstream is not None:
|
|
2089
|
+
body["remote"] = upstream.remote_name
|
|
2087
2090
|
else:
|
|
2088
|
-
body["remote"] =
|
|
2091
|
+
body["remote"] = "origin"
|
|
2089
2092
|
except Exception:
|
|
2090
2093
|
body.setdefault("remote", "origin")
|
|
2091
2094
|
try:
|
|
@@ -3673,7 +3676,7 @@ def run(
|
|
|
3673
3676
|
if lock_dir not in lock_stages:
|
|
3674
3677
|
lock_stages[lock_dir] = calkit.dvc.read_lock_stages(lock_dir)
|
|
3675
3678
|
if isinstance(lock_stages[lock_dir].get(lock_name), dict):
|
|
3676
|
-
entry["
|
|
3679
|
+
entry["dvc_lock_hash"] = calkit.dvc.stage_lock_hash(
|
|
3677
3680
|
lock_stages[lock_dir][lock_name]
|
|
3678
3681
|
)
|
|
3679
3682
|
entry["calkit_version"] = system_info.get("calkit_version")
|
|
@@ -790,7 +790,9 @@ def _normalize_requirement(req) -> dict:
|
|
|
790
790
|
required there. A ``setup`` requirement may omit it, since a single
|
|
791
791
|
anonymous setup step is common and forcing users to invent a name adds
|
|
792
792
|
friction; a stable one is synthesized from a short hash of
|
|
793
|
-
``check_command``.
|
|
793
|
+
``check_command``. An ``aws-credentials`` requirement may omit it too,
|
|
794
|
+
and is named after its profile and account. A machine-property
|
|
795
|
+
requirement has no name at all --
|
|
794
796
|
``kind: cpu-count`` already says everything there is to say about which
|
|
795
797
|
property it constrains -- so the kind is used as the name in messages.
|
|
796
798
|
"""
|
|
@@ -802,12 +804,11 @@ def _normalize_requirement(req) -> dict:
|
|
|
802
804
|
"'kind', e.g., '- kind: env-var' with 'name: TOKEN'"
|
|
803
805
|
)
|
|
804
806
|
|
|
805
|
-
|
|
806
|
-
if isinstance(dep, str):
|
|
807
|
+
if isinstance(req, str):
|
|
807
808
|
# Split on the first version operator so a string like
|
|
808
809
|
# ``calkit>=0.38`` produces both a clean name and a version spec
|
|
809
810
|
# the caller can validate.
|
|
810
|
-
m = re.match(r"^([A-Za-z0-9_.\-]+)(.*)$",
|
|
811
|
+
m = re.match(r"^([A-Za-z0-9_.\-]+)(.*)$", req.strip())
|
|
811
812
|
if m is None:
|
|
812
813
|
raise malformed()
|
|
813
814
|
out: dict = {"name": m.group(1), "kind": "app"}
|
|
@@ -815,14 +816,14 @@ def _normalize_requirement(req) -> dict:
|
|
|
815
816
|
if spec:
|
|
816
817
|
out["version_spec"] = spec
|
|
817
818
|
return out
|
|
818
|
-
if not isinstance(
|
|
819
|
+
if not isinstance(req, dict):
|
|
819
820
|
raise malformed()
|
|
820
|
-
keys = list(
|
|
821
|
+
keys = list(req.keys())
|
|
821
822
|
# Flat form with explicit kind: only requires ``name`` for kinds where
|
|
822
823
|
# name is the identity (app, env-var). Setup requirements may omit it,
|
|
823
824
|
# and property requirements have none to give.
|
|
824
825
|
if "kind" in keys:
|
|
825
|
-
out = dict(
|
|
826
|
+
out = dict(req)
|
|
826
827
|
if "name" not in out:
|
|
827
828
|
kind = out["kind"]
|
|
828
829
|
if kind in system_property_requirement_kinds():
|
|
@@ -833,18 +834,27 @@ def _normalize_requirement(req) -> dict:
|
|
|
833
834
|
check_command.encode("utf-8")
|
|
834
835
|
).hexdigest()[:8]
|
|
835
836
|
out["name"] = f"setup-{short}"
|
|
837
|
+
elif kind == "aws-credentials":
|
|
838
|
+
out["name"] = "-".join(
|
|
839
|
+
["aws-credentials"]
|
|
840
|
+
+ [
|
|
841
|
+
str(out[key])
|
|
842
|
+
for key in ("profile", "account_id")
|
|
843
|
+
if out.get(key)
|
|
844
|
+
]
|
|
845
|
+
)
|
|
836
846
|
else:
|
|
837
|
-
raise ValueError(f"Requirement missing required 'name': {
|
|
847
|
+
raise ValueError(f"Requirement missing required 'name': {req}")
|
|
838
848
|
return out
|
|
839
849
|
if "name" in keys:
|
|
840
|
-
out = dict(
|
|
850
|
+
out = dict(req)
|
|
841
851
|
out.setdefault("kind", "app")
|
|
842
852
|
return out
|
|
843
853
|
if len(keys) != 1:
|
|
844
854
|
raise malformed()
|
|
845
855
|
# Single-key form: {name: {kind: ..., ...}}
|
|
846
856
|
name = keys[0]
|
|
847
|
-
attrs =
|
|
857
|
+
attrs = req[name] or {}
|
|
848
858
|
if not isinstance(attrs, dict):
|
|
849
859
|
raise malformed()
|
|
850
860
|
out = dict(attrs)
|
|
@@ -1118,24 +1128,26 @@ def check_requirements(
|
|
|
1118
1128
|
machine it names.
|
|
1119
1129
|
|
|
1120
1130
|
``setup`` requirements are verified via
|
|
1121
|
-
:func:`calkit.
|
|
1131
|
+
:func:`calkit.requirements.check_setup_dep`, which runs the
|
|
1122
1132
|
``check_command`` and -- on an interactive TTY -- optionally runs the
|
|
1123
1133
|
declared ``setup_command`` after asking the user. Non-interactive
|
|
1124
1134
|
failures abort with the fix-it command printed for the user to run.
|
|
1135
|
+
``aws-credentials`` requirements are checked the same way, by
|
|
1136
|
+
:func:`calkit.requirements.check_aws_credentials_req`.
|
|
1125
1137
|
"""
|
|
1126
1138
|
if requirements is not None:
|
|
1127
1139
|
# An environment's own list is checked exactly as declared: it
|
|
1128
1140
|
# describes a machine that runs stages, which is a smaller claim
|
|
1129
1141
|
# than being where the project lives.
|
|
1130
|
-
|
|
1142
|
+
reqs = list(requirements)
|
|
1131
1143
|
else:
|
|
1132
1144
|
if ck_info is None:
|
|
1133
1145
|
ck_info = load_calkit_info(wdir=wdir)
|
|
1134
|
-
|
|
1146
|
+
reqs = get_requirements(ck_info)
|
|
1135
1147
|
# Git is how a project exists at all, so the host needs it whether
|
|
1136
1148
|
# or not anyone wrote it down.
|
|
1137
|
-
if "git" not in
|
|
1138
|
-
|
|
1149
|
+
if "git" not in reqs:
|
|
1150
|
+
reqs.append("git")
|
|
1139
1151
|
# Resolve TTY interactivity once so a single per-call answer drives
|
|
1140
1152
|
# every prompt (env-var, app installer, setup step).
|
|
1141
1153
|
if interactive is None:
|
|
@@ -1145,7 +1157,8 @@ def check_requirements(
|
|
|
1145
1157
|
# before we start installing things on it, then env-vars (some
|
|
1146
1158
|
# installers and setup commands read from them), then apps (env
|
|
1147
1159
|
# managers like pixi / uv need to exist before setup steps that run
|
|
1148
|
-
# inside an env), then setup steps
|
|
1160
|
+
# inside an env), then setup steps, then AWS credentials, which need
|
|
1161
|
+
# the AWS CLI and may be set up by a step. The setup-step
|
|
1149
1162
|
# ``check_command`` typically wraps ``calkit xenv``, which validates
|
|
1150
1163
|
# its own environment, so we don't need a separate env-check phase.
|
|
1151
1164
|
property_kinds = system_property_requirement_kinds()
|
|
@@ -1154,19 +1167,20 @@ def check_requirements(
|
|
|
1154
1167
|
"env-var": [],
|
|
1155
1168
|
"app": [],
|
|
1156
1169
|
"setup": [],
|
|
1170
|
+
"aws-credentials": [],
|
|
1157
1171
|
}
|
|
1158
|
-
for
|
|
1159
|
-
|
|
1160
|
-
kind =
|
|
1172
|
+
for raw in reqs:
|
|
1173
|
+
req = _normalize_requirement(raw)
|
|
1174
|
+
kind = req["kind"]
|
|
1161
1175
|
if kind in property_kinds:
|
|
1162
|
-
buckets["_property"].append(
|
|
1176
|
+
buckets["_property"].append(req)
|
|
1163
1177
|
elif kind not in buckets:
|
|
1164
1178
|
# Unknown / legacy kinds (e.g., ``calkit-config``) fall through
|
|
1165
1179
|
# to ``check_dep_exists`` in original order so we don't change
|
|
1166
1180
|
# behavior for them silently.
|
|
1167
|
-
buckets.setdefault("_other", []).append(
|
|
1181
|
+
buckets.setdefault("_other", []).append(req)
|
|
1168
1182
|
else:
|
|
1169
|
-
buckets[kind].append(
|
|
1183
|
+
buckets[kind].append(req)
|
|
1170
1184
|
if buckets["_property"]:
|
|
1171
1185
|
# Read the machine only when something asks about it; describing a
|
|
1172
1186
|
# system shells out for a version from every package manager it can
|
|
@@ -1177,43 +1191,45 @@ def check_requirements(
|
|
|
1177
1191
|
if system_info is not None
|
|
1178
1192
|
else get_machine_properties()
|
|
1179
1193
|
)
|
|
1180
|
-
for
|
|
1181
|
-
check_property_requirement(
|
|
1182
|
-
for
|
|
1183
|
-
|
|
1184
|
-
if
|
|
1194
|
+
for req in buckets["_property"]:
|
|
1195
|
+
check_property_requirement(req, info, described_as=described_as)
|
|
1196
|
+
for req in buckets["env-var"]:
|
|
1197
|
+
req_name = req["name"]
|
|
1198
|
+
if req_name in os.environ:
|
|
1185
1199
|
continue
|
|
1186
1200
|
# On a TTY, prompt the user and persist to .env so the very next
|
|
1187
1201
|
# ``calkit run`` works without a separate setup step. Non-TTY
|
|
1188
1202
|
# (CI) falls through to the legacy "not found" abort.
|
|
1189
1203
|
if interactive:
|
|
1190
|
-
from calkit.
|
|
1204
|
+
from calkit.requirements import prompt_for_env_var_req
|
|
1191
1205
|
|
|
1192
|
-
|
|
1193
|
-
value = prompt_and_store_env_var(
|
|
1194
|
-
dep_name, default=dep.get("default")
|
|
1195
|
-
)
|
|
1196
|
-
if value is not None:
|
|
1206
|
+
if prompt_for_env_var_req(req) is not None:
|
|
1197
1207
|
continue
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1208
|
+
msg = f"env-var '{req_name}' not found"
|
|
1209
|
+
if req.get("setup_command"):
|
|
1210
|
+
msg += (
|
|
1211
|
+
f"; get a value with '{req['setup_command']}' and set it "
|
|
1212
|
+
f"with 'calkit set-env-var {req_name} <value>'"
|
|
1213
|
+
)
|
|
1214
|
+
raise ValueError(msg)
|
|
1215
|
+
for req in buckets["app"]:
|
|
1216
|
+
req_name = req["name"]
|
|
1201
1217
|
# The ``calkit`` app is always satisfied by the running process,
|
|
1202
1218
|
# but a declared ``version_spec`` (e.g. ``calkit>=0.38``) is
|
|
1203
1219
|
# checked against the installed version so projects can pin a
|
|
1204
1220
|
# minimum CLI without writing a custom setup step.
|
|
1205
|
-
if
|
|
1206
|
-
spec =
|
|
1221
|
+
if req_name == "calkit":
|
|
1222
|
+
spec = req.get("version_spec")
|
|
1207
1223
|
if spec:
|
|
1208
|
-
from calkit.
|
|
1224
|
+
from calkit.requirements import check_calkit_version
|
|
1209
1225
|
|
|
1210
1226
|
check_calkit_version(spec)
|
|
1211
1227
|
continue
|
|
1212
|
-
spec =
|
|
1213
|
-
if check_dep_exists(
|
|
1228
|
+
spec = req.get("version_spec")
|
|
1229
|
+
if check_dep_exists(req_name, "app", system_info=system_info):
|
|
1214
1230
|
if spec:
|
|
1215
1231
|
check_app_version(
|
|
1216
|
-
|
|
1232
|
+
req_name,
|
|
1217
1233
|
spec,
|
|
1218
1234
|
system_info=system_info,
|
|
1219
1235
|
described_as=described_as,
|
|
@@ -1222,14 +1238,14 @@ def check_requirements(
|
|
|
1222
1238
|
# Offer the registered native installer when we have one.
|
|
1223
1239
|
from calkit import install as _install
|
|
1224
1240
|
|
|
1225
|
-
if _install.get_installer(
|
|
1226
|
-
print(f"App '{
|
|
1241
|
+
if _install.get_installer(req_name) is not None:
|
|
1242
|
+
print(f"App '{req_name}' is not installed.")
|
|
1227
1243
|
if _install.prompt_and_install(
|
|
1228
|
-
|
|
1229
|
-
) and check_dep_exists(
|
|
1244
|
+
req_name, interactive=interactive
|
|
1245
|
+
) and check_dep_exists(req_name, "app", system_info=system_info):
|
|
1230
1246
|
if spec:
|
|
1231
1247
|
check_app_version(
|
|
1232
|
-
|
|
1248
|
+
req_name,
|
|
1233
1249
|
spec,
|
|
1234
1250
|
system_info=system_info,
|
|
1235
1251
|
described_as=described_as,
|
|
@@ -1237,28 +1253,41 @@ def check_requirements(
|
|
|
1237
1253
|
continue
|
|
1238
1254
|
# Some apps have no installer here but a known way in, e.g., a
|
|
1239
1255
|
# system package manager on Linux
|
|
1240
|
-
hint = _install.get_unsupported_message(
|
|
1256
|
+
hint = _install.get_unsupported_message(req_name)
|
|
1241
1257
|
raise ValueError(
|
|
1242
|
-
f"app '{
|
|
1258
|
+
f"app '{req_name}' not found on {described_as}"
|
|
1243
1259
|
+ (f"; {hint}" if hint else "")
|
|
1244
1260
|
)
|
|
1245
|
-
for
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
if not check_dep_exists(
|
|
1249
|
-
raise ValueError(f"{
|
|
1250
|
-
for
|
|
1251
|
-
from calkit.
|
|
1261
|
+
for req in buckets.get("_other", []):
|
|
1262
|
+
req_name = req["name"]
|
|
1263
|
+
req_kind = req["kind"]
|
|
1264
|
+
if not check_dep_exists(req_name, req_kind, system_info=system_info):
|
|
1265
|
+
raise ValueError(f"{req_kind} '{req_name}' not found")
|
|
1266
|
+
for req in buckets["setup"]:
|
|
1267
|
+
from calkit.requirements import check_setup_dep
|
|
1252
1268
|
|
|
1253
1269
|
ok = check_setup_dep(
|
|
1254
|
-
|
|
1270
|
+
req,
|
|
1271
|
+
interactive=interactive,
|
|
1272
|
+
use_cache=use_cache,
|
|
1273
|
+
wdir=wdir,
|
|
1274
|
+
)
|
|
1275
|
+
if not ok:
|
|
1276
|
+
raise ValueError(
|
|
1277
|
+
f"setup requirement '{req['name']}' is not satisfied"
|
|
1278
|
+
)
|
|
1279
|
+
for req in buckets["aws-credentials"]:
|
|
1280
|
+
from calkit.requirements import check_aws_credentials_req
|
|
1281
|
+
|
|
1282
|
+
ok = check_aws_credentials_req(
|
|
1283
|
+
req,
|
|
1255
1284
|
interactive=interactive,
|
|
1256
1285
|
use_cache=use_cache,
|
|
1257
1286
|
wdir=wdir,
|
|
1258
1287
|
)
|
|
1259
1288
|
if not ok:
|
|
1260
1289
|
raise ValueError(
|
|
1261
|
-
f"
|
|
1290
|
+
f"aws-credentials requirement '{req['name']}' is not satisfied"
|
|
1262
1291
|
)
|
|
1263
1292
|
|
|
1264
1293
|
|
|
@@ -1272,12 +1301,12 @@ def get_env_var_dep_names(ck_info: dict | None = None) -> list[str]:
|
|
|
1272
1301
|
if ck_info is None:
|
|
1273
1302
|
ck_info = load_calkit_info()
|
|
1274
1303
|
env_vars = []
|
|
1275
|
-
for
|
|
1304
|
+
for req in get_requirements(ck_info):
|
|
1276
1305
|
# Delegate shape-parsing to ``_normalize_requirement`` so this stays
|
|
1277
1306
|
# in lockstep with ``check_requirements`` -- string entries,
|
|
1278
1307
|
# single-key dicts, flat dicts, and nameless setup steps all flow
|
|
1279
1308
|
# through one path.
|
|
1280
|
-
normalized = _normalize_requirement(
|
|
1309
|
+
normalized = _normalize_requirement(req)
|
|
1281
1310
|
if normalized["kind"] == "env-var":
|
|
1282
1311
|
env_vars.append(normalized["name"])
|
|
1283
1312
|
return env_vars
|
|
@@ -949,7 +949,7 @@ def split_lock_stage_name(stage_name: str) -> tuple[str | None, str]:
|
|
|
949
949
|
return None, stage_name
|
|
950
950
|
|
|
951
951
|
|
|
952
|
-
def
|
|
952
|
+
def stage_lock_hash(entry: dict) -> str:
|
|
953
953
|
"""A checksum of what a stage's ``dvc.lock`` entry says it ran and made.
|
|
954
954
|
|
|
955
955
|
Built from its command, params, and each dep's and out's path and hash,
|
|
@@ -974,7 +974,7 @@ def stage_lock_md5(entry: dict) -> str:
|
|
|
974
974
|
"outs": files("outs"),
|
|
975
975
|
}
|
|
976
976
|
content = json.dumps(data, sort_keys=True, default=str).encode()
|
|
977
|
-
return "
|
|
977
|
+
return "sha256:" + hashlib.sha256(content).hexdigest()
|
|
978
978
|
|
|
979
979
|
|
|
980
980
|
def configure_autostage(wdir: str | None = None) -> int:
|
|
@@ -955,6 +955,7 @@ def resolve_switch(env_name: str, envs: dict) -> str | None:
|
|
|
955
955
|
AppExistsCondition,
|
|
956
956
|
EnvVarEqualsCondition,
|
|
957
957
|
EnvVarExistsCondition,
|
|
958
|
+
EnvVarSetCondition,
|
|
958
959
|
HostnameMatchesCondition,
|
|
959
960
|
MachineIdEqualsCondition,
|
|
960
961
|
OsIsCondition,
|
|
@@ -969,6 +970,8 @@ def resolve_switch(env_name: str, envs: dict) -> str | None:
|
|
|
969
970
|
shutil.which(a) is not None
|
|
970
971
|
for a in any_of(condition.app_exists)
|
|
971
972
|
)
|
|
973
|
+
if isinstance(condition, EnvVarSetCondition):
|
|
974
|
+
return any(n in os.environ for n in any_of(condition.env_var_set))
|
|
972
975
|
if isinstance(condition, EnvVarExistsCondition):
|
|
973
976
|
return any(
|
|
974
977
|
n in os.environ for n in any_of(condition.env_var_exists)
|
|
@@ -28,6 +28,7 @@ from calkit.models.io import EnvVarInput
|
|
|
28
28
|
from calkit.models.iteration import ParametersType
|
|
29
29
|
from calkit.models.pipeline import Pipeline, RelativeChildPathString
|
|
30
30
|
from calkit.models.requirements import ( # noqa: F401
|
|
31
|
+
AwsCredentialsRequirement,
|
|
31
32
|
Dependency,
|
|
32
33
|
DependencyAttrs,
|
|
33
34
|
Requirement,
|
|
@@ -1289,10 +1290,20 @@ class AppExistsCondition(Model):
|
|
|
1289
1290
|
)
|
|
1290
1291
|
|
|
1291
1292
|
|
|
1293
|
+
class EnvVarSetCondition(Model):
|
|
1294
|
+
model_config = ConfigDict(extra="forbid")
|
|
1295
|
+
env_var_set: str | list[str] = Field(
|
|
1296
|
+
description="Environmental variable that must be set."
|
|
1297
|
+
)
|
|
1298
|
+
|
|
1299
|
+
|
|
1292
1300
|
class EnvVarExistsCondition(Model):
|
|
1301
|
+
"""The old name for ``env_var_set``, still honored."""
|
|
1302
|
+
|
|
1293
1303
|
model_config = ConfigDict(extra="forbid")
|
|
1294
1304
|
env_var_exists: str | list[str] = Field(
|
|
1295
|
-
description="
|
|
1305
|
+
description="Deprecated alias for 'env_var_set'.",
|
|
1306
|
+
json_schema_extra={"deprecated": True},
|
|
1296
1307
|
)
|
|
1297
1308
|
|
|
1298
1309
|
|
|
@@ -1329,7 +1340,7 @@ class MachineIdEqualsCondition(Model):
|
|
|
1329
1340
|
|
|
1330
1341
|
_SWITCH_CONDITIONS: list[type[Model]] = [
|
|
1331
1342
|
AppExistsCondition,
|
|
1332
|
-
|
|
1343
|
+
EnvVarSetCondition,
|
|
1333
1344
|
EnvVarEqualsCondition,
|
|
1334
1345
|
HostnameMatchesCondition,
|
|
1335
1346
|
OsIsCondition,
|
|
@@ -1348,6 +1359,7 @@ def _switch_condition_name(value: object) -> str | None:
|
|
|
1348
1359
|
|
|
1349
1360
|
SwitchCondition = Annotated[
|
|
1350
1361
|
Annotated[AppExistsCondition, Tag("app_exists")]
|
|
1362
|
+
| Annotated[EnvVarSetCondition, Tag("env_var_set")]
|
|
1351
1363
|
| Annotated[EnvVarExistsCondition, Tag("env_var_exists")]
|
|
1352
1364
|
| Annotated[EnvVarEqualsCondition, Tag("env_var_equals")]
|
|
1353
1365
|
| Annotated[HostnameMatchesCondition, Tag("hostname_matches")]
|
|
@@ -1408,7 +1420,7 @@ class SwitchEnvironment(Environment):
|
|
|
1408
1420
|
pair:
|
|
1409
1421
|
|
|
1410
1422
|
- ``app_exists``: an app on ``PATH``.
|
|
1411
|
-
- ``
|
|
1423
|
+
- ``env_var_set``: an environmental variable that is set.
|
|
1412
1424
|
- ``env_var_equals``: ``NAME=value`` for an environmental variable.
|
|
1413
1425
|
- ``hostname_matches``: a glob the hostname matches, ignoring case.
|
|
1414
1426
|
- ``os_is``: ``linux``, ``macos`` or ``windows``.
|