Skip to content

Commit a17b81d

Browse files
Fix flake8
1 parent c5a4008 commit a17b81d

File tree

2 files changed

+51
-40
lines changed

2 files changed

+51
-40
lines changed

bert_e/tests/unit/test_sorted.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def test_sorted_versions():
5555

5656
def test_compare_branches_major_minor_vs_major_only():
5757
branch1 = ((4, 3),)
58-
branch2 = ((4, None),)
58+
branch2 = ((4, ),)
5959
assert compare_branches(branch1, branch2) == -1
6060

6161

@@ -66,7 +66,7 @@ def test_compare_branches_major_only_vs_major_only_returns_0():
6666

6767

6868
def test_compare_branches_major_only_vs_major_minor():
69-
branch1 = ((4, None),)
69+
branch1 = ((4, ),)
7070
branch2 = ((4, 3),)
7171
assert compare_branches(branch1, branch2) == 1
7272

bert_e/workflow/gitwaterflow/branches.py

Lines changed: 49 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,45 @@
2929
LOG = logging.getLogger(__name__)
3030

3131

32+
def _compare_version_component(version1, version2, component_index):
33+
"""
34+
Helper method to compare version components at a specific level.
35+
36+
Args:
37+
version1, version2: Version tuples to compare
38+
component_index: Index of the component to compare
39+
(0 for major, 1 for minor, 2 for micro)
40+
41+
Returns:
42+
int: -1 if version1 < version2, 1 if version1 > version2,
43+
0 if equal or both missing
44+
None: if comparison should continue to next level
45+
"""
46+
len1 = len(version1)
47+
len2 = len(version2)
48+
49+
# Both have the component - compare them
50+
if len1 > component_index and len2 > component_index:
51+
comp1 = version1[component_index]
52+
comp2 = version2[component_index]
53+
if comp1 != comp2:
54+
return comp1 - comp2
55+
return None # Equal, continue to next level
56+
57+
# Only one has the component
58+
elif len1 > component_index and len2 <= component_index:
59+
# version1 has component, version2 doesn't
60+
# -> version1 comes first in the cascade
61+
return -1
62+
elif len1 <= component_index and len2 > component_index:
63+
# version2 has component, version1 doesn't
64+
# -> version2 comes first in the cascade
65+
return 1
66+
67+
# Neither has the component at this level
68+
return None
69+
70+
3271
def compare_branches(branch1, branch2):
3372
"""
3473
Compare GitWaterflow branches for sorting.
@@ -39,13 +78,11 @@ def compare_branches(branch1, branch2):
3978
# Safely extract version components
4079
version1 = branch1[0]
4180
version2 = branch2[0]
42-
# Extract major versions (always present)
43-
major1 = version1[0] if len(version1) > 0 else 0
44-
major2 = version2[0] if len(version2) > 0 else 0
4581

46-
# Compare major versions first
47-
if major1 != major2:
48-
return major1 - major2
82+
# Compare major versions first using helper
83+
major_result = _compare_version_component(version1, version2, 0)
84+
if major_result is not None:
85+
return major_result
4986

5087
# Same major version - check if one is major-only vs major.minor
5188
# Major-only branches have None as minor version, e.g., (4, None)
@@ -62,38 +99,12 @@ def compare_branches(branch1, branch2):
6299
# major.minor comes before
63100
return -1
64101

65-
# Both are major.minor or longer - compare normally
66-
# Handle cases where one version has missing components
67-
len1 = len(version1)
68-
len2 = len(version2)
69-
70-
# Compare minor versions if both exist
71-
if len1 > 1 and len2 > 1:
72-
minor1 = version1[1]
73-
minor2 = version2[1]
74-
if minor1 != minor2:
75-
return minor1 - minor2
76-
elif len1 > 1 and len2 == 1:
77-
# version1 has minor, version2 doesn't -> version1 comes first
78-
return -1
79-
elif len1 == 1 and len2 > 1:
80-
# version2 has minor, version1 doesn't -> version2 comes first
81-
return 1
82-
# Both have same length (1) -> major versions already compared above
83-
84-
# Same major.minor - compare micro versions if both exist
85-
if len1 > 2 and len2 > 2:
86-
micro1 = version1[2]
87-
micro2 = version2[2]
88-
if micro1 != micro2:
89-
return micro1 - micro2
90-
elif len1 > 2 and len2 <= 2:
91-
# version1 has micro, version2 doesn't -> version1 comes first
92-
return -1
93-
elif len1 <= 2 and len2 > 2:
94-
# version2 has micro, version1 doesn't -> version2 comes first
95-
return 1
96-
102+
# Compare remaining version components (minor, micro) using helper
103+
for level in range(1, 3): # 1=minor, 2=micro
104+
result = _compare_version_component(version1, version2, level)
105+
if result is not None:
106+
return result
107+
97108
return 0
98109

99110

0 commit comments

Comments
 (0)