@@ -60,14 +60,24 @@ def add_directive_header(self, sig: str) -> None:
60
60
if not self .doc_as_attr and self .options .show_inheritance :
61
61
sourcename = self .get_sourcename ()
62
62
self .add_line ("" , sourcename )
63
- if hasattr (self .object , "__bases__" ) and len (self .object .__bases__ ):
64
- bases = [
65
- ":class:`%s`" % b .__name__
66
- if b .__module__ in ("__builtin__" , "builtins" )
67
- else ":class:`%s.%s`" % (b .__module__ , b .__name__ )
68
- for b in self .object .__bases__
69
- ]
70
- self .add_line (" " + _ ("Bases: %s" ) % ", " .join (bases ), sourcename )
63
+ bases = getattr (self .object , "__bases__" , [])
64
+ bases_links = []
65
+
66
+ for b in bases :
67
+ based_interface = False
68
+ try :
69
+ based_interface = issubclass (b , BaseInterface )
70
+ except TypeError :
71
+ pass
72
+
73
+ if b .__module__ in ("__builtin__" , "builtins" ):
74
+ bases_links .append (":class:`%s`" % b .__name__ )
75
+ elif based_interface :
76
+ bases_links .append (":ref:`%s.%s`" % (b .__module__ , b .__name__ ))
77
+ else :
78
+ bases_links .append (":class:`%s.%s`" % (b .__module__ , b .__name__ ))
79
+
80
+ self .add_line (" " + _ ("Bases: %s" ) % ", " .join (bases_links ), sourcename )
71
81
72
82
73
83
def setup (app ):
0 commit comments