calkit-python 0.25.1__tar.gz → 0.25.2__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.25.1 → calkit_python-0.25.2}/PKG-INFO +1 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/__init__.py +1 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/main.py +115 -27
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/models/pipeline.py +5 -2
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/pipeline.py +5 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/cli/test_new.py +1 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/models/test_pipeline.py +2 -2
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_pipeline.py +1 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/notebooks.md +1 -1
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/FUNDING.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/workflows/docs.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/workflows/format.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/workflows/publish-test.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/workflows/publish.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.github/workflows/test.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.gitignore +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.pre-commit-config.yaml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/.python-version +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/CONTRIBUTING.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/LICENSE +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/Makefile +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/README.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/__main__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/calc.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/check.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/check.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/cloud.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/config.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/import_.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/list.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/new.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/office.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/overleaf.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cli/update.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/cloud.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/conda.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/config.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/datasets.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/docker.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/dvc.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/environments.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/git.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/github.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/gui.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/jupyter.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/magics.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/matlab.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/models/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/models/core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/models/io.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/models/iteration.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/notebooks.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/office.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/ops.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/releases.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/server.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/cli/test_config.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/cli/test_main.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/models/__init__.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_dvc.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_notebooks.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/calkit/zenodo.py +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/CNAME +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/apps.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/calculations.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/cli-reference.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/cloud-integration.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/datasets.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/dependencies.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/environments.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/examples.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/help.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/img/connect-zenodo.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/index.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/installation.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/local-server.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/overleaf.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/pipeline/index.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/references.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/releases.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/existing-project.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/index.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/office.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/docs/version-control.md +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/mkdocs.yml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/pyproject.toml +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/test/pipeline.ipynb +0 -0
- {calkit_python-0.25.1 → calkit_python-0.25.2}/uv.lock +0 -0
|
@@ -66,7 +66,7 @@ app.add_typer(overleaf_app, name="overleaf", help="Interact with Overleaf.")
|
|
|
66
66
|
app.add_typer(cloud_app, name="cloud", help="Interact with a Calkit Cloud.")
|
|
67
67
|
|
|
68
68
|
# Constants for version control auto-ignore
|
|
69
|
-
AUTO_IGNORE_SUFFIXES = [".DS_Store", ".env", ".pyc"]
|
|
69
|
+
AUTO_IGNORE_SUFFIXES = [".DS_Store", ".env", ".pyc", ".synctex.gz"]
|
|
70
70
|
AUTO_IGNORE_PATHS = [os.path.join(".dvc", "config.local")]
|
|
71
71
|
AUTO_IGNORE_PREFIXES = [".venv", "__pycache__"]
|
|
72
72
|
# Constants for version control auto-add to DVC
|
|
@@ -675,45 +675,127 @@ def run_local_server():
|
|
|
675
675
|
)
|
|
676
676
|
|
|
677
677
|
|
|
678
|
-
@app.command(
|
|
679
|
-
name="run",
|
|
680
|
-
add_help_option=False,
|
|
681
|
-
)
|
|
678
|
+
@app.command(name="run")
|
|
682
679
|
def run(
|
|
683
|
-
targets: Optional[list[str]] = typer.Argument(
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
680
|
+
targets: Optional[list[str]] = typer.Argument(
|
|
681
|
+
default=None, help="Stages to run."
|
|
682
|
+
),
|
|
683
|
+
quiet: Annotated[
|
|
684
|
+
bool, typer.Option("-q", "--quiet", help="Be quiet.")
|
|
685
|
+
] = False,
|
|
686
|
+
verbose: Annotated[
|
|
687
|
+
bool, typer.Option("-v", "--verbose", help="Print verbose output.")
|
|
688
|
+
] = False,
|
|
689
|
+
force: Annotated[
|
|
690
|
+
bool,
|
|
691
|
+
typer.Option(
|
|
692
|
+
"-f",
|
|
693
|
+
"--force",
|
|
694
|
+
help="Run even if stages or inputs have not changed.",
|
|
695
|
+
),
|
|
696
|
+
] = False,
|
|
697
|
+
interactive: Annotated[
|
|
698
|
+
bool,
|
|
699
|
+
typer.Option(
|
|
700
|
+
"-i",
|
|
701
|
+
"--interactive",
|
|
702
|
+
help="Ask for confirmation before running each stage.",
|
|
703
|
+
),
|
|
704
|
+
] = False,
|
|
705
|
+
single_item: Annotated[
|
|
706
|
+
bool,
|
|
707
|
+
typer.Option(
|
|
708
|
+
"-s",
|
|
709
|
+
"--single-item",
|
|
710
|
+
help="Run only a single stage without any dependents.",
|
|
711
|
+
),
|
|
712
|
+
] = False,
|
|
690
713
|
pipeline: Annotated[
|
|
691
714
|
Optional[str], typer.Option("-p", "--pipeline")
|
|
692
715
|
] = None,
|
|
693
716
|
all_pipelines: Annotated[
|
|
694
|
-
bool,
|
|
717
|
+
bool,
|
|
718
|
+
typer.Option(
|
|
719
|
+
"-P", "--all-pipelines", help="Run all pipelines in the repo."
|
|
720
|
+
),
|
|
721
|
+
] = False,
|
|
722
|
+
recursive: Annotated[
|
|
723
|
+
bool,
|
|
724
|
+
typer.Option(
|
|
725
|
+
"-R", "--recursive", help="Run pipelines in subdirectories."
|
|
726
|
+
),
|
|
695
727
|
] = False,
|
|
696
|
-
recursive: Annotated[bool, typer.Option("-R", "--recursive")] = False,
|
|
697
728
|
downstream: Annotated[
|
|
698
|
-
Optional[list[str]],
|
|
729
|
+
Optional[list[str]],
|
|
730
|
+
typer.Option(
|
|
731
|
+
"--downstream",
|
|
732
|
+
help="Start from the specified stage and run all downstream.",
|
|
733
|
+
),
|
|
699
734
|
] = None,
|
|
700
735
|
force_downstream: Annotated[
|
|
701
|
-
bool,
|
|
736
|
+
bool,
|
|
737
|
+
typer.Option(
|
|
738
|
+
"--force-downstream",
|
|
739
|
+
help=(
|
|
740
|
+
"Force downstream stages to run even if "
|
|
741
|
+
"they are still up-to-date."
|
|
742
|
+
),
|
|
743
|
+
),
|
|
744
|
+
] = False,
|
|
745
|
+
pull: Annotated[
|
|
746
|
+
bool,
|
|
747
|
+
typer.Option("--pull", help="Try automatically pulling missing data."),
|
|
702
748
|
] = False,
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
749
|
+
allow_missing: Annotated[
|
|
750
|
+
bool,
|
|
751
|
+
typer.Option("--allow-missing", help="Skip stages with missing data."),
|
|
752
|
+
] = False,
|
|
753
|
+
dry: Annotated[
|
|
754
|
+
bool,
|
|
755
|
+
typer.Option("--dry", help="Only print commands that would execute."),
|
|
756
|
+
] = False,
|
|
757
|
+
keep_going: Annotated[
|
|
758
|
+
bool,
|
|
759
|
+
typer.Option(
|
|
760
|
+
"--keep-going",
|
|
761
|
+
"-k",
|
|
762
|
+
help=(
|
|
763
|
+
"Continue executing, skipping stages with failed "
|
|
764
|
+
"inputs from other stages."
|
|
765
|
+
),
|
|
766
|
+
),
|
|
767
|
+
] = False,
|
|
768
|
+
ignore_errors: Annotated[
|
|
769
|
+
bool,
|
|
770
|
+
typer.Option("--ignore-errors", help="Ignore errors from stages."),
|
|
771
|
+
] = False,
|
|
772
|
+
glob: Annotated[
|
|
773
|
+
bool,
|
|
774
|
+
typer.Option("--glob", help="Match stages with glob-style patterns."),
|
|
775
|
+
] = False,
|
|
776
|
+
no_commit: Annotated[
|
|
777
|
+
bool, typer.Option("--no-commit", help="Do not save to the run cache.")
|
|
778
|
+
] = False,
|
|
779
|
+
no_run_cache: Annotated[
|
|
780
|
+
bool, typer.Option("--no-run-cache", help="Ignore the run cache.")
|
|
781
|
+
] = False,
|
|
782
|
+
save_after_run: Annotated[
|
|
783
|
+
bool,
|
|
784
|
+
typer.Option("--save", "-S", help="Save the project after running."),
|
|
785
|
+
] = False,
|
|
786
|
+
save_message: Annotated[
|
|
787
|
+
str | None,
|
|
788
|
+
typer.Option(
|
|
789
|
+
"--save-message", "-m", help="Commit message for saving."
|
|
790
|
+
),
|
|
791
|
+
] = None,
|
|
711
792
|
):
|
|
712
793
|
"""Check dependencies and run the pipeline."""
|
|
713
794
|
os.environ["CALKIT_PIPELINE_RUNNING"] = "1"
|
|
714
795
|
dotenv.load_dotenv(dotenv_path=".env", verbose=verbose)
|
|
715
796
|
# First check any system-level dependencies exist
|
|
716
|
-
|
|
797
|
+
if not quiet:
|
|
798
|
+
typer.echo("Checking system-level dependencies")
|
|
717
799
|
try:
|
|
718
800
|
calkit.check_system_deps()
|
|
719
801
|
except Exception as e:
|
|
@@ -722,7 +804,8 @@ def run(
|
|
|
722
804
|
# Compile the pipeline
|
|
723
805
|
ck_info = calkit.load_calkit_info()
|
|
724
806
|
if ck_info.get("pipeline", {}):
|
|
725
|
-
|
|
807
|
+
if not quiet:
|
|
808
|
+
typer.echo("Compiling DVC pipeline")
|
|
726
809
|
try:
|
|
727
810
|
calkit.pipeline.to_dvc(ck_info=ck_info, write=True)
|
|
728
811
|
except Exception as e:
|
|
@@ -733,7 +816,6 @@ def run(
|
|
|
733
816
|
args = targets
|
|
734
817
|
# Extract any boolean args
|
|
735
818
|
for name in [
|
|
736
|
-
"help",
|
|
737
819
|
"quiet",
|
|
738
820
|
"verbose",
|
|
739
821
|
"force",
|
|
@@ -762,6 +844,12 @@ def run(
|
|
|
762
844
|
os.environ.pop("CALKIT_PIPELINE_RUNNING", None)
|
|
763
845
|
raise_error("DVC pipeline failed")
|
|
764
846
|
os.environ.pop("CALKIT_PIPELINE_RUNNING", None)
|
|
847
|
+
if save_after_run or save_message is not None:
|
|
848
|
+
if save_message is None:
|
|
849
|
+
save_message = "Run pipeline"
|
|
850
|
+
if not quiet:
|
|
851
|
+
typer.echo("Saving the project after successful run")
|
|
852
|
+
save(save_all=True, message=save_message)
|
|
765
853
|
|
|
766
854
|
|
|
767
855
|
@app.command(name="manual-step", help="Execute a manual step.")
|
|
@@ -132,16 +132,19 @@ class PythonScriptStage(Stage):
|
|
|
132
132
|
class LatexStage(Stage):
|
|
133
133
|
kind: Literal["latex"] = "latex"
|
|
134
134
|
target_path: str
|
|
135
|
-
|
|
135
|
+
verbose: bool = False
|
|
136
136
|
force: bool = False
|
|
137
|
+
synctex: bool = True
|
|
137
138
|
|
|
138
139
|
@property
|
|
139
140
|
def dvc_cmd(self) -> str:
|
|
140
141
|
cmd = f"{self.xenv_cmd} -- latexmk -cd -interaction=nonstopmode"
|
|
141
|
-
if self.
|
|
142
|
+
if not self.verbose:
|
|
142
143
|
cmd += " -silent"
|
|
143
144
|
if self.force:
|
|
144
145
|
cmd += " -f"
|
|
146
|
+
if self.synctex:
|
|
147
|
+
cmd += " -synctex=1"
|
|
145
148
|
cmd += f" -pdf {self.target_path}"
|
|
146
149
|
return cmd
|
|
147
150
|
|
|
@@ -44,9 +44,13 @@ def to_dvc(
|
|
|
44
44
|
except Exception as e:
|
|
45
45
|
raise ValueError(f"Pipeline is not defined properly: {e}")
|
|
46
46
|
dvc_stages = {}
|
|
47
|
-
# First, create stages for checking/exporting all environments
|
|
47
|
+
# First, create stages for checking/exporting all environments used in the
|
|
48
|
+
# pipeline
|
|
49
|
+
used_envs = set([stage.environment for stage in pipeline.stages.values()])
|
|
48
50
|
env_lock_fpaths = {}
|
|
49
51
|
for env_name, env in ck_info.get("environments", {}).items():
|
|
52
|
+
if env_name not in used_envs:
|
|
53
|
+
continue
|
|
50
54
|
env_fpath = env.get("path")
|
|
51
55
|
lock_fpath = get_env_lock_fpath(
|
|
52
56
|
env=env, env_name=env_name, as_posix=True
|
|
@@ -548,7 +548,7 @@ def test_new_latex_stage(tmp_dir):
|
|
|
548
548
|
pipeline = calkit.dvc.read_pipeline()
|
|
549
549
|
assert pipeline["stages"]["build-paper"]["cmd"] == (
|
|
550
550
|
"calkit xenv -n tex --no-check -- "
|
|
551
|
-
"latexmk -cd -interaction=nonstopmode -pdf paper.tex"
|
|
551
|
+
"latexmk -cd -interaction=nonstopmode -silent -synctex=1 -pdf paper.tex"
|
|
552
552
|
)
|
|
553
553
|
assert set(pipeline["stages"]["build-paper"]["deps"]) == set(
|
|
554
554
|
["paper.tex", ".calkit/env-locks/tex.json"]
|
|
@@ -46,8 +46,8 @@ def test_wordtopdfstage():
|
|
|
46
46
|
|
|
47
47
|
def test_latexstage():
|
|
48
48
|
s = LatexStage(environment="tex", target_path="my-paper.tex")
|
|
49
|
-
assert " -silent " not in s.dvc_cmd
|
|
50
|
-
s.silent = True
|
|
51
49
|
assert " -silent " in s.dvc_cmd
|
|
50
|
+
s.verbose = True
|
|
51
|
+
assert " -silent " not in s.dvc_cmd
|
|
52
52
|
assert "my-paper.tex" in s.dvc_deps
|
|
53
53
|
assert "my-paper.pdf" in s.dvc_outs
|
|
@@ -38,7 +38,7 @@ we can focus on three rules:
|
|
|
38
38
|
`nbstripout --install` in the project directory.
|
|
39
39
|
1. A notebook must run in one of the project's [environments](environments.md).
|
|
40
40
|
1. Notebooks should be incorporated into the project's
|
|
41
|
-
[pipeline](pipeline/index.md)
|
|
41
|
+
[pipeline](pipeline/index.md).
|
|
42
42
|
It's fine to do some ad hoc work interactively to get the notebook
|
|
43
43
|
working properly, but
|
|
44
44
|
"official" outputs should be generated by calling `calkit run`.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/editor-split.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-project.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-pub-2.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/new-token.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/paper.tex.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/latex-codespaces/project-home-3.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/insert-link-to-file.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/pipeline-out-of-date.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/status-more-rows.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/uncommitted-changes.png
RENAMED
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/updated-publication.png
RENAMED
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/office/word-to-pdf-stage-2.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/create-project.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.25.1 → calkit_python-0.25.2}/docs/tutorials/img/openfoam/figure-on-website.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|