diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-05-21 11:02:06 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-05-21 11:02:06 +0900 |
commit | 0286c6810a16f12374af56c579c6911de097a6b6 (patch) | |
tree | 010da061778d5cd60e88afac5c6b87d41a2df08b /sphinx/ext/autodoc.py | |
parent | 8ca9d551198203fa82cc97f321124099b99e71b0 (diff) | |
parent | b412a9c8865443dfa363510ac881e217b67b2f5f (diff) | |
download | sphinx-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.py | 14 |
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) |