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 |