calkit-python 0.0.8__tar.gz → 0.0.9__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 (36) hide show
  1. {calkit_python-0.0.8 → calkit_python-0.0.9}/PKG-INFO +1 -1
  2. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/__init__.py +1 -1
  3. calkit_python-0.0.9/calkit/cli/list.py +70 -0
  4. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/main.py +3 -5
  5. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/new.py +4 -15
  6. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/core.py +7 -0
  7. {calkit_python-0.0.8 → calkit_python-0.0.9}/.github/FUNDING.yml +0 -0
  8. {calkit_python-0.0.8 → calkit_python-0.0.9}/.github/workflows/publish-test.yml +0 -0
  9. {calkit_python-0.0.8 → calkit_python-0.0.9}/.github/workflows/publish.yml +0 -0
  10. {calkit_python-0.0.8 → calkit_python-0.0.9}/.gitignore +0 -0
  11. {calkit_python-0.0.8 → calkit_python-0.0.9}/LICENSE +0 -0
  12. {calkit_python-0.0.8 → calkit_python-0.0.9}/README.md +0 -0
  13. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/__init__.py +0 -0
  14. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/config.py +0 -0
  15. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/core.py +0 -0
  16. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cli/notebooks.py +0 -0
  17. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/cloud.py +0 -0
  18. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/config.py +0 -0
  19. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/data.py +0 -0
  20. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/dvc.py +0 -0
  21. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/git.py +0 -0
  22. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/gui.py +0 -0
  23. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/jupyter.py +0 -0
  24. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/models.py +0 -0
  25. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/server.py +0 -0
  26. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/tests/__init__.py +0 -0
  27. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/tests/test_core.py +0 -0
  28. {calkit_python-0.0.8 → calkit_python-0.0.9}/calkit/tests/test_jupyter.py +0 -0
  29. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/cfd-study/README.md +0 -0
  30. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/cfd-study/calkit.yaml +0 -0
  31. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/cfd-study/config/simulations/runs.csv +0 -0
  32. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/cfd-study/notebook.ipynb +0 -0
  33. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/ms-office/.gitignore +0 -0
  34. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/ms-office/README.md +0 -0
  35. {calkit_python-0.0.8 → calkit_python-0.0.9}/examples/ms-office/calkit.yaml +0 -0
  36. {calkit_python-0.0.8 → calkit_python-0.0.9}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: calkit-python
3
- Version: 0.0.8
3
+ Version: 0.0.9
4
4
  Summary: Reproducibility simplified.
5
5
  Project-URL: Homepage, https://github.com/calkit/calkit
6
6
  Project-URL: Issues, https://github.com/calkit/calkit/issues
@@ -1,4 +1,4 @@
1
- __version__ = "0.0.8"
1
+ __version__ = "0.0.9"
2
2
 
3
3
  from .core import *
4
4
  from . import git
