12345678910111213141516171819202122232425262728293031323334 |
- # 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)
|