|
19 | 19 | PropertiesExtension, |
20 | 20 | ) |
21 | 21 | from pystac.extensions.classification import Classification |
| 22 | +from pystac.extensions.hooks import ExtensionHooks |
22 | 23 | from pystac.extensions.raster import DataType |
| 24 | +from pystac.serialization.identify import STACJSONDescription, STACVersionID |
23 | 25 | from pystac.utils import StringEnum, get_required |
24 | 26 |
|
25 | 27 | T = TypeVar( |
@@ -1718,6 +1720,7 @@ class _AssetMLMExtension(ABC): |
1718 | 1720 | Abstract base class for (derived) MLM asset extensions. |
1719 | 1721 | """ |
1720 | 1722 |
|
| 1723 | + name: Literal["mlm"] = "mlm" |
1721 | 1724 | asset: pystac.Asset |
1722 | 1725 | asset_href: str |
1723 | 1726 | properties: dict[str, Any] |
@@ -2009,3 +2012,41 @@ def __init__(self, item_asset: pystac.ItemAssetDefinition): |
2009 | 2012 |
|
2010 | 2013 | def __repr__(self) -> str: |
2011 | 2014 | return f"<ItemAssetsMLMExtension ItemAssetDefinition={self.asset_defn}" |
| 2015 | + |
| 2016 | + |
| 2017 | +class MLMExtensionHooks(ExtensionHooks): |
| 2018 | + schema_uri: str = SCHEMA_URI_PATTERN.format(version=DEFAULT_VERSION) |
| 2019 | + prev_extension_ids = { |
| 2020 | + SCHEMA_URI_PATTERN.format(version=v) |
| 2021 | + for v in SUPPORTED_VERSIONS |
| 2022 | + if v != DEFAULT_VERSION |
| 2023 | + } |
| 2024 | + stac_object_types = {pystac.STACObjectType.ITEM, pystac.STACObjectType.COLLECTION} |
| 2025 | + |
| 2026 | + def migrate( |
| 2027 | + self, obj: dict[str, Any], version: STACVersionID, info: STACJSONDescription |
| 2028 | + ) -> None: |
| 2029 | + # migrate from 1.0.0 to 1.1.0 |
| 2030 | + if SCHEMA_URI_PATTERN.format(version="1.0.0") in info.extensions: |
| 2031 | + # no migrations needed |
| 2032 | + pass |
| 2033 | + |
| 2034 | + # migrate from 1.1.0 to 1.2.0 |
| 2035 | + if SCHEMA_URI_PATTERN.format(version="1.1.0") in info.extensions: |
| 2036 | + # no migrations needed |
| 2037 | + pass |
| 2038 | + |
| 2039 | + # migrate from 1.2.0 to 1.3.0 |
| 2040 | + if SCHEMA_URI_PATTERN.format(version="1.2.0") in info.extensions: |
| 2041 | + # no migration needed |
| 2042 | + pass |
| 2043 | + |
| 2044 | + # migrate from 1.3.0 to 1.4.0 |
| 2045 | + if SCHEMA_URI_PATTERN.format(version="1.3.0") in info.extensions: |
| 2046 | + # no migration needed |
| 2047 | + pass |
| 2048 | + |
| 2049 | + super().migrate(obj, version, info) |
| 2050 | + |
| 2051 | + |
| 2052 | +MLM_EXTENSION_HOOKS: ExtensionHooks = MLMExtensionHooks() |
0 commit comments