diff options
Diffstat (limited to 'lib/bb/data_smart.py')
-rw-r--r-- | lib/bb/data_smart.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index 941c158f7..b9c5d1e5b 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -809,6 +809,7 @@ class DataSmart(MutableMapping): def __iter__(self): deleted = set() + overrides = set() def keylist(d): klist = set() for key in d: @@ -816,6 +817,8 @@ class DataSmart(MutableMapping): continue if key in deleted: continue + if key in overrides: + continue if not d[key]: deleted.add(key) continue @@ -826,9 +829,21 @@ class DataSmart(MutableMapping): return klist + self.need_overrides() + for var in self.overridedata: + for (r, o) in self.overridedata[var]: + if o in self.overridesset: + overrides.add(var) + elif "_" in o: + if set(o.split("_")).issubset(self.overridesset): + overrides.add(var) + for k in keylist(self.dict): yield k + for k in overrides: + yield k + def __len__(self): return len(frozenset(self)) |