summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-02-19 12:27:28 +0000
committerZac Medico <zmedico@gentoo.org>2009-02-19 12:27:28 +0000
commit8be1a1f81066241318ee5be858285ff14500884f (patch)
tree1b03310721b8a71728a6b2085552bf8b8877627e /pym/portage/cache/mappings.py
parentTweak exception handling indentation to avoid a bug in 2to3. (diff)
downloadportage-idfetch-8be1a1f81066241318ee5be858285ff14500884f.tar.gz
portage-idfetch-8be1a1f81066241318ee5be858285ff14500884f.tar.bz2
portage-idfetch-8be1a1f81066241318ee5be858285ff14500884f.zip
Fix update() methods to work with python-3.0.
svn path=/main/trunk/; revision=12647
Diffstat (limited to 'pym/portage/cache/mappings.py')
-rw-r--r--pym/portage/cache/mappings.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/pym/portage/cache/mappings.py b/pym/portage/cache/mappings.py
index 5fe836da..a632ce61 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: