@@ -566,6 +566,7 @@ def visit_mypy_file(self, o: MypyFile) -> None:
566
566
self .defined_names = find_defined_names (o )
567
567
self .referenced_names = find_referenced_names (o )
568
568
known_imports = {
569
+ "_typeshed" : ["Incomplete" ],
569
570
"typing" : ["Any" , "TypeVar" ],
570
571
"collections.abc" : ["Generator" ],
571
572
}
@@ -689,14 +690,14 @@ def visit_func_def(self, o: FuncDef, is_abstract: bool = False,
689
690
return_name = 'None'
690
691
for expr , in_assignment in all_yield_expressions (o ):
691
692
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 '
694
695
if in_assignment :
695
- self .add_typing_import ('Any ' )
696
- send_name = 'Any '
696
+ self .add_typing_import ('Incomplete ' )
697
+ send_name = 'Incomplete '
697
698
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 '
700
701
generator_name = self .typing_name ('Generator' )
701
702
retname = f'{ generator_name } [{ yield_name } , { send_name } , { return_name } ]'
702
703
elif not has_return_statement (o ) and not is_abstract :
@@ -954,18 +955,18 @@ def process_namedtuple(self, lvalue: NameExpr, rvalue: CallExpr) -> None:
954
955
list_items = cast (List [StrExpr ], rvalue .args [1 ].items )
955
956
items = [item .value for item in list_items ]
956
957
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 ' )
959
960
return
960
961
self .import_tracker .require_name ('NamedTuple' )
961
962
self .add ('{}class {}(NamedTuple):' .format (self ._indent , lvalue .name ))
962
963
if len (items ) == 0 :
963
964
self .add (' ...\n ' )
964
965
else :
965
- self .import_tracker .require_name ('Any ' )
966
+ self .import_tracker .require_name ('Incomplete ' )
966
967
self .add ('\n ' )
967
968
for item in items :
968
- self .add ('{} {}: Any \n ' .format (self ._indent , item ))
969
+ self .add ('{} {}: Incomplete \n ' .format (self ._indent , item ))
969
970
self ._state = CLASS
970
971
971
972
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,
1220
1221
return 'bool'
1221
1222
if can_infer_optional and \
1222
1223
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 ' ))
1225
1226
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 ' )
1228
1229
else :
1229
1230
return ''
1230
1231
0 commit comments