Parse a version string into (is_latest, version_number). Accepts "latest", "vN", or "versionN" (case-insensitive). Returns (True, 0) for "latest", (False, N) for pinned versions. Raises: ValueError: If the version string is invalid.
(version: str)
| 7 | |
| 8 | |
| 9 | def parse_version(version: str) -> Tuple[bool, int]: |
| 10 | """Parse a version string into (is_latest, version_number). |
| 11 | |
| 12 | Accepts "latest", "vN", or "versionN" (case-insensitive). |
| 13 | Returns (True, 0) for "latest", (False, N) for pinned versions. |
| 14 | |
| 15 | Raises: |
| 16 | ValueError: If the version string is invalid. |
| 17 | """ |
| 18 | if not version or version.lower() == LATEST_VERSION: |
| 19 | return True, 0 |
| 20 | |
| 21 | match = _VERSION_PATTERN.match(version) |
| 22 | if not match: |
| 23 | raise ValueError( |
| 24 | f"Invalid version string '{version}'. " |
| 25 | f"Expected 'latest', 'vN', or 'versionN' (e.g. 'v2', 'version3')." |
| 26 | ) |
| 27 | return False, int(match.group(1)) |
| 28 | |
| 29 | |
| 30 | def normalize_version_string(version: str) -> str: |
no outgoing calls