File tree 1 file changed +17
-2
lines changed
1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -415,7 +415,7 @@ def wire( # noqa: C901
415
415
providers_map = ProvidersMap (container )
416
416
417
417
for module in modules :
418
- for member_name , member in inspect . getmembers (module ):
418
+ for member_name , member in _get_members_and_annotated (module ):
419
419
if _inspect_filter .is_excluded (member ):
420
420
continue
421
421
@@ -426,7 +426,7 @@ def wire( # noqa: C901
426
426
elif inspect .isclass (member ):
427
427
cls = member
428
428
try :
429
- cls_members = inspect . getmembers (cls )
429
+ cls_members = _get_members_and_annotated (cls )
430
430
except Exception : # noqa
431
431
# Hotfix, see: https://github.com/ets-labs/python-dependency-injector/issues/441
432
432
continue
@@ -1025,3 +1025,18 @@ def _patched(*args, **kwargs):
1025
1025
patched .closing ,
1026
1026
)
1027
1027
return cast (F , _patched )
1028
+
1029
+
1030
+ def _get_members_and_annotated (obj : Any ) -> list [tuple [str , Any ]]:
1031
+ members = inspect .getmembers (obj )
1032
+ try :
1033
+ annotations = inspect .get_annotations (obj )
1034
+ except Exception :
1035
+ annotations = {}
1036
+ for annotation_name , annotation in annotations .items ():
1037
+ if get_origin (annotation ) is Annotated :
1038
+ args = get_args (annotation )
1039
+ if len (args ) > 1 :
1040
+ member = args [1 ]
1041
+ members .append ((annotation_name , member ))
1042
+ return members
You can’t perform that action at this time.
0 commit comments