merge heads in 3.3

This commit is contained in:
Gregory P. Smith 2013-03-19 15:05:52 -07:00
commit cca8507758
9 changed files with 51 additions and 6 deletions

View file

@ -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:
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:
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.

View file

@ -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):
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

View file

@ -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 = {}

View file

@ -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):

View file

@ -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():
""" """

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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) {