@@ -566,6 +566,7 @@ def visit_mypy_file(self, o: MypyFile) -> None:
566566 self .defined_names = find_defined_names (o )
567567 self .referenced_names = find_referenced_names (o )
568568 known_imports = {
569+ "_typeshed" : ["Incomplete" ],
569570 "typing" : ["Any" , "TypeVar" ],
570571 "collections.abc" : ["Generator" ],
571572 }
@@ -689,14 +690,14 @@ def visit_func_def(self, o: FuncDef, is_abstract: bool = False,
689690 return_name = 'None'
690691 for expr , in_assignment in all_yield_expressions (o ):
691692 if expr .expr is not None and not self .is_none_expr (expr .expr ):
692- self .add_typing_import ('Any ' )
693- yield_name = 'Any '
693+ self .add_typing_import ('Incomplete ' )
694+ yield_name = 'Incomplete '
694695 if in_assignment :
695- self .add_typing_import ('Any ' )
696- send_name = 'Any '
696+ self .add_typing_import ('Incomplete ' )
697+ send_name = 'Incomplete '
697698 if has_return_statement (o ):
698- self .add_typing_import ('Any ' )
699- return_name = 'Any '
699+ self .add_typing_import ('Incomplete ' )
700+ return_name = 'Incomplete '
700701 generator_name = self .typing_name ('Generator' )
701702 retname = f'{ generator_name } [{ yield_name } , { send_name } , { return_name } ]'
702703 elif not has_return_statement (o ) and not is_abstract :
@@ -954,18 +955,18 @@ def process_namedtuple(self, lvalue: NameExpr, rvalue: CallExpr) -> None:
954955 list_items = cast (List [StrExpr ], rvalue .args [1 ].items )
955956 items = [item .value for item in list_items ]
956957 else :
957- self .add ('%s%s: Any ' % (self ._indent , lvalue .name ))
958- self .import_tracker .require_name ('Any ' )
958+ self .add ('%s%s: Incomplete ' % (self ._indent , lvalue .name ))
959+ self .import_tracker .require_name ('Incomplete ' )
959960 return
960961 self .import_tracker .require_name ('NamedTuple' )
961962 self .add ('{}class {}(NamedTuple):' .format (self ._indent , lvalue .name ))
962963 if len (items ) == 0 :
963964 self .add (' ...\n ' )
964965 else :
965- self .import_tracker .require_name ('Any ' )
966+ self .import_tracker .require_name ('Incomplete ' )
966967 self .add ('\n ' )
967968 for item in items :
968- self .add ('{} {}: Any \n ' .format (self ._indent , item ))
969+ self .add ('{} {}: Incomplete \n ' .format (self ._indent , item ))
969970 self ._state = CLASS
970971
971972 def is_alias_expression (self , expr : Expression , top_level : bool = True ) -> bool :
@@ -1220,11 +1221,11 @@ def get_str_type_of_node(self, rvalue: Expression,
12201221 return 'bool'
12211222 if can_infer_optional and \
12221223 isinstance (rvalue , NameExpr ) and rvalue .name == 'None' :
1223- self .add_typing_import ('Any ' )
1224- return '{} | None' .format (self .typing_name ('Any ' ))
1224+ self .add_typing_import ('Incomplete ' )
1225+ return '{} | None' .format (self .typing_name ('Incomplete ' ))
12251226 if can_be_any :
1226- self .add_typing_import ('Any ' )
1227- return self .typing_name ('Any ' )
1227+ self .add_typing_import ('Incomplete ' )
1228+ return self .typing_name ('Incomplete ' )
12281229 else :
12291230 return ''
12301231
0 commit comments