11import  json 
2- import  unittest 
32
43import  pytest 
54
109from  pystac .summaries  import  RangeSummary 
1110from  tests .utils  import  TestCases , assert_to_from_dict 
1211
13- 
1412EXAMPLE_URI  =  TestCases .get_path ("data-files/view/example-landsat8.json" )
1513
14+ 
1615@pytest .fixture  
1716def  item () ->  Item :
1817    return  pystac .Item .from_file (EXAMPLE_URI )
1918
2019
2120@pytest .fixture  
2221def  collection () ->  Collection :
23-     return  Collection .from_file (  TestCases . get_path ( 
24-         "data-files/view/collection-with-summaries.json" 
25-     )) 
22+     return  Collection .from_file (
23+         TestCases . get_path ( "data-files/view/collection-with-summaries.json" ) 
24+     )
2625
2726
2827def  test_to_from_dict () ->  None :
@@ -50,11 +49,13 @@ def test_apply() -> None:
5049    assert  ViewExtension .ext (item ).sun_azimuth  ==  4.0 
5150    assert  ViewExtension .ext (item ).sun_elevation  ==  5.0 
5251
52+ 
5353@pytest .mark .vcr () 
5454def  test_validate_view (item : Item ) ->  None :
5555    assert  ViewExtension .has_extension (item )
5656    item .validate ()
5757
58+ 
5859@pytest .mark .vcr () 
5960def  test_off_nadir (item : Item ) ->  None :
6061    # Get 
@@ -70,43 +71,55 @@ def test_off_nadir(item: Item) -> None:
7071    # Get from Asset 
7172    asset_no_prop  =  item .assets ["blue" ]
7273    asset_prop  =  item .assets ["red" ]
73-     assert   ViewExtension .ext (asset_no_prop ).off_nadir  ==  ViewExtension .ext (item ).off_nadir 
74+     assert  (
75+         ViewExtension .ext (asset_no_prop ).off_nadir  ==  ViewExtension .ext (item ).off_nadir 
76+     )
7477    assert  ViewExtension .ext (asset_prop ).off_nadir  ==  3.0 
7578
7679    # Set to Asset 
7780    asset_value  =  13.0 
7881    ViewExtension .ext (asset_no_prop ).off_nadir  =  asset_value 
79-     assert   ViewExtension .ext (asset_no_prop ).off_nadir  !=  ViewExtension .ext (item ).off_nadir 
82+     assert  (
83+         ViewExtension .ext (asset_no_prop ).off_nadir  !=  ViewExtension .ext (item ).off_nadir 
84+     )
8085    assert  ViewExtension .ext (asset_no_prop ).off_nadir  ==  asset_value 
8186
8287    # Validate 
8388    item .validate ()
8489
90+ 
8591@pytest .mark .vcr () 
8692def  test_incidence_angle (item : Item ) ->  None :
8793    # Get 
8894    assert  "view:incidence_angle"  in  item .properties 
8995    view_incidence_angle  =  ViewExtension .ext (item ).incidence_angle 
9096    assert  view_incidence_angle  is  not   None 
91-     assert    view_incidence_angle  ==  item .properties ["view:incidence_angle" ]
97+     assert  view_incidence_angle  ==  item .properties ["view:incidence_angle" ]
9298    # Set 
9399    ViewExtension .ext (item ).incidence_angle  =  view_incidence_angle  +  10 
94-     assert    view_incidence_angle  +  10  ==  item .properties ["view:incidence_angle" ]
100+     assert  view_incidence_angle  +  10  ==  item .properties ["view:incidence_angle" ]
95101    # Get from Asset 
96102    asset_no_prop  =  item .assets ["blue" ]
97103    asset_prop  =  item .assets ["red" ]
98-     assert   ViewExtension .ext (asset_no_prop ).incidence_angle  ==  ViewExtension .ext (item ).incidence_angle 
104+     assert  (
105+         ViewExtension .ext (asset_no_prop ).incidence_angle 
106+         ==  ViewExtension .ext (item ).incidence_angle 
107+     )
99108    assert  ViewExtension .ext (asset_prop ).incidence_angle  ==  4.0 
100109
101110    # Set to Asset 
102111    asset_value  =  14.0 
103112    ViewExtension .ext (asset_no_prop ).incidence_angle  =  asset_value 
104-     assert   ViewExtension .ext (asset_no_prop ).incidence_angle  !=  ViewExtension .ext (item ).incidence_angle 
113+     assert  (
114+         ViewExtension .ext (asset_no_prop ).incidence_angle 
115+         !=  ViewExtension .ext (item ).incidence_angle 
116+     )
105117    assert  ViewExtension .ext (asset_no_prop ).incidence_angle  ==  asset_value 
106118
107119    # Validate 
108120    item .validate ()
109121
122+ 
110123@pytest .mark .vcr () 
111124def  test_azimuth (item : Item ) ->  None :
112125    # Get 
@@ -122,18 +135,19 @@ def test_azimuth(item: Item) -> None:
122135    # Get from Asset 
123136    asset_no_prop  =  item .assets ["blue" ]
124137    asset_prop  =  item .assets ["red" ]
125-     assert    ViewExtension .ext (asset_no_prop ).azimuth  ==  ViewExtension .ext (item ).azimuth 
138+     assert  ViewExtension .ext (asset_no_prop ).azimuth  ==  ViewExtension .ext (item ).azimuth 
126139    assert  ViewExtension .ext (asset_prop ).azimuth  ==  5.0 
127140
128141    # Set to Asset 
129142    asset_value  =  15.0 
130143    ViewExtension .ext (asset_no_prop ).azimuth  =  asset_value 
131-     assert    ViewExtension .ext (asset_no_prop ).azimuth  !=  ViewExtension .ext (item ).azimuth 
144+     assert  ViewExtension .ext (asset_no_prop ).azimuth  !=  ViewExtension .ext (item ).azimuth 
132145    assert  ViewExtension .ext (asset_no_prop ).azimuth  ==  asset_value 
133146
134147    # Validate 
135148    item .validate ()
136149
150+ 
137151@pytest .mark .vcr () 
138152def  test_sun_azimuth (item : Item ) ->  None :
139153    # Get 
@@ -144,22 +158,29 @@ def test_sun_azimuth(item: Item) -> None:
144158
145159    # Set 
146160    ViewExtension .ext (item ).sun_azimuth  =  view_sun_azimuth  +  100 
147-     assert    view_sun_azimuth  +  100  ==  item .properties ["view:sun_azimuth" ]
161+     assert  view_sun_azimuth  +  100  ==  item .properties ["view:sun_azimuth" ]
148162    # Get from Asset 
149163    asset_no_prop  =  item .assets ["blue" ]
150164    asset_prop  =  item .assets ["red" ]
151-     assert   ViewExtension .ext (asset_no_prop ).sun_azimuth  ==  ViewExtension .ext (item ).sun_azimuth 
165+     assert  (
166+         ViewExtension .ext (asset_no_prop ).sun_azimuth 
167+         ==  ViewExtension .ext (item ).sun_azimuth 
168+     )
152169    assert  ViewExtension .ext (asset_prop ).sun_azimuth  ==  1.0 
153170
154171    # Set to Asset 
155172    asset_value  =  11.0 
156173    ViewExtension .ext (asset_no_prop ).sun_azimuth  =  asset_value 
157-     assert   ViewExtension .ext (asset_no_prop ).sun_azimuth  !=  ViewExtension .ext (item ).sun_azimuth 
174+     assert  (
175+         ViewExtension .ext (asset_no_prop ).sun_azimuth 
176+         !=  ViewExtension .ext (item ).sun_azimuth 
177+     )
158178    assert  ViewExtension .ext (asset_no_prop ).sun_azimuth  ==  asset_value 
159179
160180    # Validate 
161181    item .validate ()
162182
183+ 
163184@pytest .mark .vcr () 
164185def  test_sun_elevation (item : Item ) ->  None :
165186    # Get 
@@ -170,22 +191,29 @@ def test_sun_elevation(item: Item) -> None:
170191
171192    # Set 
172193    ViewExtension .ext (item ).sun_elevation  =  view_sun_elevation  +  10 
173-     assert    view_sun_elevation  +  10  ==  item .properties ["view:sun_elevation" ]
194+     assert  view_sun_elevation  +  10  ==  item .properties ["view:sun_elevation" ]
174195    # Get from Asset 
175196    asset_no_prop  =  item .assets ["blue" ]
176197    asset_prop  =  item .assets ["red" ]
177-     assert   ViewExtension .ext (asset_no_prop ).sun_elevation  ==  ViewExtension .ext (item ).sun_elevation 
198+     assert  (
199+         ViewExtension .ext (asset_no_prop ).sun_elevation 
200+         ==  ViewExtension .ext (item ).sun_elevation 
201+     )
178202    assert  ViewExtension .ext (asset_prop ).sun_elevation  ==  2.0 
179203
180204    # Set to Asset 
181205    asset_value  =  12.0 
182206    ViewExtension .ext (asset_no_prop ).sun_elevation  =  asset_value 
183-     assert   ViewExtension .ext (asset_no_prop ).sun_elevation  !=  ViewExtension .ext (item ).sun_elevation 
207+     assert  (
208+         ViewExtension .ext (asset_no_prop ).sun_elevation 
209+         !=  ViewExtension .ext (item ).sun_elevation 
210+     )
184211    assert  ViewExtension .ext (asset_no_prop ).sun_elevation  ==  asset_value 
185212
186213    # Validate 
187214    item .validate ()
188215
216+ 
189217def  test_extension_not_implemented (item : Item ) ->  None :
190218    # Should raise exception if Item does not include extension URI 
191219    item .stac_extensions .remove (ViewExtension .get_schema_uri ())
@@ -203,6 +231,7 @@ def test_extension_not_implemented(item: Item) -> None:
203231    ownerless_asset  =  pystac .Asset .from_dict (asset .to_dict ())
204232    _  =  ViewExtension .ext (ownerless_asset )
205233
234+ 
206235def  test_item_ext_add_to (item : Item ) ->  None :
207236    item .stac_extensions .remove (ViewExtension .get_schema_uri ())
208237    assert  ViewExtension .get_schema_uri () not  in   item .stac_extensions 
@@ -211,6 +240,7 @@ def test_item_ext_add_to(item: Item) -> None:
211240
212241    assert  ViewExtension .get_schema_uri () in  item .stac_extensions 
213242
243+ 
214244def  test_asset_ext_add_to (item : Item ) ->  None :
215245    item .stac_extensions .remove (ViewExtension .get_schema_uri ())
216246    assert  ViewExtension .get_schema_uri () not  in   item .stac_extensions 
@@ -220,10 +250,10 @@ def test_asset_ext_add_to(item: Item) -> None:
220250
221251    assert  ViewExtension .get_schema_uri () in  item .stac_extensions 
222252
253+ 
223254def  test_should_raise_exception_when_passing_invalid_extension_object () ->  None :
224255    with  pytest .raises (
225-         ExtensionTypeError ,
226-         match = r"^ViewExtension does not apply to type 'object'$" 
256+         ExtensionTypeError , match = r"^ViewExtension does not apply to type 'object'$" 
227257    ):
228258        # calling it wrong on purpose so ------v 
229259        ViewExtension .ext (object ())  # type: ignore 
@@ -236,65 +266,73 @@ def test_get_off_nadir_summaries(collection: Collection) -> None:
236266
237267    assert  {"minimum" : 0.5 , "maximum" : 7.3 } ==  off_nadirs .to_dict ()
238268
269+ 
239270def  test_get_incidence_angle_summaries (collection : Collection ) ->  None :
240-     incidence_angles  =  ViewExtension .summaries (
241-         collection , True 
242-     ).incidence_angle 
271+     incidence_angles  =  ViewExtension .summaries (collection , True ).incidence_angle 
243272
244273    assert  incidence_angles  is  not   None 
245274
246275    assert  {"minimum" : 23 , "maximum" : 35 } ==  incidence_angles .to_dict ()
247276
277+ 
248278def  test_get_azimuth_summaries (collection : Collection ) ->  None :
249279    azimuths  =  ViewExtension .summaries (collection , True ).azimuth 
250280
251281    assert  azimuths  is  not   None 
252282
253283    assert  {"minimum" : 20 , "maximum" : 186 } ==  azimuths .to_dict ()
254284
285+ 
255286def  test_get_sun_azimuth_summaries (collection : Collection ) ->  None :
256287    sun_azimuths  =  ViewExtension .summaries (collection , True ).sun_azimuth 
257288
258289    assert  sun_azimuths  is  not   None 
259290
260291    assert  {"minimum" : 48 , "maximum" : 78 } ==  sun_azimuths .to_dict ()
261292
293+ 
262294def  test_get_sun_elevation_summaries (collection : Collection ) ->  None :
263295    sun_elevations  =  ViewExtension .summaries (collection , True ).sun_elevation 
264296
265297    assert  sun_elevations  is  not   None 
266298
267299    assert  {"minimum" : 10 , "maximum" : 45 } ==  sun_elevations .to_dict ()
268300
301+ 
269302def  test_set_off_nadir_summaries (collection : Collection ) ->  None :
270303    view_summaries  =  ViewExtension .summaries (collection , True )
271304
272305    view_summaries .off_nadir  =  RangeSummary (0 , 10 )
273-     assert   {"minimum" : 0 , "maximum" : 10 } ==  view_summaries .off_nadir .to_dict ()
306+     assert  {"minimum" : 0 , "maximum" : 10 } ==  view_summaries .off_nadir .to_dict ()
307+ 
274308
275309def  test_set_incidence_angle_summaries (collection : Collection ) ->  None :
276310    view_summaries  =  ViewExtension .summaries (collection , True )
277311
278312    view_summaries .incidence_angle  =  RangeSummary (5 , 15 )
279-     assert   {"minimum" : 5 , "maximum" : 15 } ==  view_summaries .incidence_angle .to_dict ()
313+     assert  {"minimum" : 5 , "maximum" : 15 } ==  view_summaries .incidence_angle .to_dict ()
314+ 
280315
281316def  test_set_azimuth_summaries (collection : Collection ) ->  None :
282317    view_summaries  =  ViewExtension .summaries (collection , True )
283318
284319    view_summaries .azimuth  =  None 
285320    assert  view_summaries .azimuth  is  None 
286321
322+ 
287323def  test_set_sun_azimuth_summaries (collection : Collection ) ->  None :
288324    view_summaries  =  ViewExtension .summaries (collection , True )
289325
290326    view_summaries .sun_azimuth  =  RangeSummary (210 , 275 )
291-     assert   {"minimum" : 210 , "maximum" : 275 } ==  view_summaries .sun_azimuth .to_dict ()
327+     assert  {"minimum" : 210 , "maximum" : 275 } ==  view_summaries .sun_azimuth .to_dict ()
328+ 
292329
293330def  test_set_sun_elevation_summaries (collection : Collection ) ->  None :
294331    view_summaries  =  ViewExtension .summaries (collection , True )
295332
296333    view_summaries .sun_elevation  =  RangeSummary (- 10 , 38 )
297-     assert   {"minimum" : - 10 , "maximum" : 38 } ==  view_summaries .sun_elevation .to_dict ()
334+     assert  {"minimum" : - 10 , "maximum" : 38 } ==  view_summaries .sun_elevation .to_dict ()
335+ 
298336
299337def  test_summaries_adds_uri (collection : Collection ) ->  None :
300338    collection .stac_extensions  =  []
0 commit comments