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.
- {copier_python-0.13.0 → copier_python-0.13.2}/.gitignore +6 -1
- copier_python-0.13.2/AGENTS.md +9 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/PKG-INFO +1 -1
- {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/repo.py +31 -5
- {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/update.py +10 -1
- copier_python-0.13.2/docs/development/requirements.md +24 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/development/workflow.md +13 -9
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/releasing.md +3 -3
- {copier_python-0.13.0 → copier_python-0.13.2}/pyproject.toml +0 -105
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_mise_toml.ambr +64 -32
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_workflows.ambr +32 -32
- copier_python-0.13.0/AGENTS.md +0 -8
- copier_python-0.13.0/docs/development/requirements.md +0 -24
- {copier_python-0.13.0 → copier_python-0.13.2}/CONTRIBUTING.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/LICENSE +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/README.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/__main__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/copier_python/py.typed +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/contributing.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/development/updates.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/index.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/license.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-creation.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-development.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-release.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-setup.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/project-updates.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/requirements.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/docs/setup.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/conftest.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_agents.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_compose.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_contributing.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_dockerfile.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_docs.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_license.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_pyproject.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_readme.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_zensical.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_agents.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_compose.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_contributing.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_dockerfile.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_docs.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_license.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_mise_toml.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_pyproject.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_readme.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_structure.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_template.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_workflows.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/template/test_zensical.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/test_update.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/test_version.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.2}/tests/utils.py +0 -0
|
@@ -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.
|
|
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
|
-
|
|
86
|
+
cls.run_in(
|
|
87
87
|
[
|
|
88
88
|
*["git", "remote", "set-url", "--push", "origin"],
|
|
89
89
|
repo.push_url,
|
|
90
90
|
],
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
)
|
|
94
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
* `
|
|
34
|
-
* `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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 `
|
|
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
|
-
|
|
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",
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_mise_toml.ambr
RENAMED
|
@@ -53,8 +53,10 @@
|
|
|
53
53
|
|
|
54
54
|
[tasks.lt]
|
|
55
55
|
description = "Run all formatters, static checks and tests"
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
178
|
-
|
|
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
|
-
|
|
278
|
-
|
|
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
|
-
|
|
385
|
-
|
|
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
|
-
|
|
499
|
-
|
|
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
|
-
|
|
625
|
-
|
|
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
|
-
|
|
730
|
-
|
|
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
|
-
|
|
842
|
-
|
|
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
|
-
|
|
961
|
-
|
|
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
|
-
|
|
1082
|
-
|
|
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
|
-
|
|
1182
|
-
|
|
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
|
-
|
|
1289
|
-
|
|
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
|
-
|
|
1403
|
-
|
|
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
|
-
|
|
1529
|
-
|
|
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
|
-
|
|
1634
|
-
|
|
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
|
-
|
|
1746
|
-
|
|
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)"
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_workflows.ambr
RENAMED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
- '3.14'
|
|
31
31
|
steps:
|
|
32
32
|
- name: 💾 Check out repository
|
|
33
|
-
uses: actions/checkout@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
1145
|
+
uses: actions/checkout@v7
|
|
1146
1146
|
with:
|
|
1147
1147
|
fetch-depth: 0
|
|
1148
1148
|
|
copier_python-0.13.0/AGENTS.md
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_compose.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_contributing.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_dockerfile.ambr
RENAMED
|
File without changes
|
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_license.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_pyproject.ambr
RENAMED
|
File without changes
|
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.2}/tests/template/__snapshots__/test_zensical.ambr
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|