@@ -0,0 +1,70 @@
1
+ """CLI for listing objects."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Literal
6
+
7
+ import typer
8
+
9
+ import calkit
10
+
11
+ list_app = typer.Typer(no_args_is_help=True)
12
+
13
+
14
+ def _list_objects(
15
+ kind: Literal[
16
+ "notebooks", "datasets", "figures", "references", "publications"
17
+ ]
18
+ ):
19
+ """List objects.
20
+
21
+ TODO: This should probably just use some library to dump YAML to string.
22
+ """
23
+ ck_info = calkit.load_calkit_info()
24
+ objects = ck_info.get(kind, [])
25
+ for obj in objects:
26
+ path = obj.pop("path")
27
+ typer.echo(f"- path: {path}")
28
+ for k, v in obj.items():
29
+ if isinstance(v, dict):
30
+ typer.echo(f" {k}:")
31
+ for k1, v1 in v.items():
32
+ typer.echo(f" {k1}: {v1}")
33
+ elif isinstance(v, list):
34
+ typer.echo(f" {k}:")
35
+ for item in v:
36
+ if isinstance(item, dict):
37
+ for n, (k1, v1) in enumerate(item.items()):
38
+ if n == 0:
39
+ typer.echo(f" - {k1}: {v1}")
40
+ else:
41
+ typer.echo(f" {k1}: {v1}")
42
+ else:
43
+ typer.echo(f" - {item}")
44
+ else:
45
+ typer.echo(f" {k}: {v}")
46
+
47
+
48
+ @list_app.command(name="notebooks")
49
+ def list_notebooks():
50
+ _list_objects("notebooks")
51
+
52
+
53
+ @list_app.command(name="figures")
54
+ def list_figures():
55
+ _list_objects("figures")
56
+
57
+
58
+ @list_app.command(name="datasets")
59
+ def list_datasets():
60
+ _list_objects("datasets")
61
+
62
+
63
+ @list_app.command(name="publications")
64
+ def list_publications():
65
+ _list_objects("publications")
66
+
67
+
68
+ @list_app.command(name="references")
69
+ def list_references():
70
+ _list_objects("references")
@@ -11,6 +11,7 @@ from typing_extensions import Annotated, Optional
11
11
  import calkit
12
12
  from calkit.cli import print_sep, run_cmd
13
13
  from calkit.cli.config import config_app
14
+ from calkit.cli.list import list_app
14
15
  from calkit.cli.new import new_app
15
16
  from calkit.cli.notebooks import notebooks_app
16
17
 
@@ -25,6 +26,7 @@ app.add_typer(
25
26
  new_app, name="new", help="Add new Calkit object (to calkit.yaml)."
26
27
  )
27
28
  app.add_typer(notebooks_app, name="nb", help="Work with Jupyter notebooks.")
29
+ app.add_typer(list_app, name="list", help="List Calkit objects.")
28
30
 
29
31
 
30
32
  @app.callback()
@@ -293,11 +295,7 @@ def run_dvc_repro(
293
295
  )
294
296
  # Now that we've extracted Calkit objects from stage metadata, we can put
295
297
  # them into the calkit.yaml file, overwriting objects with the same path
296
- if os.path.isfile("calkit.yaml"):
297
- with open("calkit.yaml") as f:
298
- ck_info = calkit.ryaml.load(f)
299
- else:
300
- ck_info = {}
298
+ ck_info = calkit.load_calkit_info()
301
299
  for obj in objects:
302
300
  cktype = obj.pop("type")
303
301
  cktype_plural = cktype + "s"
@@ -8,6 +8,7 @@ import git
8
8
  import typer
9
9
  from typing_extensions import Annotated
10
10
 
11
+ import calkit
11
12
  from calkit.core import ryaml
12
13
 
13
14
  new_app = typer.Typer(no_args_is_help=True)
@@ -21,11 +22,7 @@ def new_figure(
21
22
  commit: Annotated[bool, typer.Option("--commit")] = False,
22
23
  ):
23
24
  """Add a new figure."""
24
- if os.path.isfile("calkit.yaml"):
25
- with open("calkit.yaml") as f:
26
- ck_info = ryaml.load(f)
27
- else:
28
- ck_info = {}
25
+ ck_info = calkit.load_calkit_info()
29
26
  figures = ck_info.get("figures", [])
30
27
  paths = [f.get("path") for f in figures]
31
28
  if path in paths:
@@ -49,11 +46,7 @@ def new_question(
49
46
  commit: Annotated[bool, typer.Option("--commit")] = False,
50
47
  ):
51
48
  """Add a new question."""
52
- if os.path.isfile("calkit.yaml"):
53
- with open("calkit.yaml") as f:
54
- ck_info = ryaml.load(f)
55
- else:
56
- ck_info = {}
49
+ ck_info = calkit.load_calkit_info()
57
50
  questions = ck_info.get("questions", [])
58
51
  if question in questions:
59
52
  raise ValueError("Question already exists")
@@ -85,11 +78,7 @@ def new_notebook(
85
78
  raise ValueError("Path does not have .ipynb extension")
86
79
  # TODO: Add option to create stages that run `calkit nb clean` and
87
80
  # `calkit nb execute`
88
- if os.path.isfile("calkit.yaml"):
89
- with open("calkit.yaml") as f:
90
- ck_info = ryaml.load(f)
91
- else:
92
- ck_info = {}
81
+ ck_info = calkit.load_calkit_info()
93
82
  notebooks = ck_info.get("notebooks", [])
94
83
  paths = [f.get("path") for f in notebooks]
95
84
  if path in paths:
@@ -44,3 +44,10 @@ def find_project_dirs(relative=False, max_depth=3) -> list[str]:
44
44
  continue
45
45
  final_res.append(path)
46
46
  return final_res
47
+
48
+
49
+ def load_calkit_info() -> dict:
50
+ if os.path.isfile("calkit.yaml"):
51
+ with open("calkit.yaml") as f:
52
+ return ryaml.load(f)
53
+ return {}
File without changes
File without changes
File without changes