Repository navigation
Release v1.10.0 - #9
Merged
Merged
Conversation
MattFisher
reviewed
Oct 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merging this pull request tags v1.10.0 and creates its GitHub release.
CI waits for approval: open the Checks tab and click Approve workflows to run.
Added
versioninpyproject.tomlwithuv version --bump, collectschangelog.d/intoCHANGELOG.md, and opens a "Release vX.Y.Z" pull request. Approve its CI and merge it, and Release on merge tags the merge commit, creates the GitHub release from the changelog section, and, for a library published to PyPI, startspublish.yml. Theautobump picks minor when a fragment adds, changes, deprecates or removes something, and patch when fragments only fix; it never picks major.prepare-release.ymlandrelease-on-merge.yml, and generated projects get thin callers pinned to@v1, as withpython-ci.yml. Release fixes reach every project whenv1moves, without acopier update.pyproject.tomlat the merge commit agrees with the release branch, refuses a tag already on another commit, and skips a tag or release that already exists, so it can be re-run. Its concurrency group is keyed on the branch, so an unrelated pull request closing can't cancel a pending release run.publish.ymltakes aworkflow_dispatchtrigger, so Release on merge can start it. A tag created with the default Actions token triggers no workflows, and PyPI trusted publishing can't run from a reusable workflow, so the dispatched run is stillpublish.yml, the workflow the trusted publisher names. It refuses any ref but av*tag, fails if the tag doesn't match the built wheel's version, and moves to checkout 7.0.1 and setup-uv 10.0.1.vX.Y.Ztag, so every template release exercises them beforev1moves. Its own changelog is now scriv fragments too, andbump-v1.ymlcan be started on a tag as well as by a published release. Started that way, it refuses anything but the newest finalv1.X.Ytag, sov1only moves forward.Changed
uv_build, instead of hatchling, and keep a staticversioninpyproject.toml, souv version --bumpmanages it.__version__reads it back from the installed package metadata ("unknown"in a source tree that was never installed). hatchling was there to read the version from__init__.py, which uv can't bump; with the version inpyproject.tomlit isn't needed.[tool.scriv]reads the version frompyproject.tomlfor every project kind. MIT projects setlicense-files = ["LICENSE"], since uv_build ships only the license files it is told about.Upgrading
copier updateacross 1.10.0 needs--trust, because the template now runs a migration. Without it copier stops withTemplate uses potentially unsafe feature: migrations.and changes nothing, for apps as well as libraries. The weekly template-update workflow already passes it.copier updatechangespyproject.tomlto uv_build and a staticversion, and a migration then sets thatversionto the__version__the project's__init__.pyhad before the update. Without it the template's0.1.0would merge in silently. Checkuv version --shortbefore merging the update.__init__.pyitself conflicts: keep the template's metadata lookup, plus any other code the file had.src/<package>/, and any hatch build options (includes, excludes, force-include) need their[tool.uv.build-backend]equivalents.publish.yml. A project that publishes from a differently named workflow should rename it topublish.ymland update the publisher.