Based on the given increment a proper semver will be generated. For now the rules and versioning scheme is based on python's PEP 0440. More info: https://www.python.org/dev/peps/pep-0440/ Example: PATCH 1.0.0 -> 1.0.1 MINOR 1.0.0 -> 1.1.0
(
self,
increment: Increment | None,
prerelease: Prerelease | None = None,
prerelease_offset: int = 0,
devrelease: int | None = None,
is_local_version: bool = False,
build_metadata: str | None = None,
exact_increment: bool = False,
)
| 230 | return f"{base[MAJOR]}.{base[MINOR]}.{base[PATCH]}" |
| 231 | |
| 232 | def bump( |
| 233 | self, |
| 234 | increment: Increment | None, |
| 235 | prerelease: Prerelease | None = None, |
| 236 | prerelease_offset: int = 0, |
| 237 | devrelease: int | None = None, |
| 238 | is_local_version: bool = False, |
| 239 | build_metadata: str | None = None, |
| 240 | exact_increment: bool = False, |
| 241 | ) -> Self: |
| 242 | """Based on the given increment a proper semver will be generated. |
| 243 | |
| 244 | For now the rules and versioning scheme is based on |
| 245 | python's PEP 0440. |
| 246 | More info: https://www.python.org/dev/peps/pep-0440/ |
| 247 | |
| 248 | Example: |
| 249 | PATCH 1.0.0 -> 1.0.1 |
| 250 | MINOR 1.0.0 -> 1.1.0 |
| 251 | MAJOR 1.0.0 -> 2.0.0 |
| 252 | """ |
| 253 | |
| 254 | if self.local and is_local_version: |
| 255 | local_version = self.scheme(self.local).bump(increment) |
| 256 | return self.scheme(f"{self.public}+{local_version}") # type: ignore[return-value] |
| 257 | |
| 258 | base = self._get_increment_base(increment, exact_increment) |
| 259 | dev_version = self.generate_devrelease(devrelease) |
| 260 | |
| 261 | release = list(self.release) |
| 262 | if len(release) < 3: |
| 263 | release += [0] * (3 - len(release)) |
| 264 | current_base = ".".join(str(part) for part in release) |
| 265 | |
| 266 | pre_version = ( |
| 267 | self if base == current_base else cast("BaseVersion", self.scheme(base)) |
| 268 | ).generate_prerelease(prerelease, offset=prerelease_offset) |
| 269 | |
| 270 | # TODO: post version |
| 271 | return self.scheme( |
| 272 | f"{base}{pre_version}{dev_version}{self.generate_build_metadata(build_metadata)}" |
| 273 | ) # type: ignore[return-value] |
| 274 | |
| 275 | def _get_increment_base( |
| 276 | self, increment: Increment | None, exact_increment: bool |