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.
- {copier_python-0.13.0 → copier_python-0.13.1}/.gitignore +6 -1
- copier_python-0.13.1/AGENTS.md +9 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/PKG-INFO +1 -1
- {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/repo.py +31 -5
- {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/update.py +10 -1
- copier_python-0.13.1/docs/development/requirements.md +24 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/development/workflow.md +13 -9
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/releasing.md +3 -3
- {copier_python-0.13.0 → copier_python-0.13.1}/pyproject.toml +0 -105
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_mise_toml.ambr +64 -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.1}/CONTRIBUTING.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/LICENSE +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/README.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/__main__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/copier_python/py.typed +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/contributing.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/development/updates.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/index.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/license.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-creation.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-development.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-release.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-setup.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/project-updates.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/requirements.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/docs/setup.md +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/conftest.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__init__.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_agents.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_compose.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_contributing.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_dockerfile.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_docs.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_license.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_pyproject.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_readme.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_workflows.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_zensical.ambr +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_agents.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_compose.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_contributing.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_dockerfile.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_docs.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_license.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_mise_toml.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_pyproject.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_readme.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_structure.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_template.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_workflows.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/template/test_zensical.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/test_update.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/tests/test_version.py +0 -0
- {copier_python-0.13.0 → copier_python-0.13.1}/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.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
|
-
|
|
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.1}/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/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.1}/tests/template/__snapshots__/test_compose.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_contributing.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_dockerfile.ambr
RENAMED
|
File without changes
|
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_license.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_pyproject.ambr
RENAMED
|
File without changes
|
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/tests/template/__snapshots__/test_workflows.ambr
RENAMED
|
File without changes
|
{copier_python-0.13.0 → copier_python-0.13.1}/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
|