Merge branch '1.7' into 1.8

This commit is contained in:
Takeshi KOMIYA 2018-08-25 03:07:35 +09:00
commit ea3d0b3768
7 changed files with 41 additions and 15 deletions

View File

@ -6,6 +6,6 @@ jobs:
working_directory: /sphinx working_directory: /sphinx
steps: steps:
- checkout - checkout
- run: /python3.4/bin/pip install -U pip setuptools - run: /python3.5/bin/pip install -U pip setuptools
- run: /python3.4/bin/pip install -U .[test,websupport] - run: /python3.5/bin/pip install -U .[test,websupport]
- run: make test PYTHON=/python3.4/bin/python - run: make test PYTHON=/python3.5/bin/python

View File

@ -289,6 +289,10 @@ Features added
Bugs fixed Bugs fixed
---------- ----------
* #5320: intersphinx: crashed if invalid url given
* #5326: manpage: crashed when invalid docname is specified as ``man_pages``
* #5322: autodoc: ``Any`` typehint causes formatting error
Testing Testing
-------- --------

View File

@ -73,6 +73,10 @@ class ManualPageBuilder(Builder):
for info in self.config.man_pages: for info in self.config.man_pages:
docname, name, description, authors, section = info docname, name, description, authors, section = info
if docname not in self.env.all_docs:
logger.warning(__('"man_pages" config value references unknown '
'document %s'), docname)
continue
if isinstance(authors, string_types): if isinstance(authors, string_types):
if authors: if authors:
authors = [authors] authors = [authors]

View File

@ -410,14 +410,19 @@ def inspect_main(argv):
# type: (unicode) -> None # type: (unicode) -> None
print(msg, file=sys.stderr) print(msg, file=sys.stderr)
filename = argv[0] try:
invdata = fetch_inventory(MockApp(), '', filename) # type: ignore filename = argv[0]
for key in sorted(invdata or {}): invdata = fetch_inventory(MockApp(), '', filename) # type: ignore
print(key) for key in sorted(invdata or {}):
for entry, einfo in sorted(invdata[key].items()): print(key)
print('\t%-40s %s%s' % (entry, for entry, einfo in sorted(invdata[key].items()):
einfo[3] != '-' and '%-40s: ' % einfo[3] or '', print('\t%-40s %s%s' % (entry,
einfo[2])) einfo[3] != '-' and '%-40s: ' % einfo[3] or '',
einfo[2]))
except ValueError as exc:
print(exc.args[0] % exc.args[1:])
except Exception as exc:
print('Unknown error: %r' % exc)
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -546,8 +546,10 @@ class Signature(object):
qualname = annotation.__qualname__ qualname = annotation.__qualname__
elif getattr(annotation, '__forward_arg__', None): elif getattr(annotation, '__forward_arg__', None):
qualname = annotation.__forward_arg__ qualname = annotation.__forward_arg__
else: elif getattr(annotation, '__origin__', None):
qualname = self.format_annotation(annotation.__origin__) # ex. Union qualname = self.format_annotation(annotation.__origin__) # ex. Union
else:
qualname = repr(annotation).replace('typing.', '')
elif hasattr(annotation, '__qualname__'): elif hasattr(annotation, '__qualname__'):
qualname = '%s.%s' % (module, annotation.__qualname__) qualname = '%s.%s' % (module, annotation.__qualname__)
else: else:

View File

@ -232,7 +232,7 @@ def test_Signature_partialmethod():
reason='type annotation test is available on py34 or above') reason='type annotation test is available on py34 or above')
def test_Signature_annotations(): def test_Signature_annotations():
from typing_test_data import ( from typing_test_data import (
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, Node) f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, Node)
# Class annotations # Class annotations
sig = inspect.Signature(f0).format_args() sig = inspect.Signature(f0).format_args()
@ -293,9 +293,16 @@ def test_Signature_annotations():
sig = inspect.Signature(f13).format_args() sig = inspect.Signature(f13).format_args()
assert sig == '() -> Optional[str]' assert sig == '() -> Optional[str]'
# Any
sig = inspect.Signature(f14).format_args()
assert sig == '() -> Any'
# type hints by string # type hints by string
sig = inspect.Signature(Node.children).format_args() sig = inspect.Signature(Node.children).format_args()
assert sig == '(self) -> List[typing_test_data.Node]' if (3, 5, 0) <= sys.version_info < (3, 5, 3):
assert sig == '(self) -> List[Node]'
else:
assert sig == '(self) -> List[typing_test_data.Node]'
sig = inspect.Signature(Node.__init__).format_args() sig = inspect.Signature(Node.__init__).format_args()
assert sig == '(self, parent: Optional[Node]) -> None' assert sig == '(self, parent: Optional[Node]) -> None'

View File

@ -1,5 +1,5 @@
from numbers import Integral from numbers import Integral
from typing import List, TypeVar, Union, Callable, Tuple, Optional from typing import Any, List, TypeVar, Union, Callable, Tuple, Optional
def f0(x: int, y: Integral) -> None: def f0(x: int, y: Integral) -> None:
@ -72,6 +72,10 @@ def f13() -> Optional[str]:
pass pass
def f14() -> Any:
pass
class Node: class Node:
def __init__(self, parent: Optional['Node']) -> None: def __init__(self, parent: Optional['Node']) -> None:
pass pass