Skip to content

Invalid variable name results in confusing MultiAdaptorNoDataError #149

@robmarkcole

Description

@robmarkcole

Is your feature request related to a problem? Please describe.

Example below:

import cdsapi

dataset = "reanalysis-era5-land-monthly-means"
request = {
    "product_type": ["monthly_averaged_reanalysis"],
    "variable": ["tp"], # total_precipitation
    "year": ["2025"],
    "month": ["07"],
    "time": ["00:00"],
    "data_format": "netcdf",
    "download_format": "unarchived",
    "area": "global"
}

client = cdsapi.Client()
client.retrieve(dataset, request).download()

Raises error:

---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
Cell In[11], [line 2](vscode-notebook-cell:?execution_count=11&line=2)
      1 client = cdsapi.Client()
----> [2](vscode-notebook-cell:?execution_count=11&line=2) client.retrieve(dataset, request).download()

File ~/gitlab/climate-data-store/.venv/lib/python3.11/site-packages/ecmwf/datastores/legacy_client.py:167, in LegacyClient.retrieve(self, name, request, target)
    165 submitted: datastores.Remote | datastores.Results
    166 if self.wait_until_complete:
--> [167](https://file+.vscode-resource.vscode-cdn.net/Users/robin.cole/gitlab/climate-data-store/~/gitlab/climate-data-store/.venv/lib/python3.11/site-packages/ecmwf/datastores/legacy_client.py:167)     submitted = self.client.submit_and_wait_on_results(
    168         collection_id=name,
    169         request=request,
    170     )
    171 else:
    172     submitted = self.client.submit(
    173         collection_id=name,
    174         request=request,
    175     )

File ~/gitlab/climate-data-store/.venv/lib/python3.11/site-packages/ecmwf/datastores/client.py:414, in Client.submit_and_wait_on_results(self, collection_id, request)
    398 def submit_and_wait_on_results(
    399     self, collection_id: str, request: dict[str, Any]
    400 ) -> datastores.Results:
    401     """Submit a request and wait for the results to be ready.
    402 
...
    100 response.raise_for_status()

HTTPError: 400 Client Error: Bad Request for url: https://cds.climate.copernicus.eu/api/retrieve/v1/jobs/7e7c72fc-2191-4cd6-86f0-18fa957435d2/results
The job has failed
The job failed with: MultiAdaptorNoDataError

Describe the solution you'd like

Suggest a more informative error description, or the library could handle validation of variables

Describe alternatives you've considered

No response

Additional context

No response

Organisation

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions