calkit-python 0.41.15__tar.gz → 0.41.17__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.41.15 → calkit_python-0.41.17}/.gitignore +2 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.pre-commit-config.yaml +0 -2
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.prettierignore +0 -1
- calkit_python-0.41.17/.prettierrc.json +6 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/Makefile +12 -10
- {calkit_python-0.41.15 → calkit_python-0.41.17}/PKG-INFO +52 -28
- {calkit_python-0.41.15 → calkit_python-0.41.17}/README.md +51 -27
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/config.py +53 -6
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/notebooks.py +74 -4
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/detect.py +64 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/environments.py +18 -2
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/package.json +3 -23
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/schemas/calkit/package.json.orig +2 -22
- calkit_python-0.41.15/calkit/labextension/static/remoteEntry.65469af996e7a96aa983.js → calkit_python-0.41.17/calkit/labextension/static/remoteEntry.ac9035764d5b2adbb542.js +1 -1
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/models/core.py +23 -2
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_notebooks.py +85 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/calkit/tests/jupyterlab}/conftest.py +1 -2
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_detect.py +49 -0
- calkit_python-0.41.17/docs/acknowledgements.md +13 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/environments.md +38 -34
- calkit_python-0.41.17/docs/img/caltech.png +0 -0
- calkit_python-0.41.17/docs/img/pipeline.png +0 -0
- calkit_python-0.41.17/docs/img/schmidt-sciences.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/index.md +23 -27
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/quickstart.md +10 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/package.json +2 -22
- {calkit_python-0.41.15 → calkit_python-0.41.17}/mkdocs.yml +1 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/pyproject.toml +9 -7
- {calkit_python-0.41.15 → calkit_python-0.41.17}/scripts/generate-docs-references.py +59 -87
- {calkit_python-0.41.15 → calkit_python-0.41.17}/scripts/sync-docs.py +53 -14
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.claude-plugin/marketplace.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.gitattributes +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.python-version +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.vscode/launch.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/.vscode/tasks.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/AGENTS.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/CITATION.cff +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/CODE_OF_CONDUCT.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/CONTRIBUTING.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/LICENSE +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/agent-plugin/.claude-plugin/plugin.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/agent-plugin/skills/add-pipeline-stage/SKILL.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/agent-plugin/skills/conventions/SKILL.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/agent-plugin/skills/create-pipeline/SKILL.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/__main__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/calc.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/check.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/check.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/delete.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/describe.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/dev.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/import_.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/latex.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/list.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/main/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/main/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/main/xr.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/new.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/office.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/scheduler.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cli/update.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/cloud.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/conda.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/config.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/datasets.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/dependencies.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/docker.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/dvc/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/dvc/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/dvc/zip.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/fs.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/git.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/github.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/gui.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/install.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/invenio.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/julia.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/jupyter.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/jupyterlab/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/jupyterlab/routes.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/schemas/calkit/plugin.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/502.9a2c5772a15466e923ef.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/695.2c41003a452d43d2b358.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/867.a42a046aa5108f54f8fb.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/909.e3f9cc3408834a7fdcc3.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/946.050af2abf7845cfbdbd2.js.LICENSE.txt +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/b2f1c3efe70cb539d121.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/style.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/labextension/static/third-party-licenses.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/licenses.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/magics.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/matlab.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/models/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/models/io.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/models/iteration.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/models/pipeline.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/notebooks.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/office.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/ops.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/overleaf.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/pipeline.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/releases.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/server.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/main/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/main/test_core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/main/test_lock.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/main/test_subprojects.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/main/test_xr.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_check.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_cloud.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_delete.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_import.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_latex.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_overleaf.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_scheduler.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/cli/test_update.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/dvc/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/dvc/test_core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/dvc/test_zip.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/jupyterlab/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/jupyterlab/test_routes.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/models/test_core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/models/test_iteration.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/models/test_pipeline.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_cloud.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_dependencies.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_docker.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_environments.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_fs.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_git.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_install.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_invenio.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_julia.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_licenses.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_matlab.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_pipeline.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_releases.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/CNAME +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/ai-tools.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/apps.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/calculations.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/cli-reference.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/cloud-integration.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/datasets.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/dependencies.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/examples.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/governance.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/help.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/hpc.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/calkit-fragmentation-compendium.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab/all-green.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab/collect-data-stale.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab/new-env.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab/new-notebook.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab/pipeline-badge.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/jupyterlab-params.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/plos-osi-code-2024-03.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/img/vscode-nb-params.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/installation.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/jupyterlab.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/local-server.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/notebooks.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/overleaf.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/pipeline/index.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/pipeline/running-and-logging.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/references.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/releases.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/reproducibility.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/subprojects.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/ai-agents.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/github-actions.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/actions-repo-secrets.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/quick-actions.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/create-calkit-env.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/create-inner-env.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/create-new-calkit-env.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/select-calkit-env.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/slurm-job-running.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/slurm-launch-options.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/img/vscode-slurm-notebook/starting-slurm-job.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/index.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/jupyterlab.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/office.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/tutorials/vscode-slurm-notebook.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/docs/version-control.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/flake.lock +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/flake.nix +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/.yarnrc.yml +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/babel.config.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/install.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/jest.config.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/jupyter-config/server-config/calkit.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/schema/plugin.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/__tests__/useQueries.spec.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/calkit-config.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/cell-output-marker.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/commit-dialog.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/environment-editor.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/notebook-registration.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/notebook-toolbar.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/pipeline-status-bar.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/project-info-editor.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/sidebar-settings.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/sidebar.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/components/stage-editor.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/feature-flags.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/file-browser-menu.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/hooks/__tests__/useQueries.test.tsx +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/hooks/useQueries.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/icons.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/index.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/io-tracker.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/pipeline-state.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/queryClient.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/request.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/src/shims-mainmenu.d.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/base.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/cell-output-marker.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/environment-editor.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/environment-selector.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/img/calkit-no-bg.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/index.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/index.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/notebook-toolbar.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/pipeline-status-bar.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/style/sidebar.css +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/tsconfig.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/tsconfig.test.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/.gitignore +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/README.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/jupyter_server_test_config.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/package.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/playwright.config.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/tests/calkit.spec.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/ui-tests/yarn.lock +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17/jupyterlab-ext}/yarn.lock +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/scripts/install.ps1 +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/scripts/install.sh +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/scripts/make-calk9.sh +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/dvc-md5-dir/osx-arm64.txt +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/nb-julia.ipynb +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/nb-params.ipynb +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/nb-subdir.ipynb +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/pipeline.ipynb +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/script.py +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/test/test-log.log +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/uv.lock +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/.gitignore +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/.vscodeignore +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/CHANGELOG.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/LICENSE +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/README.md +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/images/calkit-icon.svg +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/images/calkit-no-bg.png +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/package-lock.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/package.json +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/scripts/set-proposed-api.js +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/environments.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/extension.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/figures/core.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/figures/view.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/notebooks.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/pipeline/core.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/sidebar.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/test/environments.test.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/test/figures.test.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/test/kernel-selection.test.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/test/notebooks.test.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/test/pipeline.test.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/src/types.ts +0 -0
- {calkit_python-0.41.15 → calkit_python-0.41.17}/vscode-ext/tsconfig.json +0 -0
|
@@ -53,19 +53,21 @@ import-profile: ## Profile the import time of the CLI.
|
|
|
53
53
|
|
|
54
54
|
.PHONY: jlab-dev
|
|
55
55
|
jlab-dev: ## Develop the JupyterLab extension.
|
|
56
|
-
uv run jlpm run watch
|
|
56
|
+
cd jupyterlab-ext && uv run jlpm run watch
|
|
57
57
|
|
|
58
58
|
.PHONY: jlab
|
|
59
59
|
jlab: ## Build the JupyterLab extension.
|
|
60
|
-
uv run jlpm run build:prod
|
|
60
|
+
cd jupyterlab-ext && uv run jlpm run build:prod
|
|
61
61
|
|
|
62
|
-
.PHONY: test-
|
|
63
|
-
test-
|
|
64
|
-
@echo "🚀 Running
|
|
65
|
-
@uv run jlpm test
|
|
62
|
+
.PHONY: test-jlab
|
|
63
|
+
test-jlab: ## Run JupyterLab extension unit tests with Jest.
|
|
64
|
+
@echo "🚀 Running JupyterLab extension unit tests"
|
|
65
|
+
@cd jupyterlab-ext && uv run jlpm test
|
|
66
66
|
|
|
67
|
-
.PHONY: test-ui
|
|
68
|
-
test-ui: ## Run the JupyterLab UI integration tests.
|
|
67
|
+
.PHONY: test-jlab-ui
|
|
68
|
+
test-jlab-ui: ## Run the JupyterLab UI integration tests.
|
|
69
69
|
@echo "🚀 Running JupyterLab UI tests with Playwright"
|
|
70
|
-
@uv run
|
|
71
|
-
@uv run --directory=ui-tests jlpm
|
|
70
|
+
@cd jupyterlab-ext && uv run jlpm run build:prod
|
|
71
|
+
@uv run --directory=jupyterlab-ext/ui-tests jlpm install
|
|
72
|
+
@uv run --directory=jupyterlab-ext/ui-tests jlpm playwright install
|
|
73
|
+
@uv run --directory=jupyterlab-ext/ui-tests jlpm playwright test -u --reporter=list
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: calkit-python
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.17
|
|
4
4
|
Summary: Reproducibility simplified.
|
|
5
5
|
Project-URL: Homepage, https://calkit.org
|
|
6
6
|
Project-URL: Issues, https://github.com/calkit/calkit/issues
|
|
@@ -78,35 +78,30 @@ Description-Content-Type: text/markdown
|
|
|
78
78
|
|
|
79
79
|
<!-- INCLUDE: docs/index.md -->
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- Automating a step can and should take roughly
|
|
100
|
-
the same amount of time as doing it once manually,
|
|
101
|
-
therefore it's almost always worth it.
|
|
102
|
-
- Working in a "quick and dirty" way can easily become _not quick_ when
|
|
103
|
-
the dirtiness results in mistakes and/or discourages working in small steps.
|
|
81
|
+
It's six months since you submitted your paper,
|
|
82
|
+
do you know exactly how your figures and results were generated?
|
|
83
|
+
|
|
84
|
+
You will if they're part of a Calkit project.
|
|
85
|
+
|
|
86
|
+
Calkit helps you integrate code, data, figures, results, publications,
|
|
87
|
+
and more into a cohesive, traceable, and portable _knowledge creation system_,
|
|
88
|
+
so every output can be traced back to its source and reproduced with a
|
|
89
|
+
single command.
|
|
90
|
+
|
|
91
|
+
With industry standard tools combined into a unified and simplified experience
|
|
92
|
+
tailored for research,
|
|
93
|
+
you can reap the rewards of reproducibility and automation
|
|
94
|
+
without the cognitive overhead.
|
|
95
|
+
|
|
96
|
+
<!-- https://docs.google.com/drawings/d/1XMGnbgYYNFAVUBDyUaCyLfRB7efvJdrnrKmFlNmT19o/edit -->
|
|
97
|
+
|
|
98
|
+

