sugar3.bundle.bundleversion module

Validation and normalization of bundle versions.

Instances of NormalizedVersion can be directly compared;

>>> from sugar3.bundle.bundleversion import NormalizedVersion
>>> a = NormalizedVersion('157.3')
>>> b = NormalizedVersion('201.2')
>>> a > b
False
>>> b > a
True

Invalid versions will raise InvalidVersionError.

Valid versions are 1, 1.2, 1.2.3, 1.2.3-peru, and 1.2.3~dfsg.

Invalid versions are:
  • 1.2peru (because the suffix must be preceded with a dash or tilde),

  • 1.2. (because a version can’t end with a period), or

  • 1.02.5 (because a version can’t have a leading zero).

Based on the implementation of PEP 386, but adapted to our numeration schema.

sugar3.bundle.bundleversion.VERSION_RE

regular expression for versions, deprecated, as it is insufficient by itself.

Type

RegexObject

exception sugar3.bundle.bundleversion.InvalidVersionError

Bases: Exception

A version cannot be normalized, because:
  • the object is not a string,

  • the string does not match the regular expression, or

  • the string has a leading zero in a version part.

class sugar3.bundle.bundleversion.NormalizedVersion(activity_version)

Bases: object

Normalize a version string.

Parameters

activity_version (str) – the version string

Raises

InvalidVersionError

parts

the numeric parts of the version after normalization.

Type

list