summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/python-lib/cuddlefish/bunch.py
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/python-lib/cuddlefish/bunch.py')
-rw-r--r--addon-sdk/source/python-lib/cuddlefish/bunch.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/addon-sdk/source/python-lib/cuddlefish/bunch.py b/addon-sdk/source/python-lib/cuddlefish/bunch.py
new file mode 100644
index 000000000..5efa79f16
--- /dev/null
+++ b/addon-sdk/source/python-lib/cuddlefish/bunch.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Taken from Paver's paver.options module.
+
+class Bunch(dict):
+ """A dictionary that provides attribute-style access."""
+
+ def __repr__(self):
+ keys = self.keys()
+ keys.sort()
+ args = ', '.join(['%s=%r' % (key, self[key]) for key in keys])
+ return '%s(%s)' % (self.__class__.__name__, args)
+
+ def __getitem__(self, key):
+ item = dict.__getitem__(self, key)
+ if callable(item):
+ return item()
+ return item
+
+ def __getattr__(self, name):
+ try:
+ return self[name]
+ except KeyError:
+ raise AttributeError(name)
+
+ __setattr__ = dict.__setitem__
+
+ def __delattr__(self, name):
+ try:
+ del self[name]
+ except KeyError:
+ raise AttributeError(name)