From ded60eff186f8b987c5c95d91a659461d8d5964f Mon Sep 17 00:00:00 2001 From: Lewis Blake Date: Tue, 26 Nov 2024 10:42:35 +0100 Subject: [PATCH 1/2] obs_name debugging WIP --- pyaerocom/aeroval/collections.py | 3 ++- pyaerocom/aeroval/obsentry.py | 1 + tests/aeroval/test_experiment_output.py | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pyaerocom/aeroval/collections.py b/pyaerocom/aeroval/collections.py index 79c46c6a8..b888b3e47 100644 --- a/pyaerocom/aeroval/collections.py +++ b/pyaerocom/aeroval/collections.py @@ -148,6 +148,7 @@ def add_entry(self, key: str, entry: dict | ObsEntry): if isinstance(entry, dict): entry = ObsEntry(**entry) self._entries[key] = entry + self._entries[key].obs_name = self.get_web_interface_name(key) def remove_entry(self, key: str): if key in self._entries: @@ -164,7 +165,7 @@ def get_entry(self, key: str) -> ObsEntry: """ try: entry = self._entries[key] - entry.obs_name = self.get_web_interface_name(key) + # entry.obs_name = self.get_web_interface_name(key) return entry except (KeyError, AttributeError): raise EntryNotAvailable(f"no such entry {key}") diff --git a/pyaerocom/aeroval/obsentry.py b/pyaerocom/aeroval/obsentry.py index 45b6e5244..a15327db7 100644 --- a/pyaerocom/aeroval/obsentry.py +++ b/pyaerocom/aeroval/obsentry.py @@ -104,6 +104,7 @@ class ObsEntry(BaseModel): ###################### ## Optional attributes ###################### + obs_name: str | None = None obs_ts_type_read: str | dict | None = None obs_vert_type: Literal["Column", "Profile", "Surface", "ModelLevel"] = "Surface" obs_aux_requires: dict[str, dict] = {} diff --git a/tests/aeroval/test_experiment_output.py b/tests/aeroval/test_experiment_output.py index 522516948..868937929 100644 --- a/tests/aeroval/test_experiment_output.py +++ b/tests/aeroval/test_experiment_output.py @@ -308,6 +308,7 @@ def test_Experiment_Output_clean_json_files_CFG1_INVALIDOBS(eval_config: dict): cfg.obs_cfg.add_entry("obs1", cfg.obs_cfg.get_entry("AERONET-Sun")) proc = ExperimentProcessor(cfg) proc.run() + cfg.obs_cfg.remove_entry("obs1") modified = proc.exp_output.clean_json_files() assert len(modified) == 13 From 917d2fd596cc99d27e07d4d7d7374279718d49ad Mon Sep 17 00:00:00 2001 From: Lewis Blake Date: Tue, 26 Nov 2024 14:16:28 +0100 Subject: [PATCH 2/2] don't use obs_entry getter in test --- pyaerocom/aeroval/collections.py | 1 - pyaerocom/aeroval/obsentry.py | 2 +- tests/aeroval/test_experiment_output.py | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pyaerocom/aeroval/collections.py b/pyaerocom/aeroval/collections.py index b888b3e47..fd3fd7a81 100644 --- a/pyaerocom/aeroval/collections.py +++ b/pyaerocom/aeroval/collections.py @@ -165,7 +165,6 @@ def get_entry(self, key: str) -> ObsEntry: """ try: entry = self._entries[key] - # entry.obs_name = self.get_web_interface_name(key) return entry except (KeyError, AttributeError): raise EntryNotAvailable(f"no such entry {key}") diff --git a/pyaerocom/aeroval/obsentry.py b/pyaerocom/aeroval/obsentry.py index a15327db7..6b1e8302c 100644 --- a/pyaerocom/aeroval/obsentry.py +++ b/pyaerocom/aeroval/obsentry.py @@ -104,7 +104,7 @@ class ObsEntry(BaseModel): ###################### ## Optional attributes ###################### - obs_name: str | None = None + obs_name: str | None = None # not expected to be set directly, rather set by ObsCollection obs_ts_type_read: str | dict | None = None obs_vert_type: Literal["Column", "Profile", "Surface", "ModelLevel"] = "Surface" obs_aux_requires: dict[str, dict] = {} diff --git a/tests/aeroval/test_experiment_output.py b/tests/aeroval/test_experiment_output.py index 868937929..80cf436b2 100644 --- a/tests/aeroval/test_experiment_output.py +++ b/tests/aeroval/test_experiment_output.py @@ -305,7 +305,7 @@ def test_Experiment_Output_clean_json_files_CFG1_INVALIDMOD(eval_config: dict): @pytest.mark.parametrize("cfg", ["cfgexp1"]) def test_Experiment_Output_clean_json_files_CFG1_INVALIDOBS(eval_config: dict): cfg = EvalSetup(**eval_config) - cfg.obs_cfg.add_entry("obs1", cfg.obs_cfg.get_entry("AERONET-Sun")) + cfg.obs_cfg.add_entry("obs1", eval_config["obs_cfg"]["AERONET-Sun"]) proc = ExperimentProcessor(cfg) proc.run() cfg.obs_cfg.remove_entry("obs1")