diff options
author | Brian Waldon <bcwaldon@gmail.com> | 2012-07-27 12:55:50 -0700 |
---|---|---|
committer | Brian Waldon <bcwaldon@gmail.com> | 2012-07-27 12:58:06 -0700 |
commit | 69aed68984cf4aba359193e143b63c7d54a91414 (patch) | |
tree | ee3d5c48bfe02e6fea6326fc993eba48e34f48fb | |
parent | f2b38319ba986c566dc9aaaf74747facfe1a1b0c (diff) | |
download | warlock-69aed68984cf4aba359193e143b63c7d54a91414.tar.gz |
Refactor attribute access methods
Clean up the implementation of the __getattr__, __setattr__,
__getitem__, and __setitem__ methods.
This does fix a bug where a lookup using dict-like syntax would
raise an AttribtueError. That will now correctly raise a KeyError.
Bump version to v0.3.1
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | warlock/core.py | 14 |
2 files changed, 8 insertions, 8 deletions
@@ -11,7 +11,7 @@ def parse_requirements(): setuptools.setup( name='warlock', - version='0.3.0', + version='0.3.1', description='Python object model built on top of JSON schema', author='Brian Waldon', author_email='bcwaldon@gmail.com', diff --git a/warlock/core.py b/warlock/core.py index 4675b88..c8359b7 100644 --- a/warlock/core.py +++ b/warlock/core.py @@ -40,11 +40,14 @@ def model_factory(schema): def __getattr__(self, key): try: - return self.__dict__['raw'][key] + return self.__getitem__(key) except KeyError: raise AttributeError(key) - def __setattr__(self, key, value): + def __getitem__(self, key): + return self.__dict__['raw'][key] + + def __setitem__(self, key, value): mutation = copy.deepcopy(self.__dict__['raw']) mutation[key] = value try: @@ -53,11 +56,8 @@ def model_factory(schema): raise InvalidOperation() self.__dict__['raw'] = mutation - def __getitem__(self, key): - return self.__getattr__(key) - - def __setitem__(self, key, value): - return self.__setattr__(key, value) + def __setattr__(self, key, value): + self.__setitem__(key, value) def iteritems(self): return copy.deepcopy(self.__dict__['raw']).iteritems() |