Skip to content

Commit 52c0212

Browse files
Support GeoDataFrame in default_title
1 parent f477398 commit 52c0212

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
@@ -231,10 +231,20 @@ def default_title(obj, name):
231231
import pandas as pd
232232

233233
if isinstance(obj, pd.DataFrame):
234+
try:
235+
import geopandas as gpd
236+
except ModuleNotFoundError:
237+
obj_name = "DataFrame"
238+
else:
239+
if isinstance(obj, gpd.GeoDataFrame):
240+
obj_name = "GeoDataFrame"
241+
else:
242+
obj_name = "DataFrame"
243+
234244
# TODO(compat): title says CSV rather than data.frame
235245
# see https://github.com/machow/pins-python/issues/5
236246
shape_str = " x ".join(map(str, obj.shape))
237-
return f"{name}: a pinned {shape_str} DataFrame"
247+
return f"{name}: a pinned {shape_str} {obj_name}"
238248
else:
239249
obj_name = type(obj).__qualname__
240250
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
from pathlib import Path
22

33
import fsspec
4+
import geopandas as gpd
45
import pandas as pd
56
import pytest
67

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

0 commit comments

Comments
 (0)