Commit dd351628 authored by Gregory P. Smith's avatar Gregory P. Smith

merge heads in 3.2

parents 029273fc 843fae93
...@@ -51,7 +51,7 @@ The module provides the following classes: ...@@ -51,7 +51,7 @@ The module provides the following classes:
.. versionchanged:: 3.2 .. versionchanged:: 3.2
*source_address* was added. *source_address* was added.
.. versionchanged:: 3.2 .. deprecated:: 3.2
The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses" The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses"
are not supported anymore. are not supported anymore.
...@@ -89,7 +89,7 @@ The module provides the following classes: ...@@ -89,7 +89,7 @@ The module provides the following classes:
This class now supports HTTPS virtual hosts if possible (that is, This class now supports HTTPS virtual hosts if possible (that is,
if :data:`ssl.HAS_SNI` is true). if :data:`ssl.HAS_SNI` is true).
.. versionchanged:: 3.2 .. deprecated:: 3.2
The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses" The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses"
are not supported anymore. are not supported anymore.
...@@ -99,7 +99,7 @@ The module provides the following classes: ...@@ -99,7 +99,7 @@ The module provides the following classes:
Class whose instances are returned upon successful connection. Not Class whose instances are returned upon successful connection. Not
instantiated directly by user. instantiated directly by user.
.. versionchanged:: 3.2 .. deprecated:: 3.2
The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses" The *strict* parameter is deprecated. HTTP 0.9-style "Simple Responses"
are not supported anymore. are not supported anymore.
......
...@@ -23,6 +23,7 @@ Public functions: Internaldate2tuple ...@@ -23,6 +23,7 @@ Public functions: Internaldate2tuple
__version__ = "2.58" __version__ = "2.58"
import binascii, errno, random, re, socket, subprocess, sys, time, calendar import binascii, errno, random, re, socket, subprocess, sys, time, calendar
from io import DEFAULT_BUFFER_SIZE
try: try:
import ssl import ssl
...@@ -1237,6 +1238,7 @@ class IMAP4_stream(IMAP4): ...@@ -1237,6 +1238,7 @@ class IMAP4_stream(IMAP4):
self.sock = None self.sock = None
self.file = None self.file = None
self.process = subprocess.Popen(self.command, self.process = subprocess.Popen(self.command,
bufsize=DEFAULT_BUFFER_SIZE,
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
shell=True, close_fds=True) shell=True, close_fds=True)
self.writefile = self.process.stdin self.writefile = self.process.stdin
......
...@@ -137,7 +137,10 @@ def stripid(text): ...@@ -137,7 +137,10 @@ def stripid(text):
return _re_stripid.sub(r'\1', text) return _re_stripid.sub(r'\1', text)
def _is_some_method(obj): def _is_some_method(obj):
return inspect.ismethod(obj) or inspect.ismethoddescriptor(obj) return (inspect.isfunction(obj) or
inspect.ismethod(obj) or
inspect.isbuiltin(obj) or
inspect.ismethoddescriptor(obj))
def allmethods(cl): def allmethods(cl):
methods = {} methods = {}
......
...@@ -389,6 +389,30 @@ class PydocDocTest(unittest.TestCase): ...@@ -389,6 +389,30 @@ class PydocDocTest(unittest.TestCase):
synopsis = pydoc.synopsis(TESTFN, {}) synopsis = pydoc.synopsis(TESTFN, {})
self.assertEqual(synopsis, 'line 1: h\xe9') self.assertEqual(synopsis, 'line 1: h\xe9')
def test_allmethods(self):
# issue 17476: allmethods was no longer returning unbound methods.
# This test is a bit fragile in the face of changes to object and type,
# but I can't think of a better way to do it without duplicating the
# logic of the function under test.
class TestClass(object):
def method_returning_true(self):
return True
# What we expect to get back: everything on object...
expected = dict(vars(object))
# ...plus our unbound method...
expected['method_returning_true'] = TestClass.method_returning_true
# ...but not the non-methods on object.
del expected['__doc__']
del expected['__class__']
# inspect resolves descriptors on type into methods, but vars doesn't,
# so we need to update __subclasshook__.
expected['__subclasshook__'] = TestClass.__subclasshook__
methods = pydoc.allmethods(TestClass)
self.assertDictEqual(methods, expected)
class PydocImportTest(unittest.TestCase): class PydocImportTest(unittest.TestCase):
......
...@@ -47,6 +47,9 @@ class TrivialTests(unittest.TestCase): ...@@ -47,6 +47,9 @@ class TrivialTests(unittest.TestCase):
for string, list in tests: for string, list in tests:
self.assertEqual(urllib.request.parse_http_list(string), list) self.assertEqual(urllib.request.parse_http_list(string), list)
def test_URLError_reasonstr(self):
err = urllib.error.URLError('reason')
self.assertIn(err.reason, str(err))
def test_request_headers_dict(): def test_request_headers_dict():
""" """
......
...@@ -947,7 +947,7 @@ class TreeviewTest(unittest.TestCase): ...@@ -947,7 +947,7 @@ class TreeviewTest(unittest.TestCase):
anchor=1) anchor=1)
# XXX skipping for now; should be fixed to work with newer ttk # XXX skipping for now; should be fixed to work with newer ttk
@unittest.skip @unittest.skip("skipping pending resolution of Issue #10734")
def test_heading_callback(self): def test_heading_callback(self):
def simulate_heading_click(x, y): def simulate_heading_click(x, y):
support.simulate_mouse_click(self.tv, x, y) support.simulate_mouse_click(self.tv, x, y)
......
...@@ -1098,6 +1098,7 @@ Richard Townsend ...@@ -1098,6 +1098,7 @@ Richard Townsend
Nathan Trapuzzano Nathan Trapuzzano
Laurence Tratt Laurence Tratt
John Tromp John Tromp
Diane Trout
Jason Trowbridge Jason Trowbridge
Brent Tubbs Brent Tubbs
Anthony Tuininga Anthony Tuininga
......
...@@ -233,6 +233,15 @@ Core and Builtins ...@@ -233,6 +233,15 @@ Core and Builtins
Library Library
------- -------
- Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.
- Issue #17443: impalib.IMAP4_stream was using the default unbuffered IO
in subprocess, but the imap code assumes buffered IO. In Python2 this
worked by accident. IMAP4_stream now explicitly uses buffered IO.
- Issue #17476: Fixed regression relative to Python2 in undocumented pydoc
'allmethods'; it was missing unbound methods on the class.
- Issue #16389: Fixed a performance regression relative to Python 3.1 in the - Issue #16389: Fixed a performance regression relative to Python 3.1 in the
caching of compiled regular expressions. caching of compiled regular expressions.
......
...@@ -895,7 +895,9 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) ...@@ -895,7 +895,9 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
} }
if (rtn == ERR) { if (rtn == ERR) {
/* getch() returns ERR in nodelay mode */ /* getch() returns ERR in nodelay mode */
PyErr_SetString(PyCursesError, "no input"); PyErr_CheckSignals();
if (!PyErr_Occurred())
PyErr_SetString(PyCursesError, "no input");
return NULL; return NULL;
} else if (rtn<=255) { } else if (rtn<=255) {
return Py_BuildValue("C", rtn); return Py_BuildValue("C", rtn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment