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