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_from_buffer.py
6940 views
1
from __future__ import annotations
2
3
from datetime import date
4
5
import pytest
6
from hypothesis import given
7
8
import polars as pl
9
from polars.testing import assert_series_equal
10
from polars.testing.parametric import series
11
from tests.unit.conftest import NUMERIC_DTYPES
12
13
14
@given(
15
s=series(
16
allowed_dtypes=[*NUMERIC_DTYPES, pl.Boolean],
17
allow_chunks=False,
18
allow_null=False,
19
)
20
)
21
def test_series_from_buffer(s: pl.Series) -> None:
22
buffer_info = s._get_buffer_info()
23
result = pl.Series._from_buffer(s.dtype, buffer_info, owner=s)
24
assert_series_equal(s, result)
25
26
27
def test_series_from_buffer_numeric() -> None:
28
s = pl.Series([1, 2, 3], dtype=pl.UInt16)
29
buffer_info = s._get_buffer_info()
30
result = pl.Series._from_buffer(s.dtype, buffer_info, owner=s)
31
assert_series_equal(s, result)
32
33
34
def test_series_from_buffer_sliced_bitmask() -> None:
35
s = pl.Series([True] * 9, dtype=pl.Boolean)[5:]
36
buffer_info = s._get_buffer_info()
37
result = pl.Series._from_buffer(s.dtype, buffer_info, owner=s)
38
assert_series_equal(s, result)
39
40
41
def test_series_from_buffer_unsupported() -> None:
42
s = pl.Series([date(2020, 1, 1), date(2020, 2, 5)])
43
buffer_info = s._get_buffer_info()
44
45
msg = "`_from_buffer` requires a physical type as input for `dtype`, got date"
46
with pytest.raises(TypeError, match=msg):
47
pl.Series._from_buffer(pl.Date, buffer_info, owner=s)
48
49