Skip to main content

Build Status Documentation Status

Statham

statham is a Python Model Parsing Library for JSON Schema. Read the documentation.

This project includes tools for writing and generating extensible Python classes based on JSON Schema documents.

Example Model Definition

statham can be used to write JSON Schema documents and their corresponding application-level models in one go:

from typing import List

from statham.schema.elements import Array, Integer, Object, String
from statham.schema.property import Property


class Choice(Object):
    choice_text: str = Property(String(maxLength=200), required=True)
    votes: int = Property(Integer(default=0))


class Poll(Object):
    question: str = Property(String(), required=True)
    choices: List[Choice] = Property(Array(Choice), required=True)

Generating python classes

Alternatively, Python models may be generated automatically from an existing schema:

statham --input http://example.com/schema.json

Command-line arguments

Required arguments:
  --input INPUT    Specify the path to the JSON Schema to be generated.

                   If the target schema is not at the root of a document, specify the
                   JSON Pointer in the same format as a JSON Schema `$ref`, e.g.
                   `--input path/to/document.json#/definitions/schema`


Optional arguments:
  --output OUTPUT  Output directory or file in which to write the output.

                   If the provided path is a directory, the command will derive the name
                   from the input argument. If not passed, the command will write to
                   stdout.

  -h, --help       Display this help message and exit.

Installation

This project requires Python 3.6+ and may be installed using pip:

pip install statham-schema

Compatibility

See Compatibility for information regarding the currently supported JSON Schema draft and exceptions.

Development

  1. Clone the repository: git clone git@github.com:jacksmith15/statham-schema.git && cd statham-schema
  2. Initialise git submodules: git submodule update --init --recursive
  3. Install the requirements: pip install -r requirements.txt -r requirements-test.txt
  4. Run pre-commit install
  5. Run the tests: bash run_test.sh -c -a

This project uses the following QA tools:

  • PyTest - for running unit tests.
  • PyLint - for enforcing code style.
  • MyPy - for static type checking.
  • Travis CI - for continuous integration.
  • Black - for uniform code formatting.

Documentation is written using Sphinx.

License

This project is distributed under the MIT license.

statham

Metadata

Release files for statham-schema 0.15.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 statham-schema 0.15.1
File Size Uploaded
statham-schema-0.15.1.tar.gz 33.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for statham-schema 0.15.1
File Interpreter ABI Platform
statham_schema-0.15.1-py3-none-any.whl Python 3 none any Details

Total release size: 77.0 kB

Release files / statham-schema-0.15.1.tar.gz

Download URL statham-schema-0.15.1.tar.gz
Size 33.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ca0ea9e3201ab56cbb2c9b6095da91e02e1705c380f81933b71b7942d768c959
BLAKE2b-256 checksum
How to use checksums
142f9e6fab2f761fa317fc8968cec8eb53967a627c2ed5373a738ede063814a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.16 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

Release files / statham_schema-0.15.1-py3-none-any.whl

Download URL statham_schema-0.15.1-py3-none-any.whl
Size 43.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
598c8e770c8b2bf7e94a7ad7db37cc1b8d97023db87dac16ec0ade7e75f9a4ce
BLAKE2b-256 checksum
How to use checksums
ff4c3cd681e8b3192b41456fbf2f1b83e27033466084ed0f3daa4274d9234fde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.16 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

Release history Release notifications | RSS feed

This release

0.15.1 This release

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.5

2 release files

0.13.3

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

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