fix(cli/upgrade): handle safely invalid version (#14134)

This commit is contained in:
Aseem Bansal 2025-07-18 14:22:34 +05:30 committed by GitHub
parent 14e7d367e3
commit d679973d33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -7,7 +7,7 @@ from typing import Any, Callable, Optional, Tuple, TypeVar
import click
import humanfriendly
from packaging.version import Version
from packaging.version import InvalidVersion, Version
from pydantic import BaseModel
from datahub._version import __version__
@ -28,6 +28,18 @@ class VersionStats(BaseModel, arbitrary_types_allowed=True):
release_date: Optional[datetime] = None
def _safe_version_stats(version_string: str) -> Optional[VersionStats]:
"""
Safely create a VersionStats object from a version string.
Returns None if the version string is invalid.
"""
try:
return VersionStats(version=Version(version_string), release_date=None)
except InvalidVersion:
log.warning(f"Invalid version format received: {version_string!r}")
return None
class ServerVersionStats(BaseModel):
current: VersionStats
latest: Optional[VersionStats] = None
@ -233,10 +245,7 @@ async def _retrieve_version_stats(
version=current_server_version, release_date=current_server_release_date
),
current_server_default_cli_version=(
VersionStats(
version=Version(current_server_default_cli_version),
release_date=None,
)
_safe_version_stats(current_server_default_cli_version)
if current_server_default_cli_version
else None
),