Skip to content

Commit 75df80a

Browse files
committed
Fix step 0 being returned incorrectly for steprange parameters
1 parent a248974 commit 75df80a

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

ecmwf/opendata/client.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,27 @@
4545

4646
ONCE = 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
104139
class 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

Comments
 (0)