added the environment markers
This commit is contained in:
parent
48c1e05e24
commit
682c0cfced
61
pep-0345.txt
61
pep-0345.txt
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue