From e6131ff222b146dfe5174278e99b1ed4bdb74d77 Mon Sep 17 00:00:00 2001 From: ziad hany Date: Wed, 11 Feb 2026 16:30:23 +0200 Subject: [PATCH 1/2] Add support for Gentoo bump function Signed-off-by: ziad hany --- src/univers/gentoo.py | 24 ++++++++++++++++++++++++ src/univers/versions.py | 3 +++ tests/test_gentoo.py | 7 +++++++ 3 files changed, 34 insertions(+) diff --git a/src/univers/gentoo.py b/src/univers/gentoo.py index 543f8548..2b3fe661 100644 --- a/src/univers/gentoo.py +++ b/src/univers/gentoo.py @@ -181,3 +181,27 @@ def vercmp(ver1, ver2): # Our versions had different strings but ended up being equal. # The revision holds the final difference. return cmp(rev1, rev2) + + +def bump(ver): + """ + Return a new version object where the next to the last revision number + is one greater (e.g., 5.3.1 => 5.4) i.e., incrementing this GentooVersion + last numeric segment. + """ + + if not ver: + return None + + ver = remove_spaces(ver) + version, _ = parse_version_and_revision(ver) + + segments = version.split(".") + segments = [int(re.sub(r"\D", "", seg)) for seg in segments if seg] + + if len(segments) > 1: + segments.pop() + + segments[-1] += 1 + segments = [str(r) for r in segments] + return ".".join(segments) diff --git a/src/univers/versions.py b/src/univers/versions.py index 5d6101ac..52e9325e 100644 --- a/src/univers/versions.py +++ b/src/univers/versions.py @@ -429,6 +429,9 @@ def __gt__(self, other): return NotImplemented return gentoo.vercmp(self.value, other.value) == 1 + def bump(self): + return gentoo.bump(self.value) + class AlpineLinuxVersion(GentooVersion): @classmethod diff --git a/tests/test_gentoo.py b/tests/test_gentoo.py index d2eddd5e..308135bb 100644 --- a/tests/test_gentoo.py +++ b/tests/test_gentoo.py @@ -31,3 +31,10 @@ def comparison(self): def test_gentoo_vers_cmp(test_case): avc = GentooVersionComp.from_data(data=test_case) avc.assert_result() + + +def test_gentoo_bump(): + assert GentooVersion("2.23.3").bump() == "2.24" + assert GentooVersion("2.24.3").bump() == "2.25" + assert GentooVersion("2.25.4").bump() == "2.26" + assert GentooVersion("2.26.2").bump() == "2.27" From 4b30fabe2e9f33adf0bce6e31f23d064bbd094c0 Mon Sep 17 00:00:00 2001 From: ziad hany Date: Fri, 13 Feb 2026 01:59:06 +0200 Subject: [PATCH 2/2] Add more test and fix a typo in function docs Signed-off-by: ziad hany --- src/univers/gentoo.py | 2 +- tests/test_gentoo.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/univers/gentoo.py b/src/univers/gentoo.py index 2b3fe661..43a3eb17 100644 --- a/src/univers/gentoo.py +++ b/src/univers/gentoo.py @@ -185,7 +185,7 @@ def vercmp(ver1, ver2): def bump(ver): """ - Return a new version object where the next to the last revision number + Return a new version where the next to the last revision number is one greater (e.g., 5.3.1 => 5.4) i.e., incrementing this GentooVersion last numeric segment. """ diff --git a/tests/test_gentoo.py b/tests/test_gentoo.py index 308135bb..554ab0ba 100644 --- a/tests/test_gentoo.py +++ b/tests/test_gentoo.py @@ -37,4 +37,6 @@ def test_gentoo_bump(): assert GentooVersion("2.23.3").bump() == "2.24" assert GentooVersion("2.24.3").bump() == "2.25" assert GentooVersion("2.25.4").bump() == "2.26" - assert GentooVersion("2.26.2").bump() == "2.27" + assert GentooVersion("1.3.8b").bump() == "1.4" + assert GentooVersion("9.9_p2").bump() == "10" + assert GentooVersion("0.13.4-r2").bump() == "0.14"