78
78
Block ,
79
79
BytesExpr ,
80
80
CallExpr ,
81
+ CastExpr ,
81
82
ClassDef ,
82
83
ComparisonExpr ,
83
84
ComplexExpr ,
85
+ ConditionalExpr ,
84
86
Decorator ,
85
87
DictExpr ,
88
+ DictionaryComprehension ,
86
89
EllipsisExpr ,
87
90
Expression ,
88
91
ExpressionStmt ,
89
92
FloatExpr ,
90
93
FuncBase ,
91
94
FuncDef ,
95
+ GeneratorExpr ,
92
96
IfStmt ,
93
97
Import ,
94
98
ImportAll ,
95
99
ImportFrom ,
96
100
IndexExpr ,
97
101
IntExpr ,
98
102
LambdaExpr ,
103
+ ListComprehension ,
99
104
ListExpr ,
100
105
MemberExpr ,
101
106
MypyFile ,
102
107
NameExpr ,
103
108
OpExpr ,
104
109
OverloadedFuncDef ,
110
+ SetComprehension ,
105
111
SetExpr ,
112
+ SliceExpr ,
106
113
StarExpr ,
107
114
Statement ,
108
115
StrExpr ,
@@ -355,6 +362,9 @@ def visit_tuple_expr(self, node: TupleExpr) -> str:
355
362
def visit_list_expr (self , node : ListExpr ) -> str :
356
363
return f"[{ ', ' .join (n .accept (self ) for n in node .items )} ]"
357
364
365
+ def visit_set_expr (self , node : SetExpr ) -> str :
366
+ return f"{{{ ', ' .join (n .accept (self ) for n in node .items )} }}"
367
+
358
368
def visit_dict_expr (self , o : DictExpr ) -> str :
359
369
dict_items = []
360
370
for key , value in o .items :
@@ -369,13 +379,50 @@ def visit_ellipsis(self, node: EllipsisExpr) -> str:
369
379
def visit_op_expr (self , o : OpExpr ) -> str :
370
380
return f"{ o .left .accept (self )} { o .op } { o .right .accept (self )} "
371
381
382
+ def visit_unary_expr (self , o : UnaryExpr , / ) -> str :
383
+ return f"{ o .op } { o .expr .accept (self )} "
384
+
385
+ def visit_slice_expr (self , o : SliceExpr , / ) -> str :
386
+ blocks = [
387
+ o .begin_index .accept (self ) if o .begin_index is not None else "" ,
388
+ o .end_index .accept (self ) if o .end_index is not None else "" ,
389
+ ]
390
+ if o .stride is not None :
391
+ blocks .append (o .stride .accept (self ))
392
+ return ":" .join (blocks )
393
+
372
394
def visit_star_expr (self , o : StarExpr ) -> str :
373
395
return f"*{ o .expr .accept (self )} "
374
396
375
397
def visit_lambda_expr (self , o : LambdaExpr ) -> str :
376
398
# TODO: Required for among other things dataclass.field default_factory
377
399
return self .stubgen .add_name ("_typeshed.Incomplete" )
378
400
401
+ def _visit_unsupported_expr (self , o : object ) -> str :
402
+ # Something we do not understand.
403
+ return self .stubgen .add_name ("_typeshed.Incomplete" )
404
+
405
+ def visit_comparison_expr (self , o : ComparisonExpr ) -> str :
406
+ return self ._visit_unsupported_expr (o )
407
+
408
+ def visit_cast_expr (self , o : CastExpr ) -> str :
409
+ return self ._visit_unsupported_expr (o )
410
+
411
+ def visit_conditional_expr (self , o : ConditionalExpr ) -> str :
412
+ return self ._visit_unsupported_expr (o )
413
+
414
+ def visit_list_comprehension (self , o : ListComprehension ) -> str :
415
+ return self ._visit_unsupported_expr (o )
416
+
417
+ def visit_set_comprehension (self , o : SetComprehension ) -> str :
418
+ return self ._visit_unsupported_expr (o )
419
+
420
+ def visit_dictionary_comprehension (self , o : DictionaryComprehension ) -> str :
421
+ return self ._visit_unsupported_expr (o )
422
+
423
+ def visit_generator_expr (self , o : GeneratorExpr ) -> str :
424
+ return self ._visit_unsupported_expr (o )
425
+
379
426
380
427
def find_defined_names (file : MypyFile ) -> set [str ]:
381
428
finder = DefinitionFinder ()
0 commit comments