Version

Note

The documentation in this section is aimed at people wishing to contribute to versionah, and can be skipped if you are simply using the tool from the command line.

versionah.models.VALID_PACKAGE = '[A-Za-z][A-Za-z0-9]+(?:[_\\.-][A-Za-z0-9]+)*'

Regular expression to match a valid package name

versionah.models.VALID_VERSION = '\\d+\\.\\d+(?:\\.\\d+){,2}'

Regular expression to match a valid package version

versionah.models.VALID_DATE = '(?:\\d{4}-\\d{2}-\\d{2}|\\d{2}-(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\\d{4})'

Regular expression to match a package date. ISO-8601, and %d-%b-%Y formatting for shtool compatibility

versionah.models.VERSION_COMPS = ('major', 'minor', 'micro', 'patch')

Supported version components

class versionah.models.Version(components=(0, 1, 0), name='unknown', date=datetime.today())[source]

Main version identifier representation.

Initialise a new Version object.

Parameters
  • components (str) – Version components

  • name (str) – Package name

  • date (datetime.date) – Date associated with version

as_date()[source]

Generate a ISO-8601 date string for release.

Returns

Version’s release date as ISO-8601 date stamp

Return type

str

as_dict()[source]

Generate a dictionary of version components.

Returns

Version as dictionary

Return type

dict

as_dotted()[source]

Generate a dotted version string.

Returns

Standard dotted version string

Return type

str

as_hex()[source]

Generate a hex version string.

Returns

Version as hex string

Return type

str

as_libtool()[source]

Generate a libtool version string.

Returns

Version as libtool string

Return type

str

as_tuple()[source]

Generate a tuple of version components.

Returns

Version components as tuple

Return type

int

as_web()[source]

Generate a web UA-style string for release.

Returns

Version’s string in web UA-style

Return type

str

bump(bump_type)[source]

Bump a version string.

Parameters

bump_type (str) – Component to bump

Raises

ValueError – Invalid bump_type argument

bump_major()[source]

Bump major version component.

bump_micro()[source]

Bump micro version component.

bump_minor()[source]

Bump minor version component.

bump_patch()[source]

Bump patch version component.

components

Generate component tuple to initial resolution.

Returns

tuple[int]

components_full

Generate full length component tuple for version.

Returns

tuple[int]

set(components)[source]

Set version components.

Parameters

components (tuple[int]) – Version components

versionah.models.split_version(version)[source]

Split version string to components.

Parameters

version (str) – Version string

Returns

Components of version string

Return type

tuple[int]

Raises

ValueError – Invalid version string

Examples

Bumping a version component

>>> v = Version((0, 1, 0), 'test', datetime.date(2011, 2, 19))
>>> v.bump('minor')
>>> v.components
(0, 2, 0)
>>> v.bump('major')
>>> v.components
(1, 0, 0)
>>> v.bump_major()
>>> v.components
(2, 0, 0)

Version string parsing

>>> split_version('4.3.0')
(4, 3, 0)
>>> split_version('4.3.0.1')
(4, 3, 0, 1)
>>> split_version('4.3.0.1.3')
Traceback (most recent call last):
    ...
ValueError: Invalid version string '4.3.0.1.3'