@@ -1002,6 +1002,7 @@ def visit_class_def(self, o: ClassDef) -> None:
1002
1002
def get_base_types (self , cdef : ClassDef ) -> list [str ]:
1003
1003
"""Get list of base classes for a class."""
1004
1004
base_types : list [str ] = []
1005
+ p = AliasPrinter (self )
1005
1006
for base in cdef .base_type_exprs :
1006
1007
if isinstance (base , NameExpr ):
1007
1008
if base .name != "object" :
@@ -1010,7 +1011,6 @@ def get_base_types(self, cdef: ClassDef) -> list[str]:
1010
1011
modname = get_qualified_name (base .expr )
1011
1012
base_types .append (f"{ modname } .{ base .name } " )
1012
1013
elif isinstance (base , IndexExpr ):
1013
- p = AliasPrinter (self )
1014
1014
base_types .append (base .accept (p ))
1015
1015
elif isinstance (base , CallExpr ):
1016
1016
# namedtuple(typename, fields), NamedTuple(typename, fields) calls can
@@ -1036,13 +1036,16 @@ def get_base_types(self, cdef: ClassDef) -> list[str]:
1036
1036
# Invalid namedtuple() call, cannot determine fields
1037
1037
base_types .append ("Incomplete" )
1038
1038
elif self .is_typed_namedtuple (base ):
1039
- p = AliasPrinter (self )
1040
1039
base_types .append (base .accept (p ))
1041
1040
else :
1042
1041
# At this point, we don't know what the base class is, so we
1043
1042
# just use Incomplete as the base class.
1044
1043
base_types .append ("Incomplete" )
1045
1044
self .import_tracker .require_name ("Incomplete" )
1045
+ for name , value in cdef .keywords .items ():
1046
+ if name == "metaclass" :
1047
+ continue # handled separately
1048
+ base_types .append (f"{ name } ={ value .accept (p )} " )
1046
1049
return base_types
1047
1050
1048
1051
def visit_block (self , o : Block ) -> None :
0 commit comments