@@ -5965,6 +5965,53 @@ def test_session(self) -> None:
5965
5965
)
5966
5966
5967
5967
5968
+ @requires_pydap
5969
+ @network
5970
+ @pytest .mark .parametrize ("protocol" , ["dap2" , "dap4" ])
5971
+ def test_batchdap4_downloads (protocol ) -> None :
5972
+ """Test that in dap4, all dimensions are downloaded at once"""
5973
+ import pydap
5974
+ from requests_cache import CachedSession
5975
+
5976
+ _version_ = Version (pydap .__version__ )
5977
+ session = CachedSession ()
5978
+ session .cache .clear ()
5979
+ url = "https://test.opendap.org/opendap/hyrax/data/nc/coads_climatology.nc"
5980
+
5981
+ open_dataset (
5982
+ url .replace ("https" , protocol ),
5983
+ engine = "pydap" ,
5984
+ session = session ,
5985
+ decode_times = False ,
5986
+ )
5987
+ if protocol == "dap4" :
5988
+ if _version_ > Version ("3.5.5" ):
5989
+ # should download 2 urls only (1 dmr and 1 dap)
5990
+ assert len (session .cache .urls ()) == 2
5991
+ else :
5992
+ assert len (session .cache .urls ()) == 4
5993
+ # das + dds + 3 dods urls
5994
+ elif protocol == "dap2" :
5995
+ assert len (session .cache .urls ()) == 5
5996
+
5997
+
5998
+ @requires_pydap
5999
+ @network
6000
+ def test_batch_warnswithdap2 () -> None :
6001
+ from requests_cache import CachedSession
6002
+
6003
+ session = CachedSession ()
6004
+ session .cache .clear ()
6005
+ url = "dap2://test.opendap.org/opendap/hyrax/data/nc/coads_climatology.nc"
6006
+ with pytest .warns (UserWarning ):
6007
+ open_dataset (
6008
+ url , engine = "pydap" , session = session , batch = True , decode_times = False
6009
+ )
6010
+
6011
+ # no batching is supported here
6012
+ assert len (session .cache .urls ()) == 5
6013
+
6014
+
5968
6015
class TestEncodingInvalid :
5969
6016
def test_extract_nc4_variable_encoding (self ) -> None :
5970
6017
var = xr .Variable (("x" ,), [1 , 2 , 3 ], {}, {"foo" : "bar" })
0 commit comments