[Python-3000-checkins] r58068 - in python/branches/py3k: Doc/library/exceptions.rst Doc/library/socket.rst Doc/whatsnew/2.6.rst Lib/test/test_urllib2net.py Lib/urllib2.py Modules/socketmodule.c
gregory.p.smith
python-3000-checkins at python.org
Mon Sep 10 01:55:56 CEST 2007
Author: gregory.p.smith
Date: Mon Sep 10 01:55:55 2007
New Revision: 58068
Modified:
python/branches/py3k/Doc/library/exceptions.rst
python/branches/py3k/Doc/library/socket.rst
python/branches/py3k/Doc/whatsnew/2.6.rst
python/branches/py3k/Lib/test/test_urllib2net.py
python/branches/py3k/Lib/urllib2.py
python/branches/py3k/Modules/socketmodule.c
Log:
merge this from trunk:
r58067 | gregory.p.smith | 2007-09-09 16:36:46 -0700 (Sun, 09 Sep 2007) | 22 lin
es
Change socket.error to inherit from IOError rather than being a stand
alone class. This addresses the primary concern in
http://bugs.python.org/issue1706815
python-dev discussion here:
http://mail.python.org/pipermail/python-dev/2007-July/073749.html
I chose IOError rather than EnvironmentError as the base class since
socket objects are often used as transparent duck typed file objects
in code already prepared to deal with IOError exceptions.
also a minor fix:
urllib2 - fix a couple places where IOError was raised rather than URLError.
for better or worse, URLError already inherits from IOError so
this won't break any existing code.
test_urllib2net - replace bad ftp urls.
Modified: python/branches/py3k/Doc/library/exceptions.rst
==============================================================================
--- python/branches/py3k/Doc/library/exceptions.rst (original)
+++ python/branches/py3k/Doc/library/exceptions.rst Mon Sep 10 01:55:55 2007
@@ -147,6 +147,9 @@
This class is derived from :exc:`EnvironmentError`. See the discussion above
for more information on exception instance attributes.
+ .. versionchanged:: 2.6
+ Changed :exc:`socket.error` to use this as a base class.
+
.. exception:: ImportError
Modified: python/branches/py3k/Doc/library/socket.rst
==============================================================================
--- python/branches/py3k/Doc/library/socket.rst (original)
+++ python/branches/py3k/Doc/library/socket.rst Mon Sep 10 01:55:55 2007
@@ -85,6 +85,9 @@
accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names
for the error codes defined by the underlying operating system.
+ .. versionchanged:: 2.6
+ :exc:`socket.error` is now a child class of :exc:`IOError`.
+
.. exception:: herror
Modified: python/branches/py3k/Doc/whatsnew/2.6.rst
==============================================================================
--- python/branches/py3k/Doc/whatsnew/2.6.rst (original)
+++ python/branches/py3k/Doc/whatsnew/2.6.rst Mon Sep 10 01:55:55 2007
@@ -282,7 +282,8 @@
This section lists previously described changes that may require changes to your
code:
-* Everything is all in the details!
+* The :mod:`socket` module exception :exc:`socket.error` now inherits from
+ :exc:`IOError`.
.. % ======================================================================
Modified: python/branches/py3k/Lib/test/test_urllib2net.py
==============================================================================
--- python/branches/py3k/Lib/test/test_urllib2net.py (original)
+++ python/branches/py3k/Lib/test/test_urllib2net.py Mon Sep 10 01:55:55 2007
@@ -164,8 +164,9 @@
def test_ftp(self):
urls = [
- 'ftp://www.python.org/pub/python/misc/sousa.au',
- 'ftp://www.python.org/pub/tmp/blat',
+ 'ftp://ftp.kernel.org/pub/linux/kernel/README',
+ 'ftp://ftp.kernel.org/pub/linux/kernel/non-existant-file',
+ #'ftp://ftp.kernel.org/pub/leenox/kernel/test',
'ftp://gatekeeper.research.compaq.com/pub/DEC/SRC'
'/research-reports/00README-Legal-Rules-Regs',
]
@@ -179,10 +180,7 @@
f.close()
urls = [
'file:'+sanepathname2url(os.path.abspath(TESTFN)),
-
- # XXX bug, should raise URLError
- #('file://nonsensename/etc/passwd', None, urllib2.URLError)
- ('file://nonsensename/etc/passwd', None, (EnvironmentError, socket.error))
+ ('file:///nonsensename/etc/passwd', None, urllib2.URLError),
]
self._test_urls(urls, self._extra_handlers())
finally:
@@ -242,11 +240,11 @@
debug(url)
try:
f = urllib2.urlopen(url, req)
- except (IOError, socket.error, OSError) as err:
+ except EnvironmentError as err:
debug(err)
if expected_err:
- msg = ("Didn't get expected error(s) %s for %s %s, got %s" %
- (expected_err, url, req, err))
+ msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" %
+ (expected_err, url, req, type(err), err))
self.assert_(isinstance(err, expected_err), msg)
else:
with test_support.transient_internet():
Modified: python/branches/py3k/Lib/urllib2.py
==============================================================================
--- python/branches/py3k/Lib/urllib2.py (original)
+++ python/branches/py3k/Lib/urllib2.py Mon Sep 10 01:55:55 2007
@@ -1240,7 +1240,7 @@
import mimetypes
host = req.get_host()
if not host:
- raise IOError('ftp error', 'no host given')
+ raise URLError('ftp error', 'no host given')
host, port = splitport(host)
if port is None:
port = ftplib.FTP_PORT
@@ -1286,7 +1286,7 @@
headers = mimetools.Message(sf)
return addinfourl(fp, headers, req.get_full_url())
except ftplib.all_errors as msg:
- raise IOError('ftp error', msg).with_traceback(sys.exc_info()[2])
+ raise URLError('ftp error', msg).with_traceback(sys.exc_info()[2])
def connect_ftp(self, user, passwd, host, port, dirs, timeout):
fw = ftpwrapper(user, passwd, host, port, dirs, timeout)
Modified: python/branches/py3k/Modules/socketmodule.c
==============================================================================
--- python/branches/py3k/Modules/socketmodule.c (original)
+++ python/branches/py3k/Modules/socketmodule.c Mon Sep 10 01:55:55 2007
@@ -4035,7 +4035,8 @@
if (m == NULL)
return;
- socket_error = PyErr_NewException("socket.error", NULL, NULL);
+ socket_error = PyErr_NewException("socket.error",
+ PyExc_IOError, NULL);
if (socket_error == NULL)
return;
PySocketModuleAPI.error = socket_error;
More information about the Python-3000-checkins
mailing list