Skip to content

Commit 571d27e

Browse files
committed
fix: links to interface bases when showing inheritance
1 parent 3041af5 commit 571d27e

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

nipype/sphinxext/documenter.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,24 @@ def add_directive_header(self, sig: str) -> None:
6060
if not self.doc_as_attr and self.options.show_inheritance:
6161
sourcename = self.get_sourcename()
6262
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)
7181

7282

7383
def setup(app):

0 commit comments

Comments
 (0)