Skip to content
Prev Previous commit
Next Next commit
refactor(bump_rule): get rid of a simple function
  • Loading branch information
bearomorphism committed Sep 13, 2025
commit 552a318bca967e4883911ffa295c8deb0b78fc2e
34 changes: 17 additions & 17 deletions commitizen/bump_rule.py
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Core feature change

Original file line number Diff line number Diff line change
Expand Up @@ -70,18 +70,15 @@ def get_highest_by_messages(
>>> VersionIncrement.get_highest_by_messages(commit_messages, lambda x: rule.extract_increment(x, False))
'MINOR'
"""
return VersionIncrement.get_highest(
extract_increment(line)
for message in commit_messages
for line in message.split("\n")
return max(
(
extract_increment(line)
for message in commit_messages
for line in message.split("\n")
),
default=VersionIncrement.NONE,
)

@staticmethod
def get_highest(
increments: Iterable[VersionIncrement],
) -> VersionIncrement:
return max(increments, default=VersionIncrement.NONE)


class BumpRule(Protocol):
"""A protocol defining the interface for version bump rules.
Expand Down Expand Up @@ -234,13 +231,16 @@ def extract_increment(
)

try:
if ret := VersionIncrement.get_highest(
(
increment
for name, increment in effective_bump_map.items()
if m.group(name)
),
):
if (
ret := max(
(
increment
for name, increment in effective_bump_map.items()
if m.group(name)
),
default=VersionIncrement.NONE,
)
) is not VersionIncrement.NONE:
return ret
except IndexError:
pass
Expand Down
55 changes: 0 additions & 55 deletions tests/test_bump_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -635,61 +635,6 @@ def test_with_find_increment_by_callable(self, custom_bump_rule):
)


class TestGetHighest:
def test_get_highest_with_major(self):
increments = [
VersionIncrement.PATCH,
VersionIncrement.MINOR,
VersionIncrement.MAJOR,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.MAJOR

def test_get_highest_with_minor(self):
increments = [
VersionIncrement.PATCH,
VersionIncrement.MINOR,
VersionIncrement.NONE,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.MINOR

def test_get_highest_with_patch(self):
increments = [
VersionIncrement.PATCH,
VersionIncrement.NONE,
VersionIncrement.NONE,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.PATCH

def test_get_highest_with_none(self):
increments = [
VersionIncrement.NONE,
VersionIncrement.NONE,
VersionIncrement.NONE,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.NONE

def test_get_highest_empty(self):
increments = []
assert VersionIncrement.get_highest(increments) == VersionIncrement.NONE

def test_get_highest_mixed_order(self):
increments = [
VersionIncrement.MAJOR,
VersionIncrement.PATCH,
VersionIncrement.MINOR,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.MAJOR

def test_get_highest_with_none_values(self):
increments = [
VersionIncrement.NONE,
VersionIncrement.MINOR,
VersionIncrement.NONE,
VersionIncrement.PATCH,
]
assert VersionIncrement.get_highest(increments) == VersionIncrement.MINOR


class TestSafeCast:
def test_safe_cast_valid_strings(self):
assert VersionIncrement.safe_cast("MAJOR") == VersionIncrement.MAJOR
Expand Down