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
>>> b > a

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.


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

exception sugar3.bundle.bundleversion.InvalidVersionError

Bases: exceptions.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

list – the numeric parts of the version after normalization.