calkit-python 0.24.3__tar.gz → 0.24.4__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.
Files changed (159) hide show
  1. {calkit_python-0.24.3 → calkit_python-0.24.4}/PKG-INFO +1 -1
  2. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/__init__.py +1 -1
  3. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/overleaf.py +59 -17
  4. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/models/pipeline.py +3 -0
  5. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/FUNDING.yml +0 -0
  6. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/workflows/docs.yml +0 -0
  7. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/workflows/format.yml +0 -0
  8. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/workflows/publish-test.yml +0 -0
  9. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/workflows/publish.yml +0 -0
  10. {calkit_python-0.24.3 → calkit_python-0.24.4}/.github/workflows/test.yml +0 -0
  11. {calkit_python-0.24.3 → calkit_python-0.24.4}/.gitignore +0 -0
  12. {calkit_python-0.24.3 → calkit_python-0.24.4}/.pre-commit-config.yaml +0 -0
  13. {calkit_python-0.24.3 → calkit_python-0.24.4}/.python-version +0 -0
  14. {calkit_python-0.24.3 → calkit_python-0.24.4}/CONTRIBUTING.md +0 -0
  15. {calkit_python-0.24.3 → calkit_python-0.24.4}/LICENSE +0 -0
  16. {calkit_python-0.24.3 → calkit_python-0.24.4}/Makefile +0 -0
  17. {calkit_python-0.24.3 → calkit_python-0.24.4}/README.md +0 -0
  18. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/__main__.py +0 -0
  19. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/calc.py +0 -0
  20. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/check.py +0 -0
  21. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/__init__.py +0 -0
  22. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/check.py +0 -0
  23. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/cloud.py +0 -0
  24. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/config.py +0 -0
  25. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/core.py +0 -0
  26. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/import_.py +0 -0
  27. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/list.py +0 -0
  28. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/main.py +0 -0
  29. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/new.py +0 -0
  30. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/notebooks.py +0 -0
  31. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/office.py +0 -0
  32. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cli/update.py +0 -0
  33. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/cloud.py +0 -0
  34. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/conda.py +0 -0
  35. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/config.py +0 -0
  36. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/core.py +0 -0
  37. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/datasets.py +0 -0
  38. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/docker.py +0 -0
  39. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/dvc.py +0 -0
  40. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/environments.py +0 -0
  41. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/git.py +0 -0
  42. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/github.py +0 -0
  43. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/gui.py +0 -0
  44. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/jupyter.py +0 -0
  45. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/magics.py +0 -0
  46. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/matlab.py +0 -0
  47. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/models/__init__.py +0 -0
  48. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/models/core.py +0 -0
  49. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/models/iteration.py +0 -0
  50. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/notebooks.py +0 -0
  51. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/office.py +0 -0
  52. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/ops.py +0 -0
  53. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/pipeline.py +0 -0
  54. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/releases.py +0 -0
  55. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/server.py +0 -0
  56. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/__init__.py +0 -0
  57. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/core.py +0 -0
  58. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/__init__.py +0 -0
  59. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/article/paper.tex +0 -0
  60. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/core.py +0 -0
  61. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/jfm/jfm.bst +0 -0
  62. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/jfm/jfm.cls +0 -0
  63. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  64. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/jfm/paper.tex +0 -0
  65. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/templates/latex/jfm/upmath.sty +0 -0
  66. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/__init__.py +0 -0
  67. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/cli/__init__.py +0 -0
  68. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/cli/test_config.py +0 -0
  69. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/cli/test_list.py +0 -0
  70. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/cli/test_main.py +0 -0
  71. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/cli/test_new.py +0 -0
  72. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/models/__init__.py +0 -0
  73. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/models/test_pipeline.py +0 -0
  74. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_calc.py +0 -0
  75. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_check.py +0 -0
  76. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_conda.py +0 -0
  77. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_core.py +0 -0
  78. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_dvc.py +0 -0
  79. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_jupyter.py +0 -0
  80. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_magics.py +0 -0
  81. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_pipeline.py +0 -0
  82. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/tests/test_templates.py +0 -0
  83. {calkit_python-0.24.3 → calkit_python-0.24.4}/calkit/zenodo.py +0 -0
  84. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/CNAME +0 -0
  85. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/apps.md +0 -0
  86. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/calculations.md +0 -0
  87. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/calkit-yaml.md +0 -0
  88. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/cli-reference.md +0 -0
  89. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/cloud-integration.md +0 -0
  90. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/datasets.md +0 -0
  91. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/dependencies.md +0 -0
  92. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/environments.md +0 -0
  93. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/examples.md +0 -0
  94. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/help.md +0 -0
  95. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/img/c-to-the-k-white.svg +0 -0
  96. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/img/calkit-no-bg.png +0 -0
  97. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/img/connect-zenodo.png +0 -0
  98. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/index.md +0 -0
  99. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/installation.md +0 -0
  100. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/local-server.md +0 -0
  101. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/overleaf.md +0 -0
  102. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/pipeline/index.md +0 -0
  103. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/pipeline/manual-steps.md +0 -0
  104. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/references.md +0 -0
  105. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/releases.md +0 -0
  106. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  107. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/conda-envs.md +0 -0
  108. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/existing-project.md +0 -0
  109. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/first-project.md +0 -0
  110. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  111. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  112. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  113. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  114. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  115. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  116. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  117. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  118. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  119. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  120. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  121. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  122. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  123. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  124. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/create-project.png +0 -0
  125. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  126. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/excel-chart.png +0 -0
  127. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/excel-data.png +0 -0
  128. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  129. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/needs-clone.png +0 -0
  130. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/new-stage.png +0 -0
  131. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  132. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  133. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/status-more-rows.png +0 -0
  134. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  135. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/untracked-data.png +0 -0
  136. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/updated-publication.png +0 -0
  137. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  138. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/office/workflow-page.png +0 -0
  139. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/clone.png +0 -0
  140. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/create-project.png +0 -0
  141. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  142. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  143. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  144. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/new-token.png +0 -0
  145. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/reclone.png +0 -0
  146. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  147. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/img/run-proc.png +0 -0
  148. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/index.md +0 -0
  149. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/latex-codespaces.md +0 -0
  150. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/matlab.md +0 -0
  151. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/notebook-pipeline.md +0 -0
  152. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/office.md +0 -0
  153. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/openfoam.md +0 -0
  154. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/tutorials/procedures.md +0 -0
  155. {calkit_python-0.24.3 → calkit_python-0.24.4}/docs/version-control.md +0 -0
  156. {calkit_python-0.24.3 → calkit_python-0.24.4}/mkdocs.yml +0 -0
  157. {calkit_python-0.24.3 → calkit_python-0.24.4}/pyproject.toml +0 -0
  158. {calkit_python-0.24.3 → calkit_python-0.24.4}/test/pipeline.ipynb +0 -0
  159. {calkit_python-0.24.3 → calkit_python-0.24.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.24.3
3
+ Version: 0.24.4
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://calkit.org
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -1,4 +1,4 @@
1
- __version__ = "0.24.3"
1
+ __version__ = "0.24.4"
2
2
 
3
3
  from .core import * # noqa: F403, I001
4
4
  from . import git # noqa: F401
@@ -272,7 +272,20 @@ def sync(
272
272
  bool,
273
273
  typer.Option(
274
274
  "--no-commit",
275
- help="Do not commit the changes.",
275
+ help=(
276
+ "Do not commit the changes to the project repo. "
277
+ "Changes will always be committed to Overleaf."
278
+ ),
279
+ ),
280
+ ] = False,
281
+ no_push: Annotated[
282
+ bool,
283
+ typer.Option(
284
+ "--no-push",
285
+ help=(
286
+ "Do not push the changes to the project remote. "
287
+ "Changes will always be pushed to Overleaf."
288
+ ),
276
289
  ),
277
290
  ] = False,
278
291
  verbose: Annotated[
@@ -342,16 +355,27 @@ def sync(
342
355
  last_sync_commit = pub["overleaf"].get("last_sync_commit")
343
356
  # Determine which paths to sync and push
344
357
  # TODO: Support glob patterns
345
- sync_paths = pub["overleaf"].get("sync_paths", [])
358
+ git_sync_paths = pub["overleaf"].get("sync_paths", [])
359
+ git_sync_paths += pub["overleaf"].get("git_sync_paths", [])
360
+ dvc_sync_paths = pub["overleaf"].get("dvc_sync_paths", [])
361
+ sync_paths = git_sync_paths + dvc_sync_paths
346
362
  push_paths = pub["overleaf"].get("push_paths", [])
347
- sync_paths_in_project = [os.path.join(wdir, p) for p in sync_paths]
363
+ git_sync_paths_in_project = [
364
+ os.path.join(wdir, p) for p in git_sync_paths
365
+ ]
366
+ dvc_sync_paths_in_project = [
367
+ os.path.join(wdir, p) for p in dvc_sync_paths
368
+ ]
348
369
  if not sync_paths:
349
- warn("No sync paths defined in the publication's Overleaf config")
370
+ warn(
371
+ "No sync paths or DVC sync paths defined in the publication's "
372
+ "Overleaf config"
373
+ )
350
374
  elif last_sync_commit:
351
375
  # Compute a diff in the Overleaf project between HEAD and the last
352
376
  # sync
353
377
  diff = overleaf_repo.git.diff(
354
- [last_sync_commit, "HEAD", "--"] + sync_paths
378
+ [last_sync_commit, "HEAD", "--"] + git_sync_paths
355
379
  )
356
380
  # Ensure the diff ends with a new line
357
381
  if diff and not diff.endswith("\n"):
@@ -412,18 +436,14 @@ def sync(
412
436
  continue
413
437
  # Stage the changes in the Overleaf project
414
438
  overleaf_repo.git.add(sync_paths + push_paths)
415
- if (
416
- overleaf_repo.git.diff("--staged", sync_paths + push_paths)
417
- and not no_commit
418
- ):
439
+ if overleaf_repo.git.diff("--staged", sync_paths + push_paths):
440
+ typer.echo("Committing changes to Overleaf")
419
441
  commit_message = "Sync with Calkit project"
420
442
  overleaf_repo.git.commit(
421
443
  *(sync_paths + push_paths),
422
444
  "-m",
423
445
  commit_message,
424
446
  )
425
- # TODO: We should probably always push and pull to we can
426
- # idempotently run this command
427
447
  typer.echo("Pushing changes to Overleaf")
428
448
  overleaf_repo.git.push()
429
449
  # Update the last sync commit
@@ -436,19 +456,41 @@ def sync(
436
456
  calkit.ryaml.dump(ck_info, f)
437
457
  repo.git.add("calkit.yaml")
438
458
  # Stage the changes in the project repo
439
- repo.git.add(sync_paths_in_project)
459
+ # Add any DVC sync paths to DVC
460
+ for dvc_sync_path in dvc_sync_paths_in_project:
461
+ if not os.path.isfile(dvc_sync_path):
462
+ raise_error(
463
+ f"DVC sync path {dvc_sync_path} does not exist; "
464
+ "please check your Overleaf config"
465
+ )
466
+ typer.echo(f"Adding DVC sync path {dvc_sync_path} to DVC")
467
+ try:
468
+ subprocess.run(
469
+ ["python", "-m", "dvc", "-q", "add", dvc_sync_path],
470
+ check=True,
471
+ )
472
+ except subprocess.CalledProcessError as e:
473
+ raise_error(
474
+ f"Failed to add DVC sync path {dvc_sync_path}: {e}"
475
+ )
476
+ repo.git.add(git_sync_paths_in_project)
440
477
  if (
441
- repo.git.diff("--staged", sync_paths_in_project + ["calkit.yaml"])
478
+ repo.git.diff(
479
+ "--staged", git_sync_paths_in_project + ["calkit.yaml"]
480
+ )
442
481
  and not no_commit
443
482
  ):
444
483
  typer.echo("Committing changes to project repo")
445
484
  commit_message = f"Sync {wdir} with Overleaf project"
446
485
  repo.git.commit(
447
- *(sync_paths_in_project + ["calkit.yaml"]),
486
+ *(git_sync_paths_in_project + ["calkit.yaml"]),
448
487
  "-m",
449
488
  commit_message,
450
489
  )
451
- # Push to the project remote
452
- typer.echo("Pushing changes to project Git remote")
453
- repo.git.push()
490
+ if not no_push and not no_commit:
491
+ # Push to the project remote
492
+ typer.echo("Pushing changes to project Git remote")
493
+ repo.git.push()
494
+ if dvc_sync_paths:
495
+ subprocess.run(["python", "-m", "dvc", "push"])
454
496
  # TODO: Add option to run the pipeline after?
@@ -180,12 +180,15 @@ class LatexStage(Stage):
180
180
  kind: Literal["latex"] = "latex"
181
181
  target_path: str
182
182
  silent: bool = False
183
+ force: bool = False
183
184
 
184
185
  @property
185
186
  def dvc_cmd(self) -> str:
186
187
  cmd = f"{self.xenv_cmd} -- latexmk -cd -interaction=nonstopmode"
187
188
  if self.silent:
188
189
  cmd += " -silent"
190
+ if self.force:
191
+ cmd += " -f"
189
192
  cmd += f" -pdf {self.target_path}"
190
193
  return cmd
191
194
 
File without changes
File without changes
File without changes
File without changes