【问题标题】:Programmatic docstrings in Visual Studio Code for PythonVisual Studio Code for Python 中的编程文档字符串
【发布时间】:2018-05-11 00:47:39
【问题描述】:

我想以编程方式更改我的一些函数中的文档字符串。我希望更新的文档字符串显示在 Visual Studio 代码中。这可能吗?例如,假设我有这个装饰器:

def wraps(m, sep="\n"):
    """
    Use another function's docstring
    """
    def _decorator(func):
        if func.__doc__ is None:
            func.__doc__ = m.__doc__
        else:
            func.__doc__ = sep.join([func.__doc__, m.__doc__])
        return func
    return _decorator

但是,这些不适用于 VS 代码智能感知。有没有办法做到这一点?

编辑:如果需要,functools.wraps 可以,但也不支持。示例函数:

@wraps(core.otherfunc)    
def newfunc(base, **kwargs):
    """Returns data from :func:`~core.otherfunc`"""
    return core.otherfunc(base, **kwargs)

谢谢!

【问题讨论】:

  • 你真的需要连接位而不是替换吗?因为如果没有,您可以只使用标准库之外的functools.wraps,并且至少一些 IDE/插件有特殊的外壳。 (我不知道用于 VSCode 的 ms-python 是否可以,但如果可以接受,它可能值得测试。)

标签: python visual-studio-code


【解决方案1】:

Jedi 提供的智能感知无法在不执行代码的情况下获取修改后的文档字符串,因为您无法从 AST 中推断出修改后的文档字符串。

【讨论】:

  • 未来有没有可能,可以评估该代码以获取帮助工具提示?类似 Pylance 运行代码以获取类型提示的方式...(即使存在语法错误)我知道这是一种猴子补丁,但我相信这可能是有益的。与编辑后的文档字符串可以在生成的 sphinx 文档中显示的方式相同,VS Code 帮助工具提示也可以显示更新的 docs,即使调用函数和实现一些逻辑会降低性能...
  • 对于 Jedi,您必须询问 Jedi 开发人员。至于 Pylance,您需要在 github.com/microsoft/pylance-release 提出功能请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
相关资源
最近更新 更多