Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions pyleotups/utils/PangaeaStudy.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,24 @@ def get_data(self) -> pd.DataFrame:

return df

def _iter_events(self):
"""
Iterate over this dataset's `PanEvent` objects.

pangaeapy changed the shape of `PanDataSet.events` between versions:
older releases exposed it as a list of `PanEvent` objects, while newer
releases (>=1.1) expose it as a dict of ``{eventLabel: PanEvent}``.
Support both so pyleotups doesn't break on the installed version.

Returns
-------
Iterable of PanEvent
"""
events = self._panobj.events
if isinstance(events, dict):
return events.values()
return events

# ------------------------------------------------------------------
# Summary Metadata
# ------------------------------------------------------------------
Expand Down Expand Up @@ -270,7 +288,7 @@ def _compute_coverage(self) -> Optional[Tuple[float, float, float, float]]:
latitudes = []
longitudes = []

for ev in self._panobj.events:
for ev in self._iter_events():
lat1 = ev.latitude
lat2 = ev.latitude2 if getattr(ev, "latitude2", None) is not None else lat1
lon1 = ev.longitude
Expand Down Expand Up @@ -322,7 +340,7 @@ def to_summary_dict(self) -> Dict[str, Any]:
"ScienceKeywords": getattr(ds, "keywords", None),
"Investigators": ", ".join(a.fullname for a in ds.authors),
"Publications": ds.citation,
"Sites": [e.label for e in ds.events],
"Sites": [e.label for e in self._iter_events()],
"Funding": [
{"name": p.name, "url": p.URL, "award": p.awardURI}
for p in ds.projects
Expand All @@ -348,7 +366,7 @@ def get_geo(self) -> pd.DataFrame:
DataFrame containing event-level geographic information.
"""
rows = []
for ev in self._panobj.events:
for ev in self._iter_events():
lat1 = ev.latitude
lon1 = ev.longitude
lat2 = ev.latitude2 if getattr(ev, "latitude2", None) is not None else lat1
Expand Down
Loading