Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
4e092c1
build(deps): update dependency mkdocstrings to v0.30.0
renovate-bot Jul 23, 2025
1e16b65
feat: add support for prompting filesystem paths (#2210)
sseemayer Jul 23, 2025
ec19e44
fix(vcs): fix cloning local dirty template repo when `core.fsmonitor=…
kamontat Jul 24, 2025
404130b
build(deps): update dependency ruff to v0.12.5
renovate-bot Jul 24, 2025
94bd16f
build(deps): update dependency uv to v0.8.2
renovate-bot Jul 25, 2025
4831f35
build(deps): update dependency mkdocs-material to v9.6.16
renovate-bot Jul 27, 2025
5e838b3
ci: override Python version from `.python-version` with matrix version
sisp Aug 1, 2025
3d7318b
build(deps): update dependency mypy to v1.17.1
renovate-bot Aug 1, 2025
0d8140d
build(deps): update dependency ruff to v0.12.7
renovate-bot Aug 1, 2025
35dd1ff
fix(updating): disable secret question validator when replaying old copy
sisp Jul 30, 2025
7f60a29
bump: version 9.8.0 → 9.9.0
sisp Aug 1, 2025
0691db9
build(deps): update dependency types-colorama to v0.4.15.20250801
renovate-bot Aug 1, 2025
4f7b0f8
build(deps): update dependency devbox to v0.15.1
renovate-bot Aug 7, 2025
afcc6c6
build(deps): update dependency ruff to v0.12.8
renovate-bot Aug 7, 2025
347eaf6
build(deps): update actions/download-artifact action to v5
renovate-bot Aug 7, 2025
d1b139a
build(deps): update dependency git to v2.50.1
renovate-bot Aug 8, 2025
f0dea85
build(deps): update dependency types-pygments to v2.19.0.20250809
renovate-bot Aug 9, 2025
ef50ee8
build(deps): update dependency types-pyyaml to v6.0.12.20250809
renovate-bot Aug 9, 2025
25f2684
build(deps): update dependency pre-commit to v4.3.0
renovate-bot Aug 10, 2025
ae5f4ff
build(deps): lock file maintenance
renovate-bot Aug 11, 2025
f80d1e1
test: add pytest argument `--spawn-timeout` (#2250)
RR5555 Aug 14, 2025
133d844
build(deps): update actions/checkout action to v5
renovate-bot Aug 11, 2025
d106ea5
build(deps): update dependency poethepoet to v0.37.0
renovate-bot Aug 13, 2025
a0881ec
build(deps): update dependency ruff to v0.12.9
renovate-bot Aug 15, 2025
5df77be
build(deps): update dependency mkdocs-material to v9.6.17
renovate-bot Aug 17, 2025
0e7fb36
build(deps): update dependency editorconfig-checker to v3.4.0
renovate-bot Aug 14, 2025
3feea3b
fix: cast Jinja context path variables to `pathlib.PurePath`
sisp Aug 13, 2025
fdbc016
fix: disallow render paths outside destination directory
sisp Aug 14, 2025
165c85a
bump: version 9.9.0 → 9.9.1
sisp Aug 18, 2025
9a06699
build(deps): update dependency devbox to v0.16.0
renovate-bot Aug 23, 2025
2d94245
build(deps): update dependency mkdocs-material to v9.6.18
renovate-bot Aug 24, 2025
7de9a2d
build(deps): update dependency ruff to v0.12.10
renovate-bot Aug 24, 2025
10ed83a
build(deps): update dependency types-pyyaml to v6.0.12.20250822
renovate-bot Aug 24, 2025
edb883d
feat: add support for nested multi-document includes in `copier.yml` …
RR5555 Aug 25, 2025
3e88824
fix: disable default answer validator for secret questions
sisp Aug 26, 2025
b4fe390
build(deps): update dependency typing-extensions to v4.15.0
renovate-bot Aug 25, 2025
78e6b2f
bump: version 9.9.1 → 9.10.0
sisp Aug 26, 2025
1254c7f
build(deps): update dependency platformdirs to v4.4.0
renovate-bot Aug 26, 2025
77bfee4
docs: apply Jinja syntax highlighting to inline code blocks
sisp Aug 27, 2025
16d7ede
fix(deps): cap prompt-toolkit to <3.0.52
sisp Aug 28, 2025
5194d02
bump: version 9.10.0 → 9.10.1
sisp Aug 28, 2025
78024ff
build(deps): update dependency ruff to v0.12.11
renovate-bot Aug 31, 2025
3c7465e
build(deps): update dependency commitizen to v4.8.4
renovate-bot Sep 6, 2025
9efbe42
build(deps): update dependency pytest-cov to v6.3.0
renovate-bot Sep 6, 2025
44db4b5
build(deps): update actions/setup-python action to v6
renovate-bot Sep 4, 2025
fa2e19e
build(deps): update dependency pytest to v8.4.2
renovate-bot Sep 7, 2025
bfa343d
build(deps): update dependency ruff to v0.12.12
renovate-bot Sep 4, 2025
9761bdb
build(deps): update dependency mkdocs-material to v9.6.19
renovate-bot Sep 8, 2025
90e37ae
fix(deps): remove prompt-toolkit version cap
sisp Sep 9, 2025
57df73c
bump: version 9.10.1 → 9.10.2
sisp Sep 9, 2025
b6e6e0f
build(deps): update dependency pytest-cov to v7
renovate-bot Sep 10, 2025
b4a84cb
build(deps): update dependency commitizen to v4.9.1
renovate-bot Sep 11, 2025
1f0b8d0
build(deps): update dependency mypy to v1.18.1
renovate-bot Sep 12, 2025
386607e
build(deps): update dependency pydantic to v2.11.9
renovate-bot Sep 14, 2025
25b06b7
build(deps): update dependency types-pyyaml to v6.0.12.20250915
renovate-bot Sep 15, 2025
337581e
build(deps): update dependency mkdocs-material to v9.6.20
renovate-bot Sep 18, 2025
fe22a02
build(deps): update dependency ruff to v0.13.0
renovate-bot Sep 18, 2025
04a83cb
build(deps): update dependency ruff to v0.13.1
renovate-bot Sep 18, 2025
e0f29e4
build(deps): update dependency mypy to v1.18.2
renovate-bot Sep 19, 2025
613cca1
build(deps): update dependency mkdocstrings to v0.30.1
renovate-bot Sep 24, 2025
4c1d4c0
docs: add Homebrew installation instructions in README (#2328)
colindean Sep 24, 2025
7b7ee68
build(deps): update dependency uv to v0.8.14
renovate-bot Sep 25, 2025
37f469f
build(deps): update dependency git to v2.51.0
renovate-bot Sep 24, 2025
09f7aca
build(deps): update jetify-com/devbox-install-action action to v0.14.0
renovate-bot Sep 24, 2025
82f9377
build(deps): update dependency ruff to v0.13.2
renovate-bot Sep 25, 2025
730009d
build(deps): update dependency pyyaml to v6.0.3
renovate-bot Sep 30, 2025
e03c143
build(deps): update dependency mkdocs-material to v9.6.21
renovate-bot Oct 4, 2025
671baf4
build(deps): update dependency pydantic to v2.11.10
renovate-bot Oct 7, 2025
17485b1
build(deps): update dependency ruff to v0.13.3
renovate-bot Oct 2, 2025
9640dc9
docs: fix grammatical error in FAQ (#2344)
savtrip Oct 7, 2025
5e9694d
fix(updating): ignore paths added to the `_exclude` list in new templ…
sisp Oct 9, 2025
d0a30dc
build(deps): update dependency pydantic to v2.12.2
renovate-bot Oct 14, 2025
3e33956
build(deps): update dependency ruff to v0.14.0
renovate-bot Oct 7, 2025
4c94662
build(deps): update astral-sh/setup-uv action to v7
renovate-bot Oct 8, 2025
d9881e8
build(deps): update dependency mkdocs-material to v9.6.22
renovate-bot Oct 15, 2025
67899aa
build(deps): update dependency editorconfig-checker to v3.4.1
renovate-bot Oct 15, 2025
42d4ff5
build(deps): update dependency uv to v0.8.19
renovate-bot Oct 15, 2025
4fba5ca
build(deps): update dependency difftastic to v0.65.0
renovate-bot Oct 16, 2025
74f2f59
fix(updating): exclude only Git-ignored files when applying patch
sisp Oct 16, 2025
40c1839
fix(updating): render templated skip-if-exists patterns before applyi…
sisp Oct 17, 2025
9d4e193
build(deps): update dependency ruff to v0.14.1
renovate-bot Oct 16, 2025
0d05608
build: add support for Python 3.14
sisp Oct 17, 2025
56599b4
chore(pre-commit): run Pretter in commit stage
sisp Oct 17, 2025
f095baa
bump: version 9.10.2 → 9.10.3
sisp Oct 17, 2025
c44bb62
build(deps): update dependency pydantic to v2.12.3
renovate-bot Oct 17, 2025
612eb17
build(deps): update dependency ruff to v0.14.2
renovate-bot Oct 23, 2025
a0436a3
feat: add support for conditionally unsetting a question's default value
sisp Aug 22, 2025
b9f2d11
build(deps): update github artifact actions
renovate-bot Oct 25, 2025
e82ac24
fix: fix using default answers from settings for required questions (…
34j Oct 26, 2025
de88305
fix: raise warning instead of error when `chmod` is not allowed
sisp Oct 27, 2025
5f179b8
build(deps): update dependency ruff to v0.14.3
renovate-bot Oct 31, 2025
31313b3
build(deps): update dependency plumbum to v1.10.0
renovate-bot Oct 31, 2025
78220ef
build(deps): update dependency uv to v0.8.23
renovate-bot Nov 4, 2025
83eab41
build(deps): update dependency mkdocs-material to v9.6.23
renovate-bot Nov 1, 2025
3d99f47
build(deps): update dependency pydantic to v2.12.4
renovate-bot Nov 5, 2025
c2b25aa
build(deps): update dependency ruff to v0.14.4
renovate-bot Nov 7, 2025
d281fb2
feat: add support for custom question icons (#2381)
Flexonze Nov 11, 2025
2107e33
refactor: drop support for Python 3.9
sisp Nov 11, 2025
343cfc3
build(deps): update dependency commitizen to v4.10.0
renovate-bot Nov 10, 2025
e4c32cc
build(deps): update dependency markdown-exec to v1.12.1
renovate-bot Nov 11, 2025
07cc743
build(deps): update dependency platformdirs to v4.5.0
renovate-bot Nov 11, 2025
98b6e79
build(deps): update dependency pre-commit to v4.4.0
renovate-bot Nov 12, 2025
ef8c8f7
build(deps): update dependency mkdocs-material to v9.7.0
renovate-bot Nov 12, 2025
76de371
build(deps): update dependency pytest to v9
renovate-bot Nov 12, 2025
0c24b08
build(deps): update dependency pytest-gitconfig to v0.8.0
renovate-bot Nov 12, 2025
35b3dd2
build(deps): update dependency ruff to v0.14.5
renovate-bot Nov 13, 2025
4dad85c
feat(updating): allow updating a dirty Git repository when the subpro…
brynpickering Nov 18, 2025
620e452
bump: version 9.10.3 → 9.11.0
sisp Nov 20, 2025
ca46aa2
build(deps): update dependency git to v2.51.2
renovate-bot Nov 18, 2025
be983df
build(deps): update dependency uv to v0.9.7
renovate-bot Nov 18, 2025
8c48d75
build(deps): update dependency difftastic to v0.67.0
renovate-bot Nov 19, 2025
f0777e2
build(deps): update actions/checkout action to v6
renovate-bot Nov 20, 2025
36bdf69
build(deps): update dependency types-pygments to v2.19.0.20251121
renovate-bot Nov 21, 2025
212235b
docs: remove outdated Nix flake setup instructions
sisp Aug 18, 2025
c5e3fc4
build(deps): update dependency ruff to v0.14.8
renovate-bot Dec 4, 2025
b8f74f7
build(deps): update dependency pre-commit to v4.5.0
renovate-bot Nov 22, 2025
fa6d942
build(deps): update dependency pydantic to v2.12.5
renovate-bot Nov 26, 2025
afeb554
build(deps): update dependency uv to v0.9.13
renovate-bot Dec 4, 2025
0a65e80
build(deps): update dependency editorconfig-checker to v3.6.0
renovate-bot Dec 4, 2025
5aab9d5
build(deps): update dependency mkdocstrings to v1
renovate-bot Nov 27, 2025
d0daacd
build(deps): update dependency poethepoet to v0.38.0
renovate-bot Dec 4, 2025
82fbfd7
build(deps): update dependency uv to v0.9.15
renovate-bot Dec 9, 2025
bc9dffb
build(deps): update dependency platformdirs to v4.5.1
renovate-bot Dec 5, 2025
923e08a
build(deps): update dependency pytest to v9.0.2
renovate-bot Dec 6, 2025
6c8e9b1
build(deps): update dependency commitizen to v4.10.1
renovate-bot Dec 11, 2025
3abf236
build(deps): update dependency ruff to v0.14.9
renovate-bot Dec 11, 2025
92c4e74
build(deps): update github artifact actions
renovate-bot Dec 12, 2025
c304559
build(deps): update dependency uv to v0.9.17
renovate-bot Dec 16, 2025
5fcd7b3
build(deps): update dependency pre-commit to v4.5.1
renovate-bot Dec 17, 2025
8377aad
build(deps): update dependency ruff to v0.14.10
renovate-bot Dec 18, 2025
0ddbe58
build(deps): update dependency uv to v0.9.18
renovate-bot Dec 23, 2025
5cd4de2
build(deps): update dependency mkdocs-material to v9.7.1
renovate-bot Dec 23, 2025
e855cbc
build(deps): update dependency poethepoet to v0.39.0
renovate-bot Dec 25, 2025
987b97c
build(deps): update dependency pytest-gitconfig to v0.9.0
renovate-bot Dec 28, 2025
24e842d
build(deps): update dependency commitizen to v4.11.0
renovate-bot Dec 29, 2025
471aa58
build(deps): update dependency poethepoet to v0.40.0
renovate-bot Jan 5, 2026
f043d5c
build(deps): update dependency uv to v0.9.21
renovate-bot Jan 8, 2026
6b5939d
build(deps): update dependency git to v2.52.0
renovate-bot Jan 8, 2026
572b03f
fix(updating): avoid circular reference when rendering JSON-serialize…
sisp Jan 9, 2026
3ae340d
bump: version 9.11.0 → 9.11.1
sisp Jan 10, 2026
639a5d1
build(deps): update dependency ruff to v0.14.11
renovate-bot Jan 8, 2026
10cebae
build(deps): update dependency commitizen to v4.11.2
renovate-bot Jan 12, 2026
41cb45c
fix(updating): restore support for preserved symlinks pointing outsid…
cbrown1234 Jan 13, 2026
f307b38
docs: mention filenames before code blocks in quickstart section (#2458)
Silvanoc Jan 14, 2026
84f3b80
build(deps): update dependency commitizen to v4.12.0
renovate-bot Jan 19, 2026
40aa86f
build(deps): update dependency uv to v0.9.24
renovate-bot Jan 14, 2026
9b7fd37
build(deps): update dependency ruff to v0.14.13
renovate-bot Jan 15, 2026
66271ab
build(deps): update dependency mkdocstrings to v1.0.1
renovate-bot Jan 19, 2026
b3a7b37
fix: disallow symlink-based includes outside template root
sisp Jan 13, 2026
b9ee296
bump: version 9.11.1 → 9.11.2
sisp Jan 20, 2026
8184f7f
build(deps): update dependency pathspec to v1
renovate-bot Jan 9, 2026
4a35e42
fix: avoid pattern deprecation warning for `pathspec` v1.0.0+
sisp Jan 20, 2026
5f85984
build(deps): lock file maintenance
renovate-bot Jan 20, 2026
e34be66
build(deps): update dependency mypy to v1.19.1
renovate-bot Jan 21, 2026
b14f8ba
fix(updating): ignore Git hooks on internal checkout before 3-way mer…
TheSuperiorStanislav Jan 22, 2026
6e41793
build(deps): update dependency uv to v0.9.26
renovate-bot Jan 21, 2026
778cb9c
build(deps): update dependency packaging to v26
renovate-bot Jan 22, 2026
276e8f6
build(deps): update dependency commitizen to v4.12.1
renovate-bot Jan 23, 2026
590b7b9
build(deps): update dependency ruff to v0.14.14
renovate-bot Jan 23, 2026
6c372ea
fix(updating): include non-question answers when generating fresh cop…
sisp Jan 22, 2026
376a41e
bump: version 9.11.2 → 9.11.3
sisp Jan 23, 2026
c775406
build(deps): lock file maintenance
renovate-bot Jan 26, 2026
cd45f37
docs: move example for special `UNSET` variable to `default` section …
mschoettle Jan 27, 2026
b4ee082
build(deps): update dependency mkdocstrings to v1.0.2
renovate-bot Jan 24, 2026
fb48924
build(deps): update dependency pathspec to v1.0.4
renovate-bot Jan 27, 2026
ec0d318
build(deps): update dependency editorconfig-checker to v3.6.1
renovate-bot Feb 1, 2026
1c38ef1
build(deps): update dependency uv to v0.9.27
renovate-bot Feb 1, 2026
9bed140
build(deps): update dependency commitizen to v4.13.0
renovate-bot Feb 1, 2026
0fda385
fix: remove incorrect import deprecation warnings for `types.Phase` a…
sisp Feb 6, 2026
48712b4
build(deps): update dependency commitizen to v4.13.7
renovate-bot Feb 9, 2026
d97ee1b
build(deps): update dependency mkdocstrings to v1.0.3
renovate-bot Feb 7, 2026
3ece9e7
build(deps): update dependency uv to v0.9.30
renovate-bot Feb 8, 2026
4e1d7ff
build(deps): update dependency poethepoet to v0.41.0
renovate-bot Feb 8, 2026
d3dd580
build(deps): update dependency ruff to v0.15.0
renovate-bot Feb 3, 2026
40b993c
refactor: replace `**kwargs` with explicit parameters in `run_{copy,r…
sisp Feb 11, 2026
59e5fdf
docs(api): update API docs and cross-references (#2495)
pawamoy Feb 11, 2026
fe4ffdc
build(deps): lock file maintenance
renovate-bot Feb 11, 2026
ac15308
fix(updating): normalize user-deleted paths before skip-if-exists pat…
sisp Feb 12, 2026
47afec3
refactor: deprecate `VcsRef` import from `copier` root module
sisp Feb 12, 2026
4666610
build(deps): update dependency platformdirs to v4.6.0
renovate-bot Feb 12, 2026
cdf6bec
fix(updating): anchor removed file paths to project root in update al…
sisp Feb 12, 2026
f02538b
build(deps): update dependency ruff to v0.15.1
renovate-bot Feb 13, 2026
d9908ba
build(deps): update dependency platformdirs to v4.7.0
renovate-bot Feb 13, 2026
6aafcf4
fix(updating): apply skip-if-exists patterns as gitignore-style at su…
sisp Feb 13, 2026
a619a9f
revert: refactor: deprecate `VcsRef` import from `copier` root module
sisp Feb 16, 2026
4ec6c40
revert: fix: remove incorrect import deprecation warnings for `types.…
sisp Feb 16, 2026
ae173a6
feat: re-export `Phase` enum at package level
sisp Feb 16, 2026
f85a19f
refactor: deprecate public `settings` module and its symbols
sisp Feb 20, 2026
e29ac09
feat: add new settings API with minimal surface
sisp Feb 20, 2026
fbcb59f
refactor(typing): use builtin types in public API signatures
sisp Feb 11, 2026
cec0263
chore: enable Ruff's `W505` rule to enforce doc line length limit (#2…
RR5555 Feb 21, 2026
1e46031
build(deps): update dependency platformdirs to v4.9.2
renovate-bot Feb 16, 2026
3a2b069
build(deps): update dependency dunamai to v1.26.0
renovate-bot Feb 15, 2026
27e8d78
build(deps): update dependency uv to v0.10.2
renovate-bot Feb 16, 2026
ce1a6d9
build(deps): update dependency commitizen to v4.13.8
renovate-bot Feb 18, 2026
e68df6c
build(deps): update dependency mkdocs-material to v9.7.2
renovate-bot Feb 18, 2026
f38a9ef
build(deps): update dependency ruff to v0.15.2
renovate-bot Feb 20, 2026
5eb9d87
docs(api): remove deprecated `settings` and `types` modules from API …
sisp Feb 21, 2026
3f2ab8e
bump: version 9.11.3 → 9.12.0
sisp Feb 21, 2026
d9520d7
refactor(cli): call public `run_*` functions instead of internal `Wor…
sisp Feb 22, 2026
f7bcf68
build(deps): update dependency poethepoet to v0.42.0
renovate-bot Feb 22, 2026
e394b40
build(deps): update dependency mkdocs-material to v9.7.3
renovate-bot Feb 24, 2026
cff0ff7
build(deps): lock file maintenance (#2518)
renovate-bot Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# renovate: datasource=github-tags depName=devbox packageName=jetify-com/devbox
ARG DEVBOX_VERSION=0.15.0
ARG DEVBOX_VERSION=0.16.0
FROM jetpackio/devbox:${DEVBOX_VERSION}

WORKDIR /code
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ permissions:

env:
# renovate: datasource=github-tags depName=devbox packageName=jetify-com/devbox
DEVBOX_VERSION: "0.15.0"
DEVBOX_VERSION: "0.16.0"

jobs:
autofix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

# Install Devbox
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
uses: jetify-com/devbox-install-action@v0.14.0
with:
devbox-version: ${{ env.DEVBOX_VERSION }}
enable-cache: "true"
Expand Down
17 changes: 9 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ env:
PYTEST_ADDOPTS: ${{ github.event.inputs.pytest_addopts }}
PYTHONIOENCODING: "UTF-8"
# renovate: datasource=devbox depName=uv
UV_VERSION: "0.7.21"
UV_VERSION: "0.10.2"
# renovate: datasource=github-tags depName=devbox packageName=jetify-com/devbox
DEVBOX_VERSION: "0.15.0"
DEVBOX_VERSION: "0.16.0"

jobs:
build:
Expand All @@ -32,7 +32,7 @@ jobs:
- macos-latest
- ubuntu-latest
- windows-latest
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
include:
# HACK: Limit the number of pytest workers on macOS to 3 to avoid a
# timeout for a few test cases. For unknown reasons, the number of
Expand All @@ -43,17 +43,18 @@ jobs:
pytest-xdist-maxprocesses: 3
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Needs all tags to compute dynamic version
- name: Install uv
uses: astral-sh/setup-uv@v6
uses: astral-sh/setup-uv@v7
with:
version: ${{ env.UV_VERSION }}
python-version: ${{ matrix.python-version }}
enable-cache: "true"
cache-suffix: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down Expand Up @@ -97,9 +98,9 @@ jobs:
permissions:
contents: write # Allow pushing back pre-commit changes
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
uses: jetify-com/devbox-install-action@v0.14.0
with:
devbox-version: ${{ env.DEVBOX_VERSION }}
enable-cache: "true"
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ on:

env:
# renovate: datasource=devbox depName=uv
UV_VERSION: "0.7.21"
UV_VERSION: "0.10.2"

jobs:
build:
name: Build project for distribution
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Install uv
uses: astral-sh/setup-uv@v6
uses: astral-sh/setup-uv@v7
with:
version: ${{ env.UV_VERSION }}

Expand All @@ -39,7 +39,7 @@ jobs:
run: uv build

- name: Upload artifact containing distribution files
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: dist
path: dist/
Expand All @@ -58,7 +58,7 @@ jobs:

steps:
- name: Download artifact containing distribution files
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: dist
path: dist/
Expand All @@ -82,7 +82,7 @@ jobs:

steps:
- name: Download artifact containing distribution files
uses: actions/download-artifact@v4
uses: actions/download-artifact@v7
with:
name: dist
path: dist/
Expand Down
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ repos:
- id: prettier
name: prettier
entry: prettier --write --list-different --ignore-unknown
stages: [pre-commit]
language: system
types: [text]
exclude: |
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.9
3.10
118 changes: 118 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,124 @@ All notable changes to this project will be documented in this file. This projec
adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/) versioning schema, and
the changelog itself conforms to [Keep A Changelog](https://keepachangelog.com/).

## v9.12.0 (2026-02-21)

### Feat

- add new settings API with minimal surface
- re-export `Phase` enum at package level

### Fix

- **updating**: apply skip-if-exists patterns as gitignore-style at subproject root in
update algorithm
- **updating**: anchor removed file paths to project root in update algorithm
- **updating**: normalize user-deleted paths before skip-if-exists pattern matching
during updates

### Refactor

- **typing**: use builtin types in public API signatures
- deprecate public `settings` module and its symbols
- replace `**kwargs` with explicit parameters in `run_{copy,recopy,update}` functions

## v9.11.3 (2026-01-23)

### Fix

- **updating**: include non-question answers when generating fresh copy of new
template
- **updating**: ignore Git hooks on internal checkout before 3-way merging file with
conflicts (#2432)
- avoid pattern deprecation warning for `pathspec` v1.0.0+

## v9.11.2 (2026-01-20)

### Fix

- **updating**: restore support for preserved symlinks pointing outside subproject
(#2427)

### Security

- disallow symlink-based includes outside template root
- disallow symlink-following write operations outside destination directory (#2427)

## v9.11.1 (2026-01-10)

### Fix

- **updating**: avoid circular reference when rendering JSON-serialized `_copier_conf`
variable

## v9.11.0 (2025-11-20)

### Feat

- **updating**: allow updating a dirty Git repository when the subproject directory is
clean (#2369)
- add support for custom question icons (#2381)
- add support for conditionally unsetting a question's default value

### Fix

- raise warning instead of error when `chmod` is not allowed
- fix using default answers from settings for required questions (#2374)

### Refactor

- drop support for Python 3.9

## v9.10.3 (2025-10-17)

### Fix

- **updating**: render templated skip-if-exists patterns before applying patch with
excluded paths
- **updating**: exclude only Git-ignored files when applying patch
- **updating**: ignore paths added to the `_exclude` list in new template version when
updating

## v9.10.2 (2025-09-09)

### Fix

- **deps**: remove prompt-toolkit version cap

## v9.10.1 (2025-08-28)

### Fix

- **deps**: cap prompt-toolkit to <3.0.52

## v9.10.0 (2025-08-26)

### Feat

- add support for nested multi-document includes in `copier.yml` (#2251)

### Fix

- disable default answer validator for secret questions

## v9.9.1 (2025-08-18)

### Security

- disallow render paths outside destination directory
- cast Jinja context path variables to `pathlib.PurePath`

## v9.9.0 (2025-08-01)

### Feat

- add support for prompting filesystem paths (#2210)

### Fix

- **updating**: disable secret question validator when replaying old copy
- **vcs**: fix cloning local dirty template repo when `core.fsmonitor=true` (#2151)

## v9.8.0 (2025-07-07)

### Feat
Expand Down
28 changes: 25 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,28 @@ Ready to contribute? Here's how to set up the project for local development.
uv run poe lint
```

!!! note

If you get fails due to
`pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x............>`,
you can adjust the timeout to a longer one (default: `10`), or remove the
timeout (`0`). Either add it as an argument in your command:

```shell
uv run poe test --spawn-timeout 0
```

Or modify pytest arguments in VS Code workspace settings:

```json title=".vscode/settings.json"
{
...
"python.testing.pytestArgs": [
"--spawn-timeout=0"
]
}
```

1. Optionally, use pyclean to remove Python bytecode and build artifacts, e.g.

```shell
Expand Down Expand Up @@ -165,7 +187,7 @@ Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) st

We use [Commitizen](https://commitizen-tools.github.io/commitizen/) to handle Copier
releases. This tool generates the appropriate tag based on that standard. It also writes
our [changelog](CHANGELOG.md). Changes that are included there are of type `fix`, `feat`
our [changelog](changelog.md). Changes that are included there are of type `fix`, `feat`
and `refactor`; also `BREAKING CHANGE:` trailers will appear. If your change is not
meaningful in the changelog, then please don't use one of those categories.

Expand Down Expand Up @@ -215,8 +237,8 @@ Now the tag is released, but GitHub won't display it in the releases page. For t
1. [Draft a new release](https://github.com/copier-org/copier/releases/new).
1. Choose the tag you just pushed.
1. Set the tag also as release title.
1. Copy the just added changelog entry from [CHANGELOG](./CHANGELOG.md) and paste it as
a description.
1. Copy the just added changelog entry from [CHANGELOG](changelog.md) and paste it as a
description.
1. Enable "Set as the latest release".
1. Optionally, enable "Create a discussion for this release".
1. Click on "Publish release".
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@ A library and CLI app for rendering project templates.

## Installation

1. Install Python 3.9 or newer.
1. Install Python 3.10 or newer.
1. Install Git 2.27 or newer.
1. To use as a CLI app: [`pipx install copier`](https://github.com/pypa/pipx) or
[`uv tool install copier`](https://docs.astral.sh/uv/#tool-management)
1. To use as a library: `pip install copier` or `conda install -c conda-forge copier`

### Nix flake
### Homebrew formula

To install latest Copier release with 100% reproducibility:
To install the latest Copier release using
[its Homebrew formula](https://formulae.brew.sh/formula/copier) for macOS or Linux:

```shell
nix profile install 'https://flakehub.com/f/copier-org/copier/*.tar.gz'
brew install copier
```

## Quick start
Expand All @@ -50,6 +51,8 @@ To create a template:
└── 📄 {{_copier_conf.answers_file}}.jinja # answers are recorded here
```

Content of the `copier.yml` file:

```yaml title="copier.yml"
# questions
project_name:
Expand All @@ -61,10 +64,14 @@ module_name:
help: What is your Python module name?
```

Content of the `{{project_name}}/{{module_name}}.py.jinja` file:

```python+jinja title="{{project_name}}/{{module_name}}.py.jinja"
print("Hello from {{module_name}}!")
```

Content of the `{{_copier_conf.answers_file}}.jinja` file:

```yaml+jinja title="{{_copier_conf.answers_file}}.jinja"
# Changes here will be overwritten by Copier
{{ _copier_answers|to_nice_yaml -}}
Expand Down
14 changes: 13 additions & 1 deletion copier/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@

from . import _main
from ._deprecation import deprecate_member_as_internal
from ._types import VcsRef as VcsRef
from ._settings import Settings, load_settings
from ._types import Phase, VcsRef

if TYPE_CHECKING:
from ._main import * # noqa: F403
Expand All @@ -27,3 +28,14 @@ def __getattr__(name: str) -> Any:
}:
deprecate_member_as_internal(name, __name__)
return getattr(_main, name)


__all__ = [
"load_settings",
"run_copy", # noqa: F405
"run_recopy", # noqa: F405
"run_update", # noqa: F405,
"Phase",
"Settings",
"VcsRef",
]
Loading
Loading