diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-02-19 12:27:28 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-02-19 12:27:28 +0000 |
commit | 8be1a1f81066241318ee5be858285ff14500884f (patch) | |
tree | 1b03310721b8a71728a6b2085552bf8b8877627e | |
parent | 50f6a9a03e4e75a33586fe41e704c61ca981dbc2 (diff) | |
download | portage-8be1a1f81066241318ee5be858285ff14500884f.tar.gz portage-8be1a1f81066241318ee5be858285ff14500884f.tar.bz2 portage-8be1a1f81066241318ee5be858285ff14500884f.zip |
Fix update() methods to work with python-3.0.
svn path=/main/trunk/; revision=12647
-rw-r--r-- | pym/portage/cache/mappings.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/pym/portage/cache/mappings.py b/pym/portage/cache/mappings.py index 5fe836daa..a632ce61d 100644 --- a/pym/portage/cache/mappings.py +++ b/pym/portage/cache/mappings.py @@ -115,7 +115,12 @@ class MutableMapping(Mapping): if other is None: pass elif hasattr(other, 'iteritems'): - for k, v in other.iteritems(): + # Use getattr to avoid interference from 2to3. + for k, v in getattr(other, 'iteritems')(): + self[k] = v + elif hasattr(other, 'items'): + # Use getattr to avoid interference from 2to3. + for k, v in getattr(other, 'items')(): self[k] = v elif hasattr(other, 'keys'): for k in other.keys(): @@ -358,14 +363,25 @@ def slot_dict_class(keys, prefix="_val_"): self[key] = default return default - def update(self, d): - i = getattr(d, "iteritems", None) - if i is None: - i = d + def update(self, other=None, **kwargs): + if other is None: + pass + elif hasattr(other, 'iteritems'): + # Use getattr to avoid interference from 2to3. + for k, v in getattr(other, 'iteritems')(): + self[k] = v + elif hasattr(other, 'items'): + # Use getattr to avoid interference from 2to3. + for k, v in getattr(other, 'items')(): + self[k] = v + elif hasattr(other, 'keys'): + for k in other.keys(): + self[k] = other[k] else: - i = i() - for k, v in i: - self[k] = v + for k, v in other: + self[k] = v + if kwargs: + self.update(kwargs) def __getitem__(self, k): try: |