Skip to content

Commit 998662a

Browse files
Support polars.DataFrame in default_title
1 parent 9667fc0 commit 998662a

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
@@ -232,13 +232,15 @@ def save_data(obj, fname, type=None, apply_suffix: bool = True) -> "str | Sequen
232232

233233

234234
def default_title(obj, name):
235-
import pandas as pd
235+
df_family = _get_df_family(obj)
236236

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

pins/tests/test_drivers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fsspec
44
import pandas as pd
5+
import polars as pl
56
import pytest
67

78
from pins.config import PINS_ENV_INSECURE_READ
@@ -34,6 +35,7 @@ class D:
3435
[
3536
(pd.DataFrame({"x": [1, 2]}), "somename: a pinned 2 x 1 DataFrame"),
3637
(pd.DataFrame({"x": [1], "y": [2]}), "somename: a pinned 1 x 2 DataFrame"),
38+
(pl.DataFrame({"x": [1, 2]}), "somename: a pinned 2 x 1 DataFrame"),
3739
(ExC(), "somename: a pinned ExC object"),
3840
(ExC().D(), "somename: a pinned ExC.D object"),
3941
([1, 2, 3], "somename: a pinned list object"),

0 commit comments

Comments
 (0)