packages

Package expressions

Package expressions are strings representing a software package. They are defined by this EBNF grammar:

package_expression     ::=  name '-' version_expression dependency*
name                   ::=  [A-Za-z0-9][-A-Za-z0-9]*
dependency             ::=  ';' 'depends' requirement_expression
requirement_expression ::=  name build_options? constraints_expression?
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 Package.parse() class method parses package expressions into corresponding Package objects:

>>> from versions import Package
>>> p = Package.parse('foo-1.0')
>>> p.name
'foo'
>>> p.version
Version.parse('1.0.0')

Dependencies can also be specified in a package expression:

>>> package = Package.parse('foo-1.0; depends bar; depends baz >1, <2')
>>> package.dependencies
set([Requirement.parse('baz>1.0.0,<2.0.0'), Requirement.parse('bar')])
class versions.packages.Package(name, version, dependencies=None)[source]

A package.

Parameters:
  • name (str) – Package name.
  • version (Version) – Package version.
name = None

Package name.

version = None

Package version.

dependencies = None

set of Requirement objects

build_options[source]

The package build options.

Returns:set() of build options strings.
classmethod parse(package_expression)[source]

Parse a package_expression into a Package object.

Table Of Contents

Previous topic

requirements

Next topic

repositories