Skip to content

Latest commit

 

History

History
90 lines (67 loc) · 3.21 KB

markers.rst

File metadata and controls

90 lines (67 loc) · 3.21 KB

Markers

packaging.markers

One extra requirement of dealing with dependencies is the ability to specify if it is required depending on the operating system or Python version in use. PEP 508 defines the scheme which has been implemented by this module.

Usage

>>> from packaging.markers import Marker, UndefinedEnvironmentName >>> marker = Marker("python_version>'2'") >>> marker <Marker('python_version > "2"')> >>> # We can evaluate the marker to see if it is satisfied >>> marker.evaluate() True >>> # We can also override the environment >>> env = {'python_version': '1.5.4'} >>> marker.evaluate(environment=env) False >>> # Multiple markers can be ANDed >>> and_marker = Marker("os_name=='a' and os_name=='b'") >>> and_marker <Marker('os_name == "a" and os_name == "b"')> >>> # Multiple markers can be ORed >>> or_marker = Marker("os_name=='a' or os_name=='b'") >>> or_marker <Marker('os_name == "a" or os_name == "b"')> >>> # Markers can be also used with extras, to pull in dependencies if >>> # a certain extra is being installed >>> extra = Marker('extra == "bar"') >>> # You can do simple comparisons between marker objects: >>> Marker("python_version > '3.6'") == Marker("python_version > '3.6'") True >>> # You can also perform simple comparisons between sets of markers: >>> markers1 = {Marker("python_version > '3.6'"), Marker('os_name == "unix"')} >>> markers2 = {Marker('os_name == "unix"'), Marker("python_version > '3.6'")} >>> markers1 == markers2 True

Reference

This class abstracts handling markers for dependencies of a project. It can be passed a single marker or multiple markers that are ANDed or ORed together. Each marker will be parsed according to PEP 508.

param str markers

The string representation of a marker or markers.

raises InvalidMarker

If the given markers are not parseable, then this exception will be raised.

evaluate(environment=None)

Evaluate the marker given the context of the current Python process.

param dict environment

A dictionary containing keys and values to override the detected environment.

raises

UndefinedComparison: If the marker uses a PEP 440 comparison on strings which are not valid PEP 440 versions.

raises

UndefinedEnvironmentName: If the marker accesses a value that isn't present inside of the environment dictionary.

InvalidMarker

Raised when attempting to create a Marker with a string that does not conform to PEP 508.

UndefinedComparison

Raised when attempting to evaluate a Marker with a PEP 440 comparison operator against values that are not valid PEP 440 versions.

UndefinedEnvironmentName

Raised when attempting to evaluate a Marker with a value that is missing from the evaluation environment.