Commits

Daniel Holth committed 27cd594

PEP 425 (tags) - mention wheel filename convention

  • Participants
  • Parent commits 4773b6b

Comments (0)

Files changed (1)

 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.
 
+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
 =======
 
 is abbreviated in the same way as the Python Tag, e.g. `cp33d` would be
 the CPython 3.3 ABI with debugging.
 
-The CPython stable ABI is `abi3` as in the shared library suffix, and
-is available starting with Python 3.2.
+The CPython stable ABI is `abi3` as in the shared library suffix.
 
 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
 system might support::
 
  1. cp33-cp33m-linux_x86_64
- 2. cp33-none-linux_x86_64
- 3. cp3-abi3-linux_x86_64
+ 2. cp33-abi3-linux_x86_64
+ 3. cp33-none-linux_x86_64
  4. cp33-none-any
  5. cp3-none-any
- 6. py33-none-any
- 7. py3-none-any
+ 6. cp32-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
-sdist more or less often by configuring this list of tags.
+The list 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).  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
 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.
 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
 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?
     No.  Inspect the Trove classifiers to determine this level of
     cross-release compatibility.  Similar to the announcements "beaglevote