没有空行结束的标记。但是标记只是评论中的东西

Markup ending without empty line. But markup is only thing in comment

在记录我的 python 代码时,我有一个装饰器来标记已弃用的函数,它还会更新文档字符串。如果该函数有文档但当它没有 sphinx 抱怨并且 deprecated 的文档看起来不正确时,这工作正常。

我已将问题缩小到等效代码:

def func():
    """.. deprecated:: 0.1.0
  Please use :func:`func_new`

    """

这些都是我尝试过但没有成功的变化:

def func():
    """.. deprecated:: 0.1.0
    Please use :func:`func_new`

    """

def func():
    """
    .. deprecated:: 0.1.0
        Please use :func:`func_new`

    """

在这种情况下,Sphinx 会抱怨 WARNING: Explicit markup ends without a blank line; unexpected unindent.。不管最后有多少空行或者行前面是否有空格都没有关系。

如果文档没问题,我不会在意警告,而不是生成

Module.func():
    Deprecated since version 0.1.0: Please use :func:`func_new`

输出是

Module.func():
    Deprecated since version 0.1.0.

    Please use :func:`func_new`

如何在不向文档字符串添加任何(可见)文本的情况下解决此问题?

jonrsharpe 给我指出了正确的方向。

文档字符串必须完全像这样:

def func():
    """
    .. deprecated:: 0.1.0
      Please use :func:`func_new`

    """

下一行的两个空格,并且.. deprecated必须与开始的"""块对齐。它不能与 """.

在同一行开始

删除文档字符串并在 .. deprecated 之前添加 \n 解决了我的问题。