Fix #3111: autodoc crashes with python3.6b3

Since 3.6b3, structure of typing.Callable has been changed.
This commit is contained in:
Takeshi KOMIYA 2016-11-02 20:06:30 +09:00
parent 1aedca64e3
commit bcff35663f

View File

@ -263,6 +263,8 @@ def format_annotation(annotation):
"""
if typing and isinstance(annotation, typing.TypeVar):
return annotation.__name__
if annotation == Ellipsis:
return '...'
if not isinstance(annotation, type):
return repr(annotation)
@ -281,7 +283,12 @@ def format_annotation(annotation):
# arguments are in __parameters__.
params = None
if hasattr(annotation, '__args__'):
if len(annotation.__args__) <= 2:
params = annotation.__args__
else: # typing.Callable
args = ', '.join(format_annotation(a) for a in annotation.__args__[:-1])
result = format_annotation(annotation.__args__[-1])
return '%s[[%s], %s]' % (qualified_name, args, result)
elif hasattr(annotation, '__parameters__'):
params = annotation.__parameters__
if params is not None: