[Python-checkins] r77075 - peps/trunk/pep-0345.txt

tarek.ziade python-checkins at python.org
Mon Dec 28 00:50:39 CET 2009


Author: tarek.ziade
Date: Mon Dec 28 00:50:39 2009
New Revision: 77075

Log:
added the range operator, and more details on versions

Modified:
   peps/trunk/pep-0345.txt

Modified: peps/trunk/pep-0345.txt
==============================================================================
--- peps/trunk/pep-0345.txt	(original)
+++ peps/trunk/pep-0345.txt	Mon Dec 28 00:50:39 2009
@@ -283,15 +283,8 @@
 The distutils project names should correspond to names as found
 on the `Python Package Index`_.
 
-A version declaration is a series of conditional operators and
-version numbers, separated by commas.  Conditional operators
-must be one of "<", ">", "<=", ">=", "==", and "!=".  Version
-numbers must be in the format specified in `PEP 386`_.
-If no operator is provided with a version, the "==" operator
-is used by default.
-
-Any number of conditional operators can be specified, e.g.
-the string ">1.0, !=1.3.4, <2.0" is a legal version declaration.
+Version declarations must follow the rules described in
+`Version Specifiers`_
 
 Examples::
 
@@ -322,10 +315,9 @@
 that it provides ``ORM-bindings``, allowing other projects to depend
 only on having at most one of them installed.
 
-A version declaration may be supplied (without a comparison
-operator); the distribution's version number will be implied if none
-is specified.  Version numbers must be in the format specified in
-`PEP 386`_.
+A version declaration may be supplied and must follow the rules described
+in `Version Specifiers`_. The distribution's version number will be implied
+if none is specified.
 
 Examples::
 
@@ -342,7 +334,7 @@
 should not be installed at the same time.
 
 Version declarations can be supplied.  Version numbers must be in the
-format specified in `PEP 386`_.
+format specified in `Version Specifiers`_.
 
 The most common use of this field will be in case a project name
 changes, e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0.
@@ -359,19 +351,13 @@
 :::::::::::::::
 
 This field specifies the Python version(s) that the package is
-guaranteed to be compatible with. The format of the field is a
-series of conditional operators and version numbers, separated
-by commas.  Conditional operators must be one of "<", ">", "<=",
-">=", "==", and "!=". If no operator is provided with a version,
-the "==" operator is used by default.
+guaranteed to be compatible with.
 
-Version numbers must be in the format specified in `PEP 386`_.
-
-Any number of conditional operators can be specified, e.g.
-the string ">1.0, !=1.3.4, <2.0" is a legal version declaration.
+Version numbers must be in the format specified in `Version Specifiers`_.
 
 Examples::
 
+    Requires-Python: 2.5
     Requires-Python: >2.1
     Requires-Python: >=2.3.4
     Requires-Python: 2.5, 2.6
@@ -389,19 +375,13 @@
 dependency, optionally followed by a version declaration within
 parentheses.
 
-A version declaration is a series of conditional operators and
-version numbers, separated by commas.  Conditional operators
-must be one of "<", ">", "<=", ">=", "==", and "!=". If no
-operator is provided with a version, the "==" operator is used by default.
+Version numbers must be in the format specified in `Version Specifiers`_.
 
 Because they refer to non-Python software releases, version numbers
 for this field are **not** required to conform to the format
 specified in `PEP 386`_:  they should correspond to the
 version scheme used by the external dependency.
 
-Any number of conditional operators can be specified, e.g.
-the string ">1.0, !=1.3.4, <2.0" is a legal version declaration.
-
 Notice that there's is no particular rule on the strings to be used.
 
 Examples::
@@ -426,8 +406,38 @@
 Version Specifiers
 ==================
 
-The specification for distribution version specifiers has been moved to
-`PEP 386`_.
+Version specifiers are a series of conditional operators and
+version numbers, separated by commas.  Conditional operators
+must be one of "<", ">", "<=", ">=", "==", "~=" and "!=".
+
+Any number of conditional operators can be specified, e.g.
+the string ``>1.0, !=1.3.4, <2.0`` is a legal version declaration.
+The comma (``,``) is equivalent to the **or** operator.
+
+Each version number must be in the format specified in `PEP 386`_.
+
+The range operator ("~=") is a special operator that can be used to
+define a range of versions by describing a MAJOR or a MAJOR.MINOR
+version. All versions that starts with the definition will
+be included in the range.
+
+Examples:
+
+- ``Requires-Python: ~=2.5`` means all versions of Python 2.5.
+- ``Requires-Python: ~=2`` means all versions of Python 2.
+- ``~=2.5.2`` is equivalent to ``==2.5.2``
+
+The range operator is limited to the MAJOR and MINOR parts of
+a version string, as specified in `PEP 386`_. Post and pre-releases
+are not included in range operators.
+
+The ``Requires-External`` field can use the operators described in this
+section but since the version scheme might not be compatible with `PEP 386`_,
+the range operator might not be appliable.
+
+For each field that uses a version, if no operator is provided, the
+range operator is used by default. For example, ``Requires-Python: 2.5``
+is equivalent to ``Requires-Python: ~=2.5``.
 
 
 Environment markers
@@ -445,17 +455,6 @@
    Requires-Dist: bar; python_version == '2.4' or python_version == '2.5'
    Requires-External: libxslt; 'linux' in sys.platform
 
-These markers are using a micro-language that can be interpreted using a
-function ``interpret_marker`` provided in the ``distutils.util`` module
-in the stdlib::
-
-    >>> from distutils.util import interpret_marker
-    >>> interpret_marker("sys.platform == 'win32'")
-    True
-
-Depending if the execution environment meets the requirements, the function
-will return True or False.
-
 The micro-language behind this is the simplest possible: it compares only
 strings, with the ``==`` and ``in`` operators (and their opposites), and
 with the ability to combine expressions. It makes it also easy to understand
@@ -545,8 +544,8 @@
 Fred Drake, Anthony Baxter and Matthias Klose have all contributed to
 the ideas presented in this PEP.
 
-Tres Seaver, Jim Fulton, Marc-André Lemburg, Tarek Ziadé and other people at
-the Distutils-SIG have contributed to the new updated version.
+Tres Seaver, Jim Fulton, Marc-André Lemburg, Martin von Löwis, Tarek Ziadé and
+other people at the Distutils-SIG have contributed to the new updated version.
 
 
 ..


More information about the Python-checkins mailing list