summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-07-27 12:55:50 -0700
committerBrian Waldon <bcwaldon@gmail.com>2012-07-27 12:58:06 -0700
commit69aed68984cf4aba359193e143b63c7d54a91414 (patch)
treeee3d5c48bfe02e6fea6326fc993eba48e34f48fb
parentf2b38319ba986c566dc9aaaf74747facfe1a1b0c (diff)
downloadwarlock-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.py2
-rw-r--r--warlock/core.py14
2 files changed, 8 insertions, 8 deletions
diff --git a/setup.py b/setup.py
index d3b5c45..e20c6e1 100644
--- a/setup.py
+++ b/setup.py
@@ -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()