summaryrefslogtreecommitdiff
path: root/sphinx/ext/autodoc.py
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2016-05-21 11:02:06 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2016-05-21 11:02:06 +0900
commit0286c6810a16f12374af56c579c6911de097a6b6 (patch)
tree010da061778d5cd60e88afac5c6b87d41a2df08b /sphinx/ext/autodoc.py
parent8ca9d551198203fa82cc97f321124099b99e71b0 (diff)
parentb412a9c8865443dfa363510ac881e217b67b2f5f (diff)
downloadsphinx-git-0286c6810a16f12374af56c579c6911de097a6b6.tar.gz
Merge pull request #2532 from mitya57/stable
Fix for test failures with Python 3.5.2 snapshot
Diffstat (limited to 'sphinx/ext/autodoc.py')
-rw-r--r--sphinx/ext/autodoc.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index 7dc89d39a..e32511afa 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -269,9 +269,17 @@ def format_annotation(annotation):
if isinstance(annotation, typing.TypeVar):
return annotation.__name__
elif hasattr(typing, 'GenericMeta') and \
- isinstance(annotation, typing.GenericMeta) and \
- hasattr(annotation, '__parameters__'):
- params = annotation.__parameters__
+ isinstance(annotation, typing.GenericMeta):
+ # In Python 3.5.2+, all arguments are stored in __args__,
+ # whereas __parameters__ only contains generic parameters.
+ #
+ # Prior to Python 3.5.2, __args__ is not available, and all
+ # arguments are in __parameters__.
+ params = None
+ if hasattr(annotation, '__args__'):
+ params = annotation.__args__
+ elif hasattr(annotation, '__parameters__'):
+ params = annotation.__parameters__
if params is not None:
param_str = ', '.join(format_annotation(p) for p in params)
return '%s[%s]' % (qualified_name, param_str)