From 27a327402b863fb02ba3e922cb7f73f171e12d03 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 5 Oct 2024 11:09:39 +0200 Subject: [PATCH] chore: improve behavior by validating earlier (and with exception handling) --- freqtrade/resolvers/iresolver.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index f6727ca97..9aa103a7e 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -109,15 +109,21 @@ class IResolver: if enum_failed: return iter([None]) + def is_valid_class(obj): + try: + return ( + inspect.isclass(obj) + and issubclass(obj, cls.object_type) + and obj is not cls.object_type + and obj.__module__ == module_name + ) + except TypeError: + return False + valid_objects_gen = ( (obj, inspect.getsource(module)) - for name, obj in inspect.getmembers(module, inspect.isclass) - if ( - (object_name is None or object_name == name) - and issubclass(obj, cls.object_type) - and obj is not cls.object_type - and obj.__module__ == module_name - ) + for name, obj in inspect.getmembers(module, is_valid_class) + if (object_name is None or object_name == name) ) # The __module__ check ensures we only use strategies that are defined in this folder. return valid_objects_gen