From b32d659b85901a8e04c6c921928483fda3b3e6e0 Mon Sep 17 00:00:00 2001 From: Isis Lovecruft Date: Fri, 15 Feb 2013 19:36:43 +0000 Subject: Add the storage utility for parsing the config file structure in a more readable fashion. --- src/leap/mx/util/storage.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/leap/mx/util/storage.py diff --git a/src/leap/mx/util/storage.py b/src/leap/mx/util/storage.py new file mode 100644 index 0000000..c4c797a --- /dev/null +++ b/src/leap/mx/util/storage.py @@ -0,0 +1,42 @@ + +class Storage(dict): + """ + A Storage object is like a dictionary except `obj.foo` can be used + in addition to `obj['foo']`. + + >>> o = Storage(a=1) + >>> o.a + 1 + >>> o['a'] + 1 + >>> o.a = 2 + >>> o['a'] + 2 + >>> del o.a + >>> o.a + None + """ + def __getattr__(self, key): + try: + return self[key] + except KeyError, k: + return None + + def __setattr__(self, key, value): + self[key] = value + + def __delattr__(self, key): + try: + del self[key] + except KeyError, k: + raise AttributeError, k + + def __repr__(self): + return '' + + def __getstate__(self): + return dict(self) + + def __setstate__(self, value): + for (k, v) in value.items(): + self[k] = v -- cgit v1.2.3