calkit-python 0.19.0__tar.gz → 0.19.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.19.0 → calkit_python-0.19.1}/PKG-INFO +1 -1
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/__init__.py +1 -1
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/main.py +10 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/existing-project.md +74 -28
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/version-control.md +6 -1
- {calkit_python-0.19.0 → calkit_python-0.19.1}/.github/FUNDING.yml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/.github/workflows/docs.yml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/.github/workflows/publish-test.yml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/.github/workflows/publish.yml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/.gitignore +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/LICENSE +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/README.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/__main__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/calc.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/check.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/__init__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/check.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/config.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/core.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/import_.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/list.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/new.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/notebooks.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/office.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cli/update.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/cloud.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/conda.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/config.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/core.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/datasets.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/docker.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/dvc.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/git.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/gui.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/jupyter.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/magics.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/models.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/office.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/ops.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/server.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/__init__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/core.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/__init__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/article/paper.tex +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/core.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/jfm/jfm.bst +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/jfm/jfm.cls +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/jfm/paper.tex +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/templates/latex/jfm/upmath.sty +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/__init__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/cli/__init__.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/cli/test_list.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/cli/test_main.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/cli/test_new.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_calc.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_check.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_conda.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_core.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_dvc.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_jupyter.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_magics.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/calkit/tests/test_templates.py +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/CNAME +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/apps.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/calculations.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/calkit-yaml.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/cli-reference.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/cloud-integration.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/datasets.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/environments.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/examples.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/help.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/img/c-to-the-k-white.svg +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/img/calkit-no-bg.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/index.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/installation.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/local-server.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/pipeline/index.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/pipeline/manual-steps.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/references.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/adding-latex-pub-docker.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/conda-envs.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/first-project.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/push.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/chart-more-rows.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/create-project.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/excel-chart.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/excel-data.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/needs-clone.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/new-stage.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/status-more-rows.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/untracked-data.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/updated-publication.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/workflow-page.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/clone.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/create-project.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/new-token.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/reclone.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/run-proc.png +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/latex-codespaces.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/matlab.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/notebook-pipeline.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/office.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/openfoam.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/procedures.md +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/mkdocs.yml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/pyproject.toml +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/test/pipeline.ipynb +0 -0
- {calkit_python-0.19.0 → calkit_python-0.19.1}/uv.lock +0 -0
|
@@ -536,6 +536,16 @@ def push(
|
|
|
536
536
|
raise_error("DVC push failed")
|
|
537
537
|
|
|
538
538
|
|
|
539
|
+
@app.command(name="sync")
|
|
540
|
+
def sync(
|
|
541
|
+
no_check_auth: Annotated[bool, typer.Option("--no-check-auth")] = False,
|
|
542
|
+
):
|
|
543
|
+
"""Sync the project repo by pulling and then pushing."""
|
|
544
|
+
# TODO: Walk users through merge conflicts if they arise
|
|
545
|
+
pull(no_check_auth=no_check_auth)
|
|
546
|
+
push(no_check_auth=no_check_auth)
|
|
547
|
+
|
|
548
|
+
|
|
539
549
|
@app.command(name="ignore")
|
|
540
550
|
def ignore(
|
|
541
551
|
path: Annotated[str, typer.Argument(help="Path to ignore.")],
|
|
@@ -39,16 +39,14 @@ If you're a grad student, you might work on a single topic throughout
|
|
|
39
39
|
grad school, which means all of your research-related files can
|
|
40
40
|
go into a single project.
|
|
41
41
|
Note that we don't want to include things like coursework
|
|
42
|
-
or personal
|
|
42
|
+
or personal documents like your CV or transcripts.
|
|
43
43
|
The folder should only include materials relevant to planning,
|
|
44
44
|
performing, and publishing
|
|
45
45
|
the research.
|
|
46
46
|
Anything to be shared with the outside world,
|
|
47
47
|
and anything required to produce those things should be included.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
move the data into the folder and update the script accordingly.
|
|
51
|
-
Make it all local.
|
|
48
|
+
If you have a script referencing some data outside this parent folder,
|
|
49
|
+
move the data inside and update the script accordingly.
|
|
52
50
|
|
|
53
51
|
Here's an example project folder layout:
|
|
54
52
|
|
|
@@ -95,6 +93,14 @@ Here's an example project folder layout:
|
|
|
95
93
|
It's okay if the structure doesn't match exactly.
|
|
96
94
|
It's just important that everything is in there.
|
|
97
95
|
You can reorganize later.
|
|
96
|
+
We're mainly focused on minimizing external dependencies to
|
|
97
|
+
improve reproducibility.
|
|
98
|
+
That is,
|
|
99
|
+
the more self-contained we can make the project,
|
|
100
|
+
the easier it will be to reproduce,
|
|
101
|
+
since getting all of those external dependencies documented properly
|
|
102
|
+
and setup in a different context can be
|
|
103
|
+
a challenge.
|
|
98
104
|
|
|
99
105
|
It's a good idea to keep your library of references
|
|
100
106
|
(the BibTeX file `references.bib` in the example above)
|
|
@@ -106,10 +112,9 @@ or a reference collection in an app like Zotero.
|
|
|
106
112
|
Similarly,
|
|
107
113
|
if you have files in cloud services like Dropbox or Overleaf,
|
|
108
114
|
download all of them to the project folder.
|
|
109
|
-
Locality helps keep things simple and reduce external dependencies.
|
|
110
115
|
This project folder should be the single source of truth.
|
|
111
|
-
You can
|
|
112
|
-
|
|
116
|
+
You can work on materials in other tools,
|
|
117
|
+
but if so,
|
|
113
118
|
the files should always be downloaded back to the main project folder.
|
|
114
119
|
|
|
115
120
|
!!! tip
|
|
@@ -137,8 +142,9 @@ the files should always be downloaded back to the main project folder.
|
|
|
137
142
|
|
|
138
143
|
## Create/initialize the project
|
|
139
144
|
|
|
140
|
-
|
|
141
|
-
|
|
145
|
+
With a terminal open inside the project folder
|
|
146
|
+
(`my-phd-research` in the example above),
|
|
147
|
+
initialize it as a new Calkit project with:
|
|
142
148
|
|
|
143
149
|
```sh
|
|
144
150
|
calkit new project . \
|
|
@@ -151,7 +157,7 @@ calkit new project . \
|
|
|
151
157
|
In this command, the `.` means the current working directory,
|
|
152
158
|
or "here."
|
|
153
159
|
The name, title, and description should be adapted to your own
|
|
154
|
-
project.
|
|
160
|
+
project of course.
|
|
155
161
|
The name should be "kebab-case" (all lowercase with hyphens separating words),
|
|
156
162
|
the title should be sentence or title case,
|
|
157
163
|
and the description should include punctuation,
|
|
@@ -318,7 +324,8 @@ Pushing
|
|
|
318
324
|
|
|
319
325
|
Now that we have all of our files in version control,
|
|
320
326
|
we need to ensure that our output artifacts like derived datasets,
|
|
321
|
-
figures, and publication PDFs are generated with
|
|
327
|
+
figures, and publication PDFs are generated with
|
|
328
|
+
[the pipeline](../pipeline/index.md).
|
|
322
329
|
This will ensure that they stay up to date if any of their
|
|
323
330
|
input data or dependencies change.
|
|
324
331
|
|
|
@@ -346,13 +353,18 @@ In the command above we're specifying two packages to exist in the environment,
|
|
|
346
353
|
`pandas` and `matplotlib`.
|
|
347
354
|
However, you may have many more than this.
|
|
348
355
|
You can add them to the command or add them to the resulting
|
|
349
|
-
environment definition file
|
|
356
|
+
environment definition file
|
|
357
|
+
(`environment.yml` by default for Conda environments) later.
|
|
350
358
|
If you prefer Python's built-in `venv` module to manage your environment,
|
|
351
359
|
you can replace `conda-env` with `venv`,
|
|
352
360
|
and similarly, if you prefer `uv`, you can replace it with `uv-venv`.
|
|
353
361
|
|
|
362
|
+
After an environment is created,
|
|
363
|
+
it will be stored in the `environments` section of the `calkit.yaml` file.
|
|
364
|
+
It can also be modified (or removed) by editing that file.
|
|
365
|
+
|
|
354
366
|
If you have multiple Python scripts that require different,
|
|
355
|
-
possibly conflicting sets of
|
|
367
|
+
possibly conflicting sets of packages,
|
|
356
368
|
you can simply create multiple environments and name them descriptively.
|
|
357
369
|
For example, instead of one environment called `py`,
|
|
358
370
|
you can create one called `processing` and one called `plotting`.
|
|
@@ -369,9 +381,12 @@ We can create a Docker environment called `tex` for these with:
|
|
|
369
381
|
calkit new docker-env --name tex --image texlive/texlive:latest-full
|
|
370
382
|
```
|
|
371
383
|
|
|
384
|
+
This environment is referencing a TeXLive Docker image from Docker Hub,
|
|
385
|
+
which requires [Docker](https://docker.com) to be installed,
|
|
386
|
+
but will not require a separate LaTeX distribution to be installed.
|
|
372
387
|
If you don't need the full TeXLive distribution, you can
|
|
373
388
|
select any other image you'd like from
|
|
374
|
-
[this list
|
|
389
|
+
[this list](https://hub.docker.com/r/texlive/texlive/tags).
|
|
375
390
|
|
|
376
391
|
### Add pipeline stages
|
|
377
392
|
|
|
@@ -393,7 +408,28 @@ calkit new stage \
|
|
|
393
408
|
--out data/processed
|
|
394
409
|
```
|
|
395
410
|
|
|
396
|
-
|
|
411
|
+
This will add a stage to the `dvc.yaml` file that looks like:
|
|
412
|
+
|
|
413
|
+
```yaml
|
|
414
|
+
stages:
|
|
415
|
+
process-data:
|
|
416
|
+
cmd: calkit xenv -n py -- python scripts/process.py
|
|
417
|
+
deps:
|
|
418
|
+
- data/raw
|
|
419
|
+
- environment.yml
|
|
420
|
+
- scripts/process.py
|
|
421
|
+
outs:
|
|
422
|
+
- data/processed
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
This stage can also be modified later, e.g.,
|
|
426
|
+
if there end up being additional dependencies
|
|
427
|
+
(files or folders which if changed, require the script to be rerun).
|
|
428
|
+
See the
|
|
429
|
+
[DVC documentation](https://dvc.org/doc/user-guide/pipelines/defining-pipelines#stages)
|
|
430
|
+
for more information about defining pipeline stages.
|
|
431
|
+
|
|
432
|
+
Next, create a stage for plotting:
|
|
397
433
|
|
|
398
434
|
```sh
|
|
399
435
|
calkit new stage \
|
|
@@ -406,7 +442,7 @@ calkit new stage \
|
|
|
406
442
|
--out figures
|
|
407
443
|
```
|
|
408
444
|
|
|
409
|
-
|
|
445
|
+
Then add stages to build our LaTeX documents:
|
|
410
446
|
|
|
411
447
|
```sh
|
|
412
448
|
calkit new stage \
|
|
@@ -440,7 +476,7 @@ calkit run
|
|
|
440
476
|
```
|
|
441
477
|
|
|
442
478
|
If there are no errors,
|
|
443
|
-
we can commit the outputs and push them up to the cloud with
|
|
479
|
+
we can commit the outputs and push them up to the cloud with `calkit save`:
|
|
444
480
|
|
|
445
481
|
```sh
|
|
446
482
|
calkit save -am "Run pipeline"
|
|
@@ -456,6 +492,8 @@ users can run `calkit import dataset` in their own project to reuse
|
|
|
456
492
|
one of yours,
|
|
457
493
|
and your project will be listed as the source in that project's
|
|
458
494
|
`calkit.yaml` file.
|
|
495
|
+
See the [FAIR principles](https://www.go-fair.org/fair-principles/)
|
|
496
|
+
to learn more about why this is important.
|
|
459
497
|
|
|
460
498
|
Note that when they are ready for public consumption,
|
|
461
499
|
we can create a "release" that will archive these materials
|
|
@@ -463,9 +501,9 @@ to a service like
|
|
|
463
501
|
Figshare, Zenodo, or OSF, and give them a
|
|
464
502
|
digital object identifier (DOI) for citation and traceability.
|
|
465
503
|
It's a good idea to create a release of the project before submitting
|
|
466
|
-
a journal article and
|
|
504
|
+
a journal article and to cite it therein,
|
|
467
505
|
so readers can find their way back to the project and inspect how
|
|
468
|
-
|
|
506
|
+
the materials were created.
|
|
469
507
|
|
|
470
508
|
Let's go ahead an add our raw and processed datasets to `calkit.yaml`:
|
|
471
509
|
|
|
@@ -482,7 +520,7 @@ or definitions for the columns,
|
|
|
482
520
|
but at the very least we need to define a path and title.
|
|
483
521
|
|
|
484
522
|
Next, add the figures to `calkit.yaml`.
|
|
485
|
-
This will make them show up
|
|
523
|
+
This will make them show up in the figures section of the project homepage
|
|
486
524
|
on [calkit.io](https://calkit.io).
|
|
487
525
|
|
|
488
526
|
```yaml
|
|
@@ -522,7 +560,7 @@ publications:
|
|
|
522
560
|
stage: build-thesis
|
|
523
561
|
```
|
|
524
562
|
|
|
525
|
-
|
|
563
|
+
We can then commit and push the changes to `calkit.yaml` with:
|
|
526
564
|
|
|
527
565
|
```sh
|
|
528
566
|
calkit save calkit.yaml -m "Add artifacts to calkit.yaml"
|
|
@@ -531,20 +569,28 @@ calkit save calkit.yaml -m "Add artifacts to calkit.yaml"
|
|
|
531
569
|
## Next steps
|
|
532
570
|
|
|
533
571
|
Now that our project is fully version-controlled and reproducible,
|
|
534
|
-
|
|
572
|
+
we have a solid baseline to return to if anything breaks
|
|
573
|
+
due to future changes.
|
|
574
|
+
Maybe we have some new figures to generate,
|
|
535
575
|
or maybe we have a new idea for a derived dataset we can create.
|
|
536
576
|
A good way to go about doing this is to create a scratch script or notebook,
|
|
537
577
|
ignoring it with `calkit ignore`,
|
|
538
|
-
prototyping in
|
|
578
|
+
prototyping in that scratch space,
|
|
539
579
|
and moving any valuable code out into a version-controlled script once it
|
|
540
580
|
works the way you want it to.
|
|
541
581
|
|
|
542
|
-
|
|
582
|
+
After producing a new working script,
|
|
583
|
+
add a new pipeline stage to run that script with `calkit new stage`.
|
|
543
584
|
If you need a different environment, you can create one,
|
|
544
|
-
or you can update an existing environment by editing its definition file
|
|
545
|
-
e.g., `environment.yml` for a Conda environment.
|
|
585
|
+
or you can update an existing environment by editing its definition file.
|
|
546
586
|
If you execute `calkit run` again, only the stages that are missing outputs
|
|
547
|
-
or have updated dependencies will
|
|
587
|
+
or have updated dependencies will be executed,
|
|
588
|
+
ensuring the project remains reproducible as efficiently as possible.
|
|
589
|
+
If you continue to commit all changes along the way,
|
|
590
|
+
you'll always be able to get back to something that works
|
|
591
|
+
if something goes wrong,
|
|
592
|
+
sort of like climbing with a safety harness,
|
|
593
|
+
clipping it onto higher and higher anchors as you ascend.
|
|
548
594
|
|
|
549
595
|
## Questions or comments?
|
|
550
596
|
|
|
@@ -134,7 +134,7 @@ calkit clone petebachant/strava-analysis
|
|
|
134
134
|
`calkit status` will show the combined status from both Git and DVC.
|
|
135
135
|
For example:
|
|
136
136
|
|
|
137
|
-
```
|
|
137
|
+
```sh
|
|
138
138
|
$ calkit status
|
|
139
139
|
--------------------------- Code (Git) ---------------------------
|
|
140
140
|
On branch main
|
|
@@ -165,6 +165,11 @@ Options:
|
|
|
165
165
|
prompted for one.
|
|
166
166
|
- `--no-push`: Do not push after committing.
|
|
167
167
|
|
|
168
|
+
### `sync`
|
|
169
|
+
|
|
170
|
+
`calkit sync` will pull from then push to the cloud,
|
|
171
|
+
ensuring both copies are in sync.
|
|
172
|
+
|
|
168
173
|
### `add`
|
|
169
174
|
|
|
170
175
|
`calkit add` will add a file to the repo "staging area,"
|
|
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.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/editor-split.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-project.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-pub-2.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/new-token.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/latex-codespaces/paper.tex.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/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.19.0 → calkit_python-0.19.1}/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.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/pipeline-out-of-date.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/status-more-rows.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/uncommitted-changes.png
RENAMED
|
File without changes
|
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/updated-publication.png
RENAMED
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/office/word-to-pdf-stage-2.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/docs/tutorials/img/openfoam/create-project.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{calkit_python-0.19.0 → calkit_python-0.19.1}/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
|