summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-07-27 11:28:01 -0700
committerBrian Waldon <bcwaldon@gmail.com>2012-07-27 11:29:52 -0700
commit2c24556370b82dac6f97d316ec75931a74987b86 (patch)
treec1ae90e896e476e561102a52ad66901fd26b835a
parentd93ca7833f4907939507bc99648de4d4d6eb0616 (diff)
downloadwarlock-2c24556370b82dac6f97d316ec75931a74987b86.tar.gz
Enable dict-style access to models
Allow get and set of model attributes using dict-like syntax (i.e. model['attribute'] = 'value'). Bump version to 0.2.0
-rw-r--r--setup.py2
-rw-r--r--test/test_core.py8
-rw-r--r--warlock/core.py6
3 files changed, 14 insertions, 2 deletions
diff --git a/setup.py b/setup.py
index e689dd5..439651b 100644
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@ def parse_requirements():
setuptools.setup(
name='warlock',
- version='0.1.0',
+ version='0.2.0',
description='Python object model built on top of JSON schema',
author='Brian Waldon',
author_email='bcwaldon@gmail.com',
diff --git a/test/test_core.py b/test/test_core.py
index c7f0636..761da16 100644
--- a/test/test_core.py
+++ b/test/test_core.py
@@ -58,6 +58,12 @@ class TestCore(unittest.TestCase):
def test_iteritems(self):
Country = warlock.model_factory(fixture)
sweden = Country(name='Sweden', population=9379116)
- print sweden.iteritems()
self.assertEqual(set(list(sweden.iteritems())),
set([('name', 'Sweden'), ('population', 9379116)]))
+
+ def test_dict_syntax(self):
+ Country = warlock.model_factory(fixture)
+ sweden = Country(name='Sweden', population=9379116)
+ self.assertEqual(sweden['name'], 'Sweden')
+ sweden['name'] = 'Finland'
+ self.assertEqual(sweden['name'], 'Finland')
diff --git a/warlock/core.py b/warlock/core.py
index ee1d622..4b96345 100644
--- a/warlock/core.py
+++ b/warlock/core.py
@@ -53,6 +53,12 @@ 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 iteritems(self):
return copy.deepcopy(self.__dict__['raw']).iteritems()