|
|
104
99
|
|
|
105
100
|
## Features
|
|
106
101
|
|
|
107
102
|
- A simplified [version control](https://docs.calkit.org/version-control)
|
|
108
103
|
interface that unifies Git and DVC (Data Version Control),
|
|
109
|
-
so
|
|
104
|
+
so everything can be kept in the same project repository.
|
|
110
105
|
This way, code doesn't need to be siloed away from other
|
|
111
106
|
important artifacts like datasets, models, figures, or article PDFs,
|
|
112
107
|
allowing you to work on all parts of a project without hopping around to
|
|
@@ -129,9 +124,10 @@ and build upon the results.
|
|
|
129
124
|
- [Overleaf integration](https://docs.calkit.org/overleaf/), so
|
|
130
125
|
analysis, visualization, and writing can all stay in sync
|
|
131
126
|
(no more manual uploads!)
|
|
132
|
-
- Support for running on high performance computing (HPC) systems
|
|
133
|
-
|
|
134
|
-
- Support for running with
|
|
127
|
+
- Support for running on [high performance computing (HPC)](https://docs.calkit.org/hpc) systems
|
|
128
|
+
that use PBS or SLURM schedulers.
|
|
129
|
+
- Support for automated running with
|
|
130
|
+
[GitHub Actions](https://docs.calkit.org/tutorials/github-actions).
|
|
135
131
|
- Extensions for doing all of the above graphically in
|
|
136
132
|
[JupyterLab](https://docs.calkit.org/jupyterlab) and
|
|
137
133
|
[VS Code](https://marketplace.visualstudio.com/items?itemName=Calkit.calkit-vscode).
|
|
@@ -373,9 +369,37 @@ To back up or save the project, call:
|
|
|
373
369
|
calkit save -am "Run pipeline"
|
|
374
370
|
```
|
|
375
371
|
|
|
372
|
+
### With an AI coding agent
|
|
373
|
+
|
|
374
|
+
Simply tell the [AI agent](https://docs.calkit.org/ai-tools):
|
|
375
|
+
|
|
376
|
+
> Turn this folder into a Calkit project
|
|
377
|
+
|
|
378
|
+
or
|
|
379
|
+
|
|
380
|
+
> Create me a new Calkit project for investigating...
|
|
381
|
+
|
|
376
382
|
<!-- END INCLUDE -->
|
|
377
383
|
|
|
378
384
|
## Get involved
|
|
379
385
|
|
|
380
386
|
We welcome all kinds of contributions!
|
|
381
387
|
See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to get involved.
|
|
388
|
+
|
|
389
|
+
## Acknowledgements
|
|
390
|
+
|
|
391
|
+
<!-- INCLUDE: docs/acknowledgements.md +1 -->
|
|
392
|
+
|
|
393
|
+
Calkit is supported by the
|
|
394
|
+
[Caltech Schmidt Academy of Software Engineering](https://sase.caltech.edu).
|
|
395
|
+
|
|
396
|
+
<p align="center">
|
|
397
|
+
<a href="https://sase.caltech.edu" target="_blank">
|
|
398
|
+
<img width="40%" src="docs/img/caltech.png" alt="Caltech SASE">
|
|
399
|
+
</a>
|
|
400
|
+
<a href="https://schmidtsciences.org/" target="_blank">
|
|
401
|
+
<img width="40%" src="docs/img/schmidt-sciences.png" alt="Schmidt Sciences">
|
|
402
|
+
</a>
|
|
403
|
+
</p>
|
|
404
|
+
|
|
405
|
+
<!-- END INCLUDE -->
|
|
@@ -19,35 +19,30 @@
|
|
|
19
19
|
|
|
20
20
|
<!-- INCLUDE: docs/index.md -->
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- Automating a step can and should take roughly
|
|
41
|
-
the same amount of time as doing it once manually,
|
|
42
|
-
therefore it's almost always worth it.
|
|
43
|
-
- Working in a "quick and dirty" way can easily become _not quick_ when
|
|
44
|
-
the dirtiness results in mistakes and/or discourages working in small steps.
|
|
22
|
+
It's six months since you submitted your paper,
|
|
23
|
+
do you know exactly how your figures and results were generated?
|
|
24
|
+
|
|
25
|
+
You will if they're part of a Calkit project.
|
|
26
|
+
|
|
27
|
+
Calkit helps you integrate code, data, figures, results, publications,
|
|
28
|
+
and more into a cohesive, traceable, and portable _knowledge creation system_,
|
|
29
|
+
so every output can be traced back to its source and reproduced with a
|
|
30
|
+
single command.
|
|
31
|
+
|
|
32
|
+
With industry standard tools combined into a unified and simplified experience
|
|
33
|
+
tailored for research,
|
|
34
|
+
you can reap the rewards of reproducibility and automation
|
|
35
|
+
without the cognitive overhead.
|
|
36
|
+
|
|
37
|
+
<!-- https://docs.google.com/drawings/d/1XMGnbgYYNFAVUBDyUaCyLfRB7efvJdrnrKmFlNmT19o/edit -->
|
|
38
|
+
|
|
39
|
+

|
|
45
40
|
|
|
46
41
|
## Features
|
|
47
42
|
|
|
48
43
|
- A simplified [version control](https://docs.calkit.org/version-control)
|
|
49
44
|
interface that unifies Git and DVC (Data Version Control),
|
|
50
|
-
so
|
|
45
|
+
so everything can be kept in the same project repository.
|
|
51
46
|
This way, code doesn't need to be siloed away from other
|
|
52
47
|
important artifacts like datasets, models, figures, or article PDFs,
|
|
53
48
|
allowing you to work on all parts of a project without hopping around to
|
|
@@ -70,9 +65,10 @@ and build upon the results.
|
|
|
70
65
|
- [Overleaf integration](https://docs.calkit.org/overleaf/), so
|
|
71
66
|
analysis, visualization, and writing can all stay in sync
|
|
72
67
|
(no more manual uploads!)
|
|
73
|
-
- Support for running on high performance computing (HPC) systems
|
|
74
|
-
|
|
75
|
-
- Support for running with
|
|
68
|
+
- Support for running on [high performance computing (HPC)](https://docs.calkit.org/hpc) systems
|
|
69
|
+
that use PBS or SLURM schedulers.
|
|
70
|
+
- Support for automated running with
|
|
71
|
+
[GitHub Actions](https://docs.calkit.org/tutorials/github-actions).
|
|
76
72
|
- Extensions for doing all of the above graphically in
|
|
77
73
|
[JupyterLab](https://docs.calkit.org/jupyterlab) and
|
|
78
74
|
[VS Code](https://marketplace.visualstudio.com/items?itemName=Calkit.calkit-vscode).
|
|
@@ -314,9 +310,37 @@ To back up or save the project, call:
|
|
|
314
310
|
calkit save -am "Run pipeline"
|
|
315
311
|
```
|
|
316
312
|
|
|
313
|
+
### With an AI coding agent
|
|
314
|
+
|
|
315
|
+
Simply tell the [AI agent](https://docs.calkit.org/ai-tools):
|
|
316
|
+
|
|
317
|
+
> Turn this folder into a Calkit project
|
|
318
|
+
|
|
319
|
+
or
|
|
320
|
+
|
|
321
|
+
> Create me a new Calkit project for investigating...
|
|
322
|
+
|
|
317
323
|
<!-- END INCLUDE -->
|
|
318
324
|
|
|
319
325
|
## Get involved
|
|
320
326
|
|
|
321
327
|
We welcome all kinds of contributions!
|
|
322
328
|
See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to get involved.
|
|
329
|
+
|
|
330
|
+
## Acknowledgements
|
|
331
|
+
|
|
332
|
+
<!-- INCLUDE: docs/acknowledgements.md +1 -->
|
|
333
|
+
|
|
334
|
+
Calkit is supported by the
|
|
335
|
+
[Caltech Schmidt Academy of Software Engineering](https://sase.caltech.edu).
|
|
336
|
+
|
|
337
|
+
<p align="center">
|
|
338
|
+
<a href="https://sase.caltech.edu" target="_blank">
|
|
339
|
+
<img width="40%" src="docs/img/caltech.png" alt="Caltech SASE">
|
|
340
|
+
</a>
|
|
341
|
+
<a href="https://schmidtsciences.org/" target="_blank">
|
|
342
|
+
<img width="40%" src="docs/img/schmidt-sciences.png" alt="Schmidt Sciences">
|
|
343
|
+
</a>
|
|
344
|
+
</p>
|
|
345
|
+
|
|
346
|
+
<!-- END INCLUDE -->
|
|
@@ -4,6 +4,8 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import glob
|
|
6
6
|
import os
|
|
7
|
+
import platform
|
|
8
|
+
import re
|
|
7
9
|
import subprocess
|
|
8
10
|
|
|
9
11
|
import typer
|
|
@@ -233,12 +235,57 @@ def config_github_ssh():
|
|
|
233
235
|
subprocess.run(keygen_cmd)
|
|
234
236
|
# Start the SSH agent in the background
|
|
235
237
|
typer.echo("Checking that the SSH agent is running")
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
).
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
# Note that under git bash / MSYS (MSYSTEM is set) we get a POSIX
|
|
239
|
+
# ssh-agent on PATH, so we use the POSIX path even on Windows there.
|
|
240
|
+
native_windows = platform.system() == "Windows" and not os.environ.get(
|
|
241
|
+
"MSYSTEM"
|
|
242
|
+
)
|
|
243
|
+
if native_windows:
|
|
244
|
+
# On native Windows, OpenSSH's ssh-agent runs as a Windows service
|
|
245
|
+
# rather than exporting environment variables to the current shell.
|
|
246
|
+
# The service ships disabled by default, so ensure it's enabled
|
|
247
|
+
# before starting it (enabling requires administrator privileges).
|
|
248
|
+
p = subprocess.run(
|
|
249
|
+
[
|
|
250
|
+
"powershell",
|
|
251
|
+
"-NoProfile",
|
|
252
|
+
"-Command",
|
|
253
|
+
(
|
|
254
|
+
"if ((Get-Service ssh-agent).StartType -eq 'Disabled') "
|
|
255
|
+
"{ Set-Service ssh-agent -StartupType Manual }; "
|
|
256
|
+
"Start-Service ssh-agent"
|
|
257
|
+
),
|
|
258
|
+
],
|
|
259
|
+
capture_output=True,
|
|
260
|
+
text=True,
|
|
261
|
+
)
|
|
262
|
+
if p.returncode != 0:
|
|
263
|
+
err = (p.stderr.strip() or p.stdout.strip()).lower()
|
|
264
|
+
if "access" in err and "denied" in err:
|
|
265
|
+
raise_error(
|
|
266
|
+
"Failed to start ssh-agent service: access denied.\n"
|
|
267
|
+
"The ssh-agent service is disabled and enabling it "
|
|
268
|
+
"requires administrator privileges. Please run the "
|
|
269
|
+
"following in an elevated (Run as administrator) "
|
|
270
|
+
"PowerShell, then try again:\n\n"
|
|
271
|
+
" Set-Service ssh-agent -StartupType Manual; "
|
|
272
|
+
"Start-Service ssh-agent"
|
|
273
|
+
)
|
|
274
|
+
raise_error(
|
|
275
|
+
"Failed to start ssh-agent service: "
|
|
276
|
+
f"{p.stderr.strip() or p.stdout.strip()}"
|
|
277
|
+
)
|
|
278
|
+
else:
|
|
279
|
+
# On POSIX systems, ssh-agent -s prints shell commands that export
|
|
280
|
+
# SSH_AUTH_SOCK and SSH_AGENT_PID; parse them into our environment so
|
|
281
|
+
# the subsequent ssh-add call can find the agent
|
|
282
|
+
p = subprocess.run(["ssh-agent", "-s"], capture_output=True, text=True)
|
|
283
|
+
if p.returncode != 0:
|
|
284
|
+
raise_error("Failed to start ssh-agent")
|
|
285
|
+
for match in re.finditer(
|
|
286
|
+
r"(SSH_AUTH_SOCK|SSH_AGENT_PID)=([^;\n]+);", p.stdout
|
|
287
|
+
):
|
|
288
|
+
os.environ[match.group(1)] = match.group(2)
|
|
242
289
|
# Add the SSH key to the ssh-agent
|
|
243
290
|
typer.echo(f"Adding SSH key to ssh-agent: {key_path}")
|
|
244
291
|
cmd = ["ssh-add", key_path]
|
|
@@ -490,7 +490,17 @@ def execute_notebook(
|
|
|
490
490
|
typer.echo(f"Using {language} as notebook language")
|
|
491
491
|
# First, ensure the specified environment has a kernel we can use
|
|
492
492
|
# We need to check the environment type and create the kernel if needed
|
|
493
|
-
|
|
493
|
+
docker_env = env.get("kind") == "docker"
|
|
494
|
+
if docker_env:
|
|
495
|
+
# Docker environments run the kernel inside the container, so there is
|
|
496
|
+
# no host kernel to register. Use the container's own kernel (default
|
|
497
|
+
# 'python3', overridable with the env's 'jupyter_kernel' key) and
|
|
498
|
+
# execute with Papermill inside the container further below.
|
|
499
|
+
kernel_name = env.get("jupyter_kernel") or {"r": "ir"}.get(
|
|
500
|
+
language.lower(), "python3"
|
|
501
|
+
)
|
|
502
|
+
display_name = kernel_name
|
|
503
|
+
elif language.lower() in ["python", "julia", "r"]:
|
|
494
504
|
kernel_name, display_name = check_env_kernel(
|
|
495
505
|
env_name=env_name,
|
|
496
506
|
no_check=no_check,
|
|
@@ -563,10 +573,70 @@ def execute_notebook(
|
|
|
563
573
|
typer.echo(f"Using kernel: {kernel_name}")
|
|
564
574
|
typer.echo(f"Running with cwd: {notebook_dir}")
|
|
565
575
|
typer.echo(f"Output will be saved to: {fpath_out_exec}")
|
|
566
|
-
# If this is a Python, Julia, or R notebook, we can use Papermill
|
|
576
|
+
# If this is a Python, Julia, or R notebook, we can use Papermill.
|
|
567
577
|
# If it's a MATLAB notebook, we need to use the MATLAB kernel inside the
|
|
568
|
-
# specified environment
|
|
569
|
-
|
|
578
|
+
# specified environment.
|
|
579
|
+
# Exception: If the environment is a Docker environment, we run Papermill
|
|
580
|
+
# inside the container so the kernel (which lives in the image) and
|
|
581
|
+
# Papermill share a process namespace---this avoids registering a host
|
|
582
|
+
# kernel and cross-container networking entirely
|
|
583
|
+
if docker_env:
|
|
584
|
+
# run_in_env mounts the project at the working directory and applies
|
|
585
|
+
# the env's user/platform/args, so we only need to invoke Papermill
|
|
586
|
+
# ipykernel is in the image, but Papermill may not be, so install it
|
|
587
|
+
# on demand (warning the user) before executing. We install into a
|
|
588
|
+
# writable temp dir on PYTHONPATH rather than the image's site-packages:
|
|
589
|
+
# run_in_env maps the host user into the container, so writing to the
|
|
590
|
+
# system location is typically denied, but /tmp is world-writable
|
|
591
|
+
pm_target = "/tmp/calkit-papermill"
|
|
592
|
+
pythonpath = f"PYTHONPATH={pm_target}"
|
|
593
|
+
pm_cmd = [
|
|
594
|
+
pythonpath,
|
|
595
|
+
"python",
|
|
596
|
+
"-c",
|
|
597
|
+
"import papermill",
|
|
598
|
+
"2>/dev/null",
|
|
599
|
+
"||",
|
|
600
|
+
"(",
|
|
601
|
+
"echo",
|
|
602
|
+
"papermill not found in image; installing it with pip...",
|
|
603
|
+
"&&",
|
|
604
|
+
"python",
|
|
605
|
+
"-m",
|
|
606
|
+
"pip",
|
|
607
|
+
"install",
|
|
608
|
+
"-q",
|
|
609
|
+
"--target",
|
|
610
|
+
pm_target,
|
|
611
|
+
"papermill",
|
|
612
|
+
")",
|
|
613
|
+
"&&",
|
|
614
|
+
pythonpath,
|
|
615
|
+
"python",
|
|
616
|
+
"-m",
|
|
617
|
+
"papermill",
|
|
618
|
+
path,
|
|
619
|
+
fpath_out_exec,
|
|
620
|
+
"-k",
|
|
621
|
+
kernel_name,
|
|
622
|
+
"--log-output",
|
|
623
|
+
]
|
|
624
|
+
if notebook_dir:
|
|
625
|
+
pm_cmd += ["--cwd", notebook_dir]
|
|
626
|
+
if parsed_params:
|
|
627
|
+
# JSON is valid YAML, so pass parameters as base64-encoded JSON to
|
|
628
|
+
# avoid shell-quoting issues across the container boundary
|
|
629
|
+
params_b64 = base64.b64encode(
|
|
630
|
+
json.dumps(parsed_params).encode()
|
|
631
|
+
).decode()
|
|
632
|
+
pm_cmd += ["-b", params_b64]
|
|
633
|
+
run_in_env(
|
|
634
|
+
pm_cmd,
|
|
635
|
+
env_name=env_name,
|
|
636
|
+
no_check=no_check,
|
|
637
|
+
verbose=verbose,
|
|
638
|
+
)
|
|
639
|
+
elif language.lower() in ["python", "julia", "r"]:
|
|
570
640
|
papermill.execute_notebook(
|
|
571
641
|
input_path=path,
|
|
572
642
|
output_path=fpath_out_exec,
|
|
@@ -1229,6 +1229,49 @@ def _extract_r_string_assignments(code: str) -> dict[str, str]:
|
|
|
1229
1229
|
return assignments
|
|
1230
1230
|
|
|
1231
1231
|
|
|
1232
|
+
def _extract_r_string_vector_assignments(code: str) -> dict[str, list[str]]:
|
|
1233
|
+
"""Extract character-vector assignments in R code.
|
|
1234
|
+
|
|
1235
|
+
Captures assignments of the form ``x <- c("a", "b")`` so that a later
|
|
1236
|
+
``pacman::p_load(char = x)`` can be resolved back to its package list.
|
|
1237
|
+
"""
|
|
1238
|
+
assignments = {}
|
|
1239
|
+
pattern = re.compile(
|
|
1240
|
+
r"([A-Za-z_][A-Za-z0-9_.]*)\s*(?:<-|=)\s*c\(([^)]*)\)",
|
|
1241
|
+
flags=re.DOTALL,
|
|
1242
|
+
)
|
|
1243
|
+
for name, body in pattern.findall(code):
|
|
1244
|
+
strings = re.findall(r'["\']([a-zA-Z0-9._]+)["\']', body)
|
|
1245
|
+
if strings:
|
|
1246
|
+
assignments[name] = strings
|
|
1247
|
+
return assignments
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
def _resolve_r_package_args(
|
|
1251
|
+
call_args: str, vector_assignments: dict[str, list[str]]
|
|
1252
|
+
) -> set[str]:
|
|
1253
|
+
"""Resolve package names from a ``pacman::p_load()`` argument list.
|
|
1254
|
+
|
|
1255
|
+
Handles quoted literals, inline ``c(...)`` vectors, bare (non-standard
|
|
1256
|
+
evaluation) names like ``p_load(dplyr, tidyr)``, and ``char = x`` where
|
|
1257
|
+
``x`` is a character vector assigned earlier in the script.
|
|
1258
|
+
"""
|
|
1259
|
+
packages = set()
|
|
1260
|
+
# Quoted strings are package names, whether passed directly or inside c()
|
|
1261
|
+
packages.update(re.findall(r'["\']([a-zA-Z0-9._]+)["\']', call_args))
|
|
1262
|
+
# char = <var> referencing a character-vector assignment
|
|
1263
|
+
for var in re.findall(r"char\s*=\s*([A-Za-z_][A-Za-z0-9_.]*)", call_args):
|
|
1264
|
+
packages.update(vector_assignments.get(var, []))
|
|
1265
|
+
# Bare names passed positionally; drop keyword arguments (install=, update=,
|
|
1266
|
+
# character.only=, etc.) and their values before collecting identifiers
|
|
1267
|
+
stripped = re.sub(r"[A-Za-z_][A-Za-z0-9_.]*\s*=\s*[^,]+", "", call_args)
|
|
1268
|
+
for token in re.findall(r"[A-Za-z_][A-Za-z0-9_.]*", stripped):
|
|
1269
|
+
# c() is the vector constructor, not a package; TRUE/FALSE are values
|
|
1270
|
+
if token not in {"c", "TRUE", "FALSE", "T", "F"}:
|
|
1271
|
+
packages.add(token)
|
|
1272
|
+
return packages
|
|
1273
|
+
|
|
1274
|
+
|
|
1232
1275
|
def _extract_julia_string_assignments(code: str) -> dict[str, str]:
|
|
1233
1276
|
"""Extract simple string assignments in Julia code."""
|
|
1234
1277
|
assignments = {}
|
|
@@ -1622,6 +1665,27 @@ def detect_r_dependencies(
|
|
|
1622
1665
|
for pattern in patterns:
|
|
1623
1666
|
matches = re.findall(pattern, code)
|
|
1624
1667
|
dependencies.update(matches)
|
|
1668
|
+
# requireNamespace()/loadNamespace() take the package as a string and are
|
|
1669
|
+
# commonly used to guard optional installs (e.g. pacman/here bootstrapping)
|
|
1670
|
+
dependencies.update(
|
|
1671
|
+
re.findall(
|
|
1672
|
+
r'(?:require|load)Namespace\s*\(\s*["\']([a-zA-Z0-9._]+)["\']',
|
|
1673
|
+
code,
|
|
1674
|
+
)
|
|
1675
|
+
)
|
|
1676
|
+
# Qualified calls like pkg::fn() or pkg:::fn() reference a package without
|
|
1677
|
+
# ever attaching it, so the package itself is still a dependency
|
|
1678
|
+
dependencies.update(re.findall(r"\b([a-zA-Z][a-zA-Z0-9._]*)\s*:::?", code))
|
|
1679
|
+
# pacman::p_load() loads (and optionally installs) packages dynamically; its
|
|
1680
|
+
# arguments may be bare names, quoted strings, or a character vector passed
|
|
1681
|
+
# via char=, possibly referencing a variable assigned earlier in the script
|
|
1682
|
+
vector_assignments = _extract_r_string_vector_assignments(code)
|
|
1683
|
+
for call_args in re.findall(
|
|
1684
|
+
r"p_load\s*\(((?:[^()]|\([^()]*\))*)\)", code, flags=re.DOTALL
|
|
1685
|
+
):
|
|
1686
|
+
dependencies.update(
|
|
1687
|
+
_resolve_r_package_args(call_args, vector_assignments)
|
|
1688
|
+
)
|
|
1625
1689
|
# Filter out base R packages
|
|
1626
1690
|
base_packages = {
|
|
1627
1691
|
"base",
|
|
@@ -5,6 +5,7 @@ import hashlib
|
|
|
5
5
|
import json
|
|
6
6
|
import os
|
|
7
7
|
import platform
|
|
8
|
+
import re
|
|
8
9
|
import subprocess
|
|
9
10
|
import tempfile
|
|
10
11
|
from pathlib import Path
|
|
@@ -1454,7 +1455,9 @@ def create_julia_project_file_content(
|
|
|
1454
1455
|
return content
|
|
1455
1456
|
|
|
1456
1457
|
|
|
1457
|
-
def create_r_description_content(
|
|
1458
|
+
def create_r_description_content(
|
|
1459
|
+
dependencies: list[str], project_name: str | None = None
|
|
1460
|
+
) -> str:
|
|
1458
1461
|
"""Generate R DESCRIPTION file content listing dependencies.
|
|
1459
1462
|
|
|
1460
1463
|
This creates a minimal DESCRIPTION file that renv can work with.
|
|
@@ -1463,13 +1466,26 @@ def create_r_description_content(dependencies: list[str]) -> str:
|
|
|
1463
1466
|
----------
|
|
1464
1467
|
dependencies : list[str]
|
|
1465
1468
|
List of R package names.
|
|
1469
|
+
project_name : str | None
|
|
1470
|
+
Name for the DESCRIPTION's ``Package`` field. It is sanitized into a
|
|
1471
|
+
valid R package name (letters, numbers and dots, starting with a
|
|
1472
|
+
letter). Falls back to the detected project name, then to
|
|
1473
|
+
``CalkitProject``.
|
|
1466
1474
|
|
|
1467
1475
|
Returns
|
|
1468
1476
|
-------
|
|
1469
1477
|
str
|
|
1470
1478
|
The DESCRIPTION file content.
|
|
1471
1479
|
"""
|
|
1472
|
-
|
|
1480
|
+
if project_name is None:
|
|
1481
|
+
project_name = calkit.detect_project_name(prepend_owner=False)
|
|
1482
|
+
# Valid R package names may only contain letters, numbers and dots, and
|
|
1483
|
+
# must start with a letter, so replace anything else (e.g. hyphens) with a
|
|
1484
|
+
# dot and prefix a letter if needed
|
|
1485
|
+
package_name = re.sub(r"[^A-Za-z0-9.]+", ".", project_name).strip(".")
|
|
1486
|
+
if not package_name or not package_name[0].isalpha():
|
|
1487
|
+
package_name = "Calkit." + package_name if package_name else "Calkit"
|
|
1488
|
+
content = f"""Package: {package_name}
|
|
1473
1489
|
Version: 0.0.1
|
|
1474
1490
|
Title: Auto-generated R environment
|
|
1475
1491
|
"""
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"clean": "jlpm clean:lib",
|
|
40
40
|
"clean:lib": "rimraf lib tsconfig.tsbuildinfo",
|
|
41
41
|
"clean:lintcache": "rimraf .eslintcache .stylelintcache",
|
|
42
|
-
"clean:labextension": "rimraf calkit/labextension calkit/_version.py",
|
|
42
|
+
"clean:labextension": "rimraf ../calkit/labextension ../calkit/_version.py",
|
|
43
43
|
"clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache",
|
|
44
44
|
"eslint": "jlpm eslint:check --fix",
|
|
45
45
|
"eslint:check": "eslint . --cache --ext .ts,.tsx",
|
|
@@ -128,10 +128,10 @@
|
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
"extension": true,
|
|
131
|
-
"outputDir": "calkit/labextension",
|
|
131
|
+
"outputDir": "../calkit/labextension",
|
|
132
132
|
"schemaDir": "schema",
|
|
133
133
|
"_build": {
|
|
134
|
-
"load": "static/remoteEntry.
|
|
134
|
+
"load": "static/remoteEntry.ac9035764d5b2adbb542.js",
|
|
135
135
|
"extension": "./extension",
|
|
136
136
|
"style": "./style"
|
|
137
137
|
}
|
|
@@ -157,20 +157,6 @@
|
|
|
157
157
|
"project": "tsconfig.json",
|
|
158
158
|
"sourceType": "module"
|
|
159
159
|
},
|
|
160
|
-
"overrides": [
|
|
161
|
-
{
|
|
162
|
-
"files": [
|
|
163
|
-
"vscode-ext/**/*.ts"
|
|
164
|
-
],
|
|
165
|
-
"parserOptions": {
|
|
166
|
-
"project": "vscode-ext/tsconfig.json",
|
|
167
|
-
"sourceType": "module"
|
|
168
|
-
},
|
|
169
|
-
"rules": {
|
|
170
|
-
"@typescript-eslint/naming-convention": "off"
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
],
|
|
174
160
|
"plugins": [
|
|
175
161
|
"@typescript-eslint"
|
|
176
162
|
],
|
|
@@ -205,12 +191,6 @@
|
|
|
205
191
|
"prefer-arrow-callback": "error"
|
|
206
192
|
}
|
|
207
193
|
},
|
|
208
|
-
"prettier": {
|
|
209
|
-
"singleQuote": false,
|
|
210
|
-
"trailingComma": "all",
|
|
211
|
-
"arrowParens": "always",
|
|
212
|
-
"endOfLine": "auto"
|
|
213
|
-
},
|
|
214
194
|
"stylelint": {
|
|
215
195
|
"extends": [
|
|
216
196
|
"stylelint-config-recommended",
|