Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/tests/unit/series/buffers/test_get_buffer_info.py
6940 views
1
import pytest
2
3
import polars as pl
4
from polars.exceptions import ComputeError
5
from tests.unit.conftest import NUMERIC_DTYPES
6
7
8
@pytest.mark.parametrize("dtype", NUMERIC_DTYPES)
9
def test_get_buffer_info_numeric(dtype: pl.DataType) -> None:
10
s = pl.Series([1, 2, 3], dtype=dtype)
11
assert s._get_buffer_info()[0] > 0
12
13
14
def test_get_buffer_info_bool() -> None:
15
s = pl.Series([True, False, False, True])
16
assert s._get_buffer_info()[0] > 0
17
assert s[1:]._get_buffer_info()[1] == 1
18
19
20
def test_get_buffer_info_after_rechunk() -> None:
21
s = pl.Series([1, 2, 3])
22
ptr = s._get_buffer_info()[0]
23
assert isinstance(ptr, int)
24
25
s2 = s.append(pl.Series([1, 2]))
26
ptr2 = s2.rechunk()._get_buffer_info()[0]
27
assert ptr != ptr2
28
29
30
def test_get_buffer_info_invalid_data_type() -> None:
31
s = pl.Series(["a", "bc"])
32
33
msg = "`_get_buffer_info` not implemented for non-physical type str; try to select a buffer first"
34
with pytest.raises(TypeError, match=msg):
35
s._get_buffer_info()
36
37
38
def test_get_buffer_info_chunked() -> None:
39
s1 = pl.Series([1, 2])
40
s2 = pl.Series([3, 4])
41
s = pl.concat([s1, s2], rechunk=False)
42
43
with pytest.raises(ComputeError):
44
s._get_buffer_info()
45
46