Skip to content

Commit f17cd4f

Browse files
authored
chore: support versions with one alphanumeric part and a prefix in the commit finder (#709)
Signed-off-by: Ben Selwyn-Smith <benselwynsmith@googlemail.com>
1 parent f9be538 commit f17cd4f

File tree

2 files changed

+110
-3
lines changed

2 files changed

+110
-3
lines changed

src/macaron/repo_finder/commit_finder.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,14 @@ def _build_version_pattern(name: str, version: str) -> tuple[Pattern | None, lis
341341
# - 3.1.test.2 -> 'test' and '2' become optional.
342342
has_non_numeric_suffix = True
343343

344-
if count == len(split) - 1 and has_trailing_zero or has_non_numeric_suffix:
345-
# This part will be made optional in the regex, hence the grouping bracket.
344+
# This part will be made optional in the regex if it matches the correct requirements:
345+
# - There is more than one version part, e.g. 1.2 (2), 1.2.3 (3)
346+
# - AND either of:
347+
# - This is the last version part and it has a trailing zero, e.g. 10
348+
# - OR has_non_numeric_suffix is True (See its comments above for more details)
349+
optional = len(split) > 1 and ((count == len(split) - 1 and has_trailing_zero) or has_non_numeric_suffix)
350+
351+
if optional:
346352
this_version_pattern = this_version_pattern + "("
347353

348354
if count == 1:
@@ -353,7 +359,7 @@ def _build_version_pattern(name: str, version: str) -> tuple[Pattern | None, lis
353359
# Add the current part to the pattern.
354360
this_version_pattern = this_version_pattern + part
355361

356-
if count == len(split) - 1 and has_trailing_zero or has_non_numeric_suffix:
362+
if optional:
357363
# Complete the optional capture group.
358364
this_version_pattern = this_version_pattern + ")?"
359365

tests/e2e/repo_finder/resources/tags.json

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303625,5 +303625,106 @@
303625303625
"comment": ""
303626303626
}
303627303627
]
303628+
},
303629+
{
303630+
"tags": [
303631+
"2009n_release",
303632+
"2009p_release",
303633+
"2009r_release",
303634+
"2009u_release",
303635+
"2010b_release",
303636+
"2010e_release",
303637+
"2010g_release",
303638+
"2010h_release",
303639+
"2010k_release",
303640+
"2010l_release",
303641+
"2010o_release",
303642+
"2011b_release",
303643+
"2011c_release",
303644+
"2011d_release",
303645+
"2011e_release",
303646+
"2011g_release",
303647+
"2011j_release",
303648+
"release_2011k",
303649+
"release_2011n",
303650+
"release_2012b",
303651+
"release_2012c",
303652+
"release_2012d",
303653+
"release_2012f",
303654+
"release_2012g",
303655+
"release_2012h",
303656+
"release_2012j",
303657+
"release_2013.6",
303658+
"release_2013.7",
303659+
"release_2013.8",
303660+
"release_2013.9",
303661+
"release_2013b",
303662+
"release_2013d",
303663+
"release_2014.1",
303664+
"release_2014.1.1",
303665+
"release_2014.10",
303666+
"release_2014.2",
303667+
"release_2014.3",
303668+
"release_2014.4",
303669+
"release_2014.7",
303670+
"release_2014.9",
303671+
"release_2015.2",
303672+
"release_2015.6",
303673+
"release_2016.1",
303674+
"release_2016.10",
303675+
"release_2016.4",
303676+
"release_2016.6",
303677+
"release_2016.6.1",
303678+
"release_2016.7",
303679+
"release_2017.2",
303680+
"release_2017.3",
303681+
"release_2018.3",
303682+
"release_2018.4",
303683+
"release_2018.5",
303684+
"release_2018.6",
303685+
"release_2018.7",
303686+
"release_2018.9",
303687+
"release_2019.1",
303688+
"release_2019.2",
303689+
"release_2019.3",
303690+
"release_2020.1",
303691+
"release_2020.4",
303692+
"release_2020.5",
303693+
"release_2021.1",
303694+
"release_2021.3",
303695+
"release_2022.1",
303696+
"release_2022.2",
303697+
"release_2022.2.1",
303698+
"release_2022.4",
303699+
"release_2022.5",
303700+
"release_2022.6",
303701+
"release_2022.7",
303702+
"release_2022.7.1",
303703+
"release_2023.2",
303704+
"release_2023.3",
303705+
"release_2023.3.post1",
303706+
"release_2023.4",
303707+
"release_2024.1"
303708+
],
303709+
"artifacts": [
303710+
{
303711+
"purl": "pkg:pypi/pytz@2011n",
303712+
"repo": "https://github.com/stub42/pytz",
303713+
"match": "release_2011n",
303714+
"comment": ""
303715+
},
303716+
{
303717+
"purl": "pkg:pypi/pytz@2010o",
303718+
"repo": "https://github.com/stub42/pytz",
303719+
"match": "2010o_release",
303720+
"comment": ""
303721+
},
303722+
{
303723+
"purl": "pkg:pypi/pytz@2023.3.post1",
303724+
"repo": "https://github.com/stub42/pytz",
303725+
"match": "release_2023.3.post1",
303726+
"comment": ""
303727+
}
303728+
]
303628303729
}
303629303730
]

0 commit comments

Comments
 (0)