[Python-checkins] peps: update faq, recommended example list

daniel.holth python-checkins at python.org
Sun Feb 17 04:55:32 CET 2013


http://hg.python.org/peps/rev/071b013f0e2c
changeset:   4744:071b013f0e2c
user:        Daniel Holth <dholth at fastmail.fm>
date:        Sat Feb 16 22:55:23 2013 -0500
summary:
  update faq, recommended example list

files:
  pep-0425.txt |  90 ++++++++++++++++++++++++++-------------
  1 files changed, 60 insertions(+), 30 deletions(-)


diff --git a/pep-0425.txt b/pep-0425.txt
--- a/pep-0425.txt
+++ b/pep-0425.txt
@@ -139,32 +139,44 @@
 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 a linux_x86_64
-system might support::
-
- 1. cp33-cp33m-linux_x86_64
- 2. cp33-abi3-linux_x86_64
- 3. cp33-none-linux_x86_64
- 4. cp33-none-any
- 5. cp3-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
-
-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
+It is recommended that installers try to choose the most feature complete
+built distribution available (the one most specific to the installation
+environment) by default before falling back to pure Python versions
+published for older Python releases. Installers are also recommended to
+provide a way to configure and re-order the list of allowed compatibility
+tags; for example, a user might accept 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
+Another desirable installer feature might be to include "re-compile from
+source if possible" as more preferable than some of the compatible but
+legacy pre-built options.
+
+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)::
+
+1.  cp33-cp33m-linux_x86_64
+2.  cp33-abi3-linux_x86_64
+3.  cp3-abi3-linux_x86_64
+4.  cp33-none-linux_x86_64*
+5.  cp3-none-linux_x86_64*
+6.  py33-none-linux_x86_64*
+7.  py3-none-linux_x86_64*
+8.  cp33-none-any
+9.  cp3-none-any
+10.  py33-none-any
+11.  py3-none-any
+12.  py32-none-any
+13.  py31-none-any
+14.  py30-none-any
+
+* Built distributions may be platform specific for reasons other than C
+  extensions, such as by including a native executable invoked as
+  a subprocess.
+
+Sometimes 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 `cp33-abi3-linux_x86_64` that contains an optional C
 extension and the same distribution tagged `py3-none-any` that does not.
@@ -202,18 +214,36 @@
     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
-    versions 3.2 and above no longer supports Python 1.52", you will
-    have to manually keep track of the maximum (PEP-386) release that
-    still supports your version of Python.
+What tag do I use if my distribution uses a feature exclusive to the newest version of Python?
+    Compatibility tags aid installers in selecting the *most compatible*
+    build of a *single version* of a distribution. For example, when
+    there is no Python 3.3 compatible build of ``beaglevote-1.2.0``
+    (it uses a Python 3.4 exclusive feature) it may still use the
+    ``py3-none-any`` tag instead of the ``py34-none-any`` tag. A Python
+    3.3 user must combine other qualifiers, such as a requirement for the
+    older release ``beaglevote-1.1.0`` that does not use the new feature,
+    to get a compatible build.
 
 Why isn't there a `.` in the Python version number?
     CPython has lasted 20+ years without a 3-digit major release. This
     should continue for some time.  Other implementations may use _ as
     a delimeter, since both - and . delimit the surrounding filename.
 
+Why normalise hyphens and other non-alphanumeric characters to underscores?
+    To avoid conflicting with the "." and "-" characters that separate
+    components of the filename, and for better compatibility with the
+    widest range of filesystem limitations for filenames (including
+    being usable in URL paths without quoting).
+
+Why not use special character <X> rather than "." or "-"?
+    Either because that character is inconvenient or potentially confusing
+    in some contexts (for example, "+" must be quoted in URLs, "~" is
+    used to denote the user's home directory in POSIX), or because the
+    advantages weren't sufficiently compelling to justify changing the
+    existing reference implementation for the wheel format defined in PEP
+    427 (for example, using "," rather than "." to separate components
+    in a compressed tag).
+
 Who will maintain the registry of abbreviated implementations?
     New two-letter abbreviations can be requested on the python-dev
     mailing list.  As a rule of thumb, abbreviations are reserved for

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


More information about the Python-checkins mailing list