31d30
< import util
48c47
< class OptionParser(object):
---
> class OptionParser(dict):
55,56d53
< self._defaults = {}
< self._options = util.attrdict()
60a58,60
> def set_defaults(self, *args, **kwargs):
> return self._optparse.set_defaults(*args, **kwargs)
>
81d80
< default = kwargs.pop('default', nodefault)
87,90d85
< if default != nodefault:
< if dest not in self._options:
< self._options[dest] = default
<
116c111
< return super(OptionParser, self).__getattr__(attr)
---
> return super(OptionParser, self).__getattribute__(attr)
118,119c113,114
< if attr in self._options:
< return self._options[attr]
---
> if attr in self:
> return self[attr]
121c116
< raise AttributeError, "Option %s not found" % attr
---
> return super(OptionParser, self).__getattribute__(attr)
125c120,127
< return super(OptionParser, self).__setattr__(attr, value)
---
> super(OptionParser, self).__setattr__(attr, value)
> elif attr in self._allopts:
> defaults = { attr : value }
> self.set_defaults(**defaults)
> if attr in self:
> self[attr] = value
> else:
> super(OptionParser, self).__setattr__(attr, value)
127,131d128
< if attr in self._options:
< self._options[attr] = value
<
< return super(OptionParser, self).__setattr__(attr, value)
<
136,137c133,134
< if val is not None or key not in self._options:
< self._options[key] = val
---
> if val is not None or key not in self:
> self[key] = val