Python 如何在Sphinx中只记录函数的子集?

Python 如何在Sphinx中只记录函数的子集?,python,python-sphinx,Python,Python Sphinx,使用Sphinx,我需要为我的Python应用程序生成两组文档: 包含我的所有模块/函数 仅包含模块中的函数子集 我想在函数docstrings中使用一个“标记”,指示是否在第二组文档中包含该函数 使用。。只有,我才能根据我提供给sphinx build的-t控制包含文档字符串的哪一部分。但是我找不到任何方法根据这些函数的docstring条目筛选出要包含在文档范围内的一组函数。通常情况下,发布问题后,您会给出答案。 使用以下代码并将其放入conf.py def include_only_tag

使用Sphinx,我需要为我的Python应用程序生成两组文档:

  • 包含我的所有模块/函数
  • 仅包含模块中的函数子集
  • 我想在函数docstrings中使用一个“标记”,指示是否在第二组文档中包含该函数


    使用
    。。只有
    ,我才能根据我提供给sphinx build的
    -t
    控制包含文档字符串的哪一部分。但是我找不到任何方法根据这些函数的docstring条目筛选出要包含在文档范围内的一组函数。

    通常情况下,发布问题后,您会给出答案。 使用以下代码并将其放入
    conf.py

    def include_only_tagged(app, what, name, obj, skip, options):
        inclusion_tag_format = ".. only:: {}" #can be any pattern here, choose what works for you
        for tag in app.tags.tags:
            if obj.__doc__ is not None and inclusion_tag_format.format(tag) in obj.__doc__:
                return False
        return True
        
    def setup(app):
        if(len(app.tags.tags)>0):
            app.connect('autodoc-skip-member', include_only_tagged)
    

    所以,如果我使用类似于
    ”.only::subset“
    的东西作为任何函数的docstring的一部分,也就是说,每当我运行
    sphinx build-t subset时,只有这个函数将保留在生成的文档的范围内。

    就像通常发生的那样-发布问题后,您会给出答案。 使用以下代码并将其放入
    conf.py

    def include_only_tagged(app, what, name, obj, skip, options):
        inclusion_tag_format = ".. only:: {}" #can be any pattern here, choose what works for you
        for tag in app.tags.tags:
            if obj.__doc__ is not None and inclusion_tag_format.format(tag) in obj.__doc__:
                return False
        return True
        
    def setup(app):
        if(len(app.tags.tags)>0):
            app.connect('autodoc-skip-member', include_only_tagged)
    
    因此,如果我使用类似于
    “.only::subset”
    的内容作为任何函数的文档字符串的一部分,也就是说,每当我运行
    sphinx build-t subset
    时,只有这个函数将保留在生成的文档范围内