Override keys() with a function, not an attribute

By mistake keys function has been overriden by a value.

Change-Id: I713bddcfb66c4835d477972ece7e0983d263377f
Closes-Bug: #1666913
This commit is contained in:
Georgy Kibardin 2017-04-07 10:25:27 +03:00
parent 9dabe06369
commit b8e2606daf
2 changed files with 9 additions and 3 deletions

View File

@ -103,3 +103,9 @@ f: 6"""
def test_repr(self):
d = UnionDict(self.D1, self.D2, self.D3)
self.assertEquals(eval(repr(d)), self.D)
def test_keys(self):
ud = UnionDict({'a': 1, 'b': 2, 'c': 3},
{'b': 2, 'c': 3, 'd': 4},
{'e': 5})
self.assertEquals(ud.keys(), {'a', 'b', 'c', 'd', 'e'})

View File

@ -31,7 +31,7 @@ class UnionDict(collections.Mapping):
self.dicts = list(dicts)
self.dicts.reverse()
self.keys = set(itertools.chain.from_iterable(dicts))
self.keys = lambda: set(itertools.chain.from_iterable(dicts))
def __getitem__(self, key):
values = []
@ -54,10 +54,10 @@ class UnionDict(collections.Mapping):
return UnionDict(*values)
def __iter__(self):
return iter(self.keys)
return iter(self.keys())
def __len__(self):
return len(self.keys)
return len(self.keys())
def __repr__(self):
items = ['{!r}: {!r}'.format(k, v) for k, v in self.items()]