Skip to main content

A schema describes:

  1. a data structure

  2. a mapping of one data structure into another

A schema consists of a list of fields.

A field doesn’t have a type – it is a type itself, in a way. Instead of a type, a field has a bi-directional mapping. Given two different data structures x and y, a mapping describes how to calculate x.f from y.f and how to calculate y.f from x.f.

Fields support following attributes:

  • name

  • mapping

  • default

  • source_name (source_names)

  • min_len, max_len, auto_trim

  • min, max

  • choices

  • regex

  • required, forbidden

  • nullable

Also:

  • Nested fields are supported.

  • Fields are easy to clone for reuse.

  • Fields and schemas are easy to reverse.

  • Schemas are easy to chain.

from wr_schemas import Field, Schema, Mappings


class Fields:
    user_id = Field('id', mapping=int, min=1)
    user_username = Field('username', min_len=5, max_len=100, regex=r'^[a-zA-Z0-9_\-\.@]+$')
    user_password = Field('password', min_len=10, max_len=100, regex=r'^[a-zA-Z0-9]+$')
    user_dob = Field('date_of_birth', mapping=Mappings.date())


CreateUser = Schema(
    Fields.user_username.clone(required=True),
    Fields.user_password.clone(default=None),
    Fields.user_dob.clone(default=None),
)

payload = CreateUser.load({'username': 'marcus.aurelius@rome.gov'})
assert payload.username == 'marcus.aurelius@rome.gov'
assert payload.password is None
assert payload.date_of_birth is None

print(CreateUser.dump(payload))

Flask:

from wr_schemas import Field, Schema, Mappings
from wr_schemas.flask_request import FlaskRequestSchemaMixin

CreateUser = Schema(
    Field('username', required=True),
    Field('password', required=True),
    mixins=[FlaskRequestSchemaMixin],
)
user = CreateUser.from_request()

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wr-schemas-0.5.0.tar.gz (10.0 kB view details)

Uploaded Source

File details

Details for the file wr-schemas-0.5.0.tar.gz.

File metadata

  • Download URL: wr-schemas-0.5.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for wr-schemas-0.5.0.tar.gz
Algorithm Hash digest
SHA256 defd0ae7e4bfae34924035a6b816b92640c74feb30239aa1dbae2297f42cf064
MD5 0a56878aae0f04763861e019126f8e3e
BLAKE2b-256 6ad21b2b6d72a149b2d1d7dacad98a77db2ebe88aaf4f676311b03a155057e7b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.0 This release

1 file

0.4.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page