mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +00:00
merge heads in 3.3
This commit is contained in:
commit
cca8507758
9 changed files with 51 additions and 6 deletions
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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):
|
||||||
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):
|
||||||
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):
|
||||||
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
|
||||||
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
|
||||||
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)
|
||||||
}
|
}
|
||||||
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) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue