@@ -305,38 +305,73 @@ def bump_patch(self) -> "Version":
305305 cls = type (self )
306306 return cls (self ._major , self ._minor , self ._patch + 1 )
307307
308- def bump_prerelease (self , token : str = "rc" ) -> "Version" :
308+ def bump_prerelease (self , token : Optional [ str ] = "rc" ) -> "Version" :
309309 """
310310 Raise the prerelease part of the version, return a new object but leave
311311 self untouched.
312312
313- :param token: defaults to ``rc``
314- :return: new object with the raised prerelease part
313+ :param token: defaults to ``'rc'``
314+ :return: new :class:`Version` object with the raised prerelease part.
315+ The original object is not modified.
315316
316317 >>> ver = semver.parse("3.4.5")
317- >>> ver.bump_prerelease()
318- Version(major=3, minor=4, patch=5, prerelease='rc.2', \
319- build=None)
318+ >>> ver.bump_prerelease().prerelease
319+ 'rc.2'
320+ >>> ver.bump_prerelease('').prerelease
321+ '1'
322+ >>> ver.bump_prerelease(None).prerelease
323+ 'rc.1'
320324 """
321325 cls = type (self )
322- prerelease = cls ._increment_string (self ._prerelease or (token or "rc" ) + ".0" )
326+ if self ._prerelease is not None :
327+ prerelease = self ._prerelease
328+ elif token == "" :
329+ prerelease = "0"
330+ elif token is None :
331+ prerelease = "rc.0"
332+ else :
333+ prerelease = str (token ) + ".0"
334+
335+ prerelease = cls ._increment_string (prerelease )
323336 return cls (self ._major , self ._minor , self ._patch , prerelease )
324337
325- def bump_build (self , token : str = "build" ) -> "Version" :
338+ def bump_build (self , token : Optional [ str ] = "build" ) -> "Version" :
326339 """
327340 Raise the build part of the version, return a new object but leave self
328341 untouched.
329342
330- :param token: defaults to ``build``
331- :return: new object with the raised build part
343+ :param token: defaults to ``'build'``
344+ :return: new :class:`Version` object with the raised build part.
345+ The original object is not modified.
332346
333347 >>> ver = semver.parse("3.4.5-rc.1+build.9")
334348 >>> ver.bump_build()
335349 Version(major=3, minor=4, patch=5, prerelease='rc.1', \
336350 build='build.10')
337351 """
338352 cls = type (self )
339- build = cls ._increment_string (self ._build or (token or "build" ) + ".0" )
353+ if self ._build is not None :
354+ build = self ._build
355+ elif token == "" :
356+ build = "0"
357+ elif token is None :
358+ build = "build.0"
359+ else :
360+ build = str (token ) + ".0"
361+
362+ # self._build or (token or "build") + ".0"
363+ build = cls ._increment_string (build )
364+ if self ._build is not None :
365+ build = self ._build
366+ elif token == "" :
367+ build = "0"
368+ elif token is None :
369+ build = "build.0"
370+ else :
371+ build = str (token ) + ".0"
372+
373+ # self._build or (token or "build") + ".0"
374+ build = cls ._increment_string (build )
340375 return cls (self ._major , self ._minor , self ._patch , self ._prerelease , build )
341376
342377 def compare (self , other : Comparable ) -> int :
0 commit comments