summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r--pym/portage_util.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py
index a1e2d0227..25f4a70ae 100644
--- a/pym/portage_util.py
+++ b/pym/portage_util.py
@@ -720,8 +720,6 @@ class LazyItemsDict(dict):
self.lazy_items = {}
if initial_items is not None:
self.update(initial_items)
- if isinstance(initial_items, LazyItemsDict):
- self.lazy_items.update(initial_items.lazy_items)
def addLazyItem(self, item_key, value_callable, *pargs, **kwargs):
"""Add a lazy item for the given key. When the item is requested,
value_callable will be called with *pargs and **kwargs arguments."""
@@ -743,6 +741,16 @@ class LazyItemsDict(dict):
self._value = self._callable(*self._pargs, **self._kwargs)
return self._value
self.addLazyItem(item_key, SingletonItem(value_callable, *pargs, **kwargs))
+ def update(self, map_obj):
+ if isinstance(map_obj, LazyItemsDict):
+ for k in map_obj:
+ if k in map_obj.lazy_items:
+ dict.__setitem__(self, k, None)
+ else:
+ dict.__setitem__(self, k, map_obj[k])
+ self.lazy_items.update(map_obj.lazy_items)
+ else:
+ dict.update(self, map_obj)
def __getitem__(self, item_key):
if item_key in self.lazy_items:
value_callable, pargs, kwargs = self.lazy_items[item_key]