gpt4 book ai didi

python - 让狮身人面像识别正确的签名

转载 作者:太空狗 更新时间:2023-10-29 17:31:38 25 4
gpt4 key购买 nike

我一直在努力获取我的文档,以便为我正在从事的一个开源项目工作,该项目涉及一个镜像客户端和服务器 API。为此,我创建了一个装饰器,它在大多数情况下可用于记录一个仅对其输入执行验证的方法。您可以找到一个包含这些方法的类 here和装饰器的实现 here .

如您所见,装饰器使用 functools.wraps 来保留文档字符串,我还认为是签名,但是源代码与生成的文档如下所示:

来源:source code

对比

文档:sphinx docs

有谁知道如何让 setH 生成的文档显示正确的调用签名? (无需为每个签名添加新的装饰器——我需要镜像数百种方法)

我找到了一种解决方法,它涉及让装饰器不更改未绑定(bind)的方法,而是让类在绑定(bind)时改变方法(对象实例化)——不过这似乎是一个 hack,所以对此有任何评论,或替代这样做的方法,将不胜感激。

最佳答案

PRAW ,我通过在 sphinx 构建发生时使用返回原始函数(而不是装饰函数)的条件装饰器来处理这个问题。

在 PRAW 的 sphinx conf.py 中,我添加了以下内容来确定 SPHINX 当前是否正在构建:

import os
os.environ['SPHINX_BUILD'] = '1'

然后在 PRAW 中,它的装饰器看起来像:

import os

# Don't decorate functions when building the documentation
IS_SPHINX_BUILD = bool(os.getenv('SPHINX_BUILD'))

def limit_chars(function):
"""Truncate the string returned from a function and return the result."""
@wraps(function)
def wrapped(self, *args, **kwargs):
output_string = function(self, *args, **kwargs)
if len(output_string) > MAX_CHARS:
output_string = output_string[:MAX_CHARS - 3] + '...'
return output_string
return function if IS_SPHINX_BUILD else wrapped

return function if IS_SPHINX_BUILD else wrapped 行允许 SPHINX 获取正确的签名。

Relevant Source

关于python - 让狮身人面像识别正确的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14383797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com