Path: blob/main/py-polars/tests/unit/dataframe/test_glimpse.py
6939 views
import textwrap1from datetime import datetime2from typing import Any34import polars as pl567def test_glimpse(capsys: Any) -> None:8df = pl.DataFrame(9{10"a": [1.0, 2.8, 3.0],11"b": [4, 5, None],12"c": [True, False, True],13"d": [None, "b", "c"],14"e": ["usd", "eur", None],15"f": pl.datetime_range(16datetime(2023, 1, 1),17datetime(2023, 1, 3),18"1d",19time_unit="us",20eager=True,21),22"g": pl.datetime_range(23datetime(2023, 1, 1),24datetime(2023, 1, 3),25"1d",26time_unit="ms",27eager=True,28),29"h": pl.datetime_range(30datetime(2023, 1, 1),31datetime(2023, 1, 3),32"1d",33time_unit="ns",34eager=True,35),36"i": [[5, 6], [3, 4], [9, 8]],37"j": [[5.0, 6.0], [3.0, 4.0], [9.0, 8.0]],38"k": [["A", "a"], ["B", "b"], ["C", "c"]],39}40)41result = df.glimpse(return_as_string=True)4243expected = textwrap.dedent(44"""\45Rows: 346Columns: 1147$ a <f64> 1.0, 2.8, 3.048$ b <i64> 4, 5, None49$ c <bool> True, False, True50$ d <str> None, 'b', 'c'51$ e <str> 'usd', 'eur', None52$ f <datetime[μs]> 2023-01-01 00:00:00, 2023-01-02 00:00:00, 2023-01-03 00:00:0053$ g <datetime[ms]> 2023-01-01 00:00:00, 2023-01-02 00:00:00, 2023-01-03 00:00:0054$ h <datetime[ns]> 2023-01-01 00:00:00, 2023-01-02 00:00:00, 2023-01-03 00:00:0055$ i <list[i64]> [5, 6], [3, 4], [9, 8]56$ j <list[f64]> [5.0, 6.0], [3.0, 4.0], [9.0, 8.0]57$ k <list[str]> ['A', 'a'], ['B', 'b'], ['C', 'c']58"""59)60assert result == expected6162# the default is to print to the console63df.glimpse()64# remove the last newline on the capsys65assert capsys.readouterr().out[:-1] == expected6667colc = "a" * 9668df = pl.DataFrame({colc: [11, 22, 33, 44, 55, 66]})69result = df.glimpse(70return_as_string=True, max_colname_length=20, max_items_per_column=471)72expected = textwrap.dedent(73"""\74Rows: 675Columns: 176$ aaaaaaaaaaaaaaaaaaa… <i64> 11, 22, 33, 4477"""78)79assert result == expected808182def test_glimpse_colname_length() -> None:83df = pl.DataFrame({"a" * 100: [1, 2, 3]})84result = df.glimpse(max_colname_length=96, return_as_string=True)8586expected = f"$ {'a' * 95}… <i64> 1, 2, 3"87assert result.strip().split("\n")[-1] == expected888990