Skip to content

Commit 4699a5a

Browse files
Support polars.DataFrame in default_title
1 parent a41065f commit 4699a5a

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

pins/drivers.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,15 @@ def save_data(obj, fname, type=None, apply_suffix: bool = True) -> "str | Sequen
233233

234234

235235
def default_title(obj, name):
236-
import pandas as pd
236+
df_family = _get_df_family(obj)
237237

238-
if isinstance(obj, pd.DataFrame):
238+
if df_family in ("pandas", "polars"):
239239
# TODO(compat): title says CSV rather than data.frame
240240
# see https://github.com/machow/pins-python/issues/5
241241
shape_str = " x ".join(map(str, obj.shape))
242242
return f"{name}: a pinned {shape_str} DataFrame"
243-
else:
243+
elif df_family == "unknown":
244244
obj_name = type(obj).__qualname__
245245
return f"{name}: a pinned {obj_name} object"
246+
else:
247+
assert_never(df_family)

pins/tests/test_drivers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fsspec
22
import pytest
33
import pandas as pd
4+
import polars as pl
45

56
from pathlib import Path
67

@@ -35,6 +36,7 @@ class D:
3536
[
3637
(pd.DataFrame({"x": [1, 2]}), "somename: a pinned 2 x 1 DataFrame"),
3738
(pd.DataFrame({"x": [1], "y": [2]}), "somename: a pinned 1 x 2 DataFrame"),
39+
(pl.DataFrame({"x": [1, 2]}), "somename: a pinned 2 x 1 DataFrame"),
3840
(ExC(), "somename: a pinned ExC object"),
3941
(ExC().D(), "somename: a pinned ExC.D object"),
4042
([1, 2, 3], "somename: a pinned list object"),

0 commit comments

Comments
 (0)