如何使用pdoc在API文档中排除装饰器?
使用pdoc生成API文档时排除装饰器的方法
方法1:用pdoc.doc装饰器指定显示签名
pdoc自带的@doc装饰器可以手动覆盖函数的显示签名,直接跳过原装饰器带来的无关参数。示例代码:
from pdoc import doc from xlwings import xl_func @xl_func("blah", "blah") @doc(signature="examples_are_blah()") def examples_are_blah(): """这是函数的文档说明""" pass
生成文档时,会直接使用你指定的签名,原xl_func的参数不会出现在文档里。
方法2:自定义pdoc渲染模板过滤装饰器
通过修改pdoc的模板文件,过滤掉特定装饰器的显示:
- 复制pdoc默认模板中的
function.html.jinja2到你的项目目录(默认模板路径在pdoc安装目录的templates文件夹下) - 修改模板中处理装饰器的代码,添加判断跳过
xl_func:
{% for deco in function.decorators %} {% if not deco.startswith('@xl_func') %} {{ deco }} {% endif %} {% endfor %}
- 运行pdoc时指定自定义模板目录:
pdoc --template-dir ./your-template-folder your-module.py
方法3:用包装装饰器隐藏原装饰器痕迹
写一个简单的包装装饰器,保留原函数的元信息,让pdoc忽略xl_func的存在:
from xlwings import xl_func def hide_xl_func(*args, **kwargs): def wrapper(func): decorated = xl_func(*args, **kwargs)(func) # 保留原函数的文档和名称 decorated.__doc__ = func.__doc__ decorated.__name__ = func.__name__ # 绑定原函数到__wrapped__属性,让pdoc识别原函数 decorated.__wrapped__ = func return decorated return wrapper @hide_xl_func("blah", "blah") def examples_are_blah(): """这是函数的文档说明""" pass
这样pdoc会优先读取原函数的信息,不会显示xl_func的装饰器参数。
内容的提问来源于stack exchange,提问作者blah_crusader
相关产品推荐
相关产品推荐

