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 ,
@@ -191,7 +202,7 @@ def generate_devrelease(self, devrelease: int | None) -> str:
191202
192203 return f"dev{ devrelease } "
193204
194- def increment_base (self , increment : str | None = None ) -> str :
205+ def increment_base (self , increment : Increment | None = None ) -> str :
195206 prev_release = list (self .release )
196207 increments = [MAJOR , MINOR , PATCH ]
197208 base = dict (zip_longest (increments , prev_release , fillvalue = 0 ))
@@ -210,8 +221,8 @@ def increment_base(self, increment: str | None = None) -> str:
210221
211222 def bump (
212223 self ,
213- increment : str ,
214- prerelease : str | None = None ,
224+ increment : Increment | None ,
225+ prerelease : Prerelease | None = None ,
215226 prerelease_offset : int = 0 ,
216227 devrelease : int | None = None ,
217228 is_local_version : bool = False ,
0 commit comments