문서에서 유형 힌트 건너 뛰기

Aug 21 2020

다음 기능을 고려해 봅시다.

def f(x: int, y: int) -> int:
    """Get sum of two integers.

    Parameters
    ----------
    x : int
        first integer
    y : int
        second integer

    Returns
    -------
    int
        sum of the provided integers
    """
    return x + y

Sphinx (v3.2.1)로 문서화하는 동안 문서는 다음 형식으로 생성됩니다.

그러나 f(x: int, y:int) -> int함수 문서의 제목과 Parameters섹션 에서와 같이 유형 힌트를 표시 할 요점이 없습니다 . 이 경우에는별로 중요하지 않지만 4-5 개의 인수가있는 함수에서는 읽기가 매우 어렵습니다. 유형 힌트를 건너 뛰는 방법이 있습니까? 마찬가지로 제목이 f또는 이면 선호합니다 f(x, y).

나는이 함께 할 수있는 뭔가가 예상 add_function_parentheses하지만, 그것을 설정 False에서하는 것은 conf.py내가 발견 한 것을 아무런 영향을 미치지 않았다.

관련 문제는 유형 힌트가 길면 typing.Union여러 긴 설명 과 같을 수 있습니다. 사용하고 싶지 않은 typing.Any경우 docstring에 여러 줄에 걸쳐 작성하여 최대 줄 제한을 준수합니다. 이 경우 Parameters섹션은 유형이 첫 번째 줄에 있고 다음 줄은 설명 일뿐임을 보여줍니다. 나는 이것이 동일한 지 아닌지 확실하지 않기 때문에이 문제의 예를 첨부하지 않습니다. 그렇다면 알려 주시면 예를 들어 업데이트하겠습니다.

답변

2 yarnabrina Aug 24 2020 at 19:07

에 대한 옵션 autodoc_typehints이 sphinx.ext.autodoc있습니다. 여기에는 none, descriptionsignature(기본값)의 세 가지 옵션이 있습니다 . none또는 중 하나를 사용 description하면 헤더 행에서 유형 힌트가 숨겨집니다. 이 둘 사이에서 찾을 수있는 유일한 차이점은 독 스트링에 유형 제안이 포함되어 있지 않으면 description유형 힌트에서 수집하는 문서에 계속 표시된다는 것입니다.

이를 사용하려면에서 다음과 같은 변경이 필요합니다 conf.py.

  1. 추가 sphinx.ext.autodocextensions(아직하지 않은 경우)
  2. 세트 autodoc_typehints = "none"
1 mzjn Aug 23 2020 at 00:16

autodoc-process-signature이벤트 처리기는 서명을 변경하고 함수 및 메서드의 주석을 반환 할 수 있습니다.

아래는 간단한 예입니다. 이 코드를 conf.py에 추가하면 모든 서명과 반환 주석이 출력에서 ​​제거됩니다.

def fix_sig(app, what, name, obj, options, signature, return_annotation):
    return ("", "")
 
def setup(app):
    app.connect("autodoc-process-signature", fix_sig)