From eacb190907488c5c66fff611aca5f35298692e38 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Mon, 26 Apr 2021 22:07:48 -0400 Subject: [PATCH] Improve wiring fault tolerance --- src/dependency_injector/wiring.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/dependency_injector/wiring.py b/src/dependency_injector/wiring.py index 029cc069..6f54c993 100644 --- a/src/dependency_injector/wiring.py +++ b/src/dependency_injector/wiring.py @@ -342,11 +342,17 @@ def wire( # noqa: C901 _patch_fn(module, member_name, member, providers_map) elif inspect.isclass(member): cls = member - for cls_member_name, cls_member in inspect.getmembers(cls): - if _is_marker(cls_member): - _patch_attribute(cls, cls_member_name, cls_member, providers_map) - elif _is_method(cls_member): - _patch_method(cls, cls_member_name, cls_member, providers_map) + try: + cls_members = inspect.getmembers(cls) + except Exception: # noqa + # Hotfix, see: https://github.com/ets-labs/python-dependency-injector/issues/441 + continue + else: + for cls_member_name, cls_member in cls_members: + if _is_marker(cls_member): + _patch_attribute(cls, cls_member_name, cls_member, providers_map) + elif _is_method(cls_member): + _patch_method(cls, cls_member_name, cls_member, providers_map) for patched in _patched_registry.get_callables_from_module(module): _bind_injections(patched, providers_map)