【问题标题】:Have Pycco recognize doctests as code?Pycco 是否将 doctests 识别为代码?
【发布时间】:2015-01-07 06:17:49
【问题描述】:

有什么方法可以让 Pycco 将 doctests 识别为代码并适当地呈现它们?

例如以下函数的文档字符串

def fib(i):
    """ Fibonacci number

    >>> fib(10)
    55
    """
    if i < 2:
        return i
    else:
        return fib(i-1) + fib(i-2)

在 Pycco 中渲染如下

Fibonacci number

           fib(10) 5

显然&gt;&gt;&gt; 被解释为缩进并且代码高亮没有生效。这似乎是一个常见的用例。有没有我错过的插件?

【问题讨论】:

  • 看代码,cmets是被markdown处理的,所以&gt;&gt;&gt;提示符被解释为引用部分的开始。如果您想要更多格式选项,您可能需要寻找其他地方; sphinx 是规范的选择,并且确实支持文档测试(参见例如 sphinx-doc.org/ext/doctest.html)。
  • 是的,我知道。我希望由于它的流行,这可能会在某个插件中出现特殊情况。
  • FWIW,当您只使用 CPython 时,doctest 很方便,但如果您引入 Pypy、Jython 或 IronPython(或不同版本的 CPython...),则 doctest 可能会成为障碍。跨度>

标签: python docco


【解决方案1】:

Python 不介意 doctest 套件与文档字符串的其余部分相比是否缩进了额外的四个字符,只要它在内部是一致的,因此以下将通过测试就好(在 2.7.9 中测试)和 3.4.2):

def test():
    """Doctest test

    The following are doctests:

        >>> test()
        'foo'

    That went well.

    """
    return 'foo'

if __name__ == "__main__":
    import doctest
    doctest.testmod(verbose=True)

这个额外的缩进将被pycco 解释为一个代码块,就像它在 SO 上的 Markdown 中一样。上面的测试在 HTML 中呈现如下:

【讨论】:

    猜你喜欢
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多