[Python-checkins] cpython (3.2): Issue #4608: urllib.request.urlopen does not return an iterable object

raymond.hettinger python-checkins at python.org
Sun Jun 26 14:30:40 CEST 2011


http://hg.python.org/cpython/rev/c0a68b948f5d
changeset: 70996:c0a68b948f5d
branch: 3.2
parent: 70994:f852e2d556af
user: Raymond Hettinger <python at rcn.com>
date: Sun Jun 26 14:29:35 2011 +0200
summary:
 Issue #4608: urllib.request.urlopen does not return an iterable object
files:
 Lib/test/test_urllib.py | 5 +++--
 Lib/urllib/response.py | 12 ++++++++----
 Misc/ACKS | 1 +
 3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -110,8 +110,9 @@
 # Test iterator
 # Don't need to count number of iterations since test would fail the
 # instant it returned anything beyond the first line from the
- # comparison
- for line in self.returned_obj.__iter__():
+ # comparison.
+ # Use the iterator in the usual implicit way to test for ticket #4608.
+ for line in self.returned_obj:
 self.assertEqual(line, self.text)
 
 class ProxyTests(unittest.TestCase):
diff --git a/Lib/urllib/response.py b/Lib/urllib/response.py
--- a/Lib/urllib/response.py
+++ b/Lib/urllib/response.py
@@ -23,10 +23,14 @@
 self.fileno = self.fp.fileno
 else:
 self.fileno = lambda: None
- if hasattr(self.fp, "__iter__"):
- self.__iter__ = self.fp.__iter__
- if hasattr(self.fp, "__next__"):
- self.__next__ = self.fp.__next__
+
+ def __iter__(self):
+ # Assigning `__iter__` to the instance doesn't work as intended
+ # because the iter builtin does something like `cls.__iter__(obj)`
+ # and thus fails to find the _bound_ method `obj.__iter__`.
+ # Returning just `self.fp` works for built-in file objects but
+ # might not work for general file-like objects.
+ return iter(self.fp)
 
 def __repr__(self):
 return '<%s at %r whose fp = %r>' % (self.__class__.__name__,
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -309,6 +309,7 @@
 Santiago Gala
 Yitzchak Gale
 Quentin Gallet-Gilles
+Riccardo Attilio Galli
 Raymund Galvin
 Nitin Ganatra
 Fred Gansevles
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /