{"record":{"id":"b2bc32c5fce90fa2","repo":"mlflow/mlflow","slug":"mlflow-data-polars-dataset-requires-polars-1-0-0","errorCode":null,"errorMessage":"mlflow.data.polars_dataset requires polars>=1.0.0, found {pl.__version__}","messagePattern":"mlflow\\.data\\.polars_dataset requires polars>=1\\.0\\.0, found (.+?)","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"mlflow/data/polars_dataset.py","lineNumber":11,"sourceCode":"import json\nimport logging\nfrom functools import cached_property\nfrom inspect import isclass\nfrom typing import Any, Final, TypedDict\n\nimport polars as pl\nfrom packaging.version import Version\n\nif Version(pl.__version__).major < 1:\n    raise ImportError(f\"mlflow.data.polars_dataset requires polars>=1.0.0, found {pl.__version__}\")\n\nfrom polars.datatypes.classes import DataType as PolarsDataType\nfrom polars.datatypes.classes import DataTypeClass as PolarsDataTypeClass\n\nfrom mlflow.data.dataset import Dataset\nfrom mlflow.data.dataset_source import DatasetSource\nfrom mlflow.data.evaluation_dataset import EvaluationDataset\nfrom mlflow.data.pyfunc_dataset_mixin import PyFuncConvertibleDatasetMixin, PyFuncInputsOutputs\nfrom mlflow.exceptions import MlflowException\nfrom mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE\nfrom mlflow.types.schema import Array, ColSpec, DataType, Object, Property, Schema\n\n_logger = logging.getLogger(__name__)\n\n\ndef hash_polars_df(df: pl.DataFrame) -> str:\n    # probably not the best way to hash, also see:\n    # https://github.com/pola-rs/polars/issues/9743","sourceCodeStart":1,"sourceCodeEnd":29,"githubUrl":"https://github.com/mlflow/mlflow/blob/6a27f2decc0b76eb1b54af31849784addb357dbc/mlflow/data/polars_dataset.py#L1-L29","documentation":"mlflow/data/polars_dataset.py requires polars 1.0.0 or newer. At import time it compares the installed polars major version and raises ImportError if the major version is below 1. This guards use of polars 1.x-only APIs such as polars.datatypes.classes imports used later in the module.","triggerScenarios":"Importing mlflow.data.polars_dataset (directly or via mlflow.data.from_polars / mlflow.data module loading) while a polars version <1.0.0 (e.g. 0.20.x) is installed.","commonSituations":"Old polars pinned in requirements.txt; an environment where another package constrained polars to a 0.x release; upgrading mlflow without upgrading polars; stale virtualenv from before polars 1.0 existed.","solutions":["Upgrade polars: uv pip install -U 'polars>=1.0.0' (or pip install -U polars).","Pin polars>=1.0.0 in your requirements to prevent dependency resolvers from downgrading it.","If you cannot upgrade polars, avoid mlflow.data.polars_dataset and use from_pandas instead.","Recreate the environment after the upgrade to clear cached 0.x installs."],"exampleFix":"// before (requirements.txt)\npolars==0.20.31\n// after (requirements.txt)\npolars>=1.0.0","handlingStrategy":"validation","validationCode":"import polars as pl\nfrom packaging.version import Version\nif Version(pl.__version__).major < 1:\n    raise EnvironmentError(f\"polars>=1.0.0 required, found {pl.__version__}\")","typeGuard":"def polars_supported() -> bool:\n    import polars as pl\n    from packaging.version import Version\n    return Version(pl.__version__).major >= 1","tryCatchPattern":"try:\n    from mlflow.data import polars_dataset\nexcept ImportError as e:\n    if \"requires polars\" in str(e):\n        raise SystemExit(\"Upgrade polars: pip install 'polars>=1.0.0'\") from e\n    raise","preventionTips":["Pin polars>=1.0.0 in requirements and lockfiles","Run a version check early at app startup, not deep in MLflow imports","Watch transitive dependencies that might downgrade polars (pip check / uv lock)","Test in CI with the same dependency resolution as production"],"tags":["polars","dependency","import-error","version"],"backgroundTag":"dependency-version-mismatch","analyzedSha":"6a27f2decc0b76eb1b54af31849784addb357dbc","analyzedAt":"2026-08-29T20:54:51.419Z","schemaVersion":2},"datasetVersion":"2026-08-29T22:17:34.462Z"}