Path: blob/main/py-polars/tests/unit/series/buffers/test_get_buffers.py
6940 views
from datetime import date1from typing import cast23import pytest45import polars as pl6from polars.testing import assert_series_equal789def test_get_buffers_only_values() -> None:10s = pl.Series([1, 2, 3])1112result = s._get_buffers()1314assert_series_equal(result["values"], s)15assert result["validity"] is None16assert result["offsets"] is None171819def test_get_buffers_with_validity() -> None:20s = pl.Series([1.5, None, 3.5])2122result = s._get_buffers()2324expected_values = pl.Series([1.5, 0.0, 3.5])25assert_series_equal(result["values"], expected_values)2627validity = cast(pl.Series, result["validity"])28expected_validity = pl.Series([True, False, True])29assert_series_equal(validity, expected_validity)3031assert result["offsets"] is None323334def test_get_buffers_string_type() -> None:35s = pl.Series(["a", "bc", None, "éâç", ""])3637result = s._get_buffers()3839expected_values = pl.Series(40[97, 98, 99, 195, 169, 195, 162, 195, 167], dtype=pl.UInt841)42assert_series_equal(result["values"], expected_values)4344validity = cast(pl.Series, result["validity"])45expected_validity = pl.Series([True, True, False, True, True])46assert_series_equal(validity, expected_validity)4748offsets = cast(pl.Series, result["offsets"])49expected_offsets = pl.Series([0, 1, 3, 3, 9, 9], dtype=pl.Int64)50assert_series_equal(offsets, expected_offsets)515253def test_get_buffers_logical_sliced() -> None:54s = pl.Series([date(1970, 1, 1), None, date(1970, 1, 3)])[1:]5556result = s._get_buffers()5758expected_values = pl.Series([0, 2], dtype=pl.Int32)59assert_series_equal(result["values"], expected_values)6061validity = cast(pl.Series, result["validity"])62expected_validity = pl.Series([False, True])63assert_series_equal(validity, expected_validity)6465assert result["offsets"] is None666768def test_get_buffers_chunked() -> None:69s = pl.Series([1, 2, None, 4], dtype=pl.UInt8)70s_chunked = pl.concat([s[:2], s[2:]], rechunk=False)7172result = s_chunked._get_buffers()7374expected_values = pl.Series([1, 2, 0, 4], dtype=pl.UInt8)75assert_series_equal(result["values"], expected_values)76assert result["values"].n_chunks() == 27778validity = cast(pl.Series, result["validity"])79expected_validity = pl.Series([True, True, False, True])80assert_series_equal(validity, expected_validity)81assert validity.n_chunks() == 2828384def test_get_buffers_chunked_string_type() -> None:85s = pl.Series(["a", "bc", None, "éâç", ""])86s_chunked = pl.concat([s[:2], s[2:]], rechunk=False)8788result = s_chunked._get_buffers()8990expected_values = pl.Series(91[97, 98, 99, 195, 169, 195, 162, 195, 167], dtype=pl.UInt892)93assert_series_equal(result["values"], expected_values)94assert result["values"].n_chunks() == 19596validity = cast(pl.Series, result["validity"])97expected_validity = pl.Series([True, True, False, True, True])98assert_series_equal(validity, expected_validity)99assert validity.n_chunks() == 1100101offsets = cast(pl.Series, result["offsets"])102expected_offsets = pl.Series([0, 1, 3, 3, 9, 9], dtype=pl.Int64)103assert_series_equal(offsets, expected_offsets)104assert offsets.n_chunks() == 1105106107def test_get_buffers_unsupported_data_type() -> None:108s = pl.Series([[1, 2], [3]])109110msg = "`_get_buffers` not implemented for `dtype` list\\[i64\\]"111with pytest.raises(TypeError, match=msg):112s._get_buffers()113114115