Skip to content

imported-members and show-inheritance leads to broken links #546

Description

@rihands

In short, the issue is that show-inheritance defaults to not fully qualifying the name of any base classes that are in the same file as the derived class, while imported-members just copies the documentation of imported members wholesale. As a result, if an __init__.py imports a derived class but not a base class, the reference target will not be found for the base class in the __init__.py's documentation.

#411 would fix this, but this is a separate issue.

Alternatively, having show-inheritance always fully qualify the names of base classes (possibly using a ~ prefix for classes in the same file) would also fix this.

Minimal reproduction

src/testproject/__init__.py:

"""It's a module."""

from testproject.classes import MySubclass


__all__ = ["MySubclass"]

src/testproject/classes.py

"""Some classes."""


class MyBase:
    """A base class."""


class MySubclass(MyBase):
    """A subclass."""

docs/src/conf.py

from pathlib import Path


PROJECT_ROOT = Path(__file__).parents[2]


extensions = [
    "autoapi.extension",
]

autoapi_dirs = [(PROJECT_ROOT / "src" / "testproject").as_posix()]

autoapi_options = [
    "imported-members",
    "show-inheritance",
]

docs/src/index.rst

.. toctree::

Run uv run --isolated --with sphinx --with sphinx-autoapi -m sphinx -b html --nitpicky docs/src docs/build; see the warning [...]\docs\src\autoapi\testproject\index.rst:28: WARNING: py:obj reference target not found: MyBase [ref.obj].

Note that the generated documentation for MySubclass is

.. py:class:: MySubclass

   Bases: :py:obj:`MyBase`


   A subclass.

This should probably use :py:obj:`~testproject.classes.MyBase` instead.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions