2016-08-04 83 views
0

當記錄我的Python代碼時,我有一個裝飾器來標記函數棄用,也更新文檔字符串。這工作正常,如果該函數有文檔,但當它不獅身人面像抱怨和文檔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` 

    """ 

在這種情況下,獅身人面像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` 

我怎樣才能解決這個問題,而無需添加任何(可見光)文本到文檔字符串?

+0

這裏的問題不是第二行是隻縮進兩個空格,它拋出了整個docstring的縮進?如果縮進另外兩個空格(即「Please」之前),會發生什麼?你認爲這是獅身人面像還是裝飾者(你沒有真正展示過)的問題? – jonrsharpe

+0

@jonrsharpe我用更多的例子更新了這個問題。我沒有發佈裝飾器,因爲它是無關緊要的,因爲創建的文檔字符串與我發佈的完全相同。文檔字符串正在被正確修改(我可以看到創建的文檔中的更改)。 – RedX

回答

0

jonrsharpe指出我與正確的方向與我的名字。

文檔字符串必須正好是這樣的:在未來的行

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

    """ 

兩個空格,並.. deprecated必須開始"""塊對齊。它不能在"""的同一行中啓動。

降低文檔字符串並在.. deprecated之前添加\n解決了我的問題。