scd.version

Routines for version management.

These module has Version class which is a base class for entrypoints scd.version. All entrypoints of such class should be subclasses of Version.

Currently, it scd.version has following defined entrypoints:

Entrypoint Class
pep440 PEP440
semver SemVer
git_pep440 GitPEP440
git_semver GitSemVer
class scd.version.GitMixin(*args, **kwargs)

Mixin to add Git flavor for Version classes.

class scd.version.GitPEP440(config)

Git flavored PEP440 implementation.

This implementation does the same, but precalculates local and dev parts based on Git information.

Dev release is the number of commits since latest tag and local will have Git short commit SHA at the first place.

class scd.version.GitSemVer(config)

Git flavored SemVer implementation.

This implementation does the same, but precalculates build and prerelase parts based on Git information.

Prerelase is the number of commits since latest tag and build is short commit hash. Previous and next builds are always empty. Because nobody predicts next commit hash.

class scd.version.PEP440(config)

Implementation of Python versioning.

For details, please check PEP 440.

dev

Dev number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Development part of the version number
Return type:int
epoch

Epoch part of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 1483072998.

Returns:Epoch part of the version number
Return type:int
local

Local part of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 5afe90c.linux.

Returns:Local part of the version number
Return type:int
major

Major part of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 1.

Returns:Major part of the version number
Return type:int
maximum

Maximal representation of the version.

This always has all possible parts (probably except of prerelase, it is still optional, because we have to know context to calculate that) even if it makes no sense. I have no idea about usecase of that except of having this property for completenes.

Example: 0!1.2.3rc3.post0.dev0+1ubuntu1.

Horrible.

Returns:Maximal version number.
Return type:str
minor

Minor number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Minor part of the version number
Return type:int
next_dev

Next dev number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 3.

Returns:Next development part of the version number
Return type:int
next_major

Next major number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Next major part of the version number
Return type:int
next_minor

Next minor number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 3.

Returns:Next minor part of the version number
Return type:int
next_patch

Next patch number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 4.

Returns:Next patch part of the version number
Return type:int
next_post

Next post number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 14.

Returns:Next post part of the version number
Return type:int
next_prerelease

Next prerelease number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 4.

Returns:Next prerelease part of the version number
Return type:int
patch

Patch number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 3.

Returns:Patch part of the version number
Return type:int
post

Post number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 13.

Returns:Post part of the version number
Return type:int
prerelease

Prerelease number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 3.

Returns:Prerelease part of the version number
Return type:int
prerelease_type

Type of the prerelase.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns rc.

Returns:Type of the prerelease
Return type:str
prev_dev

Prev dev number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Previous development part of the version number
Return type:int
prev_major

Prev major number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 0.

Returns:Previous major part of the version number
Return type:int
prev_minor

Prev minor number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 1.

Returns:Previous minor part of the version number
Return type:int
prev_patch

Prev patch number for the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Previous patch part of the version number
Return type:int
prev_post

Prev post number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 12.

Returns:Previous post part of the version number
Return type:int
prev_prerelease

Prev prerelease number of the version.

For version 1483072998!1.2.3rc3.post13.dev2+5afe90c.linux it returns 2.

Returns:Previous prerelease part of the version number
Return type:int
class scd.version.SemVer(config)

Implementation of semantic version numbering.

For details, please check http://semver.org/.

build

Build version number.

Build version number of version 1.2.3-pre1+build4 is build4.

Returns:Build version number.
Return type:str
next_build

Next build version number.

Next build version number of version 1.2.3-pre1+build4 is build5.

Returns:Next build version number.
Return type:str
next_major

Next major version number.

Next major number of version 1.2.3 is 2.

Returns:Next major version number.
Return type:int
next_minor

Next minor version number.

Next minor number of version 1.2.3 is 3.

Returns:Next minor version number.
Return type:int
next_patch

Next patch version number.

Next patch number of version 1.2.3 is 4.

Returns:Next patch version number.
Return type:int
next_prerelease

Next prerelase version number.

Next prerelase version number of version 1.2.3-pre1+build4 is pre2.

Returns:Next prerelase version number.
Return type:str
classmethod next_text_version(text)

Method which returns next number from the string.

From string build10s it returns 11.

Parameters:text (str) – Line to search in.
Returns:Next number
Return type:int
classmethod parse_text_version(text)

Method which extracts latest number from the string.

Empty string implies 0. No number also implies 0.

Parameters:text (str) – Line to search in.
Returns:Latest number
Return type:int
prerelease

Prerelase version number.

Prerelase version number of version 1.2.3-pre1+build4 is pre1.

Returns:Prerelase version number.
Return type:str
prev_build

Prev build version number.

Previous build version number of version 1.2.3-pre1+build4 is build3.

Returns:Previous build version number.
Return type:str
prev_major

Prev major version number.

Previous major number of version 1.2.3 is 0.

Returns:Previous major version number.
Return type:int
prev_minor

Prev minor version number.

Previous minor number of version 1.2.3 is 1.

Returns:Previous minor version number.
Return type:int
prev_patch

Prev patch version number.

Previous patch number of version 1.2.3 is 4.

Returns:Previous patch version number.
Return type:int
prev_prerelease

Prev prerelase version number.

Previous prerelase version number of version 1.2.3-pre1+build4 is pre0.

Returns:Previous prerelase version number.
Return type:str
classmethod prev_text_version(version)

Method which returns previous number from the string.

From string build10s it returns 9.

Parameters:text (str) – Line to search in.
Returns:Next number
Return type:int
class scd.version.Version(config)

Base class for version scheme.

This class is the base of scd.version entrypoint and it’s main intention is correct version parsing and creating of template context.

Parameters:config (scd.config.Config) – Configuration wrapper
base

Base number from config. Literally, as defined there.

Returns:Version number
Return type:str
context

Context for jinja2.Template.

Returns:A mapping of context variables.
Return type:dict[str, str or int]
full

Full reference version number, with a lot of details.

Returns:Version number
Return type:str
scd.version.git_distance(git_dir, matcher='v*')

Return a number of commits since latest matched tag.

Parameters:
  • git_dir (str) – Path to the .git directory of repository.
  • matcher (str) – Glob of the tag names to operate with.
Returns:

The number of commits or None if nothing is found.

Return type:

int or None

scd.version.git_tag(git_dir)

Return a current Git commit sha for repository.

Parameters:git_dir (str) – Path to the .git directory of repository.
Returns:Commit SHA in short form or None if cannot find any.
Return type:str or None