summaryrefslogtreecommitdiff
path: root/sphinx/util/inspect.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/util/inspect.py')
-rw-r--r--sphinx/util/inspect.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py
index 2d15c2883..8c10b7aa5 100644
--- a/sphinx/util/inspect.py
+++ b/sphinx/util/inspect.py
@@ -5,7 +5,7 @@
Helpers for inspecting Python modules.
- :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from __future__ import absolute_import
@@ -404,10 +404,18 @@ class Signature(object):
if annotation == Ellipsis:
return '...'
if not isinstance(annotation, type):
- return repr(annotation)
+ qualified_name = repr(annotation)
+ if qualified_name.startswith('typing.'): # for typing.Union
+ return qualified_name.split('.', 1)[1]
+ else:
+ return qualified_name
- qualified_name = (annotation.__module__ + '.' + annotation.__qualname__ # type: ignore
- if annotation else repr(annotation))
+ if not annotation:
+ qualified_name = repr(annotation)
+ elif annotation.__module__ == 'typing':
+ qualified_name = annotation.__qualname__ # type: ignore
+ else:
+ qualified_name = (annotation.__module__ + '.' + annotation.__qualname__) # type: ignore # NOQA
if annotation.__module__ == 'builtins':
return annotation.__qualname__ # type: ignore
@@ -434,7 +442,7 @@ class Signature(object):
elif (hasattr(typing, 'UnionMeta') and # for py35 or below
isinstance(annotation, typing.UnionMeta) and # type: ignore
hasattr(annotation, '__union_params__')):
- params = annotation.__union_params__ # type: ignore
+ params = annotation.__union_params__
if params is not None:
param_str = ', '.join(self.format_annotation(p) for p in params)
return '%s[%s]' % (qualified_name, param_str)
@@ -442,7 +450,7 @@ class Signature(object):
getattr(annotation, '__args__', None) is not None and
hasattr(annotation, '__result__')):
# Skipped in the case of plain typing.Callable
- args = annotation.__args__ # type: ignore
+ args = annotation.__args__
if args is None:
return qualified_name
elif args is Ellipsis:
@@ -452,14 +460,14 @@ class Signature(object):
args_str = '[%s]' % ', '.join(formatted_args)
return '%s[%s, %s]' % (qualified_name,
args_str,
- self.format_annotation(annotation.__result__)) # type: ignore # NOQA
+ self.format_annotation(annotation.__result__))
elif (isinstance(annotation, typing.TupleMeta) and # type: ignore
hasattr(annotation, '__tuple_params__') and
hasattr(annotation, '__tuple_use_ellipsis__')):
- params = annotation.__tuple_params__ # type: ignore
+ params = annotation.__tuple_params__
if params is not None:
param_strings = [self.format_annotation(p) for p in params]
- if annotation.__tuple_use_ellipsis__: # type: ignore
+ if annotation.__tuple_use_ellipsis__:
param_strings.append('...')
return '%s[%s]' % (qualified_name,
', '.join(param_strings))