4545
4646ONCE = set ()
4747
48+ STEP_RANGE_PARAMS = [
49+ "mn2t3" ,
50+ "mx2t3" ,
51+ "mn2t6" ,
52+ "mx2t6" ,
53+ "tpg1" ,
54+ "tpg5" ,
55+ "tpg10" ,
56+ "tpg20" ,
57+ "tpg25" ,
58+ "tpg50" ,
59+ "tpg100" ,
60+ "10fgg10" ,
61+ "10fgg15" ,
62+ "10fgg25" ,
63+ "swhg2" ,
64+ "swhg4" ,
65+ "swhg6" ,
66+ "swhg8" ,
67+ ]
68+
4869_ATTRIBUTION_SHOWN = False # module-level guard to avoid spamming
4970
5071
@@ -100,7 +121,21 @@ def levenshtein(a, b):
100121 word ,
101122 )
102123
103-
124+ def parse_step_range_params (request ):
125+ for srp in STEP_RANGE_PARAMS :
126+ if srp in (request or {}).get ("param" , "" ) and 0 in (request or {}).get (
127+ "step" , []
128+ ):
129+ warning_once (
130+ f"Downloading step range parameter { srp } , no step=0 removing from request."
131+ )
132+ steps = request .get ("step" , [])
133+ if isinstance (steps , int ):
134+ steps = [steps ]
135+ steps = [s for s in steps if s != 0 ]
136+ if steps == []:
137+ raise ValueError ("No valid steps left in request after removing step=0" )
138+ request ["step" ] = steps
104139class Result :
105140 def __init__ (self , urls , target , dates , for_urls , for_index ):
106141 self .urls = urls
@@ -190,6 +225,7 @@ def url(self):
190225 return self ._url
191226
192227 def retrieve (self , request = None , target = None , ** kwargs ):
228+ parse_step_range_params (request )
193229 result = self ._get_urls (request , target = target , use_index = True , ** kwargs )
194230
195231 if self .use_sas_token :
@@ -205,6 +241,7 @@ def retrieve(self, request=None, target=None, **kwargs):
205241 return result
206242
207243 def download (self , request = None , target = None , ** kwargs ):
244+ parse_step_range_params (request )
208245 result = self ._get_urls (request , target = target , use_index = False , ** kwargs )
209246
210247 if self .use_sas_token :
0 commit comments