@@ -939,48 +939,49 @@ def get_annotations(
939939    if  not  eval_str :
940940        return  dict (ann )
941941
942-     if  isinstance (obj , type ):
943-         # class 
944-         obj_globals  =  None 
945-         module_name  =  getattr (obj , "__module__" , None )
946-         if  module_name :
947-             module  =  sys .modules .get (module_name , None )
948-             if  module :
949-                 obj_globals  =  getattr (module , "__dict__" , None )
950-         obj_locals  =  dict (vars (obj ))
951-         unwrap  =  obj 
952-     elif  isinstance (obj , types .ModuleType ):
953-         # module 
954-         obj_globals  =  getattr (obj , "__dict__" )
955-         obj_locals  =  None 
956-         unwrap  =  None 
957-     elif  callable (obj ):
958-         # this includes types.Function, types.BuiltinFunctionType, 
959-         # types.BuiltinMethodType, functools.partial, functools.singledispatch, 
960-         # "class funclike" from Lib/test/test_inspect... on and on it goes. 
961-         obj_globals  =  getattr (obj , "__globals__" , None )
962-         obj_locals  =  None 
963-         unwrap  =  obj 
964-     else :
965-         obj_globals  =  obj_locals  =  unwrap  =  None 
966- 
967-     if  unwrap  is  not None :
968-         while  True :
969-             if  hasattr (unwrap , "__wrapped__" ):
970-                 unwrap  =  unwrap .__wrapped__ 
971-                 continue 
972-             if  functools  :=  sys .modules .get ("functools" ):
973-                 if  isinstance (unwrap , functools .partial ):
974-                     unwrap  =  unwrap .func 
942+     if  globals  is  None  or  locals  is  None :
943+         if  isinstance (obj , type ):
944+             # class 
945+             obj_globals  =  None 
946+             module_name  =  getattr (obj , "__module__" , None )
947+             if  module_name :
948+                 module  =  sys .modules .get (module_name , None )
949+                 if  module :
950+                     obj_globals  =  getattr (module , "__dict__" , None )
951+             obj_locals  =  dict (vars (obj ))
952+             unwrap  =  obj 
953+         elif  isinstance (obj , types .ModuleType ):
954+             # module 
955+             obj_globals  =  getattr (obj , "__dict__" )
956+             obj_locals  =  None 
957+             unwrap  =  None 
958+         elif  callable (obj ):
959+             # this includes types.Function, types.BuiltinFunctionType, 
960+             # types.BuiltinMethodType, functools.partial, functools.singledispatch, 
961+             # "class funclike" from Lib/test/test_inspect... on and on it goes. 
962+             obj_globals  =  getattr (obj , "__globals__" , None )
963+             obj_locals  =  None 
964+             unwrap  =  obj 
965+         else :
966+             obj_globals  =  obj_locals  =  unwrap  =  None 
967+ 
968+         if  unwrap  is  not None :
969+             while  True :
970+                 if  hasattr (unwrap , "__wrapped__" ):
971+                     unwrap  =  unwrap .__wrapped__ 
975972                    continue 
976-             break 
977-         if  hasattr (unwrap , "__globals__" ):
978-             obj_globals  =  unwrap .__globals__ 
979- 
980-     if  globals  is  None :
981-         globals  =  obj_globals 
982-     if  locals  is  None :
983-         locals  =  obj_locals 
973+                 if  functools  :=  sys .modules .get ("functools" ):
974+                     if  isinstance (unwrap , functools .partial ):
975+                         unwrap  =  unwrap .func 
976+                         continue 
977+                 break 
978+             if  hasattr (unwrap , "__globals__" ):
979+                 obj_globals  =  unwrap .__globals__ 
980+ 
981+         if  globals  is  None :
982+             globals  =  obj_globals 
983+         if  locals  is  None :
984+             locals  =  obj_locals 
984985
985986    # "Inject" type parameters into the local namespace 
986987    # (unless they are shadowed by assignments *in* the local namespace), 
0 commit comments