[Python-checkins] peps: update tags PEP

daniel.holth python-checkins at python.org
Sun Sep 16 19:27:20 CEST 2012


http://hg.python.org/peps/rev/4fb8292a0578
changeset:   4512:4fb8292a0578
user:        Daniel Holth <dholth at fastmail.fm>
date:        Sun Sep 16 13:27:11 2012 -0400
summary:
  update tags PEP

files:
  pep-0425.txt |  73 +++++++++++++++++++--------------------
  1 files changed, 36 insertions(+), 37 deletions(-)


diff --git a/pep-0425.txt b/pep-0425.txt
--- a/pep-0425.txt
+++ b/pep-0425.txt
@@ -57,7 +57,7 @@
 python tag
     ‘py27’, ‘cp33’
 abi tag
-    ‘cp33dmu’, ‘none’
+    ‘cp32dmu’, ‘none’
 platform tag
     ‘linux_x86_64’, ‘any’
 
@@ -82,9 +82,15 @@
 
 Other Python implementations should use `sys.implementation.name`.
 
-The language version is `py_version_nodot`, or just the major version
-`2` or `3` for many pure-Python distributions.  CPython gets away with
-no dot, but if one is needed the underscore `_` is used instead.
+The language version is `py_version_nodot`. CPython gets away with no dot,
+but if one is needed the underscore `_` is used instead.
+
+The version can be just the major version `2` or `3` `py2`, `py3` for
+many pure-Python distributions.
+
+Importantly, major-version-only tags like `py2` and `py3` are not
+shorthand for `py20` and `py30`.  Instead, these tags mean the packager
+intentionally released a cross-version-compatible distribution.
 
 A single-source Python 2/3 compatible distribution can use the compound
 tag `py2.py3`.  See `Compressed Tag Sets`, below.
@@ -97,8 +103,8 @@
 is abbreviated in the same way as the Python Tag, e.g. `cp33d` would be
 the CPython 3.3 ABI with debugging.
 
-As a special case, the CPython stable ABI starts with `py`; `py32`
-is that ABI with only the operations available from Python 3.2 onward.
+The CPython stable ABI is `abi3` as in the shared library suffix, and
+is available starting with Python 3.2.
 
 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
@@ -112,48 +118,41 @@
 The platform tag is simply `distutils.util.get_platform()` with all
 hyphens `-` and periods `.` replaced with underscore `_`.
 
+* win32
+* linux_i386
+* linux_x86_64
+
 Use
 ===
 
 The tags are used by installers to decide which built distribution
 (if any) to download from a list of potential built distributions.
-Installers will have a list of (python, abi, plat) that the current
-Python installation can run sorted by order of preference.  Each built
-distribution recieves a score based on its tag's position in the list,
-and the most-preferred distribution is the one that is installed.
-If no built distribution matches the list of supported tag tuples then
-the installer falls back to installing from the source distribution.
-Tags are only compared for equality; they are never greater or less than
-another tag, and a tag that 'startswith' another tag is not a subset of
-the shorter tag.
+The installer maintains a list of (pyver, abi, arch) tuples that it
+will support.  If the built distribution's tag is `in` the list, then
+it can be installed.
 
-For example, an installer running under CPython 3.3 on an imaginary MMIX
-system might prefer, in order::
+For example, an installer running under CPython 3.3 on a linux_x86_64
+system might support::
 
-   1. (cp33, cp33, mmix) # built for this specific version of Python
-   2. (cp33, py32, mmix) # using the stable ABI as defined by Python 3.2
-   3. (cp33, none, mmix) # using no ABI, but still depending on the specific
-      platform (e.g. through ctypes or os.system)
-   4. (cp33, none, any) # pure-Python distribution for the current Python
-   5. (py33, none, any) # pure-Python distribution for the current (generic)
-      Python
-   6. (py32, none, any) # pure-Python distributions for older versions of
-      Python
-   7. (py31, none, any) # ""
-   8. (py30, none, any) # ""
-   9. (py3, none, any) # ""
-
-A distribution that requires CPython 3.3 or CPython 2.7 and has an
-optional extension module could distribute built distributions tagged
-`cp33-cp3-mmix`, `cp33-none-any`, and `cp27-none-any`.  (Our imaginary
-program is using 2to3, so the built distribution is not compatible across
-major releases.)  `cp33-cp3-mmix` gets a score of 1, `cp33-none-any`
-gets a score of 3, and `cp27-none-any` is not in the list at all.  Since
-`cp33-cp3-mmix` has the best score, that built distribution is installed.
+ 1. cp33-cp33m-linux_x86_64
+ 2. cp33-none-linux_x86_64
+ 3. cp3-abi3-linux_x86_64
+ 4. cp33-none-any
+ 5. cp3-none-any
+ 6. py33-none-any
+ 7. py3-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.
 
+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
+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
+without because that tag appears first in the list.
+
 Compressed Tag Sets
 ===================
 

-- 
Repository URL: http://hg.python.org/peps


More information about the Python-checkins mailing list