Skip to main content

Python Data Structures for Humans™.

Build Status Coverage

For more information, please see our documentation: http://schematics.readthedocs.org/en/latest/

About

Schematics is a Python library to combine types into structures, validate them, and transform the shapes of your data based on simple descriptions.

The internals are similar to ORM type systems, but there is no database layer in Schematics. Instead, we believe that building a database layer is made significantly easier when Schematics handles everything but writing the query.

Further, it can be used for a range of tasks where having a database involved may not make sense.

Some common use cases:

Example

This is a simple Model.

>>> from schematics.models import Model
>>> from schematics.types import StringType, URLType
>>> class Person(Model):
...     name = StringType(required=True)
...     website = URLType()
...
>>> person = Person({'name': u'Joe Strummer',
...                  'website': 'http://soundcloud.com/joestrummer'})
>>> person.name
u'Joe Strummer'

Serializing the data to JSON.

>>> import json
>>> json.dumps(person.to_primitive())
{"name": "Joe Strummer", "website": "http://soundcloud.com/joestrummer"}

Let’s try validating without a name value, since it’s required.

>>> person = Person()
>>> person.website = 'http://www.amontobin.com/'
>>> person.validate()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "schematics/models.py", line 231, in validate
    raise ModelValidationError(e.messages)
schematics.exceptions.ModelValidationError: {'name': [u'This field is required.']}

Add the field and validation passes:

>>> person = Person()
>>> person.name = 'Amon Tobin'
>>> person.website = 'http://www.amontobin.com/'
>>> person.validate()
>>>

Testing & Coverage support

Run coverage and check the missing statements.

$ `coverage run --source schematics -m py.test && coverage report`

Metadata

Release files for schematics 1.1.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 schematics 1.1.1
File Size Uploaded
schematics-1.1.1.tar.gz 59.7 kB Details

Release files / schematics-1.1.1.tar.gz

Download URL schematics-1.1.1.tar.gz
Size 59.7 kB
Tags Source
SHA-256 checksum
How to use checksums
83758afa444a53a2a8ef23852c07696edc1699c7df403e65e6b15ff96d4204b5
BLAKE2b-256 checksum
How to use checksums
7798c602d8439b954f8fd8184979b6f9c72304f70ec155fa15a8d9c3d54837c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.3

2 release files

1.1.2

1 release file

This release

1.1.1 This release

1 release file

1.1.0

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0-1

1 release file

1.0-0

1 release file

0.9-5

1 release file

0.9-4

1 release file

0.9-3

1 release file

0.9-2

1 release file

0.9-1

1 release file

0.9-0

1 release file

0.6

1 release file

0.5

1 release file

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