From 3cb89711f8ba83a7e8fa24aebd308f889496eab9 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Thu, 9 Aug 2012 13:57:32 -0400 Subject: [PATCH] Be slightly less stupid about ConfigNodes --- earwigbot/config/node.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/earwigbot/config/node.py b/earwigbot/config/node.py index 345e181..a5746e2 100644 --- a/earwigbot/config/node.py +++ b/earwigbot/config/node.py @@ -23,25 +23,37 @@ __all__ = ["ConfigNode"] class ConfigNode(object): + def __init__(self): + self._data = {} + def __iter__(self): - for key in self.__dict__: + for key in self._data: yield key - def __getitem__(self, item): - return self.__dict__.__getitem__(item) + def __getitem__(self, key): + return self._data[key] + + def __setitem__(self, key, item): + self._data[key] = item + + def __getattr__(self, key): + return self._data[key] + + def __setattr__(self, key, item): + self._data[key] = item def _dump(self): - data = self.__dict__.copy() + data = self._data.copy() for key, val in data.iteritems(): if isinstance(val, ConfigNode): data[key] = val._dump() return data def _load(self, data): - self.__dict__ = data.copy() + self._data = data.copy() def _decrypt(self, cipher, intermediates, item): - base = self.__dict__ + base = self._data for inter in intermediates: try: base = base[inter] @@ -52,22 +64,22 @@ class ConfigNode(object): base[item] = cipher.decrypt(ciphertext).rstrip("\x00") def get(self, *args, **kwargs): - return self.__dict__.get(*args, **kwargs) + return self._data.get(*args, **kwargs) def keys(self): - return self.__dict__.keys() + return self._data.keys() def values(self): - return self.__dict__.values() + return self._data.values() def items(self): - return self.__dict__.items() + return self._data.items() def iterkeys(self): - return self.__dict__.iterkeys() + return self._data.iterkeys() def itervalues(self): - return self.__dict__.itervalues() + return self._data.itervalues() def iteritems(self): return self.__dict__.iteritems()