44import sys
55import warnings
66from itertools import zip_longest
7- from typing import TYPE_CHECKING , Any , ClassVar , Protocol , Type , cast , runtime_checkable
7+ from typing import (
8+ TYPE_CHECKING ,
9+ Any ,
10+ ClassVar ,
11+ Literal ,
12+ Protocol ,
13+ Type ,
14+ cast ,
15+ runtime_checkable ,
16+ )
817
918import importlib_metadata as metadata
1019from packaging .version import InvalidVersion # noqa: F401: Rexpose the common exception
2837 from typing import Self
2938
3039
40+ Increment : TypeAlias = Literal ["MAJOR" , "MINOR" , "PATCH" ]
41+ Prerelease : TypeAlias = Literal ["alpha" , "beta" , "rc" ]
3142DEFAULT_VERSION_PARSER = r"v?(?P<version>([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?(\w+)?)"
3243
3344
@@ -113,8 +124,8 @@ def __ne__(self, other: object) -> bool:
113124
114125 def bump (
115126 self ,
116- increment : str ,
117- prerelease : str | None = None ,
127+ increment : Increment | None ,
128+ prerelease : Prerelease | None = None ,
118129 prerelease_offset : int = 0 ,
119130 devrelease : int | None = None ,
120131 is_local_version : bool = False ,
@@ -203,7 +214,7 @@ def generate_build_metadata(self, build_metadata: str | None) -> str:
203214
204215 return f"+{ build_metadata } "
205216
206- def increment_base (self , increment : str | None = None ) -> str :
217+ def increment_base (self , increment : Increment | None = None ) -> str :
207218 prev_release = list (self .release )
208219 increments = [MAJOR , MINOR , PATCH ]
209220 base = dict (zip_longest (increments , prev_release , fillvalue = 0 ))
@@ -222,8 +233,8 @@ def increment_base(self, increment: str | None = None) -> str:
222233
223234 def bump (
224235 self ,
225- increment : str ,
226- prerelease : str | None = None ,
236+ increment : Increment | None ,
237+ prerelease : Prerelease | None = None ,
227238 prerelease_offset : int = 0 ,
228239 devrelease : int | None = None ,
229240 is_local_version : bool = False ,
0 commit comments