Exemplo n.º 1
0
def _next_prerelease_version(version: Version, version_bump: Text,
                             segment: Text) -> Version:
    """
    Return a new `Version` with the next prerelease (one of alpha, beta, rc).
    It can bump either the major, minor or micro part of the release, if this
    is the first prerelease (prerelease is absent from the current version).
    """
    version = copy(version)
    if not version.pre:
        if version_bump == VERSION_MAJOR:
            version = version.next_major()
        elif version_bump == VERSION_MINOR:
            version = version.next_minor()
        elif version_bump == VERSION_MICRO:
            version = version.next_micro()
        else:
            # would use typing.Literal but only available in Python 3.8
            raise TypeError(f"Unknown version bump: {version_bump}")

    version._version = VersionNamedTuple(
        epoch=version._version.epoch,
        release=version.release,
        pre=_increment_prerelease(version.pre, segment),
        post=None,
        dev=None,
        local=None,
    )
    _reset_sort_key(version)
    return version
Exemplo n.º 2
0
 def next_micro(self) -> "Version":
     """
     Return a new `Version` with the next micro version.
     """
     version = copy(self)
     micro = version.micro + 1
     if not version.is_release and version.micro > 0:
         micro = version.micro
     version._version = VersionNamedTuple(
         epoch=version._version.epoch,
         release=(version.major, version.minor, micro),
         pre=None,
         post=None,
         dev=None,
         local=None,
     )
     _reset_sort_key(version)
     return version
Exemplo n.º 3
0
 def next_major(self) -> "Version":
     """
     Return a new `Version` with the next major version.
     """
     version = copy(self)
     major = version.major + 1
     if not version.is_release and not (version.minor or version.micro):
         major = version.major
     version._version = VersionNamedTuple(
         epoch=version._version.epoch,
         release=(major, 0, 0),
         pre=None,
         post=None,
         dev=None,
         local=None,
     )
     _reset_sort_key(version)
     return version
Exemplo n.º 4
0
def _build_suffixed_version(
    version: Version,
    prerelease: Optional[Tuple[Text, int]],
    devrelease: Optional[Tuple[Text, int]],
) -> Version:
    """
    Return a new `Version` including the provided prerelease and optional devrelease.
    """
    version = copy(version)

    version._version = VersionNamedTuple(
        epoch=version._version.epoch,
        release=version.release,
        pre=prerelease,
        post=None,
        dev=devrelease,
        local=None,
    )
    _reset_sort_key(version)
    return version