Skip to main content

wr-schemas

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()

Metadata

Release files for wr-schemas 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wr-schemas 0.5.0
File Size Uploaded
wr-schemas-0.5.0.tar.gz 10.0 kB Details

Release files / wr-schemas-0.5.0.tar.gz

Download URL wr-schemas-0.5.0.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
defd0ae7e4bfae34924035a6b816b92640c74feb30239aa1dbae2297f42cf064
BLAKE2b-256 checksum
How to use checksums
6ad21b2b6d72a149b2d1d7dacad98a77db2ebe88aaf4f676311b03a155057e7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.5.0 This release

1 release file

0.4.0

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