From 83725e49dd63c0fc457b733195bf67ff1d62522c Mon Sep 17 00:00:00 2001 From: Sean Breckenridge Date: Fri, 10 Dec 2021 15:22:15 -0800 Subject: [PATCH] cli/query: allow querying dynamic functions --- my/core/query.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/my/core/query.py b/my/core/query.py index edcb41a..1496e74 100644 --- a/my/core/query.py +++ b/my/core/query.py @@ -54,6 +54,15 @@ def locate_function(module_name: str, function_name: str) -> Callable[[], Iterab for (fname, func) in inspect.getmembers(mod, inspect.isfunction): if fname == function_name: return func + try: + # incase the function is defined dynamically, + # like with a globals().setdefault(...) or a module-level __getattr__ function + func = getattr(mod, function_name) + if callable(func): + return func + except AttributeError: + # shouldn't raise an error here, just fall through + pass except Exception as e: raise QueryException(str(e)) raise QueryException(f"Could not find function '{function_name}' in '{module_name}'")