35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
import importlib.metadata
|
|
import warnings
|
|
from typing import Optional
|
|
|
|
|
|
def _get_version(package_name: str) -> Optional[str]:
|
|
try:
|
|
return importlib.metadata.version(package_name)
|
|
except importlib.metadata.PackageNotFoundError:
|
|
return None
|
|
|
|
|
|
def _check_version_mismatch() -> None:
|
|
"""
|
|
Warns if both mlflow and mlflow-skinny are installed but their versions are different.
|
|
|
|
Reference: https://github.com/pypa/pip/issues/4625
|
|
"""
|
|
if (
|
|
(mlflow_ver := _get_version("mlflow"))
|
|
and ("dev" not in mlflow_ver)
|
|
and (skinny_ver := _get_version("mlflow-skinny"))
|
|
and ("dev" not in skinny_ver)
|
|
and mlflow_ver != skinny_ver
|
|
):
|
|
warnings.warn(
|
|
(
|
|
f"Versions of mlflow ({mlflow_ver}) and mlflow-skinny ({skinny_ver}) "
|
|
"are different. This may lead to unexpected behavior. "
|
|
"Please install the same version of both packages."
|
|
),
|
|
stacklevel=2,
|
|
category=UserWarning,
|
|
)
|