blob: 1753d24e01e0c1582852b993da26c18361f92ad3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
"""Core Warlock functionality"""
#import jsonschema
def model_factory(schema):
"""Generate a model class based on the provided JSON Schema
:param schema: dict representing valid JSON schema
"""
class Model(object):
"""Self-validating model for arbitrary objects"""
def __init__(self, **kwargs):
self.__dict__['raw'] = kwargs
def __getattr__(self, key):
try:
return self.__dict__['raw'][key]
except KeyError:
raise AttributeError(key)
def __setattr__(self, key, value):
if key in self.__dict__['raw']:
self.__dict__['raw'][key] = value
else:
raise AttributeError(key)
Model.__name__ = schema['name']
return Model
|