Skip to content

Commit a88023b

Browse files
Support GeoDataFrame in default_title
1 parent bfe3826 commit a88023b

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

pins/drivers.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,20 @@ def default_title(obj, name):
234234
import pandas as pd
235235

236236
if isinstance(obj, pd.DataFrame):
237+
try:
238+
import geopandas as gpd
239+
except ModuleNotFoundError:
240+
obj_name = "DataFrame"
241+
else:
242+
if isinstance(obj, gpd.GeoDataFrame):
243+
obj_name = "GeoDataFrame"
244+
else:
245+
obj_name = "DataFrame"
246+
237247
# TODO(compat): title says CSV rather than data.frame
238248
# see https://github.com/machow/pins-python/issues/5
239249
shape_str = " x ".join(map(str, obj.shape))
240-
return f"{name}: a pinned {shape_str} DataFrame"
250+
return f"{name}: a pinned {shape_str} {obj_name}"
241251
else:
242252
obj_name = type(obj).__qualname__
243253
return f"{name}: a pinned {obj_name} object"

pins/tests/test_drivers.py

Lines changed: 5 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 geopandas as gpd
45

56
from pathlib import Path
67

@@ -35,6 +36,10 @@ 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+
(
40+
gpd.GeoDataFrame({"x": [1], "geometry": [None]}),
41+
"somename: a pinned 1 x 2 GeoDataFrame",
42+
),
3843
(ExC(), "somename: a pinned ExC object"),
3944
(ExC().D(), "somename: a pinned ExC.D object"),
4045
([1, 2, 3], "somename: a pinned list object"),

0 commit comments

Comments
 (0)