calkit-python 0.20.4__tar.gz → 0.20.6__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 (141) hide show
  1. {calkit_python-0.20.4 → calkit_python-0.20.6}/PKG-INFO +1 -1
  2. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/__init__.py +1 -1
  3. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/check.py +39 -0
  4. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/main.py +2 -1
  5. {calkit_python-0.20.4 → calkit_python-0.20.6}/.github/FUNDING.yml +0 -0
  6. {calkit_python-0.20.4 → calkit_python-0.20.6}/.github/workflows/docs.yml +0 -0
  7. {calkit_python-0.20.4 → calkit_python-0.20.6}/.github/workflows/publish-test.yml +0 -0
  8. {calkit_python-0.20.4 → calkit_python-0.20.6}/.github/workflows/publish.yml +0 -0
  9. {calkit_python-0.20.4 → calkit_python-0.20.6}/.gitignore +0 -0
  10. {calkit_python-0.20.4 → calkit_python-0.20.6}/.pre-commit-config.yaml +0 -0
  11. {calkit_python-0.20.4 → calkit_python-0.20.6}/CONTRIBUTING.md +0 -0
  12. {calkit_python-0.20.4 → calkit_python-0.20.6}/LICENSE +0 -0
  13. {calkit_python-0.20.4 → calkit_python-0.20.6}/Makefile +0 -0
  14. {calkit_python-0.20.4 → calkit_python-0.20.6}/README.md +0 -0
  15. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/__main__.py +0 -0
  16. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/calc.py +0 -0
  17. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/check.py +0 -0
  18. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/__init__.py +0 -0
  19. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/config.py +0 -0
  20. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/core.py +0 -0
  21. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/import_.py +0 -0
  22. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/list.py +0 -0
  23. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/new.py +0 -0
  24. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/notebooks.py +0 -0
  25. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/office.py +0 -0
  26. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cli/update.py +0 -0
  27. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/cloud.py +0 -0
  28. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/conda.py +0 -0
  29. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/config.py +0 -0
  30. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/core.py +0 -0
  31. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/datasets.py +0 -0
  32. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/docker.py +0 -0
  33. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/dvc.py +0 -0
  34. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/git.py +0 -0
  35. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/github.py +0 -0
  36. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/gui.py +0 -0
  37. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/jupyter.py +0 -0
  38. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/magics.py +0 -0
  39. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/models.py +0 -0
  40. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/office.py +0 -0
  41. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/ops.py +0 -0
  42. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/releases.py +0 -0
  43. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/server.py +0 -0
  44. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/__init__.py +0 -0
  45. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/core.py +0 -0
  46. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/__init__.py +0 -0
  47. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/article/paper.tex +0 -0
  48. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/core.py +0 -0
  49. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/jfm/jfm.bst +0 -0
  50. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/jfm/jfm.cls +0 -0
  51. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  52. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/jfm/paper.tex +0 -0
  53. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/templates/latex/jfm/upmath.sty +0 -0
  54. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/__init__.py +0 -0
  55. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/cli/__init__.py +0 -0
  56. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/cli/test_list.py +0 -0
  57. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/cli/test_main.py +0 -0
  58. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/cli/test_new.py +0 -0
  59. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_calc.py +0 -0
  60. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_check.py +0 -0
  61. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_conda.py +0 -0
  62. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_core.py +0 -0
  63. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_dvc.py +0 -0
  64. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_jupyter.py +0 -0
  65. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_magics.py +0 -0
  66. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/tests/test_templates.py +0 -0
  67. {calkit_python-0.20.4 → calkit_python-0.20.6}/calkit/zenodo.py +0 -0
  68. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/CNAME +0 -0
  69. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/apps.md +0 -0
  70. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/calculations.md +0 -0
  71. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/calkit-yaml.md +0 -0
  72. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/cli-reference.md +0 -0
  73. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/cloud-integration.md +0 -0
  74. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/datasets.md +0 -0
  75. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/environments.md +0 -0
  76. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/examples.md +0 -0
  77. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/help.md +0 -0
  78. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/img/c-to-the-k-white.svg +0 -0
  79. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/img/calkit-no-bg.png +0 -0
  80. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/img/connect-zenodo.png +0 -0
  81. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/index.md +0 -0
  82. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/installation.md +0 -0
  83. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/local-server.md +0 -0
  84. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/pipeline/index.md +0 -0
  85. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/pipeline/manual-steps.md +0 -0
  86. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/references.md +0 -0
  87. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/releases.md +0 -0
  88. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  89. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/conda-envs.md +0 -0
  90. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/existing-project.md +0 -0
  91. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/first-project.md +0 -0
  92. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  93. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  94. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  95. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  96. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  97. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  98. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  99. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  100. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  101. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  102. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  103. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  104. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  105. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  106. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/create-project.png +0 -0
  107. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  108. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/excel-chart.png +0 -0
  109. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/excel-data.png +0 -0
  110. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  111. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/needs-clone.png +0 -0
  112. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/new-stage.png +0 -0
  113. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  114. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  115. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/status-more-rows.png +0 -0
  116. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  117. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/untracked-data.png +0 -0
  118. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/updated-publication.png +0 -0
  119. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  120. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/office/workflow-page.png +0 -0
  121. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/clone.png +0 -0
  122. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/create-project.png +0 -0
  123. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  124. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  125. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  126. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/new-token.png +0 -0
  127. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/reclone.png +0 -0
  128. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  129. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/img/run-proc.png +0 -0
  130. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/index.md +0 -0
  131. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/latex-codespaces.md +0 -0
  132. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/matlab.md +0 -0
  133. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/notebook-pipeline.md +0 -0
  134. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/office.md +0 -0
  135. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/openfoam.md +0 -0
  136. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/tutorials/procedures.md +0 -0
  137. {calkit_python-0.20.4 → calkit_python-0.20.6}/docs/version-control.md +0 -0
  138. {calkit_python-0.20.4 → calkit_python-0.20.6}/mkdocs.yml +0 -0
  139. {calkit_python-0.20.4 → calkit_python-0.20.6}/pyproject.toml +0 -0
  140. {calkit_python-0.20.4 → calkit_python-0.20.6}/test/pipeline.ipynb +0 -0
  141. {calkit_python-0.20.4 → calkit_python-0.20.6}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.20.4
