Skip to main content

Warlock 🧙‍♀️

Create self-validating Python objects using JSON schema.

PyPI PyPI - Python Version PyPI - Downloads

Build Status Coverage Status GitHub commits since latest release (branch)

Package management: poetry Code 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

    >>> import warlock
    >>> 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 = 5
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "warlock/core.py", line 53, in __setattr__
        raise InvalidOperation(msg)
    warlock.core.InvalidOperation: Unable to set 'name' to '5'
    
    >>> sweden.overlord = 'Bears'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "warlock/core.py", line 53, in __setattr__
        raise InvalidOperation(msg)
    warlock.core.InvalidOperation: Unable to set 'overlord' to 'Bears'
    
  5. Generate a JSON Patch document to track changes

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

Metadata

Release files for warlock 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for warlock 2.1.0
File Size Uploaded Provenance Actions
warlock-2.1.0.tar.gz 8.0 kB Without provenance Details for warlock-2.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for warlock 2.1.0
File Interpreter ABI Platform Actions
warlock-2.1.0-py3-none-any.whl Python 3 none any Details for warlock-2.1.0-py3-none-any.whl

Total release size: 18.3 kB

Release files / warlock-2.1.0.tar.gz

Download URL warlock-2.1.0.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
82319ba017341e7fcdc81efc2be9dd2f8237a0da07c71476b5425651b317b1c9
BLAKE2b-256 checksum
How to use checksums
29c23ba4daeddd47f1cfdbc703048cbee27bcbc50535261a2bbe36412565f3c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.22

Release files / warlock-2.1.0-py3-none-any.whl

Download URL warlock-2.1.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55cb5ad3399083724f1bfbfef4234a11fbacfc78bf2b9c4d0c18b6e203cf78fe
BLAKE2b-256 checksum
How to use checksums
534b8b3a3ae43afd4f7e4eebd86b53924d5271f84857ca38161ca502d0891caa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.22

Security for warlock 2.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page