Merged revisions 86857 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r86857 | raymond.hettinger | 2010-11-28 22:56:12 -0500 (Sun, 28 Nov 2010) | 1 line Issue #10565: Iterator ABC should require both __next__ and __iter__. ........
This commit is contained in:
parent
30ec1154ac
commit
1fea5c4472
|
@ -82,7 +82,7 @@ class Iterator(Iterable):
|
|||
@classmethod
|
||||
def __subclasshook__(cls, C):
|
||||
if cls is Iterator:
|
||||
if _hasattr(C, "next"):
|
||||
if _hasattr(C, "next") and _hasattr(C, "__iter__"):
|
||||
return True
|
||||
return NotImplemented
|
||||
|
||||
|
|
|
@ -355,8 +355,19 @@ class TestOneTrickPonyABCs(ABCTestCase):
|
|||
for x in samples:
|
||||
self.assertIsInstance(x, Iterator)
|
||||
self.assertTrue(issubclass(type(x), Iterator), repr(type(x)))
|
||||
self.validate_abstract_methods(Iterator, 'next')
|
||||
self.validate_isinstance(Iterator, 'next')
|
||||
self.validate_abstract_methods(Iterator, 'next', '__iter__')
|
||||
|
||||
# Issue 10565
|
||||
class NextOnly:
|
||||
def __next__(self):
|
||||
yield 1
|
||||
raise StopIteration
|
||||
self.assertNotIsInstance(NextOnly(), Iterator)
|
||||
class NextOnlyNew(object):
|
||||
def __next__(self):
|
||||
yield 1
|
||||
raise StopIteration
|
||||
self.assertNotIsInstance(NextOnlyNew(), Iterator)
|
||||
|
||||
def test_Sized(self):
|
||||
non_samples = [None, 42, 3.14, 1j,
|
||||
|
|
|
@ -22,6 +22,9 @@ What's New in Python 2.7.1?
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #10565: The collections.Iterator ABC now checks for both
|
||||
``__iter__`` and ``next``.
|
||||
|
||||
- Issue #10092: Properly reset locale in calendar.Locale*Calendar classes.
|
||||
|
||||
- Issue #10459: Update CJK character names to Unicode 5.2.
|
||||
|
|
Loading…
Reference in New Issue