diff --git a/crates/polars-core/src/chunked_array/builder/list/mod.rs b/crates/polars-core/src/chunked_array/builder/list/mod.rs index 9abcbcaa158a..f8b1eabed644 100644 --- a/crates/polars-core/src/chunked_array/builder/list/mod.rs +++ b/crates/polars-core/src/chunked_array/builder/list/mod.rs @@ -130,6 +130,13 @@ pub fn get_list_builder( list_capacity, Some(inner_type_logical.clone()), ))), + #[cfg(feature = "dtype-decimal")] + DataType::Decimal(_, _) => Ok(Box::new(ListPrimitiveChunkedBuilder::::new( + name, + list_capacity, + value_capacity, + inner_type_logical.clone(), + ))), _ => { macro_rules! get_primitive_builder { ($type:ty) => {{ diff --git a/py-polars/tests/unit/datatypes/test_list.py b/py-polars/tests/unit/datatypes/test_list.py index 021a8696a406..20c6a4f4e9d9 100644 --- a/py-polars/tests/unit/datatypes/test_list.py +++ b/py-polars/tests/unit/datatypes/test_list.py @@ -2,6 +2,7 @@ import pickle from datetime import date, datetime, time +from decimal import Decimal from typing import TYPE_CHECKING, Any import pandas as pd @@ -79,6 +80,15 @@ def test_categorical() -> None: assert out.dtype.inner.is_nested() is False # type: ignore[attr-defined] +def test_decimal() -> None: + input = [[Decimal("1.23"), Decimal("4.56")], [Decimal("7.89"), Decimal("10.11")]] + s = pl.Series(input) + assert s.dtype == pl.List(pl.Decimal) + assert s.dtype.inner == pl.Decimal # type: ignore[attr-defined] + assert s.dtype.inner.is_nested() is False # type: ignore[attr-defined] + assert s.to_list() == input + + def test_cast_inner() -> None: a = pl.Series([[1, 2]]) for t in [bool, pl.Boolean]: