def parse_next_version(version: Text) -> Version: """Find the next version as a proper semantic version string.""" if version == "major": return Version(get_current_version()).next_major() elif version == "minor": return Version(get_current_version()).next_minor() elif version == "micro": return Version(get_current_version()).next_micro() elif version == "alpha": return Version(get_current_version()).next_alpha() elif version == "rc": return Version(get_current_version()).next_release_candidate() elif is_valid_version(version): return Version(version) else: raise Exception(f"Invalid version number '{cmdline_args.next_version}'.")
def is_valid_version_number(v: Text) -> bool: return v in {"major", "minor", "micro", "alpha", "rc"} or is_valid_version(v)
def test_is_valid_version(version, expected): assert is_valid_version(version) is expected