pip/tools/release/check_version.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

44 lines
1.0 KiB
Python
Raw Normal View History

"""Checks if the version is acceptable, as per this project's release process.
"""
import sys
from datetime import datetime
from typing import Optional
from packaging.version import InvalidVersion, Version
def is_this_a_good_version_number(string: str) -> Optional[str]:
try:
v = Version(string)
except InvalidVersion as e:
return str(e)
if v.local:
return "Nope. PyPI refuses local release versions."
if v.dev:
return "No development releases on PyPI. What are you even thinking?"
if v.pre and v.pre[0] != "b":
return "Only beta releases are allowed. No alphas."
release = v.release
expected_major = datetime.now().year % 100
if len(release) not in [2, 3]:
2023-11-07 10:14:56 +01:00
return f"Not of the form: {expected_major}.N or {expected_major}.N.P"
return None
def main() -> None:
problem = is_this_a_good_version_number(sys.argv[1])
if problem is not None:
print("ERROR:", problem)
sys.exit(1)
if __name__ == "__main__":
main()