Skip to content

Commit ec7809c

Browse files
committed
Add migration for pre-1.0.0-rc.1 Stats Object
1 parent e7d4bdc commit ec7809c

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

pystac/serialization/migrate.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,23 @@ def _migrate_catalog(
2020
d["stac_extensions"] = list(info.extensions)
2121

2222

23+
def _migrate_collection_summaries(
24+
d: Dict[str, Any], version: STACVersionID, info: STACJSONDescription
25+
) -> None:
26+
if version < "1.0.0-rc.1":
27+
for prop, summary in d.get("summaries", {}).items():
28+
if isinstance(summary, dict) and "min" in summary and "max" in summary:
29+
d["summaries"][prop] = {
30+
"minimum": summary["min"],
31+
"maximum": summary["max"],
32+
}
33+
34+
2335
def _migrate_collection(
2436
d: Dict[str, Any], version: STACVersionID, info: STACJSONDescription
2537
) -> None:
2638
_migrate_catalog(d, version, info)
39+
_migrate_collection_summaries(d, version, info)
2740

2841

2942
def _migrate_item(

tests/serialization/test_migrate.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
merge_common_properties,
1111
migrate_to_latest,
1212
)
13-
from pystac.utils import str_to_datetime
13+
from pystac.utils import str_to_datetime, get_required
1414

1515
from tests.utils import TestCases
1616

@@ -83,3 +83,16 @@ def test_migrates_renamed_extension(self) -> None:
8383

8484
self.assertTrue(ItemAssetsExtension.has_extension(collection))
8585
self.assertIn("item_assets", collection.extra_fields)
86+
87+
def test_migrates_pre_1_0_0_rc1_stats_summary(self) -> None:
88+
collection = pystac.Collection.from_file(
89+
TestCases.get_path(
90+
"data-files/examples/1.0.0-beta.2/collection-spec/"
91+
"examples/sentinel2.json"
92+
)
93+
)
94+
datetime_summary = get_required(
95+
collection.summaries.get_range("datetime"), collection.summaries, "datetime"
96+
)
97+
self.assertEqual(datetime_summary.minimum, "2015-06-23T00:00:00Z")
98+
self.assertEqual(datetime_summary.maximum, "2019-07-10T13:44:56Z")

0 commit comments

Comments
 (0)