Requirements

Parse a given requirements line for specifying dependencies of a Python project, using PEP 508 which defines the scheme that has been implemented by this module.

Usage

>>> from packaging.requirements import Requirement
>>> simple_req = Requirement("name")
>>> simple_req
<Requirement('name')>
>>> simple_req.name
'name'
>>> simple_req.url is None
True
>>> simple_req.extras
set()
>>> simple_req.specifier
<SpecifierSet('')>
>>> simple_req.marker is None
True
>>> # Requirements can be specified with extras, specifiers and markers
>>> req = Requirement('name[foo]>=2,<3; python_version>"2.0"')
>>> req.name
'name'
>>> req.extras
{'foo'}
>>> req.specifier
<SpecifierSet('<3,>=2')>
>>> req.marker
<Marker('python_version > "2.0"')>
>>> # Requirements can also be specified with a URL, but may not specify
>>> # a version.
>>> url_req = Requirement('name @ https://github.com/pypa ;os_name=="a"')
>>> url_req.name
'name'
>>> url_req.url
'https://github.com/pypa'
>>> url_req.extras
set()
>>> url_req.marker
<Marker('os_name == "a"')>

Reference

class packaging.requirements.Requirement(requirement)

This class abstracts handling the details of a requirement for a project. Each requirement will be parsed according to PEP 508.

Parameters:requirement (str) – The string representation of a requirement.
Raises:InvalidRequirement – If the given requirement is not parseable, then this exception will be raised.
name

The name of the requirement.

url

The URL, if any where to download the requirement from. Can be None.

extras

A list of extras that the requirement specifies.

specifier

A SpecifierSet of the version specified by the requirement.

marker

A Marker of the marker for the requirement. Can be None.

exception packaging.requirements.InvalidRequirement

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