bpo-42413: socket.timeout is now an alias of TimeoutError (GH-23413)
Signed-off-by: Christian Heimes <christian@python.org>
diff --git a/Lib/http/server.py b/Lib/http/server.py
index fa204fb..ee99182 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -414,7 +414,7 @@ def handle_one_request(self):
method = getattr(self, mname)
method()
self.wfile.flush() #actually send the response if not already done.
- except socket.timeout as e:
+ except TimeoutError as e:
#a read or a write timed out. Discard this connection
self.log_error("Request timed out: %r", e)
self.close_connection = True
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index b69916d..343d2ef 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -463,7 +463,7 @@ def start_subprocess(self):
self.rpcclt.listening_sock.settimeout(10)
try:
self.rpcclt.accept()
- except socket.timeout:
+ except TimeoutError:
self.display_no_subprocess_error()
return None
self.rpcclt.register("console", self.tkconsole)
@@ -498,7 +498,7 @@ def restart_subprocess(self, with_cwd=False, filename=''):
self.spawn_subprocess()
try:
self.rpcclt.accept()
- except socket.timeout:
+ except TimeoutError:
self.display_no_subprocess_error()
return None
self.transfer_path(with_cwd=with_cwd)
diff --git a/Lib/socket.py b/Lib/socket.py
index cafa573..54a3807 100755
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -377,7 +377,7 @@ def _sendfile_use_sendfile(self, file, offset=0, count=None):
try:
while True:
if timeout and not selector_select(timeout):
- raise _socket.timeout('timed out')
+ raise TimeoutError('timed out')
if count:
blocksize = count - total_sent
if blocksize <= 0:
diff --git a/Lib/test/support/socket_helper.py b/Lib/test/support/socket_helper.py
index 7070c12..e78712b 100644
--- a/Lib/test/support/socket_helper.py
+++ b/Lib/test/support/socket_helper.py
@@ -225,7 +225,7 @@ def transient_internet(resource_name, *, timeout=_NOT_SET, errnos=()):
def filter_error(err):
n = getattr(err, 'errno', None)
- if (isinstance(err, socket.timeout) or
+ if (isinstance(err, TimeoutError) or
(isinstance(err, socket.gaierror) and n in gai_errnos) or
(isinstance(err, urllib.error.HTTPError) and
500 <= err.code <= 599) or
diff --git a/Lib/test/test_asyncio/functional.py b/Lib/test/test_asyncio/functional.py
index 5cd0659..74490a8 100644
--- a/Lib/test/test_asyncio/functional.py
+++ b/Lib/test/test_asyncio/functional.py
@@ -248,7 +248,7 @@ def _run(self):
conn, addr = self._sock.accept()
except BlockingIOError:
continue
- except socket.timeout:
+ except TimeoutError:
if not self._active:
return
else:
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
index 06c6bc2..3bd904d 100644
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -69,7 +69,7 @@ def capture_server(evt, buf, serv):
try:
serv.listen()
conn, addr = serv.accept()
- except socket.timeout:
+ except TimeoutError:
pass
else:
n = 200
diff --git a/Lib/test/test_exception_hierarchy.py b/Lib/test/test_exception_hierarchy.py
index 43b4af8..89fe9dd 100644
--- a/Lib/test/test_exception_hierarchy.py
+++ b/Lib/test/test_exception_hierarchy.py
@@ -40,10 +40,10 @@ def test_builtin_errors(self):
self.assertIs(EnvironmentError, OSError)
def test_socket_errors(self):
- self.assertIs(socket.error, IOError)
+ self.assertIs(socket.error, OSError)
self.assertIs(socket.gaierror.__base__, OSError)
self.assertIs(socket.herror.__base__, OSError)
- self.assertIs(socket.timeout.__base__, OSError)
+ self.assertIs(socket.timeout, TimeoutError)
def test_select_error(self):
self.assertIs(select.error, OSError)
diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
index 39658f2..2424911 100644
--- a/Lib/test/test_ftplib.py
+++ b/Lib/test/test_ftplib.py
@@ -1036,7 +1036,7 @@ def server(self):
self.evt.set()
try:
conn, addr = self.sock.accept()
- except socket.timeout:
+ except TimeoutError:
pass
else:
conn.sendall(b"1 Hola mundo\n")
diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py
index 96bcb09..0cab789 100644
--- a/Lib/test/test_imaplib.py
+++ b/Lib/test/test_imaplib.py
@@ -476,7 +476,7 @@ def handle(self):
_, server = self._setup(TimeoutHandler)
addr = server.server_address[1]
- with self.assertRaises(socket.timeout):
+ with self.assertRaises(TimeoutError):
client = self.imap_class("localhost", addr, timeout=0.001)
def test_with_statement(self):
diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py
index 2ac345d..5488683 100644
--- a/Lib/test/test_poplib.py
+++ b/Lib/test/test_poplib.py
@@ -501,7 +501,7 @@ def server(self, evt, serv):
conn, addr = serv.accept()
conn.send(b"+ Hola mundo\n")
conn.close()
- except socket.timeout:
+ except TimeoutError:
pass
finally:
serv.close()
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index c656790..5a8ff36 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -528,7 +528,7 @@ def handler(signum, frame):
while True:
write.send(chunk)
written += chunk_size
- except (BlockingIOError, socket.timeout):
+ except (BlockingIOError, TimeoutError):
pass
print(f"%s bytes written into the socketpair" % written, flush=True)
diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py
index 7816ed3..9198538 100644
--- a/Lib/test/test_smtplib.py
+++ b/Lib/test/test_smtplib.py
@@ -40,7 +40,7 @@ def server(evt, buf, serv):
evt.set()
try:
conn, addr = serv.accept()
- except socket.timeout:
+ except TimeoutError:
pass
else:
n = 500
@@ -193,7 +193,7 @@ def debugging_server(serv, serv_evt, client_evt):
n -= 1
- except socket.timeout:
+ except TimeoutError:
pass
finally:
if not client_evt.is_set():
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 8063832..5f57ab2 100755
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -1611,7 +1611,7 @@ def raising_handler(*args):
if with_timeout:
signal.signal(signal.SIGALRM, ok_handler)
signal.alarm(1)
- self.assertRaises(socket.timeout, c.sendall,
+ self.assertRaises(TimeoutError, c.sendall,
b"x" * support.SOCK_MAX_SIZE)
finally:
signal.alarm(0)
@@ -2966,7 +2966,7 @@ def _testSendmsgTimeout(self):
try:
while True:
self.sendmsgToServer([b"a"*512])
- except socket.timeout:
+ except TimeoutError:
pass
except OSError as exc:
if exc.errno != errno.ENOMEM:
@@ -2974,7 +2974,7 @@ def _testSendmsgTimeout(self):
# bpo-33937 the test randomly fails on Travis CI with
# "OSError: [Errno 12] Cannot allocate memory"
else:
- self.fail("socket.timeout not raised")
+ self.fail("TimeoutError not raised")
finally:
self.misc_event.set()
@@ -3109,7 +3109,7 @@ def testRecvmsgTimeout(self):
# Check that timeout works.
try:
self.serv_sock.settimeout(0.03)
- self.assertRaises(socket.timeout,
+ self.assertRaises(TimeoutError,
self.doRecvmsg, self.serv_sock, len(MSG))
finally:
self.misc_event.set()
@@ -4827,7 +4827,7 @@ def testReadAfterTimeout(self):
self.cli_conn.settimeout(1)
self.read_file.read(3)
# First read raises a timeout
- self.assertRaises(socket.timeout, self.read_file.read, 1)
+ self.assertRaises(TimeoutError, self.read_file.read, 1)
# Second read is disallowed
with self.assertRaises(OSError) as ctx:
self.read_file.read(1)
@@ -5092,7 +5092,7 @@ class NetworkConnectionNoServer(unittest.TestCase):
class MockSocket(socket.socket):
def connect(self, *args):
- raise socket.timeout('timed out')
+ raise TimeoutError('timed out')
@contextlib.contextmanager
def mocked_socket_module(self):
@@ -5142,13 +5142,13 @@ def test_create_connection_timeout(self):
with self.mocked_socket_module():
try:
socket.create_connection((HOST, 1234))
- except socket.timeout:
+ except TimeoutError:
pass
except OSError as exc:
if socket_helper.IPV6_ENABLED or exc.errno != errno.EAFNOSUPPORT:
raise
else:
- self.fail('socket.timeout not raised')
+ self.fail('TimeoutError not raised')
class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
@@ -5250,7 +5250,7 @@ def _testInsideTimeout(self):
def _testOutsideTimeout(self):
self.cli = sock = socket.create_connection((HOST, self.port), timeout=1)
- self.assertRaises(socket.timeout, lambda: sock.recv(5))
+ self.assertRaises(TimeoutError, lambda: sock.recv(5))
class TCPTimeoutTest(SocketTCPTest):
@@ -5259,7 +5259,7 @@ def testTCPTimeout(self):
def raise_timeout(*args, **kwargs):
self.serv.settimeout(1.0)
self.serv.accept()
- self.assertRaises(socket.timeout, raise_timeout,
+ self.assertRaises(TimeoutError, raise_timeout,
"Error generating a timeout exception (TCP)")
def testTimeoutZero(self):
@@ -5267,7 +5267,7 @@ def testTimeoutZero(self):
try:
self.serv.settimeout(0.0)
foo = self.serv.accept()
- except socket.timeout:
+ except TimeoutError:
self.fail("caught timeout instead of error (TCP)")
except OSError:
ok = True
@@ -5292,7 +5292,7 @@ def alarm_handler(signal, frame):
try:
signal.alarm(2) # POSIX allows alarm to be up to 1 second early
foo = self.serv.accept()
- except socket.timeout:
+ except TimeoutError:
self.fail("caught timeout instead of Alarm")
except Alarm:
pass
@@ -5316,7 +5316,7 @@ def testUDPTimeout(self):
def raise_timeout(*args, **kwargs):
self.serv.settimeout(1.0)
self.serv.recv(1024)
- self.assertRaises(socket.timeout, raise_timeout,
+ self.assertRaises(TimeoutError, raise_timeout,
"Error generating a timeout exception (UDP)")
def testTimeoutZero(self):
@@ -5324,7 +5324,7 @@ def testTimeoutZero(self):
try:
self.serv.settimeout(0.0)
foo = self.serv.recv(1024)
- except socket.timeout:
+ except TimeoutError:
self.fail("caught timeout instead of error (UDP)")
except OSError:
ok = True
@@ -5341,7 +5341,7 @@ def testUDPLITETimeout(self):
def raise_timeout(*args, **kwargs):
self.serv.settimeout(1.0)
self.serv.recv(1024)
- self.assertRaises(socket.timeout, raise_timeout,
+ self.assertRaises(TimeoutError, raise_timeout,
"Error generating a timeout exception (UDPLITE)")
def testTimeoutZero(self):
@@ -5349,7 +5349,7 @@ def testTimeoutZero(self):
try:
self.serv.settimeout(0.0)
foo = self.serv.recv(1024)
- except socket.timeout:
+ except TimeoutError:
self.fail("caught timeout instead of error (UDPLITE)")
except OSError:
ok = True
@@ -5365,6 +5365,8 @@ def testExceptionTree(self):
self.assertTrue(issubclass(socket.herror, OSError))
self.assertTrue(issubclass(socket.gaierror, OSError))
self.assertTrue(issubclass(socket.timeout, OSError))
+ self.assertIs(socket.error, OSError)
+ self.assertIs(socket.timeout, TimeoutError)
def test_setblocking_invalidfd(self):
# Regression test for issue #28471
@@ -6167,7 +6169,7 @@ def _testWithTimeoutTriggeredSend(self):
with socket.create_connection(address) as sock:
sock.settimeout(0.01)
meth = self.meth_from_sock(sock)
- self.assertRaises(socket.timeout, meth, file)
+ self.assertRaises(TimeoutError, meth, file)
def testWithTimeoutTriggeredSend(self):
conn = self.accept_conn()
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 8744e59..e5cd962 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -2574,7 +2574,7 @@ def run(self):
handler = self.ConnectionHandler(self, newconn, connaddr)
handler.start()
handler.join()
- except socket.timeout:
+ except TimeoutError:
pass
except KeyboardInterrupt:
self.stop()
@@ -3691,7 +3691,7 @@ def serve():
c.settimeout(0.2)
c.connect((host, port))
# Will attempt handshake and time out
- self.assertRaisesRegex(socket.timeout, "timed out",
+ self.assertRaisesRegex(TimeoutError, "timed out",
test_wrap_socket, c)
finally:
c.close()
@@ -3700,7 +3700,7 @@ def serve():
c = test_wrap_socket(c)
c.settimeout(0.2)
# Will attempt handshake and time out
- self.assertRaisesRegex(socket.timeout, "timed out",
+ self.assertRaisesRegex(TimeoutError, "timed out",
c.connect, (host, port))
finally:
c.close()
diff --git a/Lib/test/test_telnetlib.py b/Lib/test/test_telnetlib.py
index 7633901..8e36051 100644
--- a/Lib/test/test_telnetlib.py
+++ b/Lib/test/test_telnetlib.py
@@ -16,7 +16,7 @@ def server(evt, serv):
try:
conn, addr = serv.accept()
conn.close()
- except socket.timeout:
+ except TimeoutError:
pass
finally:
serv.close()
diff --git a/Lib/test/test_timeout.py b/Lib/test/test_timeout.py
index ac803f5..823d5c3 100644
--- a/Lib/test/test_timeout.py
+++ b/Lib/test/test_timeout.py
@@ -122,7 +122,7 @@ def _sock_operation(self, count, timeout, method, *args):
"""
Test the specified socket method.
- The method is run at most `count` times and must raise a socket.timeout
+ The method is run at most `count` times and must raise a TimeoutError
within `timeout` + self.fuzz seconds.
"""
self.sock.settimeout(timeout)
@@ -131,11 +131,11 @@ def _sock_operation(self, count, timeout, method, *args):
t1 = time.monotonic()
try:
method(*args)
- except socket.timeout as e:
+ except TimeoutError as e:
delta = time.monotonic() - t1
break
else:
- self.fail('socket.timeout was not raised')
+ self.fail('TimeoutError was not raised')
# These checks should account for timing unprecision
self.assertLess(delta, timeout + self.fuzz)
self.assertGreater(delta, timeout - 1.0)
@@ -204,7 +204,7 @@ def testConnectTimeout(self):
sock.settimeout(timeout)
try:
sock.connect((whitehole))
- except socket.timeout:
+ except TimeoutError:
pass
except OSError as err:
if err.errno == errno.ECONNREFUSED:
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index c1d55ee..4750ad9 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -277,7 +277,7 @@ def _test_urls(self, urls, handlers, retry=True):
ioerror_peer_reset:
buf = f.read()
debug("read %d bytes" % len(buf))
- except socket.timeout:
+ except TimeoutError:
print("<timeout: %s>" % url, file=sys.stderr)
f.close()
time.sleep(0.1)
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 3dfa84b..c54aeb1 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -648,7 +648,7 @@ def _(x, y):
serv.handle_request()
numrequests -= 1
- except socket.timeout:
+ except TimeoutError:
pass
finally:
serv.socket.close()
@@ -713,7 +713,7 @@ def _marshaled_dispatch(self, data, dispatch_method=None, path=None):
serv.handle_request()
numrequests -= 1
- except socket.timeout:
+ except TimeoutError:
pass
finally:
serv.socket.close()