Be nice to FOSS maintainers.
#### ✨ What's Changed The main theme of this patch release that the support for uploading [PEP 639 licensing metadata] to PyPI has been fixed in [#327](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/327). #### 🛠️ Internal Updates A few smaller updates include the attestation existence being checked earlier in the process now, listing all the violating files together, not just one (PR [#315](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/315)). And the lock file with the software available in runtime has been re-pinned in [#329](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/329). Additionally, the CI now runs the smoke-tests against both Ubuntu 22.04 and 24.04 explicitly via [`da900af`](https://redirect.github.com/pypa/gh-action-pypi-publish/commit/da900af96347cc027433720ad4f122117645459d). **🪞 Full Diff**: https://github.com/pypa/gh-action-pypi-publish/compare/v1.12.3...v1.12.4 **🧔♂️ Release Manager:** [@webknjaz](https://redirect.github.com/sponsors/webknjaz) [🇺🇦](https://stand-with-ukraine.pp.ua) **🙏 Special Thanks** to [@dnicolodi](https://redirect.github.com/dnicolodi)[💰](https://redirect.github.com/sponsors/dnicolodi) and [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) for releasing the license metadata support fix in Twine! **💬 Discuss** [on Bluesky 🦋](https://bsky.app/profile/webknjaz.me/post/3lghhtwey522z), [on Mastodon 🐘](https://mastodon.social/@webknjaz/113881243992941874) and [on GitHub][release discussion]. [![GH Sponsors badge]][GH Sponsors URL] [PEP 639 licensing metadata]: https://packaging.python.org/en/latest/specifications/core-metadata/#license-expression [release discussion]: https://redirect.github.com/pypa/gh-action-pypi-publish/discussions/330 [GH Sponsors badge]: https://img.shields.io/badge/%40webknjaz-transparent?logo=githubsponsors&logoColor=%23EA4AAA&label=Sponsor&color=2a313c [GH Sponsors URL]: https://redirect.github.com/sponsors/webknjazTake the 2025 Python Packaging Survey if you still haven't!
> \[!important] > 🚨 This release includes fixes for [GHSA-vxmw-7h4f-hqxh](https://redirect.github.com/pypa/gh-action-pypi-publish/security/advisories/GHSA-vxmw-7h4f-hqxh) discovered by [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw). > We've also integrated [Zizmor](http://zizmor.sh) to catch similar issues in the future and you should too. #### ✨ New Stuff [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) updated the README to no longer mention the attestations feature being experimental in [#347](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/347): it's been rather stable for a year already 🎉 He also added more diagnostic output which includes printing out the GitHub Environment claim via [#371](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/371) and warning about the unsupported reusable workflows configurations [#306](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/306), when using Trusted Publishing. > \[!tip] > The official support for reusable workflows is currently blocked on changes to PyPI. To get updates about progress on the action side, you may want to subscribe to [#166](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/166). > At PyCon US 2025 Sprints, [@facutuesca](https://redirect.github.com/facutuesca)[💰](https://redirect.github.com/sponsors/facutuesca), [@miketheman](https://redirect.github.com/miketheman)[💰](https://redirect.github.com/sponsors/miketheman), [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) and I[💰][GH Sponsors URL] spent several hours IRL brainstorming how to fix this and migrate projects that happen to rely on an obscure corner case with reusable workflows that temporarily allows them to function by accident. > The result of that discussion is posted @ [pypi/warehouse#11096 (comment)](https://redirect.github.com/pypi/warehouse/issues/11096#issuecomment-2895081700). > Note that this is a volunteer-led effort and there is no ETA. If you need this soon, make your employer sponsor the PSF and maybe they'll be able to hire somebody for this work on Warehouse. In addition to that, [@konstin](https://redirect.github.com/konstin)[💰](https://redirect.github.com/sponsors/konstin) sent [#378](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/378) to pin `actions/setup-python` to a SHA hash. This makes `pypi-publish` compatible with new GitHub policies that allow organizations to mandate hash-pinning actions used in workflows. #### 🛠️ Internal Dependencies [@webknjaz](https://redirect.github.com/webknjaz)[💰][GH Sponsors URL] made a bunch of updates to the action runtime which includes bumping it to Python 3.13 in [#331](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/331) and updating the dependency tree across the board. `pip-with-requires-python` is no longer being installed ([#332](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/332)). Some related bumps were contributed by [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) ([#359](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/359)) and [@kurtmckee](https://redirect.github.com/kurtmckee)[💰](https://redirect.github.com/sponsors/kurtmckee) sent a contributor-facing PR, bumping the linting configuration via [#335](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/335). #### 💪 New Contributors - [@kurtmckee](https://redirect.github.com/kurtmckee) made their first contribution in [#335](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/335) - [@konstin](https://redirect.github.com/konstin) made their first contribution in [#378](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/378) **🪞 Full Diff**:Audit your supply chain regularly!
#### ✨ What's Changed The main change in this release is that `verbose` and `print-hash` inputs are now on by default. This was contributed by [@whitequark](https://redirect.github.com/whitequark)[💰](https://redirect.github.com/sponsors/whitequark) in [#397](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/397). #### 📝 Docs [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) updated the mentions of PEP 740 to stop implying that it might be experimental (it hasn't been for quite a while!) in [#388](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/388) and [@him2him2](https://redirect.github.com/him2him2)[💰](https://redirect.github.com/sponsors/him2him2) brushed up some grammar in the README and SECURITY docs via [#395](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/395). #### 🛠️ Internal Updates [@woodruffw](https://redirect.github.com/woodruffw)[💰](https://redirect.github.com/sponsors/woodruffw) bumped `sigstore` and `pypi-attestations` in the lock file ([#391](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/391)) and [@webknjaz](https://redirect.github.com/webknjaz)[💰][GH Sponsors URL] added infra for using type annotations in the project ([#381](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/381)). #### 💪 New Contributors - [@him2him2](https://redirect.github.com/him2him2) made their first contribution in [#395](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/395) - [@whitequark](https://redirect.github.com/whitequark) made their first contribution in [#397](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/397) **🪞 Full Diff**:This one probably won't touch you visibly so just bookmark @webknjaz's EuroPython 2026 “AI” slop rant for when it's published on YouTube or encourage him to come back with more to share next year!
#### 🛠️ Urgh… Another release!? Again? Explain yourself! Looking at the diff, you'll only witness updates across the dependency tree. That's it! It's not a security fix or anything like that even, no. But you'll want this update. > \[!tip] > So what *most* people will find useful is [@takluyver](https://redirect.github.com/takluyver)[💰](https://redirect.github.com/sponsors/takluyver)'s update of Twine to v7 that we use internally ([#416](https://redirect.github.com/pypa/gh-action-pypi-publish/issues/416)). This version will let them upload their sdists and wheels containing core packaging metadata v2.5 to (Test)PyPI. #### 🧐 Tell me why..pypi-attestations and sigstore, which has the
most interesting backstory here. @facutuesca💰 sent a
patch in #417 but a bunch more helped out.