2015-11-02 11 views
6

Does Sphinx ha uno standard supportato per documentare gli argomenti oi tipi di valori restituiti che non sono un semplice oggetto singolo?Qual è lo standard di docstring della Sfinge per i tipi di strutture di dati come gli elenchi?

Ad esempio, nel seguito, arg1 è uno str, arg2 è un elenco di str e arg3 è uno str o int. Come si può specificare la raccolta o i tipi di compositi in Sfinge? O non esiste uno standard comune per questo?

def function(arg1, arg2, arg3): 
    """ 
    :param arg1: Argument 1 
    :type arg1: str 
    :param arg2: Argument 2 
    :type arg2: list[str] 
    :param arg3: Argument 3 
    :type arg3: str or int 
    """ 
    pass 
+2

Non esiste uno standard comune - Ecco un suggerimento: https //www.jetbrains. com/pycharm/help/type-hinting-in-pycharm.html, anche apparentemente usato in es http://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html – jonrsharpe

+0

Sembra che almeno: tipo arg2: collections.Iterable [str] abilita l'hint di tipo in Pycharm per Python 2.7. C'è un tipo di Unione simile in Python che potrebbe funzionare per arg3? – Shookit

+0

Sembra strano accettare 'str o int', ma se è quello che serve è come lo scriverei! – jonrsharpe

risposta

2

Python 3.5 tipo accenna, mentre non è ancora supportato da Sfinge, probabilmente farà Sphinx annotazioni di tipo obsoleto un giorno. https://docs.python.org/3/library/typing.html

Per ora, mi consiglia di utilizzare la stessa sintassi esatta di quel modulo, che sarà:

  • rendere i porting più facile, e forse automatizzabili, in seguito
  • specifica un modo unico ben definito di fare le cose

Esempio:

def f(list_of_int): 
    """ 
    :type list_of_int: List[int] 
    :rtype: int 
    """ 
    return list_of_int[0] + list_of_int[1] 

Poi, quando si dispone di 3,5, si scriverà semplicemente:

def f(list_of_int : List[int]) -> int: 
    return list_of_int[0] + list_of_int[1] 

La str or int parte può essere espresso con Union: How to express multiple types for a single parameter or a return value in docstrings that are processed by Sphinx?

Problemi correlati