PEP 425 (tags) - mention wheel filename convention

This commit is contained in:
Daniel Holth 2012-10-18 23:01:56 -04:00
parent 81da2e17a9
commit c70a54e10d
1 changed files with 34 additions and 9 deletions

View File

@ -64,6 +64,14 @@ platform tag
For example, the tag py27-none-any indicates compatible with Python 2.7 For example, the tag py27-none-any indicates compatible with Python 2.7
(any Python 2.7 implementation) with no abi requirement, on any platform. (any Python 2.7 implementation) with no abi requirement, on any platform.
Use
===
The `wheel` built package format includes these tags in its filenames,
of the form ``{distribution}-{version}(-{build tag})?-{python tag}-{abi
tag}-{platform tag}.whl``. Other package formats may have their own
conventions.
Details Details
======= =======
@ -103,8 +111,7 @@ extension modules. For implementation-specific ABIs, the implementation
is abbreviated in the same way as the Python Tag, e.g. `cp33d` would be is abbreviated in the same way as the Python Tag, e.g. `cp33d` would be
the CPython 3.3 ABI with debugging. the CPython 3.3 ABI with debugging.
The CPython stable ABI is `abi3` as in the shared library suffix, and The CPython stable ABI is `abi3` as in the shared library suffix.
is available starting with Python 3.2.
Implementations with a very unstable ABI may use the first 6 bytes (as Implementations with a very unstable ABI may use the first 6 bytes (as
8 base64-encoded characters) of the SHA-256 hash of ther source code 8 base64-encoded characters) of the SHA-256 hash of ther source code
@ -135,19 +142,30 @@ For example, an installer running under CPython 3.3 on a linux_x86_64
system might support:: system might support::
1. cp33-cp33m-linux_x86_64 1. cp33-cp33m-linux_x86_64
2. cp33-none-linux_x86_64 2. cp33-abi3-linux_x86_64
3. cp3-abi3-linux_x86_64 3. cp33-none-linux_x86_64
4. cp33-none-any 4. cp33-none-any
5. cp3-none-any 5. cp3-none-any
6. py33-none-any 6. cp32-none-any
7. py3-none-any 7. cp31-none-any
8. cp30-none-any
9. py33-none-any
10. py3-none-any
11. py32-none-any
12. py31-none-any
13. py30-none-any
A user could instruct their installer to fall back to building from an The list is in order from most-preferred (a distribution with a
sdist more or less often by configuring this list of tags. compiled extension module, built for the current version of Python)
to least-preferred (a pure-Python distribution built with an older
version of Python). A user could instruct their installer to fall back
to building from an sdist more or less often by configuring this list of
tags; for example, a user could include only the `*-none-any` tags to only
download built packages that advertise themselves as being pure Python.
Rarely there will be more than one supported built distribution for a Rarely there will be more than one supported built distribution for a
particular version of a package. For example, a packager could release particular version of a package. For example, a packager could release
a package tagged `cp3-abi3-linux_x86_64` that contains an optional C a package tagged `cp33-abi3-linux_x86_64` that contains an optional C
extension and the same distribution tagged `py3-none-any` that does not. extension and the same distribution tagged `py3-none-any` that does not.
The index of the tag in the supported tags list breaks the tie, and the The index of the tag in the supported tags list breaks the tie, and the
package with the C extension is installed in preference to the package package with the C extension is installed in preference to the package
@ -176,6 +194,13 @@ by no Python implementation e.g. "cp33-cp31u-win64", so use it sparingly.
FAQ FAQ
=== ===
What tags are used by default?
Tools should use the most-preferred architecture dependent tag
e.g. `cp33-cp33m-win32` or the most-preferred pure python tag
e.g. `py33-none-any` by default. If the packager overrides the
default it indicates that they intended to provide cross-Python
compatibility.
Can I have a tag `py32+` to indicate a minimum Python minor release? Can I have a tag `py32+` to indicate a minimum Python minor release?
No. Inspect the Trove classifiers to determine this level of No. Inspect the Trove classifiers to determine this level of
cross-release compatibility. Similar to the announcements "beaglevote cross-release compatibility. Similar to the announcements "beaglevote