Überschreibe die Funktionsdeklaration in autodoc für sphinx

8

Ich habe ein Modul, das ungefähr so ​​aussieht:

%Vor%

... und ich habe eine .rst -Datei, die ungefähr so ​​aussieht:

%Vor%

Wenn ich die Dokumentation erstelle, erhalte ich eine HTML-Datei mit einem Ausschnitt, der so aussieht:

  

mymodule.foobar. foobar = 'Eine absurd lange und hässliche Regex hier'

     

Zusätzliche Dokumentation hier

     

mymodule. myfunc ( val = 'Eine absurd lange und hässliche Regex hier )

     

blah bla bla

Basierend auf diesem Stack-Overflow-Post , Ich dachte, ich könnte es ändern, indem ich mein Modul ändere:

%Vor%

... aber das hat nicht funktioniert, und nur die Unterschrift, die ich wollte, unter die hässliche als Teil des Körpers angehängt. Weiß jemand, wie ich das richtig übersteuern kann?

(Ich benutze Sphinx v1.1.3, btw.)

    
Michael0x2a 22.08.2012, 23:03
quelle

1 Antwort

10

Sie haben eine Variable auf Modulebene, die als Standardwert für ein Schlüsselwortargument in einer Funktion verwendet wird. Sphinx zeigt den Wert (anstelle des Namens) dieser Variablen in der Funktionssignatur an. Dieses Problem wird in einer anderen Frage diskutiert, und das OP hat auch ein Problem Ticket bei GitHub darüber.

Sie können dies jedoch auf zwei Arten umgehen:

  1. Überschreiben Sie die Signatur in der .rst-Datei mit autofunction , wie in der Antwort erläutert die verknüpfte Frage.

  2. Wenn die erste Zeile des Docstrings wie eine Signatur aussieht und wenn die autodoc_docstring_signature Konfigurationsvariable ist ist auf True eingestellt (was standardmäßig ist), dann wird Sphinx diese Zeile als Signatur verwenden.

    Wenn Sie also einen Docstring haben, der wie folgt aussieht,

    %Vor%

    sollte so funktionieren, wie Sie es wollen.

    In der Frage haben Sie diese erste Zeile im Docstring:

    %Vor%

    Dies funktioniert nicht, da es nicht wie eine richtige Signatur aussieht.

mzjn 23.08.2012, 08:34
quelle