]> code.ossystems Code Review - openembedded-core.git/commitdiff
Fix __getitem__ for DataSmart
authorChris Larson <chris_larson@mentor.com>
Wed, 6 Oct 2010 03:19:31 +0000 (20:19 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 4 Jan 2011 14:46:37 +0000 (14:46 +0000)
Ensure it raises KeyError for a missing key, this is required to use this as a
mapping in various places, e.g. as locals in an eval.

(Bitbake rev: 8d661ce0c303e8d69f17c1d095545d5ed086d1d5)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/data_smart.py

index 7de90056d57370e3060bcd6b0c05cfa90d779b2c..17a642ee2d2fa9506ee3857a09b361cac470380a 100644 (file)
@@ -150,7 +150,7 @@ class DataSmart(MutableMapping):
             for var in vars:
                 name = var[:-l]
                 try:
-                    self[name] = self[var]
+                    self.setVar(name, self.getVar(var, False))
                 except Exception:
                     logger.info("Untracked delVar")
 
@@ -366,7 +366,11 @@ class DataSmart(MutableMapping):
         return len(frozenset(self))
 
     def __getitem__(self, item):
-        return self.getVar(item, False)
+        value = self.getVar(item, False)
+        if value is None:
+            raise KeyError(item)
+        else:
+            return value
 
     def __setitem__(self, var, value):
         self.setVar(var, value)