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
- Clone the repository:
git clone git@github.com:jacksmith15/statham-schema.git && cd statham-schema - Initialise git submodules:
git submodule update --init --recursive - Install the requirements:
pip install -r requirements.txt -r requirements-test.txt - Run
pre-commit install - 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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| statham-schema-0.15.1.tar.gz | 33.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|