Generate prerelease X.YaN # Alpha release X.YbN # Beta release X.YrcN # Release Candidate X.Y # Final This function might return something like 'alpha1' but it will be handled by Version.
(
self, prerelease: str | None = None, offset: int = 0
)
| 165 | return None |
| 166 | |
| 167 | def generate_prerelease( |
| 168 | self, prerelease: str | None = None, offset: int = 0 |
| 169 | ) -> str: |
| 170 | """Generate prerelease |
| 171 | |
| 172 | X.YaN # Alpha release |
| 173 | X.YbN # Beta release |
| 174 | X.YrcN # Release Candidate |
| 175 | X.Y # Final |
| 176 | |
| 177 | This function might return something like 'alpha1' |
| 178 | but it will be handled by Version. |
| 179 | """ |
| 180 | if not prerelease: |
| 181 | return "" |
| 182 | |
| 183 | # prevent down-bumping the pre-release phase, e.g. from 'b1' to 'a2' |
| 184 | # https://packaging.python.org/en/latest/specifications/version-specifiers/#pre-releases |
| 185 | # https://semver.org/#spec-item-11 |
| 186 | if self.is_prerelease and self.pre: |
| 187 | prerelease = max(prerelease, self.pre[0]) |
| 188 | if prerelease.startswith(self.pre[0]): |
| 189 | offset = self.pre[1] + 1 |
| 190 | |
| 191 | return f"{prerelease}{offset}" |
| 192 | |
| 193 | def generate_devrelease(self, devrelease: int | None) -> str: |
| 194 | """Generate devrelease |