@@ -75,6 +75,16 @@ def prerelease(self) -> str | None:
7575 """The prerelease potion of the version is this is a prerelease."""
7676 raise NotImplementedError ("must be implemented" )
7777
78+ @property
79+ def is_postrelease (self ) -> bool :
80+ """Whether this version is a post-release."""
81+ raise NotImplementedError ("must be implemented" )
82+
83+ @property
84+ def postrelease (self ) -> str | None :
85+ """The postrelease potion of the version is this is a postrelease."""
86+ raise NotImplementedError ("must be implemented" )
87+
7888 @property
7989 def public (self ) -> str :
8090 """The public portion of the version."""
@@ -124,6 +134,7 @@ def bump(
124134 prerelease : Prerelease | None = None ,
125135 prerelease_offset : int = 0 ,
126136 devrelease : int | None = None ,
137+ postrelease : bool = False ,
127138 is_local_version : bool = False ,
128139 build_metadata : str | None = None ,
129140 exact_increment : bool = False ,
@@ -205,6 +216,19 @@ def generate_devrelease(self, devrelease: int | None) -> str:
205216 return ""
206217
207218 return f"dev{ devrelease } "
219+
220+ def generate_postrelease (self , postrelease : bool = False ) -> str :
221+ """Generate postrelease"""
222+ if not postrelease :
223+ return ""
224+
225+ # version.post is needed for mypy check
226+ if self .is_postrelease and self .post is not None :
227+ new_postrelease_number = self .post + 1
228+ else :
229+ new_postrelease_number = 0
230+
231+ return f"post{ new_postrelease_number } "
208232
209233 def generate_build_metadata (self , build_metadata : str | None ) -> str :
210234 """Generate build-metadata
@@ -240,6 +264,7 @@ def bump(
240264 prerelease : Prerelease | None = None ,
241265 prerelease_offset : int = 0 ,
242266 devrelease : int | None = None ,
267+ postrelease : bool = False ,
243268 is_local_version : bool = False ,
244269 build_metadata : str | None = None ,
245270 exact_increment : bool = False ,
@@ -272,9 +297,10 @@ def bump(
272297 self if base == current_base else cast ("BaseVersion" , self .scheme (base ))
273298 ).generate_prerelease (prerelease , offset = prerelease_offset )
274299
275- # TODO: post version
300+ post_version = self .generate_postrelease (postrelease )
301+
276302 return self .scheme (
277- f"{ base } { pre_version } { dev_version } { self .generate_build_metadata (build_metadata )} "
303+ f"{ base } { pre_version } { post_version } { dev_version } { self .generate_build_metadata (build_metadata )} "
278304 ) # type: ignore[return-value]
279305
280306 def _get_increment_base (
0 commit comments