@@ -135,7 +135,7 @@ def compute_rc_version(
135135) -> tuple [str , int ]:
136136 """Determine release candidate version string."""
137137 tags_output = run_git (["tag" ], capture_output = True )
138- pattern = re .compile (rf"^v{ re .escape (base_version )} -rc\. (\d+)$" )
138+ pattern = re .compile (rf"^v{ re .escape (base_version )} \.rc (\d+)$" )
139139 existing_rcs = [int (match .group (1 )) for tag in tags_output .splitlines () if (match := pattern .match (tag ))]
140140
141141 if rc_number is None :
@@ -144,10 +144,10 @@ def compute_rc_version(
144144 raise ReleaseError ("RC number must be positive." )
145145 elif rc_number in existing_rcs :
146146 raise ReleaseError (
147- f"Release candidate v{ base_version } -rc. { rc_number } already exists."
147+ f"Release candidate v{ base_version } .rc { rc_number } already exists."
148148 )
149149
150- rc_version = f"{ base_version } -rc. { rc_number } "
150+ rc_version = f"{ base_version } .rc { rc_number } "
151151 return rc_version , rc_number
152152
153153
@@ -749,14 +749,17 @@ def increment_base_version(version: str, increment: str) -> str:
749749 return f"{ major } .{ minor } .{ patch } "
750750
751751
752+ RC_VERSION_REGEX = re .compile (r"^(\d+\.\d+\.\d+)\.rc(\d+)$" )
753+
754+
752755def is_rc_version (version : str ) -> bool :
753756 """Return True if version string denotes a release candidate."""
754- return "-rc." in version
757+ return bool ( RC_VERSION_REGEX . fullmatch ( version ))
755758
756759
757760def parse_rc_components (version : str ) -> tuple [str , int ]:
758761 """Extract base version and RC number from an RC version string."""
759- match = re .fullmatch (r"(\d+\.\d+\.\d+)-rc\.(\d+)" , version )
762+ match = RC_VERSION_REGEX .fullmatch (version )
760763 if not match :
761764 raise ReleaseError (f"Invalid RC version: { version } " )
762765 base_version = match .group (1 )
0 commit comments