Create self-validating Python objects using JSON schema.
Warlock is available on PyPI:
pip install warlockCreate your schema
>>>schema= { 'name': 'Country', 'properties': { 'name': {'type': 'string'}, 'abbreviation': {'type': 'string'}, 'population': {'type': 'integer'}, }, 'additionalProperties': False, }
Create a model
>>>importwarlock>>>Country=warlock.model_factory(schema)
Create an object using your model
>>>sweden=Country(name='Sweden', abbreviation='SE')
Let the object validate itself
>>>sweden.name=5Traceback (mostrecentcalllast): File"<stdin>", line1, in<module>File"warlock/core.py", line53, in__setattr__raiseInvalidOperation(msg) warlock.core.InvalidOperation: Unabletoset'name'to'5'>>>sweden.overlord='Bears'Traceback (mostrecentcalllast): File"<stdin>", line1, in<module>File"warlock/core.py", line53, in__setattr__raiseInvalidOperation(msg) warlock.core.InvalidOperation: Unabletoset'overlord'to'Bears'
Generate a JSON Patch document to track changes
>>>sweden.population=9453000>>>sweden.patch'[{"path": "/population", "value": 9453000, "op": "add"}]'