added the environment markers

This commit is contained in:
Tarek Ziadé 2009-11-14 23:55:17 +00:00
parent 48c1e05e24
commit 682c0cfced
1 changed files with 61 additions and 0 deletions

View File

@ -444,11 +444,69 @@ packaging system.
XXX command-line interface needs work, obviously
Environment markers
===================
An **environment marker** is a marker that can be added at the end of a
field after a semi-colon (';'), to add a condition about the execution
environment.
Here are some example of fields using such markers::
Requires-Dist: pywin32, bar > 1.0; sys.platform == 'win32'
Obsoletes-Dist: pywin31; sys.platform == 'win32'
Requires-Dist: foo; os.machine == 'i386'
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("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
to non-pythoneers.
The pseudo-grammar is ::
EXPR [in|==|!=|not in] EXPR [or|and] ...
where ``EXPR`` belongs to any of those:
- python_version = '%s.%s' % (sys.version_info[0], sys.version_info[1])
- os.name = os.name
- sys.platform = sys.platform
- platform.version = platform.version()
- platform.machine = platform.machine()
- a free string, like ``2.4``, or ``win32``
Notice that ``in`` is restricted to strings, meaning that it is not possible
to use other sequences like tuples or lists on the right side.
The fields that benefit from this marker are:
- Requires-Python
- Requires-External
- Requires-Dist
- Provides-Dist
- Obsoletes-Dist
- Classifier
Summary of Differences From PEP 314
===================================
* Metadata-Version is now 1.2.
* Added the environment markers.
* Added fields:
- Maintainer
@ -494,6 +552,9 @@ Acknowledgements
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.
..
Local Variables: