Skip to content

Commit 8dc8cd3

Browse files
authored
Merge pull request #62 from LinkedEarth/Pangaea-fix
Update to new Pangaeapy version
2 parents 6a68108 + ec1c6cb commit 8dc8cd3

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

pyleotups/utils/PangaeaStudy.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,24 @@ def get_data(self) -> pd.DataFrame:
114114

115115
return df
116116

117+
def _iter_events(self):
118+
"""
119+
Iterate over this dataset's `PanEvent` objects.
120+
121+
pangaeapy changed the shape of `PanDataSet.events` between versions:
122+
older releases exposed it as a list of `PanEvent` objects, while newer
123+
releases (>=1.1) expose it as a dict of ``{eventLabel: PanEvent}``.
124+
Support both so pyleotups doesn't break on the installed version.
125+
126+
Returns
127+
-------
128+
Iterable of PanEvent
129+
"""
130+
events = self._panobj.events
131+
if isinstance(events, dict):
132+
return events.values()
133+
return events
134+
117135
# ------------------------------------------------------------------
118136
# Summary Metadata
119137
# ------------------------------------------------------------------
@@ -270,7 +288,7 @@ def _compute_coverage(self) -> Optional[Tuple[float, float, float, float]]:
270288
latitudes = []
271289
longitudes = []
272290

273-
for ev in self._panobj.events:
291+
for ev in self._iter_events():
274292
lat1 = ev.latitude
275293
lat2 = ev.latitude2 if getattr(ev, "latitude2", None) is not None else lat1
276294
lon1 = ev.longitude
@@ -322,7 +340,7 @@ def to_summary_dict(self) -> Dict[str, Any]:
322340
"ScienceKeywords": getattr(ds, "keywords", None),
323341
"Investigators": ", ".join(a.fullname for a in ds.authors),
324342
"Publications": ds.citation,
325-
"Sites": [e.label for e in ds.events],
343+
"Sites": [e.label for e in self._iter_events()],
326344
"Funding": [
327345
{"name": p.name, "url": p.URL, "award": p.awardURI}
328346
for p in ds.projects
@@ -348,7 +366,7 @@ def get_geo(self) -> pd.DataFrame:
348366
DataFrame containing event-level geographic information.
349367
"""
350368
rows = []
351-
for ev in self._panobj.events:
369+
for ev in self._iter_events():
352370
lat1 = ev.latitude
353371
lon1 = ev.longitude
354372
lat2 = ev.latitude2 if getattr(ev, "latitude2", None) is not None else lat1

0 commit comments

Comments
 (0)