mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #5333 from tk0miya/5322_Any_causes_crashed
Fix #5322: autodoc: ``Any`` typehint causes formatting error
This commit is contained in:
commit
a029a8f81d
1
CHANGES
1
CHANGES
@ -18,6 +18,7 @@ Bugs fixed
|
|||||||
|
|
||||||
* #5320: intersphinx: crashed if invalid url given
|
* #5320: intersphinx: crashed if invalid url given
|
||||||
* #5326: manpage: crashed when invalid docname is specified as ``man_pages``
|
* #5326: manpage: crashed when invalid docname is specified as ``man_pages``
|
||||||
|
* #5322: autodoc: ``Any`` typehint causes formatting error
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
|
@ -531,8 +531,10 @@ class Signature(object):
|
|||||||
qualname = annotation.__qualname__
|
qualname = annotation.__qualname__
|
||||||
elif getattr(annotation, '__forward_arg__', None):
|
elif getattr(annotation, '__forward_arg__', None):
|
||||||
qualname = annotation.__forward_arg__
|
qualname = annotation.__forward_arg__
|
||||||
else:
|
elif getattr(annotation, '__origin__', None):
|
||||||
qualname = self.format_annotation(annotation.__origin__) # ex. Union
|
qualname = self.format_annotation(annotation.__origin__) # ex. Union
|
||||||
|
else:
|
||||||
|
qualname = repr(annotation).replace('typing.', '')
|
||||||
elif hasattr(annotation, '__qualname__'):
|
elif hasattr(annotation, '__qualname__'):
|
||||||
qualname = '%s.%s' % (module, annotation.__qualname__)
|
qualname = '%s.%s' % (module, annotation.__qualname__)
|
||||||
else:
|
else:
|
||||||
|
@ -232,7 +232,7 @@ def test_Signature_partialmethod():
|
|||||||
reason='type annotation test is available on py34 or above')
|
reason='type annotation test is available on py34 or above')
|
||||||
def test_Signature_annotations():
|
def test_Signature_annotations():
|
||||||
from typing_test_data import (
|
from typing_test_data import (
|
||||||
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, Node)
|
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, Node)
|
||||||
|
|
||||||
# Class annotations
|
# Class annotations
|
||||||
sig = inspect.Signature(f0).format_args()
|
sig = inspect.Signature(f0).format_args()
|
||||||
@ -293,6 +293,10 @@ def test_Signature_annotations():
|
|||||||
sig = inspect.Signature(f13).format_args()
|
sig = inspect.Signature(f13).format_args()
|
||||||
assert sig == '() -> Optional[str]'
|
assert sig == '() -> Optional[str]'
|
||||||
|
|
||||||
|
# Any
|
||||||
|
sig = inspect.Signature(f14).format_args()
|
||||||
|
assert sig == '() -> Any'
|
||||||
|
|
||||||
# type hints by string
|
# type hints by string
|
||||||
sig = inspect.Signature(Node.children).format_args()
|
sig = inspect.Signature(Node.children).format_args()
|
||||||
assert sig == '(self) -> List[typing_test_data.Node]'
|
assert sig == '(self) -> List[typing_test_data.Node]'
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from numbers import Integral
|
from numbers import Integral
|
||||||
from typing import List, TypeVar, Union, Callable, Tuple, Optional
|
from typing import Any, List, TypeVar, Union, Callable, Tuple, Optional
|
||||||
|
|
||||||
|
|
||||||
def f0(x: int, y: Integral) -> None:
|
def f0(x: int, y: Integral) -> None:
|
||||||
@ -72,6 +72,10 @@ def f13() -> Optional[str]:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def f14() -> Any:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Node:
|
class Node:
|
||||||
def __init__(self, parent: Optional['Node']) -> None:
|
def __init__(self, parent: Optional['Node']) -> None:
|
||||||
pass
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user