On 9/17/2010 11:12 PM, Steven D'Aprano wrote:
I was writing some tests for a mapping class I have made, and I decided
to run those same tests over dict and UserDict. The built-in dict passed
all the tests, but UserDict failed one:
You forgot to specify Python version ;-).
class SimpleMappingTest(unittest.TestCase):
type2test = UserDict.UserDict
In 3.x, collections.UserDict
def test_iter(self):
k, v = [0, 1, 2, 3], 'abcd'
m = self.type2test(zip(k, v))
it = iter(m)
self.assert_(iter(it) is it)
self.assertEquals(sorted(it), k) # This line fails.
Not in 3.x
import collections
k, v = [0, 1, 2, 3], 'abcd'
m = collections.UserDict(zip(k, v))
it = iter(m)
assert iter(it) is it
assert sorted(it) == k
runs clean.
If I look at the source code for the UserDict module, I discover that
there's a second mapping class, IterableUserDict,
Not any more. One of numerous 3.x cleanups made possible by dropping
obsessive back compatibility, which, as Peter explained, wan the reason
for the hack.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list