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 click
import humanfriendly import humanfriendly
from packaging.version import Version from packaging.version import InvalidVersion, Version
from pydantic import BaseModel from pydantic import BaseModel
from datahub._version import __version__ from datahub._version import __version__
@ -28,6 +28,18 @@ class VersionStats(BaseModel, arbitrary_types_allowed=True):
release_date: Optional[datetime] = None 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): class ServerVersionStats(BaseModel):
current: VersionStats current: VersionStats
latest: Optional[VersionStats] = None latest: Optional[VersionStats] = None
@ -233,10 +245,7 @@ async def _retrieve_version_stats(
version=current_server_version, release_date=current_server_release_date version=current_server_version, release_date=current_server_release_date
), ),
current_server_default_cli_version=( current_server_default_cli_version=(
VersionStats( _safe_version_stats(current_server_default_cli_version)
version=Version(current_server_default_cli_version),
release_date=None,
)
if current_server_default_cli_version if current_server_default_cli_version
else None else None
), ),