Skip to content

Commit 964ad05

Browse files
konstinwoodruffw
andcommitted
PEP 815: Deprecate RECORD.jws and RECORD.p7s
Co-authored-by: William Woodruff <william@yossarian.net>
1 parent da0dc71 commit 964ad05

2 files changed

Lines changed: 71 additions & 0 deletions

File tree

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,7 @@ peps/pep-0809.rst @zooba
688688
peps/pep-0810.rst @pablogsal @DinoV @Yhg1s
689689
peps/pep-0811.rst @sethmlarson @gpshead
690690
peps/pep-0814.rst @vstinner @corona10
691+
peps/pep-0815.rst @konstin
691692
# ...
692693
peps/pep-2026.rst @hugovk
693694
# ...

peps/pep-0815.rst

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
PEP: 815
2+
Title: Deprecate ``RECORD.jws`` and ``RECORD.p7s``
3+
Author: Konstantin Schütze <konstin@mailbox.org>,
4+
William Woodruff <william@yossarian.net>
5+
Sponsor: Emma Harper Smith <emma@python.org>
6+
PEP-Delegate: Paul Moore <p.f.moore@gmail.com>
7+
Status: Draft
8+
Type: Standards Track
9+
Topic: Packaging
10+
Created: 04-Dec-2025
11+
Post-History: `09-Jun-2025 <https://discuss.python.org/t/discouraging-deprecating-pep-427-style-signatures/94968>`__
12+
13+
Abstract
14+
========
15+
16+
This PEP deprecates the ``RECORD.jws`` and ``RECORD.p7s`` wheel signature
17+
files. Lack of support in tooling means that these virtually unused files do
18+
not provide the security they purport. Users looking for wheel signing should
19+
instead refer to
20+
:ref:`index hosted attestations <packaging:index-hosted-attestations>`.
21+
22+
Motivation
23+
==========
24+
25+
No major Python packaging tool supports generating or checking either
26+
``RECORD.jws`` or ``RECORD.p7s``. Notably, neither pip nor uv validate the
27+
hashes in ``RECORD``, a requirement for using signature files. The
28+
:ref:`binary distribution format <packaging:binary-distribution-format>`
29+
presents them as security features, potentially resulting in user confusion.
30+
31+
The state of the art for hashing and signing wheels has shifted from
32+
in-archive information to out-of-archive information presented on the index,
33+
such as hashes and :ref:`attestations <packaging:index-hosted-attestations>`
34+
in the :ref:`simple repository API <packaging:simple-repository-api>`. Unlike
35+
the hashes in ``RECORD``, tools such as pip and uv validate index provided
36+
hashes.
37+
38+
Both files are virtually unused. A GitHub search for ``path:**.dist-info/RECORD``
39+
yields 635k results, ``path:**.dist-info/RECORD.jws`` has 8 distinct results
40+
and ``path:**.dist-info/RECORD.p7s`` has zero results.
41+
42+
Specification
43+
=============
44+
45+
The ``RECORD.jws`` and ``RECORD.p7s`` files are deprecated, and the
46+
:ref:`binary distribution format <packaging:binary-distribution-format>` is
47+
updated to reflect this. Build backends and other tools must not add these
48+
files to wheels. Installers must not attempt to verify them, while they
49+
remain excluded from ``RECORD``.
50+
51+
Backward Compatibility
52+
======================
53+
54+
Known implementations require no changes, as they do not support these files
55+
beyond skipping them when processing the ``RECORD`` file. Users should refer
56+
to :ref:`index hosted attestations <packaging:index-hosted-attestations>` for
57+
signing archives.
58+
59+
Security Implications
60+
=====================
61+
62+
This PEP strengthens the security of the Python packaging ecosystem by
63+
reducing the divergence between security features presented in the
64+
specification and the security features supported by tools.
65+
66+
Copyright
67+
=========
68+
69+
This document is placed in the public domain or under the
70+
CC0-1.0-Universal license, whichever is more permissive.

0 commit comments

Comments
 (0)