@@ -501,39 +501,39 @@ def _get_func_args(self, o: FuncDef, ctx: FunctionContext) -> list[ArgSig]:
501
501
args .append (ArgSig (name , typename , default = bool (arg_ .initializer )))
502
502
return args
503
503
504
- def _get_func_return (self , func_def : FuncDef , ctx : FunctionContext ) -> str | None :
505
- if func_def .name != "__init__" and isinstance (func_def .unanalyzed_type , CallableType ):
506
- if isinstance (get_proper_type (func_def .unanalyzed_type .ret_type ), AnyType ):
504
+ def _get_func_return (self , o : FuncDef , ctx : FunctionContext ) -> str | None :
505
+ if o .name != "__init__" and isinstance (o .unanalyzed_type , CallableType ):
506
+ if isinstance (get_proper_type (o .unanalyzed_type .ret_type ), AnyType ):
507
507
# Luckily, a return type explicitly annotated with "Any" has
508
508
# type "UnboundType" and will enter the else branch.
509
509
return None # implicit Any
510
510
else :
511
- return self .print_annotation (func_def .unanalyzed_type .ret_type )
512
- if func_def .abstract_status == IS_ABSTRACT or func_def .name in METHODS_WITH_RETURN_VALUE :
511
+ return self .print_annotation (o .unanalyzed_type .ret_type )
512
+ if o .abstract_status == IS_ABSTRACT or o .name in METHODS_WITH_RETURN_VALUE :
513
513
# Always assume abstract methods return Any unless explicitly annotated. Also
514
514
# some dunder methods should not have a None return type.
515
515
return None # implicit Any
516
- retname = infer_method_ret_type (func_def .name )
516
+ retname = infer_method_ret_type (o .name )
517
517
if retname is not None :
518
518
return retname
519
- if has_yield_expression (func_def ) or has_yield_from_expression (func_def ):
519
+ if has_yield_expression (o ) or has_yield_from_expression (o ):
520
520
self .add_typing_import ("Generator" )
521
521
yield_name = "None"
522
522
send_name = "None"
523
523
return_name = "None"
524
- if has_yield_from_expression (func_def ):
524
+ if has_yield_from_expression (o ):
525
525
yield_name = send_name = self .add_typing_import ("Incomplete" )
526
526
else :
527
- for expr , in_assignment in all_yield_expressions (func_def ):
527
+ for expr , in_assignment in all_yield_expressions (o ):
528
528
if expr .expr is not None and not is_none_expr (expr .expr ):
529
529
yield_name = self .add_obj_import ("_typeshed" , "Incomplete" , require = True )
530
530
if in_assignment :
531
531
send_name = self .add_obj_import ("_typeshed" , "Incomplete" , require = True )
532
- if has_return_statement (func_def ):
532
+ if has_return_statement (o ):
533
533
return_name = self .add_obj_import ("_typeshed" , "Incomplete" , require = True )
534
534
generator_name = self .add_typing_import ("Generator" )
535
535
return f"{ generator_name } [{ yield_name } , { send_name } , { return_name } ]"
536
- if not has_return_statement (func_def ) and func_def .abstract_status == NOT_ABSTRACT :
536
+ if not has_return_statement (o ) and o .abstract_status == NOT_ABSTRACT :
537
537
return "None"
538
538
return None
539
539
0 commit comments