File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -143,8 +143,8 @@ def sun_elevation(self, v: Optional[float]) -> None:
143
143
def get_schema_uri (cls ) -> str :
144
144
return SCHEMA_URI
145
145
146
- @staticmethod
147
- def ext (obj : T ) -> "ViewExtension[T]" :
146
+ @classmethod
147
+ def ext (cls , obj : T ) -> "ViewExtension[T]" :
148
148
"""Extends the given STAC Object with properties from the :stac-ext:`View
149
149
Geometry Extension <scientific>`.
150
150
@@ -156,8 +156,10 @@ def ext(obj: T) -> "ViewExtension[T]":
156
156
pystac.ExtensionTypeError : If an invalid object type is passed.
157
157
"""
158
158
if isinstance (obj , pystac .Item ):
159
+ cls .validate_has_extension (obj )
159
160
return cast (ViewExtension [T ], ItemViewExtension (obj ))
160
161
elif isinstance (obj , pystac .Asset ):
162
+ cls .validate_has_extension (obj )
161
163
return cast (ViewExtension [T ], AssetViewExtension (obj ))
162
164
else :
163
165
raise pystac .ExtensionTypeError (
Original file line number Diff line number Diff line change @@ -220,6 +220,24 @@ def test_sun_elevation(self) -> None:
220
220
# Validate
221
221
view_item .validate ()
222
222
223
+ def test_extension_not_implemented (self ) -> None :
224
+ # Should raise exception if Item does not include extension URI
225
+ item = pystac .Item .from_file (self .example_uri )
226
+ item .stac_extensions .remove (ViewExtension .get_schema_uri ())
227
+
228
+ with self .assertRaises (pystac .ExtensionNotImplemented ):
229
+ _ = ViewExtension .ext (item )
230
+
231
+ # Should raise exception if owning Item does not include extension URI
232
+ asset = item .assets ["blue" ]
233
+
234
+ with self .assertRaises (pystac .ExtensionNotImplemented ):
235
+ _ = ViewExtension .ext (asset )
236
+
237
+ # Should succeed if Asset has no owner
238
+ ownerless_asset = pystac .Asset .from_dict (asset .to_dict ())
239
+ _ = ViewExtension .ext (ownerless_asset )
240
+
223
241
224
242
class ViewSummariestest (unittest .TestCase ):
225
243
def setUp (self ) -> None :
You can’t perform that action at this time.
0 commit comments