pola-rs/polars · error · ImportError

reading delta deletion vectors requires deltalake >=

Error message

reading delta deletion vectors requires deltalake >= {'.'.join(str(v) for v in dv_min_version)}, found {installed}.

What it means

Raised by the Delta Lake scanner when the table's protocol advertises deletion vectors but the installed deltalake package (>= 1.4.2 required) is too old to read them. Upgrade the deltalake package to read this table.

Solutions

  1. Upgrade deltalake to at least the version that supports deletion vectors, as printed in the error message.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at py-polars/src/polars/io/delta/_dataset.py:195 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pola-rs/polars@5d8ebabf11 (2026-08-19). Data as JSON: /api/errors/bcf522e4451eeecf. Report an issue: GitHub.

Appendix: source

Thrown at py-polars/src/polars/io/delta/_dataset.py:193

        reader_features = table.protocol().reader_features
        has_deletion_vectors = (
            reader_features is not None and "deletionVectors" in reader_features
        )

        deletion_files: DeletionFiles | None = None
        if has_deletion_vectors:
            import deltalake

            dv_min_version = (1, 4, 2)
            installed = parse_version(deltalake.__version__)
            if installed < dv_min_version:
                msg = (
                    f"reading delta deletion vectors requires "
                    f"deltalake >= {'.'.join(str(v) for v in dv_min_version)}, "
                    f"found {installed}."
                )
                raise ImportError(msg)

            def _deletion_vector_callback(
                requested_paths: pl.DataFrame,
            ) -> pl.DataFrame:
                delta_deletion_vectors = _fetch_deletion_vectors(table)
                if delta_deletion_vectors is None:
                    return pl.DataFrame(
                        {"selection_vector": [None] * len(requested_paths)},
                        schema={"selection_vector": pl.List(pl.Boolean)},
                    )
                return _extract_delta_deletion_vectors(
                    requested_paths, delta_deletion_vectors
                )

            deletion_files = (
                "delta-deletion-vector",
                _deletion_vector_callback,
            )

View on GitHub (pinned to 5d8ebabf11)