From cb95f165b2c2a0a04774a572b423f5bcf01aeb41 Mon Sep 17 00:00:00 2001 From: EddyCMWF Date: Thu, 31 Jul 2025 15:13:21 +0100 Subject: [PATCH 1/5] reorder --- cads_adaptors/adaptors/mars.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cads_adaptors/adaptors/mars.py b/cads_adaptors/adaptors/mars.py index 144ccee9..f39d1264 100644 --- a/cads_adaptors/adaptors/mars.py +++ b/cads_adaptors/adaptors/mars.py @@ -168,32 +168,28 @@ 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) + self.data_format = request.pop("data_format", "grib") result = execute_mars( self.mapped_requests, From 8f51dde715d6d715ec44e253c793df9d239328c1 Mon Sep 17 00:00:00 2001 From: EddyCMWF Date: Thu, 31 Jul 2025 17:36:37 +0100 Subject: [PATCH 2/5] CDS-463 cads-adaptors on mini-cci --- cads_adaptors/adaptors/mars.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cads_adaptors/adaptors/mars.py b/cads_adaptors/adaptors/mars.py index f39d1264..4fbe2213 100644 --- a/cads_adaptors/adaptors/mars.py +++ b/cads_adaptors/adaptors/mars.py @@ -189,7 +189,10 @@ def pre_mapping_modifications(self, request: dict[str, Any]) -> dict[str, Any]: 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) - self.data_format = request.pop("data_format", "grib") + + for req in self.mapped_requests: + data_format = req.pop("data_format") + self.data_format = data_format result = execute_mars( self.mapped_requests, From b4494816a03c2f51984ff88c7b2c6b8b97ecc3cc Mon Sep 17 00:00:00 2001 From: EddyCMWF Date: Fri, 1 Aug 2025 07:58:35 +0100 Subject: [PATCH 3/5] data_format popped from all mapped requests --- cads_adaptors/adaptors/mars.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cads_adaptors/adaptors/mars.py b/cads_adaptors/adaptors/mars.py index 4fbe2213..fc369d23 100644 --- a/cads_adaptors/adaptors/mars.py +++ b/cads_adaptors/adaptors/mars.py @@ -191,7 +191,7 @@ def retrieve_list_of_results(self, request: dict[str, Any]) -> list[str]: request = self.normalise_request(request) for req in self.mapped_requests: - data_format = req.pop("data_format") + data_format = req.pop("data_format") or data_format self.data_format = data_format result = execute_mars( From 1c9f2ab0b6c4842ddd1a3c91e8afcb7db81c6046 Mon Sep 17 00:00:00 2001 From: EddyCMWF Date: Fri, 1 Aug 2025 08:20:17 +0100 Subject: [PATCH 4/5] data_format popped from all mapped requests --- cads_adaptors/adaptors/mars.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cads_adaptors/adaptors/mars.py b/cads_adaptors/adaptors/mars.py index fc369d23..2554fe02 100644 --- a/cads_adaptors/adaptors/mars.py +++ b/cads_adaptors/adaptors/mars.py @@ -190,6 +190,7 @@ 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 From a14f1de10bd22a918d156a2211c2af072598b7a4 Mon Sep 17 00:00:00 2001 From: EddyCMWF Date: Fri, 1 Aug 2025 13:47:49 +0100 Subject: [PATCH 5/5] removed self.mapped_request --- cads_adaptors/adaptors/cadsobs/adaptor.py | 1 + cads_adaptors/adaptors/cds.py | 7 ------- cads_adaptors/adaptors/multi.py | 4 ++++ 3 files changed, 5 insertions(+), 7 deletions(-) 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/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