Release Provider

This provider allows access to the release revisions of a project. The default implementation works for projects following the versioning scheme specified in PEP 440. Alternatively, a hook can be used for custom release lookup logic.

Module for the ReleaseProvider.

class varats.provider.release.release_provider.ReleaseType(*values)[source]

Bases: Enum

A ReleaseType referes to one of the three parts of the semantic versioning specification.

It is assumed that a major release is also a minor release and that a minor release is also a patch release.

value: int
MAJOR = 1
MINOR = 2
PATCH = 3
merge(other)[source]

Merges two release type. It is assumed that minor releases include major releases and patch releases include minor releases.

Return type:

ReleaseType

>>> ReleaseType.MINOR.merge(ReleaseType.MAJOR)
<ReleaseType.MINOR: 2>
>>> ReleaseType.MAJOR.merge(ReleaseType.PATCH)
<ReleaseType.PATCH: 3>
class varats.provider.release.release_provider.ReleaseProviderHook[source]

Bases: object

Gives the ReleaseProvider the necessary information how to find the releases for a project.

This class should be inherited by projects.

classmethod get_release_revisions(release_type)[source]

Get a set of all release revisions for a project.

Return type:

List[Tuple[FullCommitHash, str]]

Returns:

a list of tuples of hashes and version strings of release commits

class varats.provider.release.release_provider.ReleaseProvider(project)[source]

Bases: Provider

Provides access to release revisions of a project.

classmethod create_provider_for_project(project)[source]

Creates a provider instance for the given project if possible.

Return type:

Optional[ReleaseProvider]

Returns:

a provider instance for the given project if possible, otherwise, None

classmethod create_default_provider(project)[source]

Creates a default provider instance that can be used with any project.

Return type:

ReleaseProvider

Returns:

a default provider instance

get_release_revisions(release_type)[source]

Get all release revisions of this provider’s project along with their version strings.

Parameters:

release_type (ReleaseType) – the type of releases to return

Return type:

List[Tuple[FullCommitHash, str]]

Returns:

a list of tuples of hashes and version strings of release commits

class varats.provider.release.release_provider.ReleaseDefaultProvider(project)[source]

Bases: ReleaseProvider

Default implementation of the ReleaseProvider for projects that do not need or support their own implementation.

This implementation looks for commits with tags that are PEP 440 versions.

get_release_revisions(release_type)[source]

Get all release revisions of this provider’s project along with their version strings.

Parameters:

release_type (ReleaseType) – the type of releases to return

Return type:

List[Tuple[FullCommitHash, str]]

Returns:

a list of tuples of hashes and version strings of release commits