copier-python 0.13.0__tar.gz → 0.13.1__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.1}/.gitignore +6 -1
  2. copier_python-0.13.1/AGENTS.md +9 -0
  3. {copier_python-0.13.0 → copier_python-0.13.1}/PKG-INFO +1 -1
  4. {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/repo.py +31 -5
  5. {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/update.py +10 -1
  6. copier_python-0.13.1/docs/development/requirements.md +24 -0
  7. {copier_python-0.13.0 → copier_python-0.13.1}/docs/development/workflow.md +13 -9
  8. {copier_python-0.13.0 → copier_python-0.13.1}/docs/releasing.md +3 -3
  9. {copier_python-0.13.0 → copier_python-0.13.1}/pyproject.toml +0 -105
  10. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_mise_toml.ambr +64 -32
  11. copier_python-0.13.0/AGENTS.md +0 -8
  12. copier_python-0.13.0/docs/development/requirements.md +0 -24
  13. {copier_python-0.13.0 → copier_python-0.13.1}/CONTRIBUTING.md +0 -0
  14. {copier_python-0.13.0 → copier_python-0.13.1}/LICENSE +0 -0
  15. {copier_python-0.13.0 → copier_python-0.13.1}/README.md +0 -0
  16. {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/__init__.py +0 -0
  17. {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/__main__.py +0 -0
  18. {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/py.typed +0 -0
  19. {copier_python-0.13.0 → copier_python-0.13.1}/docs/contributing.md +0 -0
  20. {copier_python-0.13.0 → copier_python-0.13.1}/docs/development/updates.md +0 -0
  21. {copier_python-0.13.0 → copier_python-0.13.1}/docs/index.md +0 -0
  22. {copier_python-0.13.0 → copier_python-0.13.1}/docs/license.md +0 -0
  23. {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-creation.md +0 -0
  24. {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-development.md +0 -0
  25. {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-release.md +0 -0
  26. {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-setup.md +0 -0
  27. {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-updates.md +0 -0
  28. {copier_python-0.13.0 → copier_python-0.13.1}/docs/requirements.md +0 -0
  29. {copier_python-0.13.0 → copier_python-0.13.1}/docs/setup.md +0 -0
  30. {copier_python-0.13.0 → copier_python-0.13.1}/tests/__init__.py +0 -0
  31. {copier_python-0.13.0 → copier_python-0.13.1}/tests/conftest.py +0 -0
  32. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__init__.py +0 -0
  33. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_agents.ambr +0 -0
  34. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_compose.ambr +0 -0
  35. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_contributing.ambr +0 -0
  36. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_dockerfile.ambr +0 -0
  37. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_docs.ambr +0 -0
  38. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_license.ambr +0 -0
  39. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_pyproject.ambr +0 -0
  40. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_readme.ambr +0 -0
  41. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_workflows.ambr +0 -0
  42. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_zensical.ambr +0 -0
  43. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_agents.py +0 -0
  44. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_compose.py +0 -0
  45. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_contributing.py +0 -0
  46. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_dockerfile.py +0 -0
  47. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_docs.py +0 -0
  48. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_license.py +0 -0
  49. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_mise_toml.py +0 -0
  50. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_pyproject.py +0 -0
  51. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_readme.py +0 -0
  52. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_structure.py +0 -0
  53. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_template.py +0 -0
  54. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_workflows.py +0 -0
  55. {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_zensical.py +0 -0
  56. {copier_python-0.13.0 → copier_python-0.13.1}/tests/test_update.py +0 -0
  57. {copier_python-0.13.0 → copier_python-0.13.1}/tests/test_version.py +0 -0
  58. {copier_python-0.13.0 → copier_python-0.13.1}/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.1
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)"
@@ -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