From be8c1511c9610506c346ebb4f71387399eed4d9f Mon Sep 17 00:00:00 2001 From: Timo Brembeck Date: Tue, 26 Sep 2023 19:19:08 +0200 Subject: [PATCH] Fix rendering of inheritance diagrams --- CHANGES.rst | 1 + sphinxcontrib_django/docstrings/classes.py | 4 +++- tests/roots/test-docstrings/conf.py | 6 +++++- tests/test_class_docstrings.py | 14 ++++++++++++++ tests/test_django_configured.py | 2 ++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 34376cd..b82953e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,6 +5,7 @@ Unreleased ---------- * Drop support for sphinx < 3.4.0 +* [ `#45 `_ ] Fix rendering of inheritance diagrams Version 2.4 (2023-07-02) diff --git a/sphinxcontrib_django/docstrings/classes.py b/sphinxcontrib_django/docstrings/classes.py index 15ad6fe..9424e94 100644 --- a/sphinxcontrib_django/docstrings/classes.py +++ b/sphinxcontrib_django/docstrings/classes.py @@ -104,7 +104,9 @@ def improve_model_docstring(app: Sphinx, model: models.Model, lines: list[str]) and "sphinx.ext.graphviz" in app.extensions and not any("inheritance-diagram::" in line for line in lines) ): - lines.append(".. inheritance-diagram::") # pragma: no cover + lines.append("") + lines.append(f".. inheritance-diagram:: {model.__module__}.{model.__name__}") + lines.append("") def add_db_table_name(app: Sphinx, model: models.Model, lines: list[str]) -> None: diff --git a/tests/roots/test-docstrings/conf.py b/tests/roots/test-docstrings/conf.py index fcd54cd..e4e6cf8 100644 --- a/tests/roots/test-docstrings/conf.py +++ b/tests/roots/test-docstrings/conf.py @@ -5,7 +5,11 @@ sys.path.insert(0, os.path.abspath(".")) project = "sphinx dummy Test" -extensions = ["sphinxcontrib_django"] +extensions = [ + "sphinxcontrib_django", + "sphinx.ext.graphviz", + "sphinx.ext.inheritance_diagram", +] # Configure Django settings module django_settings = "dummy_django_app.settings" diff --git a/tests/test_class_docstrings.py b/tests/test_class_docstrings.py index 9b45bc3..960f24e 100644 --- a/tests/test_class_docstrings.py +++ b/tests/test_class_docstrings.py @@ -81,6 +81,8 @@ def test_simple_model(app, do_autodoc): " :class:`~dummy_django_app.models.ChildModelB`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.SimpleModel", + "", ] @@ -168,6 +170,8 @@ def test_database_table(app, do_autodoc): " :class:`~dummy_django_app.models.ChildModelB`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.SimpleModel", + "", ] @@ -199,6 +203,8 @@ def test_abstract_model(app, do_autodoc): " :class:`~dummy_django_app.models.AbstractModel`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.AbstractModel", + "", ] @@ -232,6 +238,8 @@ def test_abstract_model_with_tables_names_and_ignore_abstract(app, do_autodoc): " :class:`~dummy_django_app.models.AbstractModel`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.AbstractModel", + "", ] @@ -272,6 +280,8 @@ def test_abstract_model_with_tables_names_and_abstract_show(app, do_autodoc): " :class:`~dummy_django_app.models.AbstractModel`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.AbstractModel", + "", ] @@ -300,6 +310,8 @@ def test_file_model(app, do_autodoc): " :class:`~dummy_django_app.models.SimpleModel`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.FileModel", + "", ] @@ -339,6 +351,8 @@ def test_tagged_item(app, do_autodoc): " :class:`~django.contrib.contenttypes.models.ContentType`" ), "", + " .. inheritance-diagram:: dummy_django_app.models.TaggedItem", + "", ] diff --git a/tests/test_django_configured.py b/tests/test_django_configured.py index 01d465d..876448e 100644 --- a/tests/test_django_configured.py +++ b/tests/test_django_configured.py @@ -15,4 +15,6 @@ def test_django_configured(app, do_autodoc): " :param id: Primary key: ID", " :type id: ~django.db.models.AutoField", "", + " .. inheritance-diagram:: dummy_django_app.models.MonkeyPatched", + "", ]