Skip to content

Repository files navigation

Warlock 🧙‍♀️

Create self-validating Python objects using JSON schema.

PyPIPyPI - Python VersionPyPI - Downloads

Build StatusCoverage StatusGitHub commits since latest release (branch)

Package management: poetryCode Style Black

Installation

Warlock is available on PyPI:

pip install warlock

Usage

  1. Create your schema

    >>>schema= {
    'name': 'Country',
    'properties': {
    'name': {'type': 'string'},
    'abbreviation': {'type': 'string'},
    'population': {'type': 'integer'},
    },
    'additionalProperties': False,
    }
  2. Create a model

    >>>importwarlock>>>Country=warlock.model_factory(schema)
  3. Create an object using your model

    >>>sweden=Country(name='Sweden', abbreviation='SE')
  4. 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'
  5. Generate a JSON Patch document to track changes

    >>>sweden.population=9453000>>>sweden.patch'[{"path": "/population", "value": 9453000, "op": "add"}]'

About

No description, website, or topics provided.

Resources

Contributing

Stars

150 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages