diff --git a/CHANGES b/CHANGES index 77f75a6c5..1167b8de1 100644 --- a/CHANGES +++ b/CHANGES @@ -210,6 +210,9 @@ Features added Bugs fixed ---------- +* #3614: Sphinx crashes with requests-2.5.0 +* #3618: autodoc crashes with tupled arguments + Testing -------- diff --git a/Makefile b/Makefile index 28a33c8a0..a20df8f39 100644 --- a/Makefile +++ b/Makefile @@ -64,6 +64,7 @@ clean-backupfiles: clean-generated: find . -name '.DS_Store' -exec rm -f {} + + rm -rf Sphinx.egg-info/ rm -rf doc/_build/ rm -f sphinx/pycode/*.pickle rm -f utils/*3.py* diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 360c13768..58c7317a3 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -473,10 +473,19 @@ def formatargspec(function, args, varargs=None, varkw=None, defaults=None, for i, arg in enumerate(args): arg_fd = StringIO() - arg_fd.write(format_arg_with_annotation(arg)) - if defaults and i >= defaults_start: - arg_fd.write(' = ' if arg in annotations else '=') - arg_fd.write(object_description(defaults[i - defaults_start])) # type: ignore + if isinstance(arg, list): + # support tupled arguments list (only for py2): def foo((x, y)) + arg_fd.write('(') + arg_fd.write(format_arg_with_annotation(arg[0])) + for param in arg[1:]: + arg_fd.write(', ') + arg_fd.write(format_arg_with_annotation(param)) + arg_fd.write(')') + else: + arg_fd.write(format_arg_with_annotation(arg)) + if defaults and i >= defaults_start: + arg_fd.write(' = ' if arg in annotations else '=') + arg_fd.write(object_description(defaults[i - defaults_start])) # type: ignore formatted.append(arg_fd.getvalue()) if varargs: diff --git a/sphinx/util/requests.py b/sphinx/util/requests.py index 3b4b7f8b6..09b7a43b1 100644 --- a/sphinx/util/requests.py +++ b/sphinx/util/requests.py @@ -36,6 +36,16 @@ except ImportError: # for requests < 2.4.0 InsecureRequestWarning = None +try: + from requests.packages.urllib3.exceptions import InsecurePlatformWarning +except ImportError: + try: + # for Debian-jessie + from urllib3.exceptions import InsecurePlatformWarning + except ImportError: + # for requests < 2.4.0 + InsecurePlatformWarning = None + # try to load requests[security] (but only if SSL is available) try: import ssl @@ -48,8 +58,8 @@ else: pkg_resources.VersionConflict): if not getattr(ssl, 'HAS_SNI', False): # don't complain on each url processed about the SSL issue - requests.packages.urllib3.disable_warnings( - requests.packages.urllib3.exceptions.InsecurePlatformWarning) + if InsecurePlatformWarning: + requests.packages.urllib3.disable_warnings(InsecurePlatformWarning) warnings.warn( 'Some links may return broken results due to being unable to ' 'check the Server Name Indication (SNI) in the returned SSL cert '