diff --git a/cads_adaptors/adaptors/cadsobs/adaptor.py b/cads_adaptors/adaptors/cadsobs/adaptor.py index 89a871eb..fe94948c 100644 --- a/cads_adaptors/adaptors/cadsobs/adaptor.py +++ b/cads_adaptors/adaptors/cadsobs/adaptor.py @@ -11,6 +11,7 @@ class ObservationsAdaptor(AbstractCdsAdaptor): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.download_format = "as_source" + self.mapped_request: Request = dict() def retrieve(self, request): try: diff --git a/cads_adaptors/adaptors/cds.py b/cads_adaptors/adaptors/cds.py index 152989de..034a2c97 100644 --- a/cads_adaptors/adaptors/cds.py +++ b/cads_adaptors/adaptors/cds.py @@ -37,7 +37,6 @@ def __init__( # The following attributes are updated during the retireve method self.input_request: Request = dict() - self.mapped_request: Request = dict() self.download_format: str = "zip" self.receipt: bool = False self.schemas: list[dict[str, Any]] = config.pop("schemas", []) @@ -313,12 +312,6 @@ def normalise_request(self, request: Request) -> Request: random_key = str(randint(0, 2**128)) request["__part_of_request_under_embargo"] = random_key - # At this point, the self.mapped_requests could be used to create a requesthash - - # For backwards compatibility, we set self.mapped_request to the first request, and assume - # it is the only one. Adaptors should be updated to use self.mapped_requests instead. - self.mapped_request = self.mapped_requests[0] - self.context.info( f"Request mapped to (collection_id={self.collection_id}):\n{self.mapped_requests}" ) diff --git a/cads_adaptors/adaptors/mars.py b/cads_adaptors/adaptors/mars.py index 144ccee9..2554fe02 100644 --- a/cads_adaptors/adaptors/mars.py +++ b/cads_adaptors/adaptors/mars.py @@ -168,33 +168,33 @@ def pre_mapping_modifications(self, request: dict[str, Any]) -> dict[str, Any]: request = super().pre_mapping_modifications(request) # TODO: Remove legacy syntax all together - data_format = request.pop("format", "grib") - data_format = request.pop("data_format", data_format) + data_format = request.get("format", "grib") + data_format = request.get("data_format", data_format) # Account from some horribleness from the legacy system: if data_format.lower() in ["netcdf.zip", "netcdf_zip", "netcdf4.zip"]: - self.data_format = "netcdf" + data_format = "netcdf" request.setdefault("download_format", "zip") + request.setdefault("data_format", adaptor_tools.handle_data_format(data_format)) + default_download_format = "as_source" download_format = request.pop("download_format", default_download_format) self.set_download_format( download_format, default_download_format=default_download_format ) - # Apply any mapping - mapped_formats = self.apply_mapping({"data_format": data_format}) - # TODO: Add this extra mapping to apply_mapping? - self.data_format = adaptor_tools.handle_data_format( - mapped_formats["data_format"] - ) - return request def retrieve_list_of_results(self, request: dict[str, Any]) -> list[str]: # Call normalise_request to set self.mapped_requests request = self.normalise_request(request) + data_format = request.get("data_format", "grib") + for req in self.mapped_requests: + data_format = req.pop("data_format") or data_format + self.data_format = data_format + result = execute_mars( self.mapped_requests, context=self.context, diff --git a/cads_adaptors/adaptors/multi.py b/cads_adaptors/adaptors/multi.py index 9feee442..232d29d8 100644 --- a/cads_adaptors/adaptors/multi.py +++ b/cads_adaptors/adaptors/multi.py @@ -8,6 +8,10 @@ class MultiAdaptor(AbstractCdsAdaptor): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.mapped_request: Request = dict() + @property def extract_subrequest_kws(self) -> list[str]: # extract keywords from a function signature