diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-08-11 13:52:21 -0700 |
---|---|---|
committer | Chris Larson <chris_larson@mentor.com> | 2010-08-11 13:52:21 -0700 |
commit | 5da7785f1b50c64844aee746ae20a234074155b0 (patch) | |
tree | 42a2acd36f0c9d97971c5c624f781214bebb224b /lib/bb | |
parent | 7898f9a20f0aa4afd97bc456487cc0d4d318a067 (diff) | |
parent | 89b5351c656d263b0ce513cee043bc046d20a01e (diff) | |
download | bitbake-5da7785f1b50c64844aee746ae20a234074155b0.tar.gz |
Merge branch 'data'
* data:
Make DataSmart inherit the MutableMapping ABC
Diffstat (limited to 'lib/bb')
-rw-r--r-- | lib/bb/data_smart.py | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index 01a333024..ac41c14fd 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -29,6 +29,7 @@ BitBake build tools. # Based on functions from the base bb module, Copyright 2003 Holger Schurig import copy, re, sys +from collections import MutableMapping import bb from bb import utils from bb.COW import COWDictBase @@ -40,7 +41,7 @@ __expand_var_regexp__ = re.compile(r"\${[^{}]+}") __expand_python_regexp__ = re.compile(r"\${@.+?}") -class DataSmart: +class DataSmart(MutableMapping): def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ): self.dict = {} @@ -324,23 +325,28 @@ class DataSmart: return data - # Dictionary Methods - def keys(self): - def _keys(d, mykey): + def __iter__(self): + seen = set() + def _keys(d): if "_data" in d: - _keys(d["_data"], mykey) + for key in _keys(d["_data"]): + yield key - for key in d.keys(): + for key in d: if key != "_data": - mykey[key] = None - keytab = {} - _keys(self.dict, keytab) - return keytab.keys() + if not key in seen: + seen.add(key) + yield key + return _keys(self.dict) + + def __len__(self): + return len(frozenset(self)) def __getitem__(self, item): - #print "Warning deprecated" return self.getVar(item, False) - def __setitem__(self, var, data): - #print "Warning deprecated" - self.setVar(var, data) + def __setitem__(self, var, value): + self.setVar(var, value) + + def __delitem__(self, var): + self.delVar(var) |