File: test_create_backend.py

package info (click to toggle)
textual-fastdatatable 0.12.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,856 kB
  • sloc: python: 3,461; makefile: 24
file content (54 lines) | stat: -rw-r--r-- 1,863 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from datetime import date, datetime

import pyarrow as pa
from textual_fastdatatable.backend import create_backend

MAX_32BIT_INT = 2**31 - 1
MAX_64BIT_INT = 2**63 - 1


def test_empty_sequence() -> None:
    backend = create_backend(data=[])
    assert backend
    assert backend.row_count == 0
    assert backend.column_count == 0
    assert backend.columns == []
    assert backend.column_content_widths == []


def test_infinity_timestamps() -> None:
    from_py = create_backend(
        data={"dt": [date.max, date.min], "ts": [datetime.max, datetime.min]}
    )
    assert from_py
    assert from_py.row_count == 2

    from_arrow = create_backend(
        data=pa.table(
            {
                "dt32": [
                    pa.scalar(MAX_32BIT_INT, type=pa.date32()),
                    pa.scalar(-MAX_32BIT_INT, type=pa.date32()),
                ],
                "dt64": [
                    pa.scalar(MAX_64BIT_INT, type=pa.date64()),
                    pa.scalar(-MAX_64BIT_INT, type=pa.date64()),
                ],
                "ts": [
                    pa.scalar(MAX_64BIT_INT, type=pa.timestamp("s")),
                    pa.scalar(-MAX_64BIT_INT, type=pa.timestamp("s")),
                ],
                "tns": [
                    pa.scalar(MAX_64BIT_INT, type=pa.timestamp("ns")),
                    pa.scalar(-MAX_64BIT_INT, type=pa.timestamp("ns")),
                ],
            }
        )
    )
    assert from_arrow
    assert from_arrow.row_count == 2
    assert from_arrow.get_row_at(0) == [date.max, date.max, datetime.max, datetime.max]
    assert from_arrow.get_row_at(1) == [date.min, date.min, datetime.min, datetime.min]
    assert from_arrow.get_column_at(0) == [date.max, date.min]
    assert from_arrow.get_column_at(2) == [datetime.max, datetime.min]
    assert from_arrow.get_cell_at(0, 0) == date.max