@@ -304,9 +304,24 @@ def visit_name_expr(self, node: NameExpr) -> str:
304
304
def visit_member_expr (self , o : MemberExpr ) -> str :
305
305
return self ._visit_ref_expr (o )
306
306
307
- def visit_str_expr (self , node : StrExpr ) -> str :
307
+ def _visit_literal_node (self , node : StrExpr | BytesExpr | IntExpr | FloatExpr | ComplexExpr ) -> str :
308
308
return repr (node .value )
309
309
310
+ def visit_str_expr (self , node : StrExpr ) -> str :
311
+ return self ._visit_literal_node (node )
312
+
313
+ def visit_bytes_expr (self , node : BytesExpr ) -> str :
314
+ return f"b{ self ._visit_literal_node (node )} "
315
+
316
+ def visit_int_expr (self , node : IntExpr ) -> str :
317
+ return self ._visit_literal_node (node )
318
+
319
+ def visit_float_expr (self , node : FloatExpr ) -> str :
320
+ return self ._visit_literal_node (node )
321
+
322
+ def visit_complex_expr (self , node : ComplexExpr ) -> str :
323
+ return self ._visit_literal_node (node )
324
+
310
325
def visit_index_expr (self , node : IndexExpr ) -> str :
311
326
base_fullname = self .stubgen .get_fullname (node .base )
312
327
if base_fullname == "typing.Union" :
@@ -804,7 +819,8 @@ def get_base_types(self, cdef: ClassDef) -> list[str]:
804
819
for name , value in cdef .keywords .items ():
805
820
if name == "metaclass" :
806
821
continue # handled separately
807
- base_types .append (f"{ name } ={ value .accept (p )} " )
822
+ processed_value = value .accept (p ) or "..." # at least, don't crash
823
+ base_types .append (f"{ name } ={ processed_value } " )
808
824
return base_types
809
825
810
826
def get_class_decorators (self , cdef : ClassDef ) -> list [str ]:
0 commit comments