copier-python 0.13.0__tar.gz → 0.13.2__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 (58) hide show
  1. {copier_python-0.13.0 → copier_python-0.13.2}/.gitignore +6 -1
  2. copier_python-0.13.2/AGENTS.md +9 -0
  3. {copier_python-0.13.0 → copier_python-0.13.2}/PKG-INFO +1 -1
  4. {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/repo.py +31 -5
  5. {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/update.py +10 -1
  6. copier_python-0.13.2/docs/development/requirements.md +24 -0
  7. {copier_python-0.13.0 → copier_python-0.13.2}/docs/development/workflow.md +13 -9
  8. {copier_python-0.13.0 → copier_python-0.13.2}/docs/releasing.md +3 -3
  9. {copier_python-0.13.0 → copier_python-0.13.2}/pyproject.toml +0 -105
  10. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_mise_toml.ambr +64 -32
  11. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_workflows.ambr +32 -32
  12. copier_python-0.13.0/AGENTS.md +0 -8
  13. copier_python-0.13.0/docs/development/requirements.md +0 -24
  14. {copier_python-0.13.0 → copier_python-0.13.2}/CONTRIBUTING.md +0 -0
  15. {copier_python-0.13.0 → copier_python-0.13.2}/LICENSE +0 -0
  16. {copier_python-0.13.0 → copier_python-0.13.2}/README.md +0 -0
  17. {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/__init__.py +0 -0
  18. {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/__main__.py +0 -0
  19. {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/py.typed +0 -0
  20. {copier_python-0.13.0 → copier_python-0.13.2}/docs/contributing.md +0 -0
  21. {copier_python-0.13.0 → copier_python-0.13.2}/docs/development/updates.md +0 -0
  22. {copier_python-0.13.0 → copier_python-0.13.2}/docs/index.md +0 -0
  23. {copier_python-0.13.0 → copier_python-0.13.2}/docs/license.md +0 -0
  24. {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-creation.md +0 -0
  25. {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-development.md +0 -0
  26. {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-release.md +0 -0
  27. {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-setup.md +0 -0
  28. {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-updates.md +0 -0
  29. {copier_python-0.13.0 → copier_python-0.13.2}/docs/requirements.md +0 -0
  30. {copier_python-0.13.0 → copier_python-0.13.2}/docs/setup.md +0 -0
  31. {copier_python-0.13.0 → copier_python-0.13.2}/tests/__init__.py +0 -0
  32. {copier_python-0.13.0 → copier_python-0.13.2}/tests/conftest.py +0 -0
  33. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__init__.py +0 -0
  34. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_agents.ambr +0 -0
  35. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_compose.ambr +0 -0
  36. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_contributing.ambr +0 -0
  37. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_dockerfile.ambr +0 -0
  38. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_docs.ambr +0 -0
  39. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_license.ambr +0 -0
  40. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_pyproject.ambr +0 -0
  41. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_readme.ambr +0 -0
  42. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_zensical.ambr +0 -0
  43. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_agents.py +0 -0
  44. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_compose.py +0 -0
  45. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_contributing.py +0 -0
  46. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_dockerfile.py +0 -0
  47. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_docs.py +0 -0
  48. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_license.py +0 -0
  49. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_mise_toml.py +0 -0
  50. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_pyproject.py +0 -0
  51. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_readme.py +0 -0
  52. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_structure.py +0 -0
  53. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_template.py +0 -0
  54. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_workflows.py +0 -0
  55. {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_zensical.py +0 -0
  56. {copier_python-0.13.0 → copier_python-0.13.2}/tests/test_update.py +0 -0
  57. {copier_python-0.13.0 → copier_python-0.13.2}/tests/test_version.py +0 -0
  58. {copier_python-0.13.0 → copier_python-0.13.2}/tests/utils.py +0 -0
@@ -4,11 +4,16 @@ __pycache__/
4
4
  *.py[cod]
5
5
 
6
6
  # uv and packaging
7
- .venv/
7
+ .venv*/
8
8
  /build/
9
9
  /dist/
10
10
  uv.lock
11
11
 
12
+ # mise
13
+ mise.local.toml
14
+ .mise.local.toml
15
+ .mise/
16
+
12
17
  # Development tools
13
18
  .cache/
14
19
  .coverage*
@@ -0,0 +1,9 @@
1
+ # Environment/Tools
2
+
3
+ * `mise` manages dev tools and tasks, including `uv` which manages Python and dependencies.
4
+ * Use `uv add`/`uv run python` instead of bare `pip`/`python`
5
+ * `mise install`: After-clone setup (install tools, dependencies, pre-commit hooks)
6
+ * `mise run lint`: Pre-commit hooks (via `pre-commit`-compatible `prek`) including lint, format, type check (ruff, ty)
7
+ * `mise run test`: Run tests (accepts pytest arguments)
8
+ * `mise run lt`: Lint+test (no arguments)
9
+ * `mise run snapup`: Update test snapshots (syrupy, accepts pytest arguments)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: copier-python
3
- Version: 0.13.0
3
+ Version: 0.13.2
4
4
  Summary: Copier template for Python projects with modern tooling
5
5
  Project-URL: Homepage, https://smkent.github.io/copier-python
6
6
  Project-URL: Repository, https://github.com/smkent/copier-python
@@ -83,17 +83,33 @@ class RepoWorktree:
83
83
  with tempfile.TemporaryDirectory() as td:
84
84
  repo_dir = Path(td) / "worktree"
85
85
  cls.run_in(["git", "clone", repo.url, str(repo_dir)], repo=repo)
86
- for cmd in (
86
+ cls.run_in(
87
87
  [
88
88
  *["git", "remote", "set-url", "--push", "origin"],
89
89
  repo.push_url,
90
90
  ],
91
- ["poe", "setup"],
92
- ["git", "checkout", "-b", branch],
93
- ):
94
- cls.run_in(cmd, repo=repo, cwd=repo_dir)
91
+ repo=repo,
92
+ cwd=repo_dir,
93
+ )
94
+ cls.run_in(
95
+ (
96
+ ["mise", "install"]
97
+ if (repo_dir / "mise.toml").is_file()
98
+ else ["poe", "setup"]
99
+ ),
100
+ repo=repo,
101
+ cwd=repo_dir,
102
+ )
103
+ cls.run_in(
104
+ ["git", "checkout", "-b", branch], repo=repo, cwd=repo_dir
105
+ )
95
106
  yield cls(path=repo_dir, repo=repo, branch=branch)
96
107
 
108
+ def refresh_tools_lock(self) -> None:
109
+ if not (self.path / "mise.toml").is_file():
110
+ return
111
+ self.run(["mise", "lock"])
112
+
97
113
  @classmethod
98
114
  def run_in(
99
115
  cls, cmd: list[str], *, repo: RepoTarget, **kwargs: Any
@@ -114,6 +130,16 @@ class RepoWorktree:
114
130
  kwargs.setdefault("cwd", self.path)
115
131
  return self.run_in(cmd, repo=self.repo, **kwargs)
116
132
 
133
+ def run_task(
134
+ self, name: str, **kwargs: Any
135
+ ) -> subprocess.CompletedProcess[str]:
136
+ task_runner = (
137
+ ["mise", "run"]
138
+ if (self.path / "mise.toml").is_file()
139
+ else ["uv", "run", "poe"]
140
+ )
141
+ return self.run([*task_runner, name], **kwargs)
142
+
117
143
  def git_status(self) -> list[str]:
118
144
  return self.run(
119
145
  ["git", "status", "--porcelain"], capture_output=True
@@ -51,7 +51,16 @@ class UpdateAction:
51
51
  raise RuntimeError("Conflicts remain, aborting")
52
52
 
53
53
  try:
54
- repo.run(["uv", "run", "poe", "lt"])
54
+ repo.refresh_tools_lock()
55
+ except subprocess.CalledProcessError:
56
+ print( # noqa: T201
57
+ "Tool refresh failed."
58
+ " Fix errors and exit the shell to continue."
59
+ )
60
+ repo.shell()
61
+
62
+ try:
63
+ repo.run_task("lt")
55
64
  except subprocess.CalledProcessError:
56
65
  print( # noqa: T201
57
66
  "Lint/test failed. Fix errors and exit the shell to continue."
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Required software
3
+ icon: lucide/bookmark-check
4
+ ---
5
+
6
+ # Required software
7
+
8
+ - [x] [**git** for version control][git]
9
+ - [x] [**mise**][mise] tool manager: `curl https://mise.run | sh` or
10
+ [alternate installation method][mise-installation]
11
+
12
+ !!! info
13
+
14
+ `mise` ensures additional software is available, such as:
15
+
16
+ * A [supported version][python-versions] of [**Python**][python]
17
+ * [Astral's **uv** Python project manager][uv]
18
+
19
+ [git]: https://git-scm.com
20
+ [mise-installation]: https://mise.jdx.dev/installing-mise.html
21
+ [mise]: https://mise.jdx.dev
22
+ [python-versions]: https://devguide.python.org/versions/
23
+ [python]: https://python.org
24
+ [uv]: https://docs.astral.sh/uv/
@@ -7,12 +7,16 @@ icon: lucide/braces
7
7
 
8
8
  ## Cloning the repository
9
9
 
10
- Run `poe setup` in new repository clones to enable git hooks:
11
-
12
10
  ```sh
13
11
  git clone https://github.com/smkent/copier-python
14
12
  cd copier-python
15
- poe setup # Enables git hooks
13
+ ```
14
+
15
+ Run `mise install` in new repository clones to install tools, dependencies, and
16
+ git hooks:
17
+
18
+ ```sh
19
+ mise install
16
20
  ```
17
21
 
18
22
  ## Local template usage
@@ -30,13 +34,13 @@ uncommitted changes.
30
34
 
31
35
  ## Development tools
32
36
 
33
- * `poe lint`: Run formatters and static checks
34
- * `poe test`: Run tests
37
+ * `mise run lint`: Run formatters and static checks
38
+ * `mise run test`: Run tests
35
39
 
36
40
  The `lint` and `test` tasks can also be run as a single combined command with:
37
41
 
38
42
  ```sh
39
- poe lt
43
+ mise run lt
40
44
  ```
41
45
 
42
46
  ### Test snapshots
@@ -46,7 +50,7 @@ When templates are modified, the snapshots need to be updated. Update test
46
50
  snapshots by running:
47
51
 
48
52
  ```sh
49
- poe snapup
53
+ mise run snapup
50
54
  ```
51
55
 
52
56
  ## Documentation server
@@ -54,11 +58,11 @@ poe snapup
54
58
  Start the development server with:
55
59
 
56
60
  ```sh
57
- poe docs
61
+ mise run docs
58
62
  ```
59
63
 
60
64
  The documentation site will be served at:
61
65
 
62
66
  [**http://localhost:8000**](http://localhost:8000){ .md-button .md-button--primary target="_blank" }
63
67
 
64
- To use a different bind host/port, run `poe --help docs` for arguments info.
68
+ To use a different bind host/port, run `mise run docs --help` for usage info.
@@ -7,11 +7,11 @@ icon: lucide/rocket
7
7
 
8
8
  Release version numbers should follow [Semantic Versioning][semver].
9
9
 
10
- To create a release, run `poe release` with one of `patch`, `minor`, or `major`
11
- corresponding to the version number component to update:
10
+ To create a release, run `mise run release` with one of `patch`, `minor`, or
11
+ `major` corresponding to the version number component to update:
12
12
 
13
13
  ```sh
14
- poe release patch|minor|major
14
+ mise run release patch|minor|major
15
15
  ```
16
16
 
17
17
  A new tag with the new release version number will be created automatically
@@ -49,7 +49,6 @@ dev = [
49
49
  "bump-my-version>=1.3.0",
50
50
  "copier>=9",
51
51
  "poethepoet>=0.46",
52
- "prek>=0.4",
53
52
  "pysentry-rs>=0.4",
54
53
  "pytest>=9",
55
54
  "pytest-cov>=7",
@@ -77,110 +76,6 @@ include = ["/copier_python", "/tests", "*.md", "LICENSE"]
77
76
  [tool.hatch.version]
78
77
  source = "uv-dynamic-versioning"
79
78
 
80
- [tool.poe.executor]
81
- type = "uv"
82
-
83
- [tool.poe.tasks.audit]
84
- cmd = "pysentry-rs"
85
- help = "Run dependencies security audit"
86
-
87
- [tool.poe.tasks.build]
88
- cmd = "uv build"
89
- help = "Build distribution package"
90
-
91
- [tool.poe.tasks.docs-build]
92
- cmd = "zensical build -c"
93
- help = "Build documentation site"
94
-
95
- [tool.poe.tasks.docs]
96
- sequence = [
97
- {ref = "docs-build"},
98
- {cmd = "zensical serve -a \"${host}:${port}\""},
99
- ]
100
- help = "Run documentation site locally"
101
-
102
- [tool.poe.tasks.docs.args.host]
103
- options = ['--host', '-h']
104
- help = "Bind IP"
105
- default = "localhost"
106
-
107
- [tool.poe.tasks.docs.args.port]
108
- positional = true
109
- help = "Bind Port"
110
- default = "8000"
111
-
112
- [tool.poe.tasks.init]
113
- sequence = [
114
- {shell = "[ ! -d .git ] || { echo \"git repository already exists\"; exit 1; }"},
115
- {cmd = "git init"},
116
- {ref = "setup"},
117
- {cmd = "git remote add origin https://github.com/smkent/copier-python"},
118
- {cmd = "git config --local remote.origin.pushurl git@github.com:smkent/copier-python.git"},
119
- {cmd = "git add ."},
120
- {cmd = "git commit -m 'Create project from template'"},
121
- ]
122
- help = "Initialize git repository once on project creation"
123
-
124
- [tool.poe.tasks.lint]
125
- cmd = "prek run --all-files"
126
- help = "Run all formatters and static checks"
127
-
128
- [tool.poe.tasks.release]
129
- cmd = "bump-my-version bump -v"
130
- help = "Create and push a release tag (patch/minor/major)"
131
-
132
- [tool.poe.tasks.lt]
133
- sequence = [{ref = "lint"}, {ref = "test"}]
134
- help = "Run all formatters, static checks and tests"
135
-
136
- [tool.poe.tasks.setup]
137
- sequence = [
138
- {cmd = "uv sync"},
139
- {cmd = "prek install"},
140
- ]
141
- help = "Install project dependencies and git hooks"
142
-
143
- [tool.poe.tasks.snapup]
144
- cmd = "pytest --snapshot-update --numprocesses 0"
145
- help = "Update test snapshots"
146
-
147
- [tool.poe.tasks.test]
148
- cmd = "pytest"
149
- help = "Run tests"
150
-
151
- [tool.poe.tasks.test-versions]
152
- sequence = ["test-py310", "test-py311", "test-py312", "test-py313", "test-py314"]
153
- help = "Run tests across all Python versions"
154
-
155
- [tool.poe.tasks.test-py310]
156
- cmd = "pytest"
157
- executor = {isolated = true, python = "3.10"}
158
- help = "Run tests using Python 3.10"
159
-
160
- [tool.poe.tasks.test-py311]
161
- cmd = "pytest"
162
- executor = {isolated = true, python = "3.11"}
163
- help = "Run tests using Python 3.11"
164
-
165
- [tool.poe.tasks.test-py312]
166
- cmd = "pytest"
167
- executor = {isolated = true, python = "3.12"}
168
- help = "Run tests using Python 3.12"
169
-
170
- [tool.poe.tasks.test-py313]
171
- cmd = "pytest"
172
- executor = {isolated = true, python = "3.13"}
173
- help = "Run tests using Python 3.13"
174
-
175
- [tool.poe.tasks.test-py314]
176
- cmd = "pytest"
177
- executor = {isolated = true, python = "3.14"}
178
- help = "Run tests using Python 3.14"
179
-
180
- [tool.poe.tasks.ti]
181
- cmd = "pytest --numprocesses 0 --no-cov -vv"
182
- help = "Run tests with debug friendly options"
183
-
184
79
  [tool.pytest]
185
80
  addopts = [
186
81
  "-ra",
@@ -53,8 +53,10 @@
53
53
 
54
54
  [tasks.lt]
55
55
  description = "Run all formatters, static checks and tests"
56
- depends = ["lint"]
57
- run = { task = "test" }
56
+ run = [
57
+ { task = "lint" },
58
+ { task = "test" },
59
+ ]
58
60
 
59
61
  [tasks.release]
60
62
  description = "Create and push a release tag (patch/minor/major)"
@@ -174,8 +176,10 @@
174
176
 
175
177
  [tasks.lt]
176
178
  description = "Run all formatters, static checks and tests"
177
- depends = ["lint"]
178
- run = { task = "test" }
179
+ run = [
180
+ { task = "lint" },
181
+ { task = "test" },
182
+ ]
179
183
 
180
184
  [tasks.release]
181
185
  description = "Create and push a release tag (patch/minor/major)"
@@ -274,8 +278,10 @@
274
278
 
275
279
  [tasks.lt]
276
280
  description = "Run all formatters, static checks and tests"
277
- depends = ["lint"]
278
- run = { task = "test" }
281
+ run = [
282
+ { task = "lint" },
283
+ { task = "test" },
284
+ ]
279
285
 
280
286
  [tasks.release]
281
287
  description = "Create and push a release tag (patch/minor/major)"
@@ -381,8 +387,10 @@
381
387
 
382
388
  [tasks.lt]
383
389
  description = "Run all formatters, static checks and tests"
384
- depends = ["lint"]
385
- run = { task = "test" }
390
+ run = [
391
+ { task = "lint" },
392
+ { task = "test" },
393
+ ]
386
394
 
387
395
  [tasks.release]
388
396
  description = "Create and push a release tag (patch/minor/major)"
@@ -495,8 +503,10 @@
495
503
 
496
504
  [tasks.lt]
497
505
  description = "Run all formatters, static checks and tests"
498
- depends = ["lint"]
499
- run = { task = "test" }
506
+ run = [
507
+ { task = "lint" },
508
+ { task = "test" },
509
+ ]
500
510
 
501
511
  [tasks.release]
502
512
  description = "Create and push a release tag (patch/minor/major)"
@@ -621,8 +631,10 @@
621
631
 
622
632
  [tasks.lt]
623
633
  description = "Run all formatters, static checks and tests"
624
- depends = ["lint"]
625
- run = { task = "test" }
634
+ run = [
635
+ { task = "lint" },
636
+ { task = "test" },
637
+ ]
626
638
 
627
639
  [tasks.release]
628
640
  description = "Create and push a release tag (patch/minor/major)"
@@ -726,8 +738,10 @@
726
738
 
727
739
  [tasks.lt]
728
740
  description = "Run all formatters, static checks and tests"
729
- depends = ["lint"]
730
- run = { task = "test" }
741
+ run = [
742
+ { task = "lint" },
743
+ { task = "test" },
744
+ ]
731
745
 
732
746
  [tasks.release]
733
747
  description = "Create and push a release tag (patch/minor/major)"
@@ -838,8 +852,10 @@
838
852
 
839
853
  [tasks.lt]
840
854
  description = "Run all formatters, static checks and tests"
841
- depends = ["lint"]
842
- run = { task = "test" }
855
+ run = [
856
+ { task = "lint" },
857
+ { task = "test" },
858
+ ]
843
859
 
844
860
  [tasks.release]
845
861
  description = "Create and push a release tag (patch/minor/major)"
@@ -957,8 +973,10 @@
957
973
 
958
974
  [tasks.lt]
959
975
  description = "Run all formatters, static checks and tests"
960
- depends = ["lint"]
961
- run = { task = "test" }
976
+ run = [
977
+ { task = "lint" },
978
+ { task = "test" },
979
+ ]
962
980
 
963
981
  [tasks.release]
964
982
  description = "Create and push a release tag (patch/minor/major)"
@@ -1078,8 +1096,10 @@
1078
1096
 
1079
1097
  [tasks.lt]
1080
1098
  description = "Run all formatters, static checks and tests"
1081
- depends = ["lint"]
1082
- run = { task = "test" }
1099
+ run = [
1100
+ { task = "lint" },
1101
+ { task = "test" },
1102
+ ]
1083
1103
 
1084
1104
  [tasks.release]
1085
1105
  description = "Create and push a release tag (patch/minor/major)"
@@ -1178,8 +1198,10 @@
1178
1198
 
1179
1199
  [tasks.lt]
1180
1200
  description = "Run all formatters, static checks and tests"
1181
- depends = ["lint"]
1182
- run = { task = "test" }
1201
+ run = [
1202
+ { task = "lint" },
1203
+ { task = "test" },
1204
+ ]
1183
1205
 
1184
1206
  [tasks.release]
1185
1207
  description = "Create and push a release tag (patch/minor/major)"
@@ -1285,8 +1307,10 @@
1285
1307
 
1286
1308
  [tasks.lt]
1287
1309
  description = "Run all formatters, static checks and tests"
1288
- depends = ["lint"]
1289
- run = { task = "test" }
1310
+ run = [
1311
+ { task = "lint" },
1312
+ { task = "test" },
1313
+ ]
1290
1314
 
1291
1315
  [tasks.release]
1292
1316
  description = "Create and push a release tag (patch/minor/major)"
@@ -1399,8 +1423,10 @@
1399
1423
 
1400
1424
  [tasks.lt]
1401
1425
  description = "Run all formatters, static checks and tests"
1402
- depends = ["lint"]
1403
- run = { task = "test" }
1426
+ run = [
1427
+ { task = "lint" },
1428
+ { task = "test" },
1429
+ ]
1404
1430
 
1405
1431
  [tasks.release]
1406
1432
  description = "Create and push a release tag (patch/minor/major)"
@@ -1525,8 +1551,10 @@
1525
1551
 
1526
1552
  [tasks.lt]
1527
1553
  description = "Run all formatters, static checks and tests"
1528
- depends = ["lint"]
1529
- run = { task = "test" }
1554
+ run = [
1555
+ { task = "lint" },
1556
+ { task = "test" },
1557
+ ]
1530
1558
 
1531
1559
  [tasks.release]
1532
1560
  description = "Create and push a release tag (patch/minor/major)"
@@ -1630,8 +1658,10 @@
1630
1658
 
1631
1659
  [tasks.lt]
1632
1660
  description = "Run all formatters, static checks and tests"
1633
- depends = ["lint"]
1634
- run = { task = "test" }
1661
+ run = [
1662
+ { task = "lint" },
1663
+ { task = "test" },
1664
+ ]
1635
1665
 
1636
1666
  [tasks.release]
1637
1667
  description = "Create and push a release tag (patch/minor/major)"
@@ -1742,8 +1772,10 @@
1742
1772
 
1743
1773
  [tasks.lt]
1744
1774
  description = "Run all formatters, static checks and tests"
1745
- depends = ["lint"]
1746
- run = { task = "test" }
1775
+ run = [
1776
+ { task = "lint" },
1777
+ { task = "test" },
1778
+ ]
1747
1779
 
1748
1780
  [tasks.release]
1749
1781
  description = "Create and push a release tag (patch/minor/major)"
@@ -30,7 +30,7 @@
30
30
  - '3.14'
31
31
  steps:
32
32
  - name: 💾 Check out repository
33
- uses: actions/checkout@v6
33
+ uses: actions/checkout@v7
34
34
 
35
35
  - name: 📦 Restore uv cache
36
36
  uses: actions/cache@v6
@@ -71,7 +71,7 @@
71
71
  UV_PYTHON: '3.14'
72
72
  steps:
73
73
  - name: 💾 Check out repository
74
- uses: actions/checkout@v6
74
+ uses: actions/checkout@v7
75
75
  with:
76
76
  fetch-depth: 0
77
77
 
@@ -99,7 +99,7 @@
99
99
  contents: read
100
100
  steps:
101
101
  - name: 💾 Check out repository
102
- uses: actions/checkout@v6
102
+ uses: actions/checkout@v7
103
103
  with:
104
104
  fetch-depth: 0
105
105
 
@@ -141,7 +141,7 @@
141
141
  - '3.14'
142
142
  steps:
143
143
  - name: 💾 Check out repository
144
- uses: actions/checkout@v6
144
+ uses: actions/checkout@v7
145
145
 
146
146
  - name: 📦 Restore uv cache
147
147
  uses: actions/cache@v6
@@ -170,7 +170,7 @@
170
170
  UV_PYTHON: '3.14'
171
171
  steps:
172
172
  - name: 💾 Check out repository
173
- uses: actions/checkout@v6
173
+ uses: actions/checkout@v7
174
174
  with:
175
175
  fetch-depth: 0
176
176
 
@@ -198,7 +198,7 @@
198
198
  contents: read
199
199
  steps:
200
200
  - name: 💾 Check out repository
201
- uses: actions/checkout@v6
201
+ uses: actions/checkout@v7
202
202
  with:
203
203
  fetch-depth: 0
204
204
 
@@ -240,7 +240,7 @@
240
240
  - '3.14'
241
241
  steps:
242
242
  - name: 💾 Check out repository
243
- uses: actions/checkout@v6
243
+ uses: actions/checkout@v7
244
244
 
245
245
  - name: 📦 Restore uv cache
246
246
  uses: actions/cache@v6
@@ -282,7 +282,7 @@
282
282
  contents: read
283
283
  steps:
284
284
  - name: 💾 Check out repository
285
- uses: actions/checkout@v6
285
+ uses: actions/checkout@v7
286
286
  with:
287
287
  fetch-depth: 0
288
288
 
@@ -324,7 +324,7 @@
324
324
  - '3.14'
325
325
  steps:
326
326
  - name: 💾 Check out repository
327
- uses: actions/checkout@v6
327
+ uses: actions/checkout@v7
328
328
 
329
329
  - name: 📦 Restore uv cache
330
330
  uses: actions/cache@v6
@@ -354,7 +354,7 @@
354
354
  contents: read
355
355
  steps:
356
356
  - name: 💾 Check out repository
357
- uses: actions/checkout@v6
357
+ uses: actions/checkout@v7
358
358
  with:
359
359
  fetch-depth: 0
360
360
 
@@ -394,7 +394,7 @@
394
394
  - '3.12'
395
395
  steps:
396
396
  - name: 💾 Check out repository
397
- uses: actions/checkout@v6
397
+ uses: actions/checkout@v7
398
398
 
399
399
  - name: 📦 Restore uv cache
400
400
  uses: actions/cache@v6
@@ -435,7 +435,7 @@
435
435
  UV_PYTHON: '3.12'
436
436
  steps:
437
437
  - name: 💾 Check out repository
438
- uses: actions/checkout@v6
438
+ uses: actions/checkout@v7
439
439
  with:
440
440
  fetch-depth: 0
441
441
 
@@ -463,7 +463,7 @@
463
463
  contents: read
464
464
  steps:
465
465
  - name: 💾 Check out repository
466
- uses: actions/checkout@v6
466
+ uses: actions/checkout@v7
467
467
  with:
468
468
  fetch-depth: 0
469
469
 
@@ -501,7 +501,7 @@
501
501
  - '3.12'
502
502
  steps:
503
503
  - name: 💾 Check out repository
504
- uses: actions/checkout@v6
504
+ uses: actions/checkout@v7
505
505
 
506
506
  - name: 📦 Restore uv cache
507
507
  uses: actions/cache@v6
@@ -542,7 +542,7 @@
542
542
  UV_PYTHON: '3.12'
543
543
  steps:
544
544
  - name: 💾 Check out repository
545
- uses: actions/checkout@v6
545
+ uses: actions/checkout@v7
546
546
  with:
547
547
  fetch-depth: 0
548
548
 
@@ -570,7 +570,7 @@
570
570
  contents: read
571
571
  steps:
572
572
  - name: 💾 Check out repository
573
- uses: actions/checkout@v6
573
+ uses: actions/checkout@v7
574
574
  with:
575
575
  fetch-depth: 0
576
576
 
@@ -612,7 +612,7 @@
612
612
  - '3.14'
613
613
  steps:
614
614
  - name: 💾 Check out repository
615
- uses: actions/checkout@v6
615
+ uses: actions/checkout@v7
616
616
 
617
617
  - name: 📦 Restore uv cache
618
618
  uses: actions/cache@v6
@@ -653,7 +653,7 @@
653
653
  UV_PYTHON: '3.14'
654
654
  steps:
655
655
  - name: 💾 Check out repository
656
- uses: actions/checkout@v6
656
+ uses: actions/checkout@v7
657
657
  with:
658
658
  fetch-depth: 0
659
659
 
@@ -681,7 +681,7 @@
681
681
  contents: read
682
682
  steps:
683
683
  - name: 💾 Check out repository
684
- uses: actions/checkout@v6
684
+ uses: actions/checkout@v7
685
685
  with:
686
686
  fetch-depth: 0
687
687
 
@@ -721,7 +721,7 @@
721
721
  - '3.14'
722
722
  steps:
723
723
  - name: 💾 Check out repository
724
- uses: actions/checkout@v6
724
+ uses: actions/checkout@v7
725
725
 
726
726
  - name: 📦 Restore uv cache
727
727
  uses: actions/cache@v6
@@ -762,7 +762,7 @@
762
762
  UV_PYTHON: '3.14'
763
763
  steps:
764
764
  - name: 💾 Check out repository
765
- uses: actions/checkout@v6
765
+ uses: actions/checkout@v7
766
766
  with:
767
767
  fetch-depth: 0
768
768
 
@@ -790,7 +790,7 @@
790
790
  contents: read
791
791
  steps:
792
792
  - name: 💾 Check out repository
793
- uses: actions/checkout@v6
793
+ uses: actions/checkout@v7
794
794
  with:
795
795
  fetch-depth: 0
796
796
 
@@ -832,7 +832,7 @@
832
832
  - '3.14'
833
833
  steps:
834
834
  - name: 💾 Check out repository
835
- uses: actions/checkout@v6
835
+ uses: actions/checkout@v7
836
836
 
837
837
  - name: 📦 Restore uv cache
838
838
  uses: actions/cache@v6
@@ -873,7 +873,7 @@
873
873
  UV_PYTHON: '3.14'
874
874
  steps:
875
875
  - name: 💾 Check out repository
876
- uses: actions/checkout@v6
876
+ uses: actions/checkout@v7
877
877
  with:
878
878
  fetch-depth: 0
879
879
 
@@ -901,7 +901,7 @@
901
901
  contents: read
902
902
  steps:
903
903
  - name: 💾 Check out repository
904
- uses: actions/checkout@v6
904
+ uses: actions/checkout@v7
905
905
  with:
906
906
  fetch-depth: 0
907
907
 
@@ -941,7 +941,7 @@
941
941
  - '3.14'
942
942
  steps:
943
943
  - name: 💾 Check out repository
944
- uses: actions/checkout@v6
944
+ uses: actions/checkout@v7
945
945
 
946
946
  - name: 📦 Restore uv cache
947
947
  uses: actions/cache@v6
@@ -982,7 +982,7 @@
982
982
  UV_PYTHON: '3.14'
983
983
  steps:
984
984
  - name: 💾 Check out repository
985
- uses: actions/checkout@v6
985
+ uses: actions/checkout@v7
986
986
  with:
987
987
  fetch-depth: 0
988
988
 
@@ -1010,7 +1010,7 @@
1010
1010
  contents: read
1011
1011
  steps:
1012
1012
  - name: 💾 Check out repository
1013
- uses: actions/checkout@v6
1013
+ uses: actions/checkout@v7
1014
1014
  with:
1015
1015
  fetch-depth: 0
1016
1016
 
@@ -1038,7 +1038,7 @@
1038
1038
  UV_PYTHON: '3.14'
1039
1039
  steps:
1040
1040
  - name: 💾 Check out repository
1041
- uses: actions/checkout@v6
1041
+ uses: actions/checkout@v7
1042
1042
  with:
1043
1043
  fetch-depth: 0
1044
1044
 
@@ -1073,7 +1073,7 @@
1073
1073
  contents: write
1074
1074
  steps:
1075
1075
  - name: 💾 Check out repository
1076
- uses: actions/checkout@v6
1076
+ uses: actions/checkout@v7
1077
1077
  with:
1078
1078
  fetch-depth: 0
1079
1079
 
@@ -1107,7 +1107,7 @@
1107
1107
  UV_PYTHON: '3.14'
1108
1108
  steps:
1109
1109
  - name: 💾 Check out repository
1110
- uses: actions/checkout@v6
1110
+ uses: actions/checkout@v7
1111
1111
  with:
1112
1112
  fetch-depth: 0
1113
1113
 
@@ -1142,7 +1142,7 @@
1142
1142
  contents: write
1143
1143
  steps:
1144
1144
  - name: 💾 Check out repository
1145
- uses: actions/checkout@v6
1145
+ uses: actions/checkout@v7
1146
1146
  with:
1147
1147
  fetch-depth: 0
1148
1148
 
@@ -1,8 +0,0 @@
1
- # Environment/Tools
2
-
3
- * Python project with `uv`, use `uv add`/`uv run python` instead of bare `pip`/`python`
4
- * `poe setup`: One-time after-clone setup (dependencies, install pre-commit hooks).
5
- * `poe lint`: Pre-commit hooks (via `pre-commit`-compatible `prek`) including lint, format, type check (ruff, ty)
6
- * `poe test`: Run tests (accepts pytest arguments)
7
- * `poe lt`: Lint+test (no arguments)
8
- * `poe snapup`: Update test snapshots (syrupy, accepts pytest arguments)
@@ -1,24 +0,0 @@
1
- ---
2
- title: Required software
3
- icon: lucide/bookmark-check
4
- ---
5
-
6
- # Required software
7
-
8
- - [x] A [supported version][python-versions] of [**Python**][python]
9
- - [x] [**git** for verson control][git]
10
- - [x] [Astral's **uv** Python project manager][uv]: `pip install uv` or
11
- [other supported method][uv-installation]
12
- - [x] [**Copier**][copier]: `uv tool install copier`
13
- - [x] [Poe the Poet][poethepoet] (recommended): `uv tool install poethepoet`
14
-
15
- This provides `poe` without the `uv run` prefix,
16
- e.g. `poe test` instead of `uv run poe test`
17
-
18
- [copier]: https://copier.readthedocs.io
19
- [git]: https://git-scm.com
20
- [poethepoet]: https://poethepoet.natn.io/
21
- [python-versions]: https://devguide.python.org/versions/
22
- [python]: https://python.org
23
- [uv-installation]: https://docs.astral.sh/uv/getting-started/installation/
24
- [uv]: https://docs.astral.sh/uv/
File without changes
File without changes