Version Handling

A core requirement of dealing with packages is the ability to work with versions. PEP 440 defines the standard version scheme for Python packages which has been implemented by this module.

Usage

>>> from packaging.version import Version, parse
>>> v1 = parse("1.0a5")
>>> v2 = Version("1.0")
>>> v1
<Version('1.0a5')>
>>> v2
<Version('1.0')>
>>> v1 < v2
True
>>> v1.is_prerelease
True
>>> v2.is_prerelease
False
>>> Version("french toast")
Traceback (most recent call last):
    ...
InvalidVersion: Invalid version: 'french toast'
>>> Version("1.0").is_postrelease
False
>>> Version("1.0.post0").is_postrelease
True

Reference

packaging.version.parse(version)

This function takes a version string and will parse it as a Version if the version is a valid PEP 440 version, otherwise it will parse it as a LegacyVersion.

class packaging.version.Version(version)

This class abstracts handling of a project’s versions. It implements the scheme defined in PEP 440. A Version instance is comparison aware and can be compared and sorted using the standard Python interfaces.

Parameters:version (str) – The string representation of a version which will be parsed and normalized before use.
Raises:InvalidVersion – If the version does not conform to PEP 440 in any way then this exception will be raised.
public

A string representing the public version portion of this Version().

base_version

A string representing the base version of this Version instance. The base version is the public version of the project without any pre or post release markers.

local

A string representing the local version portion of this Version() if it has one, or None otherwise.

is_prerelease

A boolean value indicating whether this Version instance represents a prerelease or a final release.

is_postrelease

A boolean value indicating whether this Version instance represents a post-release.

class packaging.version.LegacyVersion(version)

This class abstracts handling of a project’s versions if they are not compatible with the scheme defined in PEP 440. It implements a similar interface to that of Version.

This class implements the previous de facto sorting algorithm used by setuptools, however it will always sort as less than a Version instance.

Parameters:version (str) – The string representation of a version which will be used as is.
public

A string representing the public version portion of this LegacyVersion. This will always be the entire version string.

base_version

A string representing the base version portion of this LegacyVersion instance. This will always be the entire version string.

local

This will always be None since without PEP 440 we do not have the concept of a local version. It exists primarily to allow a LegacyVersion to be used as a stand in for a Version.

is_prerelease

A boolean value indicating whether this LegacyVersion represents a prerelease or a final release. Since without PEP 440 there is no concept of pre or final releases this will always be False and exists for compatibility with Version.

is_postrelease

A boolean value indicating whether this LegacyVersion represents a post-release. Since without PEP 440 there is no concept of post-releases this will always be False and exists for compatibility with Version.

exception packaging.version.InvalidVersion

Raised when attempting to create a Version with a version string that does not conform to PEP 440.

packaging.version.VERSION_PATTERN

A string containing the regular expression used to match a valid version. The pattern is not anchored at either end, and is intended for embedding in larger expressions (for example, matching a version number as part of a file name). The regular expression should be compiled with the re.VERBOSE and re.IGNORECASE flags set.