我正在处理大型文档库并添加另一个有关以编程方式生成的API的文档文件。我想autodoc一些模块的内容,但只有已设置属性的函数表明它们是API端点。 Autodoc还用于记录项目的内部。
我在conf.py中执行此操作:
def skip_non_api_methods(app, what, name, obj, skip, options):
if not getattr(obj, 'is_api_endpoint', False):
return True
return skip
def setup(app):
app.connect("autodoc-skip-member", skip_non_api_methods)
但是,我只想将skip_non_api_methods()用于 api.rst ,而不是几十个其他文档文件。我挖掘了app对象,但无法找到对正在处理的当前文件的引用。
答案 0 :(得分:1)
app.env.docname包含当前文档名称,减去扩展名。
上述功能的修订版使其仅适用于'api.rst':
def skip_non_api_methods(app, what, name, obj, skip, options):
if app.env.docname != 'api': # only apply this to api.rst
return skip
# if is_api_endpoint is True, don't skip (i.e. return False)
is_api_endpoint = getattr(obj, 'is_api_endpoint', False)
if is_api_endpoint:
return False # don't skip api endpoints
return True # skip everything else