Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b34adcc

Browse files
fix(BaseVersion): support more tag format
1 parent 88540f8 commit b34adcc

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

‎commitizen/version_schemes.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,46 @@ def bump(
153153
VersionScheme: TypeAlias = type[VersionProtocol]
154154

155155

156+
# See https://github.com/pypa/packaging/blob/14b83e15dbb9caa87c63646ba7808b2b5e460ce6/src/packaging/version.py#L117
157+
# TODO: add more test cases for this pattern
158+
_VERSION_PATTERN = r"""^\s*
159+
v?
160+
(?:
161+
(?:(?P<epoch>[0-9]+)!)? # epoch
162+
(?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
163+
(?P<pre> # pre-release
164+
[-_\.]?
165+
(?P<pre_l>(?![-_\.]?(post|rev|r|dev)[-_\.]?$)[a-zA-Z]+?)
166+
[-_\.]?
167+
(?P<pre_n>[0-9]+)?
168+
)?
169+
(?P<post> # post release
170+
(?:-(?P<post_n1>[0-9]+))
171+
|
172+
(?:
173+
[-_\.]?
174+
(?P<post_l>post|rev|r)
175+
[-_\.]?
176+
(?P<post_n2>[0-9]+)?
177+
)
178+
)?
179+
(?P<dev> # dev release
180+
[-_\.]?
181+
(?P<dev_l>dev)
182+
[-_\.]?
183+
(?P<dev_n>[0-9]+)?
184+
)?
185+
)
186+
(?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
187+
\s*$"""
188+
189+
156190
class BaseVersion(_BaseVersion):
157191
"""
158192
A base class implementing the `VersionProtocol` for PEP440-like versions.
159193
"""
160194

195+
_regex: re.Pattern = re.compile(_VERSION_PATTERN, re.VERBOSE | re.IGNORECASE)
161196
parser: ClassVar[re.Pattern] = _DEFAULT_VERSION_PARSER
162197
"""Regex capturing this version scheme into a `version` group"""
163198

‎tests/test_version_scheme_semver.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@
6464
(("1.0.0alpha1", None, "alpha", 0, None), "1.0.0-a2"),
6565
(("1", None, "rc", 0, None), "1.0.0-rc0"),
6666
(("1.0.0rc1+e20d7b57f3eb", "PATCH", None, 0, None), "1.0.0"),
67-
(("1.0.0-reallyweird", "PATCH", "reallyweird", 0, None), "1.0.0"),
67+
(("1.0.0-reallyweird", "PATCH", "reallyweird", 0, None), "1.0.0-reallyweird1"),
68+
(("v0.7.1-release", "PATCH", "release", 0, None), "0.7.1-release1"),
69+
(("v0.0.1-SNAPSHOT", "PATCH", "SNAPSHOT", 0, None), "0.0.1-snapshot1"),
6870
]
6971

7072
# test driven development

‎tests/test_version_scheme_semver2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
(("1.0.0-alpha.1", None, "alpha", 0, None), "1.0.0-alpha.2"),
6767
(("1", None, "rc", 0, None), "1.0.0-rc.0"),
6868
(("1.0.0-rc.1+e20d7b57f3eb", "PATCH", None, 0, None), "1.0.0"),
69-
(("1.0.0-reallyweird", "PATCH", "reallyweird", 0, None), "1.0.0"),
69+
(("1.0.0-reallyweird", "PATCH", "reallyweird", 0, None), "1.0.0-reallyweird.1"),
7070
]
7171

7272
# test driven development

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /