calkit-python 0.9.2__tar.gz → 0.9.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 (61) hide show
  1. {calkit_python-0.9.2 → calkit_python-0.9.4}/PKG-INFO +49 -44
  2. {calkit_python-0.9.2 → calkit_python-0.9.4}/README.md +48 -43
  3. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/__init__.py +1 -1
  4. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/config.py +11 -2
  5. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/conda.py +4 -1
  6. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/dvc.py +4 -4
  7. calkit_python-0.9.4/docs/img/calkit-no-bg.png +0 -0
  8. {calkit_python-0.9.2 → calkit_python-0.9.4}/.github/FUNDING.yml +0 -0
  9. {calkit_python-0.9.2 → calkit_python-0.9.4}/.github/workflows/publish-test.yml +0 -0
  10. {calkit_python-0.9.2 → calkit_python-0.9.4}/.github/workflows/publish.yml +0 -0
  11. {calkit_python-0.9.2 → calkit_python-0.9.4}/.gitignore +0 -0
  12. {calkit_python-0.9.2 → calkit_python-0.9.4}/LICENSE +0 -0
  13. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/__init__.py +0 -0
  14. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/core.py +0 -0
  15. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/import_.py +0 -0
  16. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/list.py +0 -0
  17. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/main.py +0 -0
  18. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/new.py +0 -0
  19. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/notebooks.py +0 -0
  20. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/office.py +0 -0
  21. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cli/update.py +0 -0
  22. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/cloud.py +0 -0
  23. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/config.py +0 -0
  24. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/core.py +0 -0
  25. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/data.py +0 -0
  26. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/docker.py +0 -0
  27. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/git.py +0 -0
  28. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/gui.py +0 -0
  29. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/jupyter.py +0 -0
  30. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/magics.py +0 -0
  31. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/models.py +0 -0
  32. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/office.py +0 -0
  33. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/server.py +0 -0
  34. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/__init__.py +0 -0
  35. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/core.py +0 -0
  36. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/__init__.py +0 -0
  37. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/article/paper.tex +0 -0
  38. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/core.py +0 -0
  39. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/jfm/jfm.bst +0 -0
  40. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/jfm/jfm.cls +0 -0
  41. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/jfm/lineno-FLM.sty +0 -0
  42. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/jfm/paper.tex +0 -0
  43. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/templates/latex/jfm/upmath.sty +0 -0
  44. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/__init__.py +0 -0
  45. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/cli/__init__.py +0 -0
  46. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/cli/test_list.py +0 -0
  47. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/cli/test_main.py +0 -0
  48. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/cli/test_new.py +0 -0
  49. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_conda.py +0 -0
  50. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_core.py +0 -0
  51. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_dvc.py +0 -0
  52. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_jupyter.py +0 -0
  53. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_magics.py +0 -0
  54. {calkit_python-0.9.2 → calkit_python-0.9.4}/calkit/tests/test_templates.py +0 -0
  55. {calkit_python-0.9.2 → calkit_python-0.9.4}/docs/tutorials/adding-latex-pub-docker.md +0 -0
  56. {calkit_python-0.9.2 → calkit_python-0.9.4}/docs/tutorials/conda-envs.md +0 -0
  57. {calkit_python-0.9.2 → calkit_python-0.9.4}/docs/tutorials/img/run-proc.png +0 -0
  58. {calkit_python-0.9.2 → calkit_python-0.9.4}/docs/tutorials/notebook-pipeline.md +0 -0
  59. {calkit_python-0.9.2 → calkit_python-0.9.4}/docs/tutorials/procedures.md +0 -0
  60. {calkit_python-0.9.2 → calkit_python-0.9.4}/pyproject.toml +0 -0
  61. {calkit_python-0.9.2 → calkit_python-0.9.4}/test/pipeline.ipynb +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: calkit-python
3
- Version: 0.9.2
3
+ Version: 0.9.4
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
@@ -29,9 +29,13 @@ Requires-Dist: pandas; extra == 'data'
29
29
  Requires-Dist: polars; extra == 'data'
