AI NewsDev toolsAnnouncement

PyPI redesigned project pages to show where each file came from

PyPI finished rolling out redesigned project pages. Every page now shows whether each release file was published by a Trusted Publisher.

AI News

Editorial3 min read

LinkedInX
PyPI social card for the redesigned project pages blog post

Image: PyPI

Why it mattersPython installs sit at the start of most supply chain attacks. A reader can now see the publishing source in one place on the project page.

The Python Package Index finished rolling out redesigned project pages on 6 November. PyPI said so on its blog. Every package now has a Security tab. The tab lists the files in each release. It shows the attestations attached to each file. A sidebar block and a banner at the top of the page show the project's provenance state. A reader does not need to open the Security tab to see whether files have been verified.

Two kinds of attestation

PyPI added digital attestations in 2024. The team wrote that most PyPI users do not know what those terms mean. The old interface did little to show their meaning, importance or limits. The redesign follows the OpenSSF Attestations Style Guide.

The Security tab now shows two attestation types per file. A PyPI Publish attestation says the file was uploaded by a Trusted Publisher. It runs under the PyPI Publish v1 spec. A SLSA Build Provenance attestation links the file to its source commit, the build platform and the build instructions. Both attestations can be inspected in the UI. Each one links out to the Sigstore transparency log for deeper review.

Four named warnings

Every project now carries one of two provenance states or one of four warnings. Full Provenance means every file in the release carries at least one attestation. No Provenance means no file does. PyPI said that on its own this is not a sign the release is malicious. It only means the file's origin cannot be cryptographically verified.

The four warnings are more useful day to day. Incomplete Provenance flags a release where some files are signed and others are not. One example: wheels through Trusted Publishing, plus a source tarball uploaded with an API token. Inconsistent Provenance flags files that come from different repositories or build systems. Change of Provenance flags a release whose files came from a different repository or workflow than the previous release. PyPI said that can be a real migration, or a sign of a compromised pipeline. Loss of Provenance flags a project that stopped publishing with attestations after previously doing so.

The rest of the page

The redesigned Release Files tab lets a reader search and filter through long file lists. It shows the provenance state of each file. It also carries a late-file warning. That fires when a file was uploaded more than 14 days after the first file in the release. The Release History tab now shows the file count, provenance state and release status for each release. The labels include quarantined, yanked, archived and pre-release. The sidebar separates "PyPI data" from "Data verified by PyPI". It orders the fields by how often a reader uses them.

PyPI thanked the Open Source Security Foundation for funding the work. Kabu Creative did the design. The post credited Dustin Ingram, Zach Steindler and the OpenSSF Securing Software Repositories Working Group. The project also published a case study in the OpenSSF Attestations Style Guide.

The information was there before the rebuild. The decision for a developer upgrading a dependency has not changed either. What changed is that the publishing source is now visible from the project page. The reader who was going to check it gets one less reason to skip the step.

Source

PyPI blog, PyPI's redesigned project pages with clearer security signals are now live. Also Hacker News discussion.

SourcePyPI Blog

This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.

Share
LinkedInX
Start a project