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

merge heads in 3.3

parents 0408bf9c d17ca238
...@@ -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-removed:: 3.2 3.4
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-removed:: 3.2 3.4
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-removed:: 3.2 3.4
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.
......
...@@ -24,6 +24,8 @@ __version__ = "2.58" ...@@ -24,6 +24,8 @@ __version__ = "2.58"
import binascii, errno, random, re, socket, subprocess, sys, time, calendar import binascii, errno, random, re, socket, subprocess, sys, time, calendar
from datetime import datetime, timezone, timedelta from datetime import datetime, timezone, timedelta
from io import DEFAULT_BUFFER_SIZE
try: try:
import ssl import ssl
HAVE_SSL = True HAVE_SSL = True
...@@ -1244,6 +1246,7 @@ class IMAP4_stream(IMAP4): ...@@ -1244,6 +1246,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
......
...@@ -132,7 +132,10 @@ def stripid(text): ...@@ -132,7 +132,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 = {}
......
...@@ -395,6 +395,30 @@ class PydocDocTest(unittest.TestCase): ...@@ -395,6 +395,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):
......
...@@ -64,6 +64,9 @@ class TrivialTests(unittest.TestCase): ...@@ -64,6 +64,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)
......
...@@ -1216,6 +1216,7 @@ Alberto Trevino ...@@ -1216,6 +1216,7 @@ Alberto Trevino
Matthias Troffaes Matthias Troffaes
Tom Tromey Tom Tromey
John Tromp John Tromp
Diane Trout
Jason Trowbridge Jason Trowbridge
Brent Tubbs Brent Tubbs
Anthony Tuininga Anthony Tuininga
......
...@@ -197,6 +197,15 @@ Library ...@@ -197,6 +197,15 @@ Library
specifically addresses a stack misalignment issue on x86 and issues on specifically addresses a stack misalignment issue on x86 and issues on
some more recent platforms. some more recent platforms.
- Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.
- Issue #17443: imaplib.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 #16880: Do not assume _imp.load_dynamic() is defined in the imp module. - Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module.
- 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
......
...@@ -1138,6 +1138,8 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) ...@@ -1138,6 +1138,8 @@ 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_CheckSignals();
if (!PyErr_Occurred())
PyErr_SetString(PyCursesError, "no input"); PyErr_SetString(PyCursesError, "no input");
return NULL; return NULL;
} else if (rtn<=255) { } else if (rtn<=255) {
......
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