From c45829b50aa2a9e601d7fdab9506f6aa0febd822 Mon Sep 17 00:00:00 2001 From: David Ackerman Date: Fri, 30 Jul 2021 13:47:37 -0400 Subject: [PATCH 1/2] Add exception handling when config not found in store --- dacapo/store/config_store.py | 5 +++++ dacapo/store/mongo_config_store.py | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/dacapo/store/config_store.py b/dacapo/store/config_store.py index 9ae9ceb9..af52310f 100644 --- a/dacapo/store/config_store.py +++ b/dacapo/store/config_store.py @@ -9,6 +9,11 @@ class ConfigStore(ABC): """Base class for configuration stores. """ + @abstractmethod + def no_such_config_exception_handler(func): + """Error handling when config name not found""" + pass + @abstractmethod def store_run_config(self, run_config): """Store a run config. This should also store the configs that are part diff --git a/dacapo/store/mongo_config_store.py b/dacapo/store/mongo_config_store.py index 4d6393f4..a2110b0d 100644 --- a/dacapo/store/mongo_config_store.py +++ b/dacapo/store/mongo_config_store.py @@ -31,11 +31,26 @@ def __init__(self, db_host, db_name): self.__open_collections() self.__init_db() + def no_such_config_exception_handler(func): + + def inner_function(*args, **kwargs): + + try: + return func(*args, **kwargs) + except TypeError: + config_type = func.__name__.split("_")[1] + raise Exception( + f"{config_type}: {args[1]} not present in config store " + f"during call to {func.__name__}") + + return inner_function + def store_run_config(self, run_config): run_doc = converter.unstructure(run_config) self.__save_insert(self.runs, run_doc) + @no_such_config_exception_handler def retrieve_run_config(self, run_name): run_doc = self.runs.find_one( @@ -55,11 +70,13 @@ def store_task_config(self, task_config): task_doc = converter.unstructure(task_config) self.__save_insert(self.tasks, task_doc) + @no_such_config_exception_handler def retrieve_task_config(self, task_name): task_doc = self.tasks.find_one( {"name": task_name}, projection={"_id": False}) + print("doc", task_doc, converter.structure(task_doc, TaskConfig)) return converter.structure(task_doc, TaskConfig) def retrieve_task_config_names(self): @@ -74,6 +91,7 @@ def store_architecture_config(self, architecture_config): architecture_doc = converter.unstructure(architecture_config) self.__save_insert(self.architectures, architecture_doc) + @no_such_config_exception_handler def retrieve_architecture_config(self, architecture_name): architecture_doc = self.architectures.find_one( @@ -93,6 +111,7 @@ def store_trainer_config(self, trainer_config): trainer_doc = converter.unstructure(trainer_config) self.__save_insert(self.trainers, trainer_doc) + @no_such_config_exception_handler def retrieve_trainer_config(self, trainer_name): trainer_doc = self.trainers.find_one( @@ -112,6 +131,7 @@ def store_dataset_config(self, dataset_config): dataset_doc = converter.unstructure(dataset_config) self.__save_insert(self.datasets, dataset_doc) + @no_such_config_exception_handler def retrieve_dataset_config(self, dataset_name): dataset_doc = self.datasets.find_one( From ec32336b98d116037d686ada0eb580eed720a76f Mon Sep 17 00:00:00 2001 From: David Ackerman Date: Fri, 30 Jul 2021 15:26:34 -0400 Subject: [PATCH 2/2] Remove print statement --- dacapo/store/mongo_config_store.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dacapo/store/mongo_config_store.py b/dacapo/store/mongo_config_store.py index a2110b0d..abca0d74 100644 --- a/dacapo/store/mongo_config_store.py +++ b/dacapo/store/mongo_config_store.py @@ -76,7 +76,6 @@ def retrieve_task_config(self, task_name): task_doc = self.tasks.find_one( {"name": task_name}, projection={"_id": False}) - print("doc", task_doc, converter.structure(task_doc, TaskConfig)) return converter.structure(task_doc, TaskConfig) def retrieve_task_config_names(self):