Document real compatibility tag interpretation
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- python
- Bereich
- documentation
Rechercherichtung
Beginne mit dem Abschnitt zu Kompatibilitätstags in der Dokumentation zu den Plattform-Kompatibilitätstags und vergleiche dessen PEP-425-Reihenfolge mit den Beispielen für pip 24.3.1 im Issue. Untersuche die tatsächliche Reihenfolge, einschließlich Compressed Tag Sets und älterer cp/py-manylinux-Übereinstimmungen, und dokumentiere sie anschließend so, dass der beschriebene Algorithmus dem Verhalten von pip entspricht und die Beispiele erklärt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Issue Description
The compatibility tag section of the documentation is lifted directly from PEP-425 and covers how compatibility tags are constructed.
However, it is incomplete and inaccurate regarding how those tags are matched by pip. The described algorithm is:
This example list is for an installer running under CPython 3.3 on a linux_x86_64 system. It is in order from most-preferred (a distribution with a compiled extension module, built for the current version of Python) to least-preferred (a pure-Python distribution built with an older version of Python):
- cp33-cp33m-linux_x86_64
- cp33-abi3-linux_x86_64
- cp3-abi3-linux_x86_64
- cp33-none-linux_x86_64*
- cp3-none-linux_x86_64*
- py33-none-linux_x86_64*
- py3-none-linux_x86_64*
- cp33-none-any
- cp3-none-any
- py33-none-any
- py3-none-any
- py32-none-any
- py31-none-any
- py30-none-any
This is modified by "Compressed Tag Sets" but that's not relevant to this issue.
From this we can surmise, for a CPython version X.Y:
- It can match if
pythoniscpXYandabiiscpXY*. - It can match if
pythonis incpXY, cpXandabiisabi3 - It can match if
pythonis incpXY,cpX,pyXY,pyXandabiisnone - It can also match any
pyXZ-none-anyfor Z < Y
This is not the actual algorithm used by pip.
In particular I'm aware of these rules obeyed by pip in practice (but I haven't found a spec):
- It can also match any
cpXZ-abi3for Z < Y - It can also match any
pyXZ-none-manylinux*for Z < Y
Given these are valid, they must be in the ordering somewhere, and it should be documented where.
Some examples illustrating these rules (pip 24.3.1, python 3.13):
$ .venv/bin/pip --version
pip 24.3.1 from /home/mauve/dev/demo/.venv/lib/python3.13/site-packages/pip (python 3.13)
$ .venv/bin/pip install --dry-run solace_pubsubplus --no-deps --no-cache
Looking in indexes: https://artifactory/pypi/simple/
Collecting solace_pubsubplus
Downloading https://artifactory/pypi/packages/packages/5e/33/e5923f962b89b5a63eac2c0f7493abb53e7a1054a1da580c0037fd51713f/solace_pubsubplus-1.9.0-py36-none-manylinux_2_12_x86_64.whl (4.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 MB 549.6 MB/s eta 0:00:00
Would install solace-pubsubplus-1.9.0
$ .venv/bin/pip install --dry-run argon2_cffi_bindings --no-deps --no-cache
Looking in indexes: https://artifactory/pypi/simple/
Collecting argon2_cffi_bindings
Downloading https://artifactory/pypi/packages/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (86 kB)
Would install argon2-cffi-bindings-21.2.0
Given also that Compressed Tag Sets modify the whole algorithm, making it about set intersection, it would also be better to incorporate them into a description of the algorithm too.
Code of Conduct
- I am aware that participants in this repository must follow the PSF Code of Conduct.
- Vorherrschende Sprache
- Python
- Sterne
- 1.7k
- Forks
- 1.7k
- Ø Merge
- 3 T. 12 Std.
- Gemergte PRs (30 T.)
- 4
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus pypa/packaging.python.org
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
pypa/packaging.python.org#1960 · 4 Kommentare ·
-
component: specifications good first issue type: enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
pypa/packaging.python.org#1226 · 3 Kommentare · 1 Reaktion ·
-
`test` vs. `tests` Offencomponent: guides component: tutorials type: enhancement type: task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
pypa/packaging.python.org#1165 · 5 Kommentare ·
-
type: task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
pypa/packaging.python.org#792 · 2 Kommentare · 1 Reaktion ·
-
good first issue help wanted type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
pypa/packaging.python.org#463 · 5 Kommentare ·
Alle Issues in pypa/packaging.python.org
Ähnliche Issues
-
bug confirmed issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
open-webui/open-webui#30750 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100