Requirement expressions are strings representing a required software package. They are defined by this EBNF grammar:
requirement_expression ::= name build_options? constraints_expression?
name ::= [A-Za-z0-9][-A-Za-z0-9]*
build_options ::= '[' name (',' name)* ']'
constraints_expression ::= constraint_expression (',' constraint_expression)*
constraint_expression ::= operator version_expression
operator ::= '==' | '!=' | '>' | '<' | '<=' | '>='
version_expression ::= main | main '-' prerelease | main '+' build_metadata | main '-' prerelease '+' build_metadata
main ::= major ('.' minor ('.' patch)?)?
major ::= number
minor ::= number
patch ::= number
prerelease ::= string | number
build_metadata ::= string
number ::= [0-9]+
string ::= [0-9a-zA-Z.-]+
The Requirement.parse() class method parses requirement expressions into Requirement objects:
>>> from versions import Requirement
>>> r = Requirement.parse('foo')
>>> r.name
'foo'
>>> r = Requirement.parse('foo >1.0, <2.0')
>>> r.version_constraints
Constraints.parse('>1.0.0,<2.0.0')
>>> r = Requirement.parse('vim [python, perl] >7')
>>> r.build_options
set(['python', 'perl'])
The Requirement.match() method returns True when passed a package which satisfies the requirement:
>>> from versions import Requirement, Package, Version
>>> Requirement('foo').match(Package('foo', Version.parse('1.0')))
True
If passed a str, it is automatically parsed using Package.parse():
>>> Requirement.parse('foo [baz, bar] >0.9').match('foo-1.0+bar.baz')
True
Matching can also be tested using the in operator:
>>> 'foo-0.2' in Requirement.parse('foo [bar] >0.9')
False
Package requirements are used to define a dependency from a Package to another.
| Parameters: |
|
|---|
Name of the required package.
Constraints on the required package version.
set of required build options
Match package with the requirement.
| Parameters: | package (package expression string or Package) – Package to test with the requirement. |
|---|---|
| Returns: | True if package satisfies the requirement. |
| Return type: | bool |
Parses a requirement_expression into a Requirement object.
| Parameters: | requirement_expression (requirement_expression) – A package requirement expression. |
|---|---|
| Return type: | Requirement |