30
30
  Description-Content-Type: text/markdown
31
31
 
32
- # Calkit
32
+ <p align="center">
33
+ <a href="https://calkit.org" target="_blank">
34
+ <img width="40%" src="docs/img/calkit-no-bg.png" alt="Calkit">
35
+ </a>
36
+ </p>
33
37
 
34
- Calkit is a lightweight framework for doing reproducible research.
38
+ Calkit is a lightweight framework for reproducible research projects.
35
39
  It acts as a top-level layer to integrate and simplify the use of enabling
36
40
  technologies such as
37
41
  [Git](https://git-scm.com/),
@@ -59,46 +63,6 @@ To do this, we try to make it easy for users to follow two simple rules:
59
63
  keep computational environments up-to-date and label their outputs for
60
64
  convenient reuse.
61
65
 
62
- ## Tutorials
63
-
64
- - [Jupyter notebook as a DVC pipeline](docs/tutorials/notebook-pipeline.md)
65
- - [Keeping track of conda environments](docs/tutorials/conda-envs.md)
66
- - [Defining and executing manual procedures](docs/tutorials/procedures.md)
67
- - [Adding a new LaTeX-based publication with its own Docker build environment](docs/tutorials/adding-latex-pub-docker.md)
68
- - [A reproducible workflow using Microsoft Office (Word and Excel)](https://petebachant.me/office-repro/)
69
- - [Reproducible OpenFOAM simulations](https://petebachant.me/reproducible-openfoam/)
70
-
71
- ## Why does reproducibility matter?
72
-
73
- If your work is reproducible, that means that someone else can "run" it and
74
- calculate the same results or outputs.
75
- This is a major step towards addressing
76
- [the replication crisis](https://en.wikipedia.org/wiki/Replication_crisis)
77
- and has some major benefits for both you as an individual and the research
78
- community:
79
-
80
- 1. You will avoid mistakes caused by, e.g., running an old version of a script
81
- and including a figure that wasn't created after fixing a bug in the data
82
- processing pipeline.
83
- 2. Since your project is "runnable," it's more likely that someone else will be
84
- able to reuse part of your work to run it in a different context, thereby
85
- producing a bigger impact and accelerating the pace of discovery.
86
- If someone can take what you've done and use it to calculate a
87
- prediction, you have just produced truly useful knowledge.
88
-
89
- ## Why another tool/platform?
90
-
91
- Git, GitHub, DVC, Docker et al. are amazing tools/platforms, but their
92
- use involves multiple fairly difficult learning curves,
93
- and tying them together might mean developing something new for each project.
94
- Our goal is to provide a single tool and platform to unify all of these so
95
- that there is a single, gentle learning curve.
96
- However, it is not our goal to hide or replace these underlying components.
97
- Advanced users can use them directly, but new users aren't forced to, which
98
- helps them get up and running with less effort and training.
99
- Calkit should help users understand what is going on under the hood without
100
- forcing them to work at that lower level of abstraction.
101
-
102
66
  ## Installation
103
67
 
104
68
  To install Calkit, [Git](https://git-scm.com) and Python must be installed.
@@ -120,7 +84,7 @@ pip install calkit-python
120
84
 
121
85
  ## Cloud integration
122
86
 
123
- The Calkit cloud platform (https://calkit.io) serves as a project
87
+ The Calkit Cloud ([calkit.io](https://calkit.io)) serves as a project
124
88
  management interface and a DVC remote for easily storing all versions of your
125
89
  data/code/figures/publications, interacting with your collaborators,
126
90
  reusing others' research artifacts, etc.
@@ -143,6 +107,47 @@ This will setup the Calkit DVC remote, such that commands like `dvc push` will
143
107
  allow you to push versions of your data or pipeline outputs to the cloud
144
108
  for safe storage and sharing with your collaborators.
145
109
 
110
+ ## Tutorials
111
+
112
+ - [LaTeX collaboration with GitHub Codespaces](https://petebachant.me/latex-collab/)
113
+ - [Jupyter notebook as a DVC pipeline](docs/tutorials/notebook-pipeline.md)
114
+ - [Keeping track of conda environments](docs/tutorials/conda-envs.md)
115
+ - [Defining and executing manual procedures](docs/tutorials/procedures.md)
116
+ - [Adding a new LaTeX-based publication with its own Docker build environment](docs/tutorials/adding-latex-pub-docker.md)
117
+ - [A reproducible workflow using Microsoft Office (Word and Excel)](https://petebachant.me/office-repro/)
118
+ - [Reproducible OpenFOAM simulations](https://petebachant.me/reproducible-openfoam/)
119
+
120
+ ## Why does reproducibility matter?
121
+
122
+ If your work is reproducible, that means that someone else can "run" it and
123
+ calculate the same results or outputs.
124
+ This is a major step towards addressing
125
+ [the replication crisis](https://en.wikipedia.org/wiki/Replication_crisis)
126
+ and has some major benefits for both you as an individual and the research
127
+ community:
128
+
129
+ 1. You will avoid mistakes caused by, e.g., running an old version of a script
130
+ and including a figure that wasn't created after fixing a bug in the data
131
+ processing pipeline.
132
+ 2. Since your project is "runnable," it's more likely that someone else will be
133
+ able to reuse part of your work to run it in a different context, thereby
134
+ producing a bigger impact and accelerating the pace of discovery.
135
+ If someone can take what you've done and use it to calculate a
136
+ prediction, you have just produced truly useful knowledge.
137
+
138
+ ## Why another tool/platform?
139
+
140
+ Git, GitHub, DVC, Docker et al. are amazing tools/platforms, but their
141
+ use involves multiple fairly difficult learning curves,
142
+ and tying them together might mean developing something new for each project.
143
+ Our goal is to provide a single tool and platform to unify all of these so
144
+ that there is a single, gentle learning curve.
145
+ However, it is not our goal to hide or replace these underlying components.
146
+ Advanced users can use them directly, but new users aren't forced to, which
147
+ helps them get up and running with less effort and training.
148
+ Calkit should help users understand what is going on under the hood without
149
+ forcing them to work at that lower level of abstraction.
150
+
146
151
  ## How it works
147
152
 
148
153
  Calkit creates a simple human-readable "database" inside the `calkit.yaml`
@@ -1,6 +1,10 @@
1
- # Calkit
1
+ <p align="center">
2
+ <a href="https://calkit.org" target="_blank">
3
+ <img width="40%" src="docs/img/calkit-no-bg.png" alt="Calkit">
4
+ </a>
5
+ </p>
2
6
 
3
- Calkit is a lightweight framework for doing reproducible research.
7
+ Calkit is a lightweight framework for reproducible research projects.
4
8
  It acts as a top-level layer to integrate and simplify the use of enabling
5
9
  technologies such as
6
10
  [Git](https://git-scm.com/),
@@ -28,46 +32,6 @@ To do this, we try to make it easy for users to follow two simple rules:
28
32
  keep computational environments up-to-date and label their outputs for
29
33
  convenient reuse.
30
34
 
31
- ## Tutorials
32
-
33
- - [Jupyter notebook as a DVC pipeline](docs/tutorials/notebook-pipeline.md)
34
- - [Keeping track of conda environments](docs/tutorials/conda-envs.md)
35
- - [Defining and executing manual procedures](docs/tutorials/procedures.md)
36
- - [Adding a new LaTeX-based publication with its own Docker build environment](docs/tutorials/adding-latex-pub-docker.md)
37
- - [A reproducible workflow using Microsoft Office (Word and Excel)](https://petebachant.me/office-repro/)
38
- - [Reproducible OpenFOAM simulations](https://petebachant.me/reproducible-openfoam/)
39
-
40
- ## Why does reproducibility matter?
41
-
42
- If your work is reproducible, that means that someone else can "run" it and
43
- calculate the same results or outputs.
44
- This is a major step towards addressing
45
- [the replication crisis](https://en.wikipedia.org/wiki/Replication_crisis)
46
- and has some major benefits for both you as an individual and the research
47
- community:
48
-
49
- 1. You will avoid mistakes caused by, e.g., running an old version of a script
50
- and including a figure that wasn't created after fixing a bug in the data
51
- processing pipeline.
52
- 2. Since your project is "runnable," it's more likely that someone else will be
53
- able to reuse part of your work to run it in a different context, thereby
54
- producing a bigger impact and accelerating the pace of discovery.
55
- If someone can take what you've done and use it to calculate a
56
- prediction, you have just produced truly useful knowledge.
57
-
58
- ## Why another tool/platform?
59
-
60
- Git, GitHub, DVC, Docker et al. are amazing tools/platforms, but their
61
- use involves multiple fairly difficult learning curves,
62
- and tying them together might mean developing something new for each project.
63
- Our goal is to provide a single tool and platform to unify all of these so
64
- that there is a single, gentle learning curve.
65
- However, it is not our goal to hide or replace these underlying components.
66
- Advanced users can use them directly, but new users aren't forced to, which
67
- helps them get up and running with less effort and training.
68
- Calkit should help users understand what is going on under the hood without
69
- forcing them to work at that lower level of abstraction.
70
-
71
35
  ## Installation
72
36
 
73
37
  To install Calkit, [Git](https://git-scm.com) and Python must be installed.
@@ -89,7 +53,7 @@ pip install calkit-python
89
53
 
90
54
  ## Cloud integration
91
55
 
92
- The Calkit cloud platform (https://calkit.io) serves as a project
56
+ The Calkit Cloud ([calkit.io](https://calkit.io)) serves as a project
93
57
  management interface and a DVC remote for easily storing all versions of your
94
58
  data/code/figures/publications, interacting with your collaborators,
95
59
  reusing others' research artifacts, etc.
@@ -112,6 +76,47 @@ This will setup the Calkit DVC remote, such that commands like `dvc push` will
112
76
  allow you to push versions of your data or pipeline outputs to the cloud
113
77
  for safe storage and sharing with your collaborators.
114
78
 
79
+ ## Tutorials
80
+
81
+ - [LaTeX collaboration with GitHub Codespaces](https://petebachant.me/latex-collab/)
82
+ - [Jupyter notebook as a DVC pipeline](docs/tutorials/notebook-pipeline.md)
83
+ - [Keeping track of conda environments](docs/tutorials/conda-envs.md)
84
+ - [Defining and executing manual procedures](docs/tutorials/procedures.md)
85
+ - [Adding a new LaTeX-based publication with its own Docker build environment](docs/tutorials/adding-latex-pub-docker.md)
86
+ - [A reproducible workflow using Microsoft Office (Word and Excel)](https://petebachant.me/office-repro/)
87
+ - [Reproducible OpenFOAM simulations](https://petebachant.me/reproducible-openfoam/)
88
+
89
+ ## Why does reproducibility matter?
90
+
91
+ If your work is reproducible, that means that someone else can "run" it and
92
+ calculate the same results or outputs.
93
+ This is a major step towards addressing
94
+ [the replication crisis](https://en.wikipedia.org/wiki/Replication_crisis)
95
+ and has some major benefits for both you as an individual and the research
96
+ community:
97
+
98
+ 1. You will avoid mistakes caused by, e.g., running an old version of a script
99
+ and including a figure that wasn't created after fixing a bug in the data
100
+ processing pipeline.
101
+ 2. Since your project is "runnable," it's more likely that someone else will be
102
+ able to reuse part of your work to run it in a different context, thereby
103
+ producing a bigger impact and accelerating the pace of discovery.
104
+ If someone can take what you've done and use it to calculate a
105
+ prediction, you have just produced truly useful knowledge.
106
+
107
+ ## Why another tool/platform?
108
+
109
+ Git, GitHub, DVC, Docker et al. are amazing tools/platforms, but their
110
+ use involves multiple fairly difficult learning curves,
111
+ and tying them together might mean developing something new for each project.
112
+ Our goal is to provide a single tool and platform to unify all of these so
113
+ that there is a single, gentle learning curve.
114
+ However, it is not our goal to hide or replace these underlying components.
115
+ Advanced users can use them directly, but new users aren't forced to, which
116
+ helps them get up and running with less effort and training.
117
+ Calkit should help users understand what is going on under the hood without
118
+ forcing them to work at that lower level of abstraction.
119
+
115
120
  ## How it works
116
121
 
117
122
  Calkit creates a simple human-readable "database" inside the `calkit.yaml`
@@ -1,4 +1,4 @@
1
- __version__ = "0.9.2"
1
+ __version__ = "0.9.4"
2
2
 
3
3
  from .core import *
4
4
  from . import git
@@ -2,9 +2,13 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import subprocess
6
+
5
7
  import typer
8
+ from git.exc import InvalidGitRepositoryError
6
9
 
7
10
  from calkit import config
11
+ from calkit.cli.core import raise_error
8
12
  from calkit.dvc import configure_remote, get_remotes, set_remote_auth
9
13
 
10
14
  config_app = typer.Typer(no_args_is_help=True)
@@ -43,8 +47,13 @@ def setup_remote():
43
47
  """Setup the Calkit cloud as the default DVC remote and store a token in
44
48
  the local config.
45
49
  """
46
- configure_remote()
47
- set_remote_auth()
50
+ try:
51
+ configure_remote()
52
+ set_remote_auth()
53
+ except subprocess.CalledProcessError:
54
+ raise_error("DVC remote config failed; have you run `dvc init`?")
55
+ except InvalidGitRepositoryError:
56
+ raise_error("Current directory is not a Git repository")
48
57
 
49
58
 
50
59
  @config_app.command(name="setup-remote-auth")
@@ -42,7 +42,10 @@ def check_env(
42
42
  subprocess.check_output([conda, "env", "list", "--json"]).decode()
43
43
  )["envs"]
44
44
  # Get existing env names, but skip the base environment
45
- existing_env_names = [os.path.basename(env) for env in envs[1:]]
45
+ # Note that this could fail for environments with non-default prefixes
46
+ existing_env_names = [
47
+ os.path.basename(env) for env in envs if "envs" in env
48
+ ]
46
49
  with open(env_fpath) as f:
47
50
  env_spec = ryaml.load(f)
48
51
  env_name = env_spec["name"]
@@ -17,10 +17,10 @@ def configure_remote():
17
17
  project_name = calkit.git.detect_project_name()
18
18
  base_url = calkit.cloud.get_base_url()
19
19
  remote_url = f"{base_url}/projects/{project_name}/dvc"
20
- subprocess.call(
20
+ subprocess.check_call(
21
21
  ["dvc", "remote", "add", "-d", "-f", get_app_name(), remote_url]
22
22
  )
23
- subprocess.call(
23
+ subprocess.check_call(
24
24
  ["dvc", "remote", "modify", get_app_name(), "auth", "custom"]
25
25
  )
26
26
 
@@ -39,7 +39,7 @@ def set_remote_auth(remote_name: str = None, always_auth: bool = False):
39
39
  )["access_token"]
40
40
  settings.dvc_token = token
41
41
  settings.write()
42
- subprocess.call(
42
+ subprocess.check_call(
43
43
  [
44
44
  "dvc",
45
45
  "remote",
@@ -50,7 +50,7 @@ def set_remote_auth(remote_name: str = None, always_auth: bool = False):
50
50
  "Authorization",
51
51
  ]
52
52
  )
53
- subprocess.call(
53
+ subprocess.check_call(
54
54
  [
55
55
  "dvc",
56
56
  "remote",
File without changes
File without changes