From 86ccb000444635245ee7255f1b37316c4121f3bf Mon Sep 17 00:00:00 2001 From: Oliver Borchert Date: Fri, 26 Jun 2026 16:33:54 +0200 Subject: [PATCH 1/2] fix: Explicitly specify `empty_as_null` for `explode` --- dataframely/experimental/infer_schema.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dataframely/experimental/infer_schema.py b/dataframely/experimental/infer_schema.py index b6dd5bf..3922490 100644 --- a/dataframely/experimental/infer_schema.py +++ b/dataframely/experimental/infer_schema.py @@ -147,10 +147,13 @@ def _get_dtype_args(dtype: pl.DataType, series: pl.Series) -> list[str]: return [repr(dtype.categories.to_list())] if isinstance(dtype, pl.List): - return [_dtype_to_column_code(series.explode())] + return [_dtype_to_column_code(series.explode(empty_as_null=False))] if isinstance(dtype, pl.Array): - return [_dtype_to_column_code(series.explode()), f"shape={dtype.size}"] + return [ + _dtype_to_column_code(series.explode(empty_as_null=False)), + f"shape={dtype.size}", + ] if isinstance(dtype, pl.Struct): fields_parts = [] From 340a1c5f21c9885d721200192ecfa4df2e4d6c74 Mon Sep 17 00:00:00 2001 From: Oliver Borchert Date: Fri, 26 Jun 2026 19:38:07 +0200 Subject: [PATCH 2/2] Update --- dataframely/experimental/infer_schema.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dataframely/experimental/infer_schema.py b/dataframely/experimental/infer_schema.py index 3922490..86b6078 100644 --- a/dataframely/experimental/infer_schema.py +++ b/dataframely/experimental/infer_schema.py @@ -9,6 +9,8 @@ import polars as pl +from dataframely._compat import _polars_version_tuple + _POLARS_DTYPE_MAP: dict[type[pl.DataType], str] = { pl.Boolean: "Bool", pl.Int8: "Int8", @@ -147,13 +149,17 @@ def _get_dtype_args(dtype: pl.DataType, series: pl.Series) -> list[str]: return [repr(dtype.categories.to_list())] if isinstance(dtype, pl.List): - return [_dtype_to_column_code(series.explode(empty_as_null=False))] + if _polars_version_tuple >= (1, 36, 0): + return [_dtype_to_column_code(series.explode(empty_as_null=False))] + return [_dtype_to_column_code(series.explode())] if isinstance(dtype, pl.Array): - return [ - _dtype_to_column_code(series.explode(empty_as_null=False)), - f"shape={dtype.size}", - ] + if _polars_version_tuple >= (1, 36, 0): + return [ + _dtype_to_column_code(series.explode(empty_as_null=False)), + f"shape={dtype.size}", + ] + return [_dtype_to_column_code(series.explode()), f"shape={dtype.size}"] if isinstance(dtype, pl.Struct): fields_parts = []