Opened 8 weeks ago

Closed 8 weeks ago

Last modified 8 weeks ago

#36563 closed New feature (wontfix)

Adopt PEP 740 attestations for Django release files on PyPI

Reported by: JaeHyuckSa Owned by:
Component: Packaging Version: dev
Severity: Normal Keywords: PEP740, PyPI, provenance, attestations, release-process
Cc: JaeHyuckSa Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Following the Django Forum discussion (https://forum.djangoproject.com/t/adopt-pep-740-digital-attestations-for-django-releases/42460/4), I’d like to explore adding PEP 740 provenance (digital attestations) for Django’s sdists and wheels on PyPI. This looks doable without runtime changes; the work should be limited to the release process and docs.

(A) Keep the current manual release and still adopt PEP 740 by setting up Trusted Publishing on PyPI, generating attestations with pypi-attestations, and uploading with twine upload --attestations. Adding a brief post-upload check in the release guide using PyPI’s Integrity API also seems reasonable. Uploading attestations will likely require a Trusted Publisher identity.

(B) Alternatively, move releases to GitHub Actions with Trusted Publishing and use pypa/gh-action-pypi-publish@release/v1. This path would require changing Django’s release method to GitHub Actions and defining that workflow in our docs/release process.

Change History (4)

comment:1 by JaeHyuckSa, 8 weeks ago

In my view, this work is primarily permissions-related, so it may be difficult for me to drive it directly; however, if the ticket is approved, I’d be happy to contribute in a supporting role.

comment:2 by JaeHyuckSa, 8 weeks ago

Version: 5.2dev

comment:3 by Natalia Bidart, 8 weeks ago

Resolution: wontfix
Status: newclosed

Hello JaeHyuckSa, thank you for the ticket and the forum post conversation. As mentioned there, this is far from trivial and warrants a much deeper conversation since, currently, releases are performed with a fully manual procedure (see docs: https://docs.djangoproject.com/en/dev/internals/howto-release-django/)

I'll close as wontfix following the documented triage procedure.

comment:4 by JaeHyuckSa, 8 weeks ago

I completely understand. I also thought lightly of this matter at first, but it turned out there’s actually a lot more to discuss than I expected.

Note: See TracTickets for help on using tickets.
Back to Top