From b50325dbb45181bd5a81733c48fa815ec4f864ca Mon Sep 17 00:00:00 2001 From: Colm Talbot <colm.talbot@ligo.org> Date: Thu, 15 Apr 2021 16:16:29 +0000 Subject: [PATCH] Resolve "Unclear Error Message if module other than bilby is specified" --- bilby/core/prior/dict.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/bilby/core/prior/dict.py b/bilby/core/prior/dict.py index 7c82b4f4..dfe36dc5 100644 --- a/bilby/core/prior/dict.py +++ b/bilby/core/prior/dict.py @@ -154,19 +154,21 @@ class PriorDict(dict): @classmethod def _get_from_json_dict(cls, prior_dict): try: - cls = getattr( + class_ = getattr( import_module(prior_dict["__module__"]), prior_dict["__name__"]) except ImportError: logger.debug("Cannot import prior module {}.{}".format( prior_dict["__module__"], prior_dict["__name__"] )) + class_ = cls except KeyError: logger.debug("Cannot find module name to load") + class_ = cls for key in ["__module__", "__name__", "__prior_dict__"]: if key in prior_dict: del prior_dict[key] - obj = cls(dict()) + obj = class_(dict()) obj.from_dictionary(prior_dict) return obj @@ -206,7 +208,15 @@ class PriorDict(dict): module = __name__.replace( '.' + os.path.basename(__file__).replace('.py', ''), '' ) - cls = getattr(import_module(module), cls, cls) + try: + cls = getattr(import_module(module), cls, cls) + except ModuleNotFoundError: + logger.error( + "Cannot import prior class {} for entry: {}={}".format( + cls, key, val + ) + ) + raise if key.lower() in ["conversion_function", "condition_func"]: setattr(self, key, cls) elif isinstance(cls, str): -- GitLab