Why IterableUserDict?
Terry Reedy
tjreedy at udel.edu
Sat Sep 18 19:08:57 EDT 2010
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
More information about the Python-list
mailing list