[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