Using sphinx to auto-document a python class, module

17,879

Add to the beginning of the file:

.. module:: SegLib

Try using :autoclass: directive for class doc.

BTW: module names should be lower_case.

EDIT: I learned a lot from reading other source files.

Share:
17,879

Related videos on Youtube

Adam Matan
Author by

Adam Matan

Team leader, developer, and public speaker. I build end-to-end apps using modern cloud infrastructure, especially serverless tools. My current position is R&D Manager at Corvid by Wix.com, a serverless platform for rapid web app generation. My CV and contact details are available on my Github README.

Updated on April 18, 2022

Comments

  • Adam Matan
    Adam Matan about 2 years

    I have installed Sphinx in order to document some Python modules and class I'm working on. While the markup language looks very nice, I haven't managed to auto-document a Python code.

    Basically, I have the following Python module:

    SegLib.py
    

    And A class called Seg in it. I would like to display the docstrings of the class and module within the generated Sphinx document, and add further formatted text to it.

    My index.rst looks like this:

    Contents:
    
    .. toctree::
    :maxdepth: 2
    
    chapter1.rst
    

    and chapter1.rst:

    This is a header
    ================
    Some text, *italic text*, **bold text**
    
    * bulleted list.  There needs to be a space right after the "*"
    * item 2
    
    .. note::
       This is a note.
    
    See :class:`Seg`
    

    But Seg is just printed in bold, and not linked to an auto-generated documentation of the class.

    Trying the following didn't help, either:

    See :class:`Seg`
    Module :mod:'SegLib'
    Module :mod:'SegLib.py'
    

    Edit: changed SegLib to segments (thanks, iElectric!), and changed chapter1.rst to:

    The :mod:`segments` Module
    --------------------------
    
    .. automodule:: segments.segments
    
    .. autoclass:: segments.segments.Seg
    

    Still, can't get Sphinx to directly document functions within a class, or better - to automatically add all the functions within a class to the document. Tried:

    .. autofunction:: segments.segments.Seg.sid
    

    and got:

    autodoc can't import/find function 'segments.segments.Seg.sid', it reported error: "No module named Seg"
    

    Any ideas how to auto-document the functions and classes with a short command?

  • iElectric
    iElectric almost 15 years
    In index.rst, for starters. When you documentation will get bigger, split it to multiple files.