web-dev-qa-db-ja.com

Sphinxによって処理されるdocstringsで単一のパラメーターまたは戻り値の複数の型を表現する方法は?

Python=の関数は、フレキシブルタイプの引数を受け入れる場合があります。または、フレキシブルタイプの値を返す場合があります。今、そのような関数の良い例を思い出せません。したがって、以下のおもちゃの例で、そのような関数がどのように見えるかを示しています。

Sphinxドキュメンテーション表記を使用して、そのような関数のdocstringsを記述する方法を知りたいです。以下の例では、引数はstrまたはintのいずれかです。同様に、strまたはintを返す場合があります。

Docstringsの例を示しました(デフォルトのSphinx表記と、Sphinxのナポレオン拡張によって理解されるGoogle表記の両方で)。これがフレキシブルタイプを文書化する正しい方法かどうかはわかりません。

Sphinxのデフォルト表記:

def add(a, b):
    """Add numbers or concatenate strings.

    :param int/str a: String or integer to be added
    :param int/str b: String or integer to be added
    :return: Result
    :rtype: int/str
    """
    pass

スフィンクスナポレオンGoogle表記:

def add2(a, b):
    """Add numbers or concatenate strings.

    Args:
      a (int/str): String or integer to be added
      b (int/str): String or integer to be added

    Returns:
      int/str: Result
    """
    pass

Sphinxで処理されることを意図したdocstringsでパラメーターまたは戻り値の複数の型を表現する正しい方法は何ですか?

27
Lone Learner

Python 3.5 Unionタイプのヒント

https://docs.python.org/3/library/typing.html#typing.Union

現時点では、そのモジュールとまったく同じ構文を使用することをお勧めします。

  • 移植を簡単にし、後で自動化できるようにする
  • 物事を行うための明確に定義された一意の標準的な方法を指定します

例:

def f(int_or_float):
    """
    :type int_or_float: Union[int, float]
    :rtype: float
    """
    return int_or_float + 1.0

次に、3.5がある場合は、次のように記述します。

def f(list_of_int : Union[int, float]) -> float:
    return int_or_float + 1.0

ドキュメント生成サポートはすでにあると思いますが、まだテストしていません: https://github.com/sphinx-doc/sphinx/issues/1968