diff --git a/docs/usage/increase-parts-of-a-version_prereleases.rst b/docs/usage/increase-parts-of-a-version_prereleases.rst index c2088c5..8b1b98b 100644 --- a/docs/usage/increase-parts-of-a-version_prereleases.rst +++ b/docs/usage/increase-parts-of-a-version_prereleases.rst @@ -15,7 +15,7 @@ would perhaps a better fit. >>> v = Version.parse("3.4.5-pre.2+build.4") >>> str(v.next_version(part="prerelease")) - '3.4.5-pre.3' + '3.4.5-rc.1' >>> str(Version.parse("3.4.5-pre.2+build.4").next_version(part="patch")) '3.4.5' >>> str(Version.parse("3.4.5+build.4").next_version(part="patch")) diff --git a/src/semver/version.py b/src/semver/version.py index 5592e92..8c6eca8 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -482,6 +482,10 @@ def next_version(self, part: str, prerelease_token: str = "rc") -> "Version": if part in cls.NAMES[:3]: return getattr(version, "bump_" + part)() else: + if version.prerelease is not None and prerelease_token: + current_token = version.prerelease.split(".")[0] + if current_token != prerelease_token: + return version.replace(prerelease=f"{prerelease_token}.1", build=None) return version.bump_prerelease(prerelease_token, bump_when_empty=True) @_comparator