from __future__ import annotations
import pytest
import polars as pl
from polars.exceptions import ComputeError, NoDataError
def test_from_records_schema_inference() -> None:
data = [[1, 2.1, 3], [4, 5, 6.4]]
with pytest.raises(TypeError, match="unexpected value"):
pl.from_records(data)
result = pl.from_records(data, strict=False)
assert result.to_dict(as_series=False) == {
"column_0": [1.0, 2.1, 3.0],
"column_1": [4.0, 5.0, 6.4],
}
def test_from_dicts_schema_inference() -> None:
data = [{"a": 1, "b": 2}, {"a": 3.1, "b": 4.5}]
result = pl.from_dicts(data)
assert result.to_dict(as_series=False) == {
"a": [1.0, 3.1],
"b": [2.0, 4.5],
}
def test_from_dicts_nested_nulls() -> None:
result = pl.from_dicts([{"a": [None, None]}, {"a": [1, 2]}])
assert result.to_dict(as_series=False) == {"a": [[None, None], [1, 2]]}
def test_from_dicts_empty() -> None:
with pytest.raises(NoDataError, match="no data, cannot infer schema"):
pl.from_dicts([])
def test_from_dicts_all_cols_6716() -> None:
dicts = [{"a": None} for _ in range(20)] + [{"a": "crash"}]
with pytest.raises(
ComputeError, match="make sure that all rows have the same schema"
):
pl.from_dicts(dicts, infer_schema_length=20)
assert pl.from_dicts(dicts, infer_schema_length=None).dtypes == [pl.String]
def test_dict_float_string_roundtrip_18882() -> None:
assert pl.from_dicts([{"A": "0.1"}]).to_dicts() == [{"A": "0.1"}]