adiumentum 0.1.0__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.
@@ -0,0 +1,236 @@
1
+ Metadata-Version: 2.3
2
+ Name: adiumentum
3
+ Version: 0.1.0
4
+ Summary:
5
+ Author: Isaac Riley
6
+ Author-email: Isaac Riley <yelircaasi@proton.me>
7
+ Requires-Dist: multipledispatch>=1
8
+ Requires-Dist: loguru>=0.7.3
9
+ Requires-Dist: datethyme>=0.4.0
10
+ Requires-Python: >=3.12, <3.14
11
+ Description-Content-Type: text/markdown
12
+
13
+ # adiumentum
14
+
15
+ Running this project requires `copier`, `git`, `uv`, and `flake`. Install `nix` and
16
+ install the others by running `nix-shell -p uv python3 git`. You can now copy the project and run the toy CLI provided out-of-the-box:
17
+
18
+ ```sh
19
+ copier copy --trust \
20
+ /home/isaac/repos/dev-envs/python-uv-nix /tmp/hello-world \
21
+ --data-file /home/isaac/repos/dev-envs/python-uv-nix/example-data-uv.yml
22
+
23
+ nix run /tmp/hello-world
24
+ ```
25
+
26
+ You can also enter a development environment with all dependencies installed:
27
+
28
+ ```sh
29
+ nix develop
30
+ ```
31
+
32
+ Once in this dev shell, you have a number of development utils you can try out (via just):
33
+
34
+ ```sh
35
+ ✔just
36
+ ✔just format
37
+ ✔just check
38
+ ✔just fix
39
+ ✔just typecheck
40
+ ✔just lint
41
+ ✔just deal
42
+ ✔just vulture
43
+ ✔just pydeps-full
44
+ ✔just pydeps
45
+ ✔just pydeps-simple
46
+ ✔just view-deps
47
+ ✔just snakefood
48
+ ✔just deply
49
+ ✔just bandit
50
+ ✔just bandit-html
51
+ ✔just bandit-view
52
+ ✔just pyflame
53
+ ✔just flamegraph
54
+ ✔just perf-flamegraph
55
+ ✔just check-structure
56
+ ✔just check-imports
57
+ ✔just smoke
58
+ ✔just unit
59
+ ✔just test
60
+ ✔just test-cov
61
+ ✔just docs
62
+ ✔just scalene
63
+ ✔just view-cov
64
+ ✔just view-docs
65
+ ✔just view-flamegraphs
66
+ ✔just sbom
67
+
68
+ lefthook validate
69
+ lefthook run all
70
+ ```
71
+
72
+ ## Roadmap
73
+
74
+ 00. ✔ Sync package lists in uv.nix.jinja and README.md
75
+
76
+ 01. ✔ Parametrize each package for copier and update copier.yml
77
+
78
+ 02. ✔ Clean up copier.yml and example-data.yml
79
+
80
+ 03. ✔ Get impure environment working -> draw from buildFHSUserEnv approach in consilium and other projects
81
+
82
+ 04. ✔ Write working version of scripts and test them on datethyme
83
+
84
+ 05. ✔ create reference project (revised from datethyme)
85
+
86
+ 06. ✔ use copier to re-create it (make a datethyme answers file)
87
+
88
+ 08. ✔ find good CLI tools for diffing an entire folder
89
+
90
+ 09. ✔ iteratively modify template until copier perfectly re-creates the reference project
91
+
92
+ 10. ✔ package mdformat with mdformat-mkdocs (via nix)
93
+
94
+ 11. ✔ remove super-linter, but look over it and steal any good ideas
95
+
96
+ 12. ✔ add [commitizen](https://github.com/commitizen-tools/commitizen) and [commitmsgfmt](https://gitlab.com/mkjeldsen/commitmsgfmt) ✔
97
+
98
+ 13. ✔ Modify nix to support any python version via [nixpkgs-python](https://github.com/cachix/nixpkgs-python) and [tox](https://tox.wiki/en/4.27.0/index.html)
99
+
100
+ 14. ✔ Read through [jinja2-ansible-filters](https://gitlab.com/dreamer-labs/libraries/)
101
+
102
+ 15. Go through https://www.youtube.com/results?search_query=nix+and+python and any relevant NixCon talks
103
+
104
+ 16. ✔ restructure nix code
105
+
106
+ 17. ✔ add poetry support (selectable via copier)
107
+
108
+ 18. re-make datethyme package using template, iteratively polishing the template
109
+
110
+ 19. add copier switch to include a CLI or not
111
+
112
+ ### Later
113
+
114
+ Note: first get working the way it is for datathyme.
115
+
116
+ 0. [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
117
+
118
+ 1. Package all docs packages via nix, since they run independently of the other Python packages.
119
+
120
+ 2. Do the same for testing dependencies, if possible.
121
+
122
+ 3. Add different types of git hooks
123
+
124
+ - Client-Side Hooks
125
+
126
+ - **Pre-commit hooks** run before a commit is created and are ideal for code quality checks. They're perfect for running linters, formatters, static analysis tools, or tests to catch issues before they enter the repository. If the hook exits with a non-zero status, the commit is aborted
127
+
128
+ - **Prepare-commit-msg hooks** execute after the default commit message is created but before the editor opens. These work well for automatically adding ticket numbers, branch names, or standardized formatting to commit messages based on branch patterns or other context
129
+
130
+ - **Commit-msg hooks** run after you've written your commit message and are excellent for enforcing commit message conventions. They can validate that messages follow specific formats, contain required information like issue references, or meet length requirements
131
+
132
+ - **Post-commit hooks** trigger after a commit completes successfully. Since they can't affect the commit outcome, they're useful for notifications, triggering builds, updating external systems, or logging commit information
133
+
134
+ - **Pre-rebase hooks** run before rebasing and help prevent rebasing published commits or branches that shouldn't be rebased. They're particularly valuable for protecting main branches or enforcing workflow policies
135
+
136
+ - **Post-checkout and post-merge hooks** execute after checking out branches or completing merges. These are ideal for environment setup tasks like updating dependencies, clearing caches, generating files, or syncing external resources that depend on the current branch state
137
+
138
+ - Server-Side Hooks
139
+
140
+ - **Pre-receive hooks** run before any references are updated when receiving a push. They're powerful for enforcing repository-wide policies like preventing force pushes to protected branches, validating that all commits meet standards, or checking permissions before allowing updates
141
+
142
+ - **Update hooks** execute once per branch being updated and are perfect for branch-specific policies. They can enforce different rules for different branches, validate individual commits, or check that updates follow branching strategies
143
+
144
+ - **Post-receive hooks** run after all references are successfully updated and are ideal for deployment triggers, sending notifications, updating issue trackers, or kicking off CI/CD pipelines. Since they run after the push succeeds, they're commonly used for automation that depends on the repository being in its new state
145
+
146
+ ## Dependency Classes
147
+
148
+ ## Dependency Classes
149
+
150
+ TODO: look at jj-fzf, lazyjj, gg-jj look at luxuries
151
+
152
+ - dependency resolution (should already be installed)
153
+
154
+ - [uv](https://github.com/astral-sh/uv) ✔
155
+
156
+ - miscellaneous (semver via Python)
157
+
158
+ - [semver](https://github.com/python-semver/python-semver) ✔
159
+
160
+ - task running / hooks (installable via Python or Nix; Nix preferred)
161
+
162
+ - [just](https://just.systems/man/en/) ✔
163
+ - [lefthook](https://lefthook.dev/) ✔
164
+
165
+ - interactive programming (installable via Python or Nix; Nix preferred)
166
+
167
+ - [ipython](https://ipython.org/) ✔
168
+
169
+ - static type checking (installable via Python or Nix; Nix preferred)
170
+
171
+ - [mypy](https://mypy.readthedocs.io/en/stable/) ✔
172
+ - [ty](https://github.com/astral-sh/ty) ✔
173
+
174
+ - source code visualization (graphviz and pydeps via Nix, the rest via Python)
175
+
176
+ - [pydeps](https://github.com/thebjorn/pydeps) ✔
177
+ - [graphviz](https://graphviz.org/) ✔
178
+ - [deply](https://vashkatsi.github.io/deply/) ✔
179
+ - [snakefood3](https://furius.ca/snakefood/) ✔
180
+ - [grimp](https://grimp.readthedocs.io/en/stable/usage.html) ✔
181
+
182
+ - performance profiling (flamegraph and scalene via Nix, pyflame via Python)
183
+
184
+ - [pyflame](https://pyflame.readthedocs.io/en/latest/) ✔
185
+ - [scalene](https://github.com/plasma-umass/scalene) ✔
186
+ - [flamegraph-rs](https://github.com/flamegraph-rs/flamegraph)
187
+ (cargo-flamegraph in nix) ✔
188
+
189
+ - software supply chain, security (installable via Python, but Nix preferred)
190
+
191
+ - [cyclonedx-python](https://github.com/CycloneDX/cyclonedx-python) ✔
192
+ - [bandit](https://bandit.readthedocs.io/en/latest/) ✔
193
+
194
+ - testing (installed via Python for now)
195
+
196
+ - [pytest](https://docs.pytest.org/en/stable/) ✔
197
+ - pytest plugins: --> look at [these](https://github.com/man-group/pytest-plugins)
198
+ - [mock](https://pytest-mock.readthedocs.io/en/latest/) ✔
199
+ - [testmon](https://testmon.org/) ✔
200
+ - [cov](https://pytest-cov.readthedocs.io/en/latest/) ✔
201
+ - [loguru](https://github.com/mcarans/pytest-loguru) ✔
202
+ - [profiling](https://github.com/man-group/pytest-plugins/tree/master/pytest-profiling) [video](https://www.youtube.com/watch?v=OexWnUTsQGU) ✔
203
+ - [coverage](https://coverage.readthedocs.io/en/7.8.2/) ✔
204
+ - [hypothesis](https://hypothesis.readthedocs.io/en/latest/) ✔
205
+ - [tox](https://tox.wiki/en/4.26.0/) ✔
206
+
207
+ - docs (installed via Python for now)
208
+
209
+ - [mkdocs](https://www.mkdocs.org/) ✔
210
+ - [mkdocstrings](https://mkdocstrings.github.io/) ✔
211
+ - [mkdocstrings-python](https://mkdocstrings.github.io/python/) ✔
212
+ - [mkdocs-material](https://squidfunk.github.io/mkdocs-material/) ✔
213
+ - [pygments](https://pygments.org/) ✔
214
+
215
+ - formatters / linters
216
+
217
+ - installable via Python or Nix:
218
+ - [ruff](https://astral.sh/ruff) ✔
219
+ - [mdformat](https://github.com/hukkin/mdformat) + [mdformat-mkdocs](https://github.com/KyleKing/mdformat-mkdocs) TODO
220
+ - [yamlfmt](https://github.com/google/yamlfmt)
221
+ OR [yamllint](https://github.com/adrienverge/yamllint) ✔
222
+ - [pyprojectsort](https://github.com/kieran-ryan/pyprojectsort)
223
+ - [toml-sort](https://github.com/pappasam/toml-sort) ✔
224
+ - installable only via Nix or other package manager:
225
+ - [treefmt](https://treefmt.com/latest/) + [treefmt-nix](https://github.com/numtide/treefmt-nix) ✔
226
+ - [alejandra](https://github.com/kamadorueda/alejandra) ✔
227
+ - [super-linter](https://github.com/super-linter/super-linter) TODO
228
+ - [markdown-code-runner](https://github.com/drupol/markdown-code-runner)
229
+ OR [mdsf](https://github.com/hougesen/mdsf) ✔
230
+ - [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2)
231
+ OR [markdownlint-cli](https://github.com/DavidAnson/markdownlint-cli) TODO
232
+ - [just-formatter](https://github.com/eli-yip/just-formatter) ✔
233
+
234
+ ## To Look at for Later
235
+
236
+ - [pystackflame](https://pypi.org/project/pystackflame/)
@@ -0,0 +1,224 @@
1
+ # adiumentum
2
+
3
+ Running this project requires `copier`, `git`, `uv`, and `flake`. Install `nix` and
4
+ install the others by running `nix-shell -p uv python3 git`. You can now copy the project and run the toy CLI provided out-of-the-box:
5
+
6
+ ```sh
7
+ copier copy --trust \
8
+ /home/isaac/repos/dev-envs/python-uv-nix /tmp/hello-world \
9
+ --data-file /home/isaac/repos/dev-envs/python-uv-nix/example-data-uv.yml
10
+
11
+ nix run /tmp/hello-world
12
+ ```
13
+
14
+ You can also enter a development environment with all dependencies installed:
15
+
16
+ ```sh
17
+ nix develop
18
+ ```
19
+
20
+ Once in this dev shell, you have a number of development utils you can try out (via just):
21
+
22
+ ```sh
23
+ ✔just
24
+ ✔just format
25
+ ✔just check
26
+ ✔just fix
27
+ ✔just typecheck
28
+ ✔just lint
29
+ ✔just deal
30
+ ✔just vulture
31
+ ✔just pydeps-full
32
+ ✔just pydeps
33
+ ✔just pydeps-simple
34
+ ✔just view-deps
35
+ ✔just snakefood
36
+ ✔just deply
37
+ ✔just bandit
38
+ ✔just bandit-html
39
+ ✔just bandit-view
40
+ ✔just pyflame
41
+ ✔just flamegraph
42
+ ✔just perf-flamegraph
43
+ ✔just check-structure
44
+ ✔just check-imports
45
+ ✔just smoke
46
+ ✔just unit
47
+ ✔just test
48
+ ✔just test-cov
49
+ ✔just docs
50
+ ✔just scalene
51
+ ✔just view-cov
52
+ ✔just view-docs
53
+ ✔just view-flamegraphs
54
+ ✔just sbom
55
+
56
+ lefthook validate
57
+ lefthook run all
58
+ ```
59
+
60
+ ## Roadmap
61
+
62
+ 00. ✔ Sync package lists in uv.nix.jinja and README.md
63
+
64
+ 01. ✔ Parametrize each package for copier and update copier.yml
65
+
66
+ 02. ✔ Clean up copier.yml and example-data.yml
67
+
68
+ 03. ✔ Get impure environment working -> draw from buildFHSUserEnv approach in consilium and other projects
69
+
70
+ 04. ✔ Write working version of scripts and test them on datethyme
71
+
72
+ 05. ✔ create reference project (revised from datethyme)
73
+
74
+ 06. ✔ use copier to re-create it (make a datethyme answers file)
75
+
76
+ 08. ✔ find good CLI tools for diffing an entire folder
77
+
78
+ 09. ✔ iteratively modify template until copier perfectly re-creates the reference project
79
+
80
+ 10. ✔ package mdformat with mdformat-mkdocs (via nix)
81
+
82
+ 11. ✔ remove super-linter, but look over it and steal any good ideas
83
+
84
+ 12. ✔ add [commitizen](https://github.com/commitizen-tools/commitizen) and [commitmsgfmt](https://gitlab.com/mkjeldsen/commitmsgfmt) ✔
85
+
86
+ 13. ✔ Modify nix to support any python version via [nixpkgs-python](https://github.com/cachix/nixpkgs-python) and [tox](https://tox.wiki/en/4.27.0/index.html)
87
+
88
+ 14. ✔ Read through [jinja2-ansible-filters](https://gitlab.com/dreamer-labs/libraries/)
89
+
90
+ 15. Go through https://www.youtube.com/results?search_query=nix+and+python and any relevant NixCon talks
91
+
92
+ 16. ✔ restructure nix code
93
+
94
+ 17. ✔ add poetry support (selectable via copier)
95
+
96
+ 18. re-make datethyme package using template, iteratively polishing the template
97
+
98
+ 19. add copier switch to include a CLI or not
99
+
100
+ ### Later
101
+
102
+ Note: first get working the way it is for datathyme.
103
+
104
+ 0. [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog)
105
+
106
+ 1. Package all docs packages via nix, since they run independently of the other Python packages.
107
+
108
+ 2. Do the same for testing dependencies, if possible.
109
+
110
+ 3. Add different types of git hooks
111
+
112
+ - Client-Side Hooks
113
+
114
+ - **Pre-commit hooks** run before a commit is created and are ideal for code quality checks. They're perfect for running linters, formatters, static analysis tools, or tests to catch issues before they enter the repository. If the hook exits with a non-zero status, the commit is aborted
115
+
116
+ - **Prepare-commit-msg hooks** execute after the default commit message is created but before the editor opens. These work well for automatically adding ticket numbers, branch names, or standardized formatting to commit messages based on branch patterns or other context
117
+
118
+ - **Commit-msg hooks** run after you've written your commit message and are excellent for enforcing commit message conventions. They can validate that messages follow specific formats, contain required information like issue references, or meet length requirements
119
+
120
+ - **Post-commit hooks** trigger after a commit completes successfully. Since they can't affect the commit outcome, they're useful for notifications, triggering builds, updating external systems, or logging commit information
121
+
122
+ - **Pre-rebase hooks** run before rebasing and help prevent rebasing published commits or branches that shouldn't be rebased. They're particularly valuable for protecting main branches or enforcing workflow policies
123
+
124
+ - **Post-checkout and post-merge hooks** execute after checking out branches or completing merges. These are ideal for environment setup tasks like updating dependencies, clearing caches, generating files, or syncing external resources that depend on the current branch state
125
+
126
+ - Server-Side Hooks
127
+
128
+ - **Pre-receive hooks** run before any references are updated when receiving a push. They're powerful for enforcing repository-wide policies like preventing force pushes to protected branches, validating that all commits meet standards, or checking permissions before allowing updates
129
+
130
+ - **Update hooks** execute once per branch being updated and are perfect for branch-specific policies. They can enforce different rules for different branches, validate individual commits, or check that updates follow branching strategies
131
+
132
+ - **Post-receive hooks** run after all references are successfully updated and are ideal for deployment triggers, sending notifications, updating issue trackers, or kicking off CI/CD pipelines. Since they run after the push succeeds, they're commonly used for automation that depends on the repository being in its new state
133
+
134
+ ## Dependency Classes
135
+
136
+ ## Dependency Classes
137
+
138
+ TODO: look at jj-fzf, lazyjj, gg-jj look at luxuries
139
+
140
+ - dependency resolution (should already be installed)
141
+
142
+ - [uv](https://github.com/astral-sh/uv) ✔
143
+
144
+ - miscellaneous (semver via Python)
145
+
146
+ - [semver](https://github.com/python-semver/python-semver) ✔
147
+
148
+ - task running / hooks (installable via Python or Nix; Nix preferred)
149
+
150
+ - [just](https://just.systems/man/en/) ✔
151
+ - [lefthook](https://lefthook.dev/) ✔
152
+
153
+ - interactive programming (installable via Python or Nix; Nix preferred)
154
+
155
+ - [ipython](https://ipython.org/) ✔
156
+
157
+ - static type checking (installable via Python or Nix; Nix preferred)
158
+
159
+ - [mypy](https://mypy.readthedocs.io/en/stable/) ✔
160
+ - [ty](https://github.com/astral-sh/ty) ✔
161
+
162
+ - source code visualization (graphviz and pydeps via Nix, the rest via Python)
163
+
164
+ - [pydeps](https://github.com/thebjorn/pydeps) ✔
165
+ - [graphviz](https://graphviz.org/) ✔
166
+ - [deply](https://vashkatsi.github.io/deply/) ✔
167
+ - [snakefood3](https://furius.ca/snakefood/) ✔
168
+ - [grimp](https://grimp.readthedocs.io/en/stable/usage.html) ✔
169
+
170
+ - performance profiling (flamegraph and scalene via Nix, pyflame via Python)
171
+
172
+ - [pyflame](https://pyflame.readthedocs.io/en/latest/) ✔
173
+ - [scalene](https://github.com/plasma-umass/scalene) ✔
174
+ - [flamegraph-rs](https://github.com/flamegraph-rs/flamegraph)
175
+ (cargo-flamegraph in nix) ✔
176
+
177
+ - software supply chain, security (installable via Python, but Nix preferred)
178
+
179
+ - [cyclonedx-python](https://github.com/CycloneDX/cyclonedx-python) ✔
180
+ - [bandit](https://bandit.readthedocs.io/en/latest/) ✔
181
+
182
+ - testing (installed via Python for now)
183
+
184
+ - [pytest](https://docs.pytest.org/en/stable/) ✔
185
+ - pytest plugins: --> look at [these](https://github.com/man-group/pytest-plugins)
186
+ - [mock](https://pytest-mock.readthedocs.io/en/latest/) ✔
187
+ - [testmon](https://testmon.org/) ✔
188
+ - [cov](https://pytest-cov.readthedocs.io/en/latest/) ✔
189
+ - [loguru](https://github.com/mcarans/pytest-loguru) ✔
190
+ - [profiling](https://github.com/man-group/pytest-plugins/tree/master/pytest-profiling) [video](https://www.youtube.com/watch?v=OexWnUTsQGU) ✔
191
+ - [coverage](https://coverage.readthedocs.io/en/7.8.2/) ✔
192
+ - [hypothesis](https://hypothesis.readthedocs.io/en/latest/) ✔
193
+ - [tox](https://tox.wiki/en/4.26.0/) ✔
194
+
195
+ - docs (installed via Python for now)
196
+
197
+ - [mkdocs](https://www.mkdocs.org/) ✔
198
+ - [mkdocstrings](https://mkdocstrings.github.io/) ✔
199
+ - [mkdocstrings-python](https://mkdocstrings.github.io/python/) ✔
200
+ - [mkdocs-material](https://squidfunk.github.io/mkdocs-material/) ✔
201
+ - [pygments](https://pygments.org/) ✔
202
+
203
+ - formatters / linters
204
+
205
+ - installable via Python or Nix:
206
+ - [ruff](https://astral.sh/ruff) ✔
207
+ - [mdformat](https://github.com/hukkin/mdformat) + [mdformat-mkdocs](https://github.com/KyleKing/mdformat-mkdocs) TODO
208
+ - [yamlfmt](https://github.com/google/yamlfmt)
209
+ OR [yamllint](https://github.com/adrienverge/yamllint) ✔
210
+ - [pyprojectsort](https://github.com/kieran-ryan/pyprojectsort)
211
+ - [toml-sort](https://github.com/pappasam/toml-sort) ✔
212
+ - installable only via Nix or other package manager:
213
+ - [treefmt](https://treefmt.com/latest/) + [treefmt-nix](https://github.com/numtide/treefmt-nix) ✔
214
+ - [alejandra](https://github.com/kamadorueda/alejandra) ✔
215
+ - [super-linter](https://github.com/super-linter/super-linter) TODO
216
+ - [markdown-code-runner](https://github.com/drupol/markdown-code-runner)
217
+ OR [mdsf](https://github.com/hougesen/mdsf) ✔
218
+ - [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2)
219
+ OR [markdownlint-cli](https://github.com/DavidAnson/markdownlint-cli) TODO
220
+ - [just-formatter](https://github.com/eli-yip/just-formatter) ✔
221
+
222
+ ## To Look at for Later
223
+
224
+ - [pystackflame](https://pypi.org/project/pystackflame/)