Skip to content

Commit fc69622

Browse files
committed
fix(changelog): Factorized TAG_FORMAT_REGEXES
1 parent cd562aa commit fc69622

File tree

4 files changed

+23
-42
lines changed

4 files changed

+23
-42
lines changed

Diff for: commitizen/changelog.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
from commitizen import out
4545
from commitizen.bump import normalize_tag
4646
from commitizen.cz.base import ChangelogReleaseHook
47+
from commitizen.defaults import get_tag_regexes
4748
from commitizen.exceptions import InvalidConfigurationError, NoCommitsFoundError
4849
from commitizen.git import GitCommit, GitTag
4950
from commitizen.version_schemes import (
@@ -97,20 +98,7 @@ def get_version_tags(
9798
scheme: type[BaseVersion], tags: list[GitTag], tag_format: str
9899
) -> list[GitTag]:
99100
valid_tags: list[GitTag] = []
100-
TAG_FORMAT_REGEXS = {
101-
"$version": scheme.parser.pattern,
102-
"$major": r"(?P<major>\d+)",
103-
"$minor": r"(?P<minor>\d+)",
104-
"$patch": r"(?P<patch>\d+)",
105-
"$prerelease": r"(?P<prerelease>\w+\d+)?",
106-
"$devrelease": r"(?P<devrelease>\.dev\d+)?",
107-
"${version}": scheme.parser.pattern,
108-
"${major}": r"(?P<major>\d+)",
109-
"${minor}": r"(?P<minor>\d+)",
110-
"${patch}": r"(?P<patch>\d+)",
111-
"${prerelease}": r"(?P<prerelease>\w+\d+)?",
112-
"${devrelease}": r"(?P<devrelease>\.dev\d+)?",
113-
}
101+
TAG_FORMAT_REGEXS = get_tag_regexes(scheme.parser.pattern)
114102
tag_format_regex = tag_format
115103
for pattern, regex in TAG_FORMAT_REGEXS.items():
116104
tag_format_regex = tag_format_regex.replace(pattern, regex)

Diff for: commitizen/changelog_formats/base.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from commitizen.changelog import Metadata
1010
from commitizen.config.base_config import BaseConfig
1111
from commitizen.version_schemes import get_version_scheme
12+
from commitizen.defaults import get_tag_regexes
1213

1314
from . import ChangelogFormat
1415

@@ -32,20 +33,7 @@ def __init__(self, config: BaseConfig):
3233
def version_parser(self) -> Pattern:
3334
tag_regex: str = self.tag_format
3435
version_regex = get_version_scheme(self.config).parser.pattern
35-
TAG_FORMAT_REGEXS = {
36-
"$version": version_regex,
37-
"$major": r"(?P<major>\d+)",
38-
"$minor": r"(?P<minor>\d+)",
39-
"$patch": r"(?P<patch>\d+)",
40-
"$prerelease": r"(?P<prerelease>\w+\d+)?",
41-
"$devrelease": r"(?P<devrelease>\.dev\d+)?",
42-
"${version}": version_regex,
43-
"${major}": r"(?P<major>\d+)",
44-
"${minor}": r"(?P<minor>\d+)",
45-
"${patch}": r"(?P<patch>\d+)",
46-
"${prerelease}": r"(?P<prerelease>\w+\d+)?",
47-
"${devrelease}": r"(?P<devrelease>\.dev\d+)?",
48-
}
36+
TAG_FORMAT_REGEXS = get_tag_regexes(version_regex)
4937
for pattern, regex in TAG_FORMAT_REGEXS.items():
5038
tag_regex = tag_regex.replace(pattern, regex)
5139
return re.compile(tag_regex)

Diff for: commitizen/defaults.py

+17
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,20 @@ class Settings(TypedDict, total=False):
132132
)
133133
change_type_order = ["BREAKING CHANGE", "Feat", "Fix", "Refactor", "Perf"]
134134
bump_message = "bump: version $current_version → $new_version"
135+
136+
137+
def get_tag_regexes(version_regex: str) -> dict[str | Any, str | Any]:
138+
return {
139+
"$version": version_regex,
140+
"$major": r"(?P<major>\d+)",
141+
"$minor": r"(?P<minor>\d+)",
142+
"$patch": r"(?P<patch>\d+)",
143+
"$prerelease": r"(?P<prerelease>\w+\d+)?",
144+
"$devrelease": r"(?P<devrelease>\.dev\d+)?",
145+
"${version}": version_regex,
146+
"${major}": r"(?P<major>\d+)",
147+
"${minor}": r"(?P<minor>\d+)",
148+
"${patch}": r"(?P<patch>\d+)",
149+
"${prerelease}": r"(?P<prerelease>\w+\d+)?",
150+
"${devrelease}": r"(?P<devrelease>\.dev\d+)?",
151+
}

Diff for: commitizen/providers/scm_provider.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import re
44
from typing import Callable
55

6+
from commitizen.defaults import get_tag_regexes
67
from commitizen.git import get_tags
78
from commitizen.providers.base_provider import VersionProvider
89
from commitizen.version_schemes import (
@@ -22,20 +23,7 @@ class ScmProvider(VersionProvider):
2223
It is meant for `setuptools-scm` or any package manager `*-scm` provider.
2324
"""
2425

25-
TAG_FORMAT_REGEXS = {
26-
"$version": r"(?P<version>.+)",
27-
"$major": r"(?P<major>\d+)",
28-
"$minor": r"(?P<minor>\d+)",
29-
"$patch": r"(?P<patch>\d+)",
30-
"$prerelease": r"(?P<prerelease>\w+\d+)?",
31-
"$devrelease": r"(?P<devrelease>\.dev\d+)?",
32-
"${version}": r"(?P<version>.+)",
33-
"${major}": r"(?P<major>\d+)",
34-
"${minor}": r"(?P<minor>\d+)",
35-
"${patch}": r"(?P<patch>\d+)",
36-
"${prerelease}": r"(?P<prerelease>\w+\d+)?",
37-
"${devrelease}": r"(?P<devrelease>\.dev\d+)?",
38-
}
26+
TAG_FORMAT_REGEXS = get_tag_regexes(r"(?P<version>.+)")
3927

4028
def _tag_format_matcher(self) -> Callable[[str], VersionProtocol | None]:
4129
version_scheme = get_version_scheme(self.config)

0 commit comments

Comments
 (0)