Skip to content

Commit 93e9cc3

Browse files
authored
PEP 770: Add list of differences between PEP 725 and PEP 770 (#4278)
1 parent 79d0f17 commit 93e9cc3

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

peps/pep-0770.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,39 @@ These decisions mean this PEP is capable of supporting any SBOM standard
139139
and does not favor one over the other, instead deferring the decision to
140140
producing projects and tools and consuming user tooling.
141141

142+
What are the differences between PEP 770 and PEP 725?
143+
-----------------------------------------------------
144+
145+
:pep:`725`
146+
("Specifying external dependencies in pyproject.toml") is a different
147+
PEP with some similarities to PEP 770, such as attempting to describe non-Python
148+
software within Python packaging metadata. This section aims to show how these
149+
two PEPs are tracking different information and serving different use-cases:
150+
151+
* PEP 725 describes **abstract dependencies**, such as requiring "a C compiler"
152+
as a build-time dependency (``virtual:compiler/c``). PEP 770 describes
153+
**concrete dependencies**, such as an exact name, version, architecture, and
154+
hash of a software library distributed through AlmaLinux distribution
155+
(``pkg:rpm/almalinux/[email protected]``). For cases like build dependencies this
156+
might result in a dependency being requested via PEP 725 and then recorded
157+
concretely in an SBOM post-build with PEP 770.
158+
* PEP 725 is for describing **external dependencies**, provided by the system
159+
being used to either build or run the software. PEP 770 is for describing
160+
**bundled software inside Python package archives**, the SBOM documents
161+
don't describe software on the system.
162+
* **PEP 725 is primarily about identification**, using a list of software
163+
identifiers. PEP 770 provides the **complete functionality of SBOM standards**
164+
to describe various software attributes such as license, checksum, download
165+
location, etc.
166+
* **PEP 725 and PEP 770 have different users and use-cases**. PEP 725 is
167+
primarily for humans writing dependencies in ``pyproject.toml`` by hand.
168+
The users of the information are build backends and users who want to build
169+
software from source.
170+
PEP 770 is primarily for tools which are capable of generating SBOM documents
171+
to be included in a Python package archive and SBOM/SCA tools which want to
172+
SBOM documents about installed software to do some other task such as
173+
vulnerability scanning or software analysis.
174+
142175
.. _770-spec:
143176

144177
Specification

0 commit comments

Comments
 (0)