sphinx-autoapi icon indicating copy to clipboard operation
sphinx-autoapi copied to clipboard

Implicit namespace packages do not generate documentation

Open Yoshanuikabundi opened this issue 3 years ago • 6 comments

Hi! Thanks for your work on this package, it really saved me from a lot of autosummary-related misery.

I've noticed a bug: the autoapi_python_use_implicit_namespaces option is fantastic, but it doesn't create a page for implicit namespace packages. If I have a Python project with the following file layout:

- package1/
    - package2/
        - __init__.py
        - module1.py
        - package3/
            - module2.py
        - package4/
            - __init__.py
            - module3.py

autoapi with autoapi_python_use_implicit_namespaces=True generates the following documentation:

- package1/
    - package2/
        - index.rst
        - module1/
            - index.rst
        - package3/
            - module2/
                - index.rst
        - package4/
            - index.rst
            - module3/
                - index.rst

In other words, only modules and packages defined with __init__.py files (explicit packages) are documented with an index.rst. Implicit namespace packages, those defined according to PEP420 without __init__.py, are not documented. This leads to Sphinx warnings about their children not being included in any toctree.

According to PEP420, implicit namespace packages are true packages. The user of the library can't tell the difference without digging. I think implicit namespace packages therefore should be documented as true packages, whose members include only their child modules and packages. Ideally they would also have a docstring that suggests that they're implicit namespace packages!

So in my above example, my expected output would be:

- package1/
    - index.rst
    - package2/
        - index.rst
        - module1/
            - index.rst
        - package3/
            - index.rst
            - module2/
                - index.rst
        - package4/
            - index.rst
            - module3/
                - index.rst

Thanks!

Yoshanuikabundi avatar Jul 21 '21 04:07 Yoshanuikabundi

Oh! Also this is on autoapi 1.6.0, which is the latest available on conda-forge. Sorry if this has been fixed since then! Would be great to get that updated.

Yoshanuikabundi avatar Jul 21 '21 04:07 Yoshanuikabundi

We are facing the same issue, any plans to fix this?

kaxil avatar Mar 14 '22 21:03 kaxil

Same here, facing same issue: autoapi_python_use_implicit_namespaces = True seems like not working and I also wonder if there are any plans to fix it?

jazzblue avatar Aug 11 '22 20:08 jazzblue

Same here, facing same issue: autoapi_python_use_implicit_namespaces = True seems like not working and I also wonder if there are any plans to fix it?

We used this custom template as a workaround and it has worked well for us. Check API reference at https://astronomer-providers.rtfd.io/

kaxil avatar Aug 12 '22 00:08 kaxil

Still facing the same issue, as of autoapi version 2.1.1.

chrisyeh96 avatar Sep 12 '23 05:09 chrisyeh96

For those who land here from a search engine: there's a --implicit-namespaces option in the sphinx-apidoc.

mezhaka avatar Nov 22 '23 18:11 mezhaka