如果一个参数传递给函数有望得到一定(或同等学历)的结构,使用python的内置list,tuple以及dict,如何和在那里它应该被记录?
示例文档:
def foo(bar):
"""
Args:
bar: 2-tuple, ([(<mapping>,<number>), ...], <string>)
"""
pass
Run Code Online (Sandbox Code Playgroud)
有点麻烦; 一些问题:
编辑:该示例不是为了尝试强制执行类型,而是尝试记录结构.对于这一点,duck typing是OK.
:rtype:指定这是返回对象的类型
因此,当我obj在下面的代码片段中创建对象时,我收到来自IDE的警告cls is not callable,因为IDE期望,这cls是object类型的SomeAbstractClass,我想要SomeAbstractClass自己
IDE是对的,因为这是默认行为.但是我如何指定,我正在返回课程,而不是课程的实例?
指定type而不是SomeAbstractClass帮助,但不是解决方案,因为没有进一步的内省可用.
def class_selector(data):
"""
:rtype: SomeAbstractClass
:return: Return some class based on given parameters
"""
return get_from.get(data.name)
cls = class_selector(data)
obj = cls(data.more_data)
Run Code Online (Sandbox Code Playgroud)
同时我通过""":type: SomeAbstractClass"""在创建对象后添加来解决这个问题 ,但是这并没有取消警告并且它是脏的解决方案.
顺便说一句,谈论python 2.x.
我有一个项目,我使用epydoc记录.现在我正在尝试切换到狮身人面像.我为epydocs格式化了所有文档字符串,使用B {},L {}等进行粗体,链接等,并使用@ param,@ return,@ raise等来解释输入,输出,异常等.
所以现在我转向sphinx它失去了所有这些功能.有没有一种自动方式将为epydocs格式化的文档字符串转换为为sphinx格式化的文档字符串?
在twisted的源代码中,许多文档字符串包含这样的格式:L {xxx}或C {xxx}或以'@'开头的行,它们的含义是什么?
例如,在twisted/internet/interfaces.py中:
def registerProducer(producer, streaming):
"""
Register to receive data from a producer.
...
For L{IPullProducer} providers, C{resumeProducing} will be called once
each time data is required.
...
@type producer: L{IProducer} provider
...
@return: C{None}
"""
Run Code Online (Sandbox Code Playgroud)
L {IPullProducer},C {resumeProducing},@ type producer?
顺便说一下,这些格式是标准python文档字符串格式的一部分吗?如果是这样,我应该在哪里提到?谢谢 :)
标题说明了一切.我想象的是为我的所有模块,类和函数提供docstrings,并通过github(wiki?)以某种方式很好地导航文档.此外,文档应与最新代码同步,这意味着它应该在推送时更新/重新生成.那可能吗?
在python中编写doc字符串时,我想知道docstring是否应该包含隐式引发的异常,或者它是否还应该包含我明确提出的异常.
考虑这个功能
def inv(a):
if a == 0:
raise ZeroDivisionError
else:
return 1/a
Run Code Online (Sandbox Code Playgroud)
因此,在"Raises"关键字下的文档字符串中,我肯定会放置ZeroDivisionError.但是,根据输入,我也会期望TypeError.那么你也会把它放在docstring中吗?
由于EAFP原则(如果我理解正确),我不想在这里检查类型,对吗?任何提示(也在代码示例上)都是受欢迎的.
我知道我可以转到设置 | 工具 | Python集成工具| 文档字符串 | 文档字符串格式 | 谷歌,但这只会设置当前项目的文档字符串格式(如窗口中的“当前项目”标题所示)。我正在寻找一种更改默认值的方法,以便我的所有项目默认使用 google docstring 格式。
据我所知,JetBrain自己的文档没有提到如何实现这一点。
是否有工具可以检查文档字符串中列出的参数是否与函数调用的签名匹配?它应该能够处理 numpy 风格的文档字符串。我经常使用 R CMD CHECK,它可以发现 R 中的文档/代码不匹配,这非常有帮助。如果 Python 中有类似的东西那就太好了,但我还没有找到任何东西。
python docstring signature code-documentation visual-studio-code
我正在使用Sphinx来记录我的Python包.当我在我的模块上使用automodule指令时:
.. automodule:: mymodule
:members:
Run Code Online (Sandbox Code Playgroud)
它会打印包括文档字符串中的GPL通知在内的所有内容.有没有办法告诉Sphinx忽略docstring/GPL还是应该把它留在文档中?
假设我有以下代码foo.py:
def start():
"""
>>> start()
Hello world
"""
test = 10
print('Hello world')
Run Code Online (Sandbox Code Playgroud)
通常,我会通过pytest foo.py --doctest-modules -v在终端中运行来运行 doctest 。相反,我希望能够通过 Visual Studio Code 的内置调试器对其进行测试,以跟踪变量和调用堆栈。
我的项目中有以下配置launch.json:
"name": "PyTest",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"module": "pytest",
"args": [
"${file}",
"--doctest-modules",
"-v"
],
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"debugOptions": [
"RedirectOutput"
]
Run Code Online (Sandbox Code Playgroud)
但是,当我打开文件并在 VSCode 调试器中运行 PyTest 调试配置时,doctests 仅在内置终端中运行 - 调试器面板中没有显示任何内容。我应该如何配置调试器才能使用它的变量和调用堆栈?