diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-11-02 20:06:30 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-11-02 22:29:22 +0900 |
commit | bcff35663f67d3e38bd186f6f89e5481d46cc462 (patch) | |
tree | 30d3b2972a83f851f5806bd1703daf80ee696b6b /sphinx/ext/autodoc.py | |
parent | 1aedca64e31ab1062de980f40f615cd5f844cdab (diff) | |
download | sphinx-git-bcff35663f67d3e38bd186f6f89e5481d46cc462.tar.gz |
Fix #3111: autodoc crashes with python3.6b3
Since 3.6b3, structure of typing.Callable has been changed.
Diffstat (limited to 'sphinx/ext/autodoc.py')
-rw-r--r-- | sphinx/ext/autodoc.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 967beada0..208a228f0 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -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__'): - params = 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: |