calkit-python 0.24.5__tar.gz → 0.24.7__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.5 → calkit_python-0.24.7}/PKG-INFO +1 -1
  2. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/__init__.py +1 -1
  3. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/check.py +24 -12
  4. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/FUNDING.yml +0 -0
  5. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/workflows/docs.yml +0 -0
  6. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/workflows/format.yml +0 -0
  7. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/workflows/publish-test.yml +0 -0
  8. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/workflows/publish.yml +0 -0
  9. {calkit_python-0.24.5 → calkit_python-0.24.7}/.github/workflows/test.yml +0 -0
  10. {calkit_python-0.24.5 → calkit_python-0.24.7}/.gitignore +0 -0
  11. {calkit_python-0.24.5 → calkit_python-0.24.7}/.pre-commit-config.yaml +0 -0
  12. {calkit_python-0.24.5 → calkit_python-0.24.7}/.python-version +0 -0
  13. {calkit_python-0.24.5 → calkit_python-0.24.7}/CONTRIBUTING.md +0 -0
  14. {calkit_python-0.24.5 → calkit_python-0.24.7}/LICENSE +0 -0
  15. {calkit_python-0.24.5 → calkit_python-0.24.7}/Makefile +0 -0
  16. {calkit_python-0.24.5 → calkit_python-0.24.7}/README.md +0 -0
  17. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/__main__.py +0 -0
  18. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/calc.py +0 -0
  19. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/check.py +0 -0
  20. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/__init__.py +0 -0
  21. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/cloud.py +0 -0
  22. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/config.py +0 -0
  23. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/core.py +0 -0
  24. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/import_.py +0 -0
  25. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/list.py +0 -0
  26. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/main.py +0 -0
  27. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/new.py +0 -0
  28. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/notebooks.py +0 -0
  29. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/office.py +0 -0
  30. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/overleaf.py +0 -0
  31. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cli/update.py +0 -0
  32. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/cloud.py +0 -0
  33. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/conda.py +0 -0
  34. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/config.py +0 -0
  35. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/core.py +0 -0
  36. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/datasets.py +0 -0
  37. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/docker.py +0 -0
  38. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/dvc.py +0 -0
  39. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/environments.py +0 -0
  40. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/git.py +0 -0
  41. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/github.py +0 -0
  42. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/gui.py +0 -0
  43. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/jupyter.py +0 -0
  44. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/magics.py +0 -0
  45. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/matlab.py +0 -0
  46. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/models/__init__.py +0 -0
  47. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/models/core.py +0 -0
  48. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/models/iteration.py +0 -0
  49. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/models/pipeline.py +0 -0
  50. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/notebooks.py +0 -0
  51. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/office.py +0 -0
  52. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/ops.py +0 -0
  53. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/pipeline.py +0 -0
  54. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/releases.py +0 -0
  55. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/server.py +0 -0
  56. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/__init__.py +0 -0
  57. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/core.py +0 -0
  58. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/__init__.py +0 -0
  59. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/article/paper.tex +0 -0
  60. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/core.py +0 -0
  61. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/jfm/jfm.bst +0 -0
  62. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/jfm/jfm.cls +0 -0
  63. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  64. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/jfm/paper.tex +0 -0
  65. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/templates/latex/jfm/upmath.sty +0 -0
  66. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/__init__.py +0 -0
  67. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/cli/__init__.py +0 -0
  68. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/cli/test_config.py +0 -0
  69. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/cli/test_list.py +0 -0
  70. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/cli/test_main.py +0 -0
  71. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/cli/test_new.py +0 -0
  72. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/models/__init__.py +0 -0
  73. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/models/test_pipeline.py +0 -0
  74. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_calc.py +0 -0
  75. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_check.py +0 -0
  76. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_conda.py +0 -0
  77. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_core.py +0 -0
  78. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_dvc.py +0 -0
  79. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_jupyter.py +0 -0
  80. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_magics.py +0 -0
  81. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_pipeline.py +0 -0
  82. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/tests/test_templates.py +0 -0
  83. {calkit_python-0.24.5 → calkit_python-0.24.7}/calkit/zenodo.py +0 -0
  84. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/CNAME +0 -0
  85. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/apps.md +0 -0
  86. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/calculations.md +0 -0
  87. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/calkit-yaml.md +0 -0
  88. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/cli-reference.md +0 -0
  89. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/cloud-integration.md +0 -0
  90. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/datasets.md +0 -0
  91. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/dependencies.md +0 -0
  92. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/environments.md +0 -0
  93. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/examples.md +0 -0
  94. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/help.md +0 -0
  95. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/img/c-to-the-k-white.svg +0 -0
  96. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/img/calkit-no-bg.png +0 -0
  97. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/img/connect-zenodo.png +0 -0
  98. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/index.md +0 -0
  99. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/installation.md +0 -0
  100. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/local-server.md +0 -0
  101. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/overleaf.md +0 -0
  102. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/pipeline/index.md +0 -0
  103. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/pipeline/manual-steps.md +0 -0
  104. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/references.md +0 -0
  105. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/releases.md +0 -0
  106. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  107. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/conda-envs.md +0 -0
  108. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/existing-project.md +0 -0
  109. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/first-project.md +0 -0
  110. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/building-codespace.png +0 -0
  111. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/codespaces-secrets-2.png +0 -0
  112. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/editor-split.png +0 -0
  113. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/go-to-linked-code.png +0 -0
  114. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/issue-from-selection.png +0 -0
  115. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/new-project.png +0 -0
  116. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/new-pub-2.png +0 -0
  117. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/new-token.png +0 -0
  118. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/paper.tex.png +0 -0
  119. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/project-home-3.png +0 -0
  120. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/push.png +0 -0
  121. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/latex-codespaces/stage.png +0 -0
  122. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/anakin-excel.jpg +0 -0
  123. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/chart-more-rows.png +0 -0
  124. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/create-project.png +0 -0
  125. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/elsevier-research-data-guidelines.png +0 -0
  126. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/excel-chart.png +0 -0
  127. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/excel-data.png +0 -0
  128. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/insert-link-to-file.png +0 -0
  129. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/needs-clone.png +0 -0
  130. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/new-stage.png +0 -0
  131. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/phd-comics-version-control.webp +0 -0
  132. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/pipeline-out-of-date.png +0 -0
  133. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/status-more-rows.png +0 -0
  134. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/uncommitted-changes.png +0 -0
  135. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/untracked-data.png +0 -0
  136. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/updated-publication.png +0 -0
  137. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/word-to-pdf-stage-2.png +0 -0
  138. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/office/workflow-page.png +0 -0
  139. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/clone.png +0 -0
  140. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/create-project.png +0 -0
  141. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/datasets-page.png +0 -0
  142. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/figure-on-website-updated.png +0 -0
  143. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/figure-on-website.png +0 -0
  144. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/new-token.png +0 -0
  145. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/reclone.png +0 -0
  146. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/openfoam/status-after-import-dataset.png +0 -0
  147. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/img/run-proc.png +0 -0
  148. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/index.md +0 -0
  149. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/latex-codespaces.md +0 -0
  150. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/matlab.md +0 -0
  151. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/notebook-pipeline.md +0 -0
  152. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/office.md +0 -0
  153. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/openfoam.md +0 -0
  154. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/tutorials/procedures.md +0 -0
  155. {calkit_python-0.24.5 → calkit_python-0.24.7}/docs/version-control.md +0 -0
  156. {calkit_python-0.24.5 → calkit_python-0.24.7}/mkdocs.yml +0 -0
  157. {calkit_python-0.24.5 → calkit_python-0.24.7}/pyproject.toml +0 -0
  158. {calkit_python-0.24.5 → calkit_python-0.24.7}/test/pipeline.ipynb +0 -0
  159. {calkit_python-0.24.5 → calkit_python-0.24.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calkit-python
3
- Version: 0.24.5
3
+ Version: 0.24.7
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.5"
1
+ __version__ = "0.24.7"
2
2
 
3
3
  from .core import * # noqa: F403, I001
4
4
  from . import git # noqa: F401
@@ -181,17 +181,26 @@ def check_docker_env(
181
181
  "Lock file output path must be provided if input Dockerfile is not"
182
182
  )
183
183
 
184
- def get_docker_inspect():
184
+ def get_docker_inspect() -> dict:
185
+ # This command returns a list, of which we want the first object
185
186
  out = json.loads(
186
187
  subprocess.check_output(["docker", "inspect", tag]).decode()
187
188
  )
188
189
  # Remove some keys that can change without the important aspects of
189
190
  # the image changing
190
- _ = out[0].pop("Id")
191
- _ = out[0].pop("RepoDigests")
192
- _ = out[0].pop("Metadata")
193
- _ = out[0].pop("DockerVersion")
194
- return out
191
+ # Only keep certain keys that are relevant for identifying the
192
+ # content in the image
193
+ keys = [
194
+ "RepoTags",
195
+ "Architecture",
196
+ "Os",
197
+ "Size",
198
+ "RootFS",
199
+ ]
200
+ resp = {}
201
+ for key in keys:
202
+ resp[key] = out[0].get(key)
203
+ return resp
195
204
 
196
205
  def get_md5(path: str, exclude_files: list[str] | None = None) -> str:
197
206
  if os.path.isdir(path):
@@ -208,7 +217,7 @@ def check_docker_env(
208
217
  inspect = get_docker_inspect()
209
218
  except subprocess.CalledProcessError:
210
219
  typer.echo(f"No image with tag {tag} found locally", file=outfile)
211
- inspect = []
220
+ inspect = {}
212
221
  if fpath is not None:
213
222
  typer.echo(f"Reading Dockerfile from {fpath}", file=outfile)
214
223
  dockerfile_md5 = get_md5(fpath)
@@ -227,6 +236,9 @@ def check_docker_env(
227
236
  typer.echo(f"Reading lock file: {lock_fpath}", file=outfile)
228
237
  with open(lock_fpath) as f:
229
238
  lock = json.load(f)
239
+ # Handle legacy lock files that are lists
240
+ if isinstance(lock, list):
241
+ lock = lock[0]
230
242
  else:
231
243
  typer.echo(f"Lock file ({lock_fpath}) does not exist", file=outfile)
232
244
  lock = None
@@ -234,12 +246,12 @@ def check_docker_env(
234
246
  typer.echo(
235
247
  "Checking image and Dockerfile against lock file", file=outfile
236
248
  )
237
- rebuild_or_pull = inspect[0]["RootFS"]["Layers"] != lock[0]["RootFS"][
249
+ rebuild_or_pull = inspect["RootFS"]["Layers"] != lock["RootFS"][
238
250
  "Layers"
239
- ] or dockerfile_md5 != lock[0].get("DockerfileMD5")
251
+ ] or dockerfile_md5 != lock.get("DockerfileMD5")
240
252
  if not rebuild_or_pull:
241
253
  for dep, md5 in deps_md5s.items():
242
- if md5 != lock[0].get("DepsMD5s", {}).get(dep):
254
+ if md5 != lock.get("DepsMD5s", {}).get(dep):
243
255
  typer.echo(f"Found modified dependency: {dep}")
244
256
  rebuild_or_pull = True
245
257
  break
@@ -261,8 +273,8 @@ def check_docker_env(
261
273
  raise_error(f"Failed to pull image: {tag}")
262
274
  # Write the lock file
263
275
  inspect = get_docker_inspect()
264
- inspect[0]["DockerfileMD5"] = dockerfile_md5
265
- inspect[0]["DepsMD5s"] = deps_md5s
276
+ inspect["DockerfileMD5"] = dockerfile_md5
277
+ inspect["DepsMD5s"] = deps_md5s
266
278
  lock_dir = os.path.dirname(lock_fpath)
267
279
  if lock_dir:
268
280
  os.makedirs(lock_dir, exist_ok=True)
File without changes
File without changes
File without changes
File without changes