Home

Awesome

TypeSystem

<p> <a href="https://github.com/encode/typesystem/actions"> <img src="https://github.com/encode/typesystem/workflows/Test%20Suite/badge.svg" alt="Build Status"> </a> <a href="https://codecov.io/gh/encode/typesystem"> <img src="https://codecov.io/gh/encode/typesystem/branch/master/graph/badge.svg" alt="Coverage"> </a> <a href="https://pypi.org/project/typesystem/"> <img src="https://badge.fury.io/py/typesystem.svg" alt="Package version"> </a> </p>

Documentation: https://www.encode.io/typesystem/


TypeSystem is a comprehensive data validation library that gives you:

Requirements

Python 3.6+

Installation

$ pip3 install typesystem

If you'd like you use the form rendering using jinja2:

$ pip3 install typesystem[jinja2]

If you'd like you use the YAML tokenization using pyyaml:

$ pip3 install typesystem[pyyaml]

Quickstart

import typesystem

artist_schema = typesystem.Schema(
    fields={
        "name": typesystem.String(max_length=100)
    }
)

definitions = typesystem.Definitions()
definitions["Artist"] = artist_schema

album_schema = typesystem.Schema(
    fields={
        "title": typesystem.String(max_length=100),
        "release_date": typesystem.Date(),
        "artist": typesystem.Reference("Artist", definitions=definitions)
    }
)

album = album_schema.validate({
    "title": "Double Negative",
    "release_date": "2018-09-14",
    "artist": {"name": "Low"}
})

print(album)
# {'title': 'Double Negative', 'release_date': '2018-09-14', 'artist': {'name': 'Low'}}

Alternatives

There are plenty of other great validation libraries for Python out there, including Marshmallow, Schematics, Voluptuous, Pydantic and many others.

TypeSystem exists because I want a data validation library that offers first-class support for:

<p align="center">&mdash; ⭐️ &mdash;</p> <p align="center"><i>TypeSystem is <a href="https://github.com/encode/typesystem/blob/master/LICENSE.md">BSD licensed</a> code. Designed & built in Brighton, England.</i></p>