3
+ Version: 0.20.6
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.20.4"
1
+ __version__ = "0.20.6"
2
2
 
3
3
  from .core import *
4
4
  from . import git
@@ -10,6 +10,8 @@ import subprocess
10
10
  from typing import Annotated
11
11
 
12
12
  import checksumdir
13
+ import dotenv
14
+ import git
13
15
  import typer
14
16
 
15
17
  import calkit
@@ -194,3 +196,40 @@ def check_conda_env(
194
196
  log_func=log_func,
195
197
  relaxed=relaxed,
196
198
  )
199
+
200
+
201
+ @check_app.command(name="env-vars")
202
+ def check_env_vars():
203
+ """Check that the project's required environmental variables exist."""
204
+ typer.echo("Checking project environmental variables")
205
+ dotenv.load_dotenv(dotenv_path=".env")
206
+ ck_info = calkit.load_calkit_info()
207
+ deps = ck_info.get("dependencies", [])
208
+ env_var_deps = {}
209
+ for d in deps:
210
+ if isinstance(d, dict):
211
+ name = list(d.keys())[0]
212
+ attrs = list(d.values())[0]
213
+ if attrs.get("kind") == "env-var":
214
+ env_var_deps[name] = attrs
215
+ for name, attrs in env_var_deps.items():
216
+ if name not in os.environ:
217
+ typer.echo(f"Missing env var '{name}'")
218
+ if "default" in attrs:
219
+ default = attrs["default"]
220
+ else:
221
+ default = None
222
+ value = typer.prompt(
223
+ f"Enter a value for {name}", default=default, type=str
224
+ )
225
+ dotenv.set_key(
226
+ dotenv_path=".env", key_to_set=name, value_to_set=value
227
+ )
228
+ # Ensure that .env is ignored by git
229
+ repo = git.Repo()
230
+ if not repo.ignored(".env"):
231
+ typer.echo("Adding .env to .gitignore")
232
+ with open(".gitignore", "a") as f:
233
+ f.write("\n.env\n")
234
+ message = "✅ All set!"
235
+ typer.echo(message.encode("utf-8", errors="replace"))
@@ -6,6 +6,7 @@ import csv
6
6
  import glob
7
7
  import os
8
8
  import platform as _platform
9
+ import posixpath
9
10
  import subprocess
10
11
  import sys
11
12
  import time
@@ -835,7 +836,7 @@ def run_in_env(
835
836
  docker_wdir = env.get("wdir", "/work")
836
837
  docker_wdir_mount = docker_wdir
837
838
  if wdir is not None:
838
- docker_wdir = os.path.join(docker_wdir, wdir)
839
+ docker_wdir = posixpath.join(docker_wdir, wdir)
839
840
  shell = env.get("shell", "sh")
840
841
  platform = env.get("platform")
841
842
  if env["kind"] == "docker":
File without changes
File without changes
File without changes
File without changes