【问题标题】:How to make Sphinx autodoc extension include an underscore/private Python module如何使 Sphinx 自动文档扩展包含下划线/私有 Python 模块
【发布时间】:2020-11-19 23:14:55
【问题描述】:

我正在使用带有 autodoc 扩展名的 Sphinx 为 Python 包自动生成文档。我面临的问题是autodoc 会跳过任何带有下划线的模块。

一些模块被强调以阻止用户导入它们。但是,这些带下划线的文件中的类没有下划线。

当我手动将下划线模块添加到package_name.rst 并运行make html 时,它会显示。所以我的问题是如何从autodoc 自动化。

我试图避免通过脚本解析package_name.rst 来添加它们。我希望有一个 autodoc 标志或 hack!

【问题讨论】:

    标签: python python-sphinx autodoc sphinx-apidoc


    【解决方案1】:

    认为应用于包的..automodule :: 指令会自动将子模块记录为成员(通过与类、变量等进行比较)可能是一种误解。

    我刚刚对此进行了测试,但无法使用:private-members: and or :special-members: 完成。不是通过在与包对应的.. automodule:: 指令中写入任何一个选项。 (尝试在autodoc_default_options 中设置这两个选项会得到相同的结果。)

    以下包和模块布局示例:

    C:.
    │ 
    └────your_package
       │
       │   public_module.py
       │   _private_module.py
       │   __init__.py
    

    对包使用 .rst 和单个 .. automodule::

    Your package rst
    ================
    
    .. automodule:: your_package
        :members:
        :undoc-members:
        :private-members:
        :special-members:
    

    带有文档字符串的_private_module.py 的最小示例(public_module.py 与标题相同):

    """Private module docstring."""
    
    class PublicClass:
        """Docstring."""
        pass
    

    确实给出了一个空文档:

    但如果你从模块中删除下划线,你会得到完全相同的结果。

    我试图避免通过脚本解析 package_name.rst 来添加它们

    如果您使用sphinx-apidoc 生成.rst 文件,如果使用-P 标志:

    -P, --private

    包括“_private”模块。 1.2 版中的新功能。

    生成的文件将包含一个用于私有模块的 .. automodule:: 指令,这确实具有包含 :private-members: 选项的副作用,如另一篇文章 "Include __main__.py in sphinx-apidoc generated files" 中所述。

    明确包含.. automodule:: 指令的示例:

    Your package rst
    ================
    
    .. automodule:: your_package
        :members:
        :undoc-members:
    
        .. automodule:: your_package.public_module
            :members:
            :undoc-members:
    
        .. automodule:: your_package._private_module
            :members:
            :undoc-members:
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多