Skip to main content

Schema Models

PyPI PyPI - Python Version REUSE status

Use this library to turn a JSON Schema into a plain 'ol Python dataclass.

Installation

Install this package using the usual suspects.

pip install schemamodels

Usage

This library only supports JSON schemas of type: object:

    {
        "$id": "https://schema.dev/fake-schema.schema.json",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "fake-schema",
        "description": "Blue Blah",
        "type": "object",
        "properties": {
            "property_a": {
              "default": 5,
              "type": "integer"
            },
            "property_b": {
              "type": "string"
            }
        }
    }
from schemamodels import SchemaModelFactory

schema_string = '..'
my_json_schema = json.loads(schema_string)

factory = SchemaModelFactory()
factory.register(my_json_schema)

Use your new dataclass

from schemamodels import exceptions
from schemamodels.dynamic import FakeSchema

your_data_instance = FakeSchema(property_a=2334)  # OK

with pytest.raises(exceptions.ValueTypeViolation):
  your_data_instance = FakeSchema(property_a="hello")

Why this library exists

Faster than defining dataclasses manually

The class-like syntax of creating dataclasses is a useful way to model a valid JSON schema. This library essentially makes your existing JSON schemas usable as a Python dataclass.

Useable everywhere

Taking the time to construct a plain ol' Pythjon dataclass, ensures widespread utility across of multiple domains of study and applications.

Just-enough validation

The dataclasses are not completely dumb. Every dataclass object that originated from a valid JSON schema, will perform runtime checks on the input you provide it.

These basic checks are performed every time you create a new instance of a generated dataclass:

  • Are the field names correct?
  • Are the required fields present?
  • Does the input match the datatype expectations set forth by the generated dataclass?

License

This codebase is licensed under the GPLv3+ and therefore the use, inclusion, modification, and distribution of this software is governed by the GPL.

To opt-out of the obligations of the GPL, inquire about the commercial license by sending an email to: license@civichacker.com.

Metadata

Release files for schemamodels 0.9.1

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

Source distribution (sdist)

Source distribution for schemamodels 0.9.1
File Size Uploaded
schemamodels-0.9.1.tar.gz 16.0 kB Details

Built distribution (wheel)

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

Total release size: 48.1 kB

Release files / schemamodels-0.9.1.tar.gz

Download URL schemamodels-0.9.1.tar.gz
Size 16.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2816e9612f86b9368aeae57c5374b2008a2737b32ade5138463027e5a3e90144
BLAKE2b-256 checksum
How to use checksums
af4e5a0a31c8ba009b50189becd114bc8aaefda2d6e82c96d0f7196d42797f54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-18-generic

Release files / schemamodels-0.9.1-py3-none-any.whl

Download URL schemamodels-0.9.1-py3-none-any.whl
Size 32.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f675fb538d8e3f90c91b1b1b0e2fe9914a888fd6c7e3449dfe887d8c581aa42
BLAKE2b-256 checksum
How to use checksums
545e5a1cd38db9cbf2f9422214323e16855e5d399746b866a48b93b2fdfa979b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-18-generic
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