Source code for spines.versioning.base

# -*- coding: utf-8 -*-
"""
Base classes for the spines versioning package.
"""
#
#   Imports
#
import parver

from .core import slugify


#
#   Classes
#

[docs]class Version(object): """ Version objects for versioning of spines components """ def __init__(self, name, display_name=None, desc=None): self._name = name self._display_name = display_name self._desc = desc self._version = parver.Version((0, 0, 1), dev=None) self._tag = None # dunder methods def __repr__(self): return "<Version name=%s version=%s>" % (self._name, self._version) def __str__(self): return '%s %s' % (self._name, self._version) # Properties @property def name(self) -> str: """str: Name of the object versioned.""" return self._name @property def display_name(self) -> str: """str: Display name for the object versioned.""" return self._display_name @display_name.setter def display_name(self, value) -> None: self._display_name = value return @property def description(self) -> str: """str: Description for the object versioned.""" return self._desc @description.setter def description(self, value) -> None: self._desc = value return @property def tag(self) -> str: """str: Tag (if any) for this version.""" return self._tag @tag.setter def tag(self, value) -> None: self._tag = value return @property def version(self) -> str: """str: Version string for this version object.""" return str(self._version) @property def slug(self) -> str: """str: Slugified version of this version object""" slug_name = slugify(self._name) slug_vers = slugify(str(self._version)) return '%s/%s' % (slug_name, slug_vers) # Version actions
[docs] def to_release(self) -> None: """Switches the version to release""" self._version = self._version.clear(dev=False, pre=False, post=False) return
[docs] def to_pre(self) -> None: """Switches the version to pre-release""" self._version = self._version.clear(pre=True) return
[docs] def to_post(self) -> None: """Switches the version to post-release""" self._version = self._version.clear(post=True) return
[docs] def to_dev(self) -> None: """Switches the version to development""" self._version = self._version.clear(dev=True) return
[docs] def bump_dev(self) -> None: """Bumps the dev number for use during iterative work.""" self._version = self._version.bump_dev() return
[docs] def bump(self) -> None: """Bumps this version's PATCH number by one.""" self._version = self._version.bump_release(index=2) return
[docs] def bump_minor(self) -> None: """Bumps this version's MINOR number by one.""" self._version = self._version.bump_release(index=1) return
[docs] def bump_major(self) -> None: """Bumps this version's MAJOR number by one.""" self._version = self._version.bump_release(index=0) return
[docs]class Signature(object): """ Signature objects for component change tracking and management """ pass