Skip to content

Commit 72c81c1

Browse files
committed
fix: no links generated in summary table (#65, #67)
1 parent 1f4abeb commit 72c81c1

File tree

8 files changed

+69
-6
lines changed

8 files changed

+69
-6
lines changed

autodocsumm/__init__.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,15 @@ def get_grouped_documenters(self, all_members=False):
279279
self.options.update(options_save)
280280
return documenters
281281

282-
def add_autosummary(self):
283-
"""Add the autosammary table of this documenter."""
282+
def add_autosummary(self, relative_ref_paths=False):
283+
"""Add the autosammary table of this documenter.
284+
285+
Parameters
286+
==========
287+
relative_ref_paths: bool
288+
Use paths relative to the current module instead of
289+
absolute import paths for each object
290+
"""
284291
if (
285292
self.options.get("autosummary")
286293
and not self.options.get("no-autosummary")
@@ -303,8 +310,14 @@ def add_autosummary(self):
303310
indent = ' '
304311

305312
for (documenter, _) in documenters:
306-
self.add_line(
307-
indent + '~' + documenter.fullname, sourcename)
313+
if relative_ref_paths:
314+
obj_ref_path = documenter.fullname.lstrip(
315+
self.modname + '.')
316+
else:
317+
obj_ref_path = documenter.fullname
318+
319+
self.add_line(indent + '~' + obj_ref_path, sourcename)
320+
308321
self.add_line('', sourcename)
309322

310323

@@ -351,7 +364,7 @@ class AutoSummModuleDocumenter(ModuleDocumenter, AutosummaryDocumenter):
351364
def add_content(self, *args, **kwargs):
352365
super().add_content(*args, **kwargs)
353366

354-
self.add_autosummary()
367+
self.add_autosummary(relative_ref_paths=True)
355368

356369
if self.options.get("autosummary-no-nesting"):
357370
self.options["no-autosummary"] = "True"
@@ -400,7 +413,7 @@ class AutoSummClassDocumenter(ClassDocumenter, AutosummaryDocumenter):
400413
def add_content(self, *args, **kwargs):
401414
super().add_content(*args, **kwargs)
402415

403-
self.add_autosummary()
416+
self.add_autosummary(relative_ref_paths=True)
404417

405418

406419
class CallableDataDocumenter(DataDocumenter):

tests/test-root/dummy_submodule/__init__.py

Whitespace-only changes.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import dummy_submodule.submodule2
2+
3+
4+
class SubmoduleClass1:
5+
"""Docu for myclass 1"""
6+
7+
def func1(self):
8+
"""Docu for func 1"""
9+
pass
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import dummy_submodule.submodule1
2+
3+
4+
class SubmoduleClass2:
5+
"""Docu for myclass 1"""
6+
7+
def func2(self):
8+
"""Docu for func 1"""
9+
pass

tests/test-root/index.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ Example documentation
1717
test_automodulesumm
1818
test_automodulesumm_some_sections
1919
test_empty
20+
test_class_submodule
21+
test_module_submodule
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Test if links in summary are correctly generated
2+
================================================
3+
4+
.. autoclass:: dummy_submodule.submodule1.SubmoduleClass1
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Test if links in summary are correctly generated
2+
================================================
3+
4+
.. automodule:: dummy_submodule.submodule2

tests/test_autodocsumm.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,28 @@ def test_autoclasssumm_inline(self, app):
362362

363363
assert docstring_end > methods_start
364364

365+
def test_class_submodule(self, app):
366+
app.build()
367+
368+
html = get_html(app, '/test_class_submodule.html')
369+
370+
# check that hyperlink for instance method exists in summary table
371+
assert re.findall(r'<td>.*href="#dummy_submodule\.submodule1'
372+
r'\.SubmoduleClass1\.func1".*</td>', html)
373+
374+
def test_module_submodule(self, app):
375+
app.build()
376+
377+
html = get_html(app, '/test_module_submodule.html')
378+
379+
# check that hyperlink for class exists in summary table
380+
assert re.findall(r'<td>.*href="#dummy_submodule\.submodule2'
381+
r'\.SubmoduleClass2".*</td>', html)
382+
383+
# check that hyperlink for instance method exists in summary table
384+
assert re.findall(r'<td>.*href="#dummy_submodule\.submodule2'
385+
r'\.SubmoduleClass2\.func2".*</td>', html)
386+
365387

366388
class TestAutoDocSummDirective:
367389
"""Test case for the :class:`autodocsumm.AutoDocSummDirective`."""

0 commit comments

Comments
 (0)