@@ -298,6 +298,8 @@ def is_excluded(self, instance: object) -> bool:
298298 return True
299299 elif self ._is_starlette_request_cls (instance ):
300300 return True
301+ elif self ._is_builtin (instance ):
302+ return True
301303 else :
302304 return False
303305
@@ -309,6 +311,9 @@ def _is_starlette_request_cls(self, instance: object) -> bool:
309311 and isinstance (instance , type ) \
310312 and issubclass (instance , starlette .requests .Request )
311313
314+ def _is_builtin (self , instance : object ) -> bool :
315+ return inspect .isbuiltin (instance )
316+
312317
313318def wire ( # noqa: C901
314319 container : Container ,
@@ -476,7 +481,7 @@ def _unpatch_attribute(patched: PatchedAttribute) -> None:
476481 setattr (patched .member , patched .name , patched .marker )
477482
478483
479- def _fetch_reference_injections (
484+ def _fetch_reference_injections ( # noqa: C901
480485 fn : Callable [..., Any ],
481486) -> Tuple [Dict [str , Any ], Dict [str , Any ]]:
482487 # Hotfix, see:
@@ -488,7 +493,15 @@ def _fetch_reference_injections(
488493 )):
489494 fn = fn .__init__
490495
491- signature = inspect .signature (fn )
496+ try :
497+ signature = inspect .signature (fn )
498+ except ValueError as exception :
499+ if 'no signature found' in str (exception ):
500+ return {}, {}
501+ elif 'not supported by signature' in str (exception ):
502+ return {}, {}
503+ else :
504+ raise exception
492505
493506 injections = {}
494507 closing = {}
@@ -874,9 +887,13 @@ def exec_module(self, module):
874887 super ().exec_module (module )
875888 loader .wire_module (module )
876889
890+ class ExtensionFileLoader (importlib .machinery .ExtensionFileLoader ):
891+ ...
892+
877893 loader_details = [
878894 (SourcelessFileLoader , importlib .machinery .BYTECODE_SUFFIXES ),
879895 (SourceFileLoader , importlib .machinery .SOURCE_SUFFIXES ),
896+ (ExtensionFileLoader , importlib .machinery .EXTENSION_SUFFIXES ),
880897 ]
881898
882899 self ._path_hook = importlib .machinery .FileFinder .path_hook (* loader_details )
0 commit comments