Skip to main content

Documents schema and data validation

Project description

{ Dictify }

Documents schema and data validation

{ dictify } is a python library to define data schema and validation with simple and flexible syntax for documents data type such as JSON and Python dict object.

! New in V3.1.0 strict mode post validation

Get it


$ pip install dictify

Schema definition


Let's start with an example note data:

{
    'title': 'Dictify',
    'content': 'dictify is easy',
    'timestamp': '2021-06-13T05:13:45.326869'
}

The schema condition should be like:

title

  1. Required field
  2. Must be str instance
  3. Length is <= 300

content

  1. Must be str instance

timestamp

  1. Required field
  2. Default to datetime on creation in ISO format string
  3. Must be a valid ISO datetime string
from datetime import datetime
from dictify import Model, Field

class Note(Model):
    title = Field(required=True)\
        .instance(str)\
        .verify(lambda value: len(value) <= 300) # [1]

    content = Field().instance(str)

    timestamp = Field(
            required=True,
            default=lambda: datetime.utcnow().isoformat())\
        .verify(lambda value: datetime.fromisoformat(value))

[1] Field validations can be chained.

Data assignment and validation


After schema definition, now we can use it to create Model instance with required data.

note = Note({'title': 'Dictify', 'content': 'dictify is easy'})

# `note` can be used like a dict object.

note.update({
    "content": "Updated content",
})
note["content"] = "Updated again"

# Code below will raise `Model.Error`.
note.update({'title': 0})
note['title'] = 0

Note : Use try..except to catch errors if needed.

Convert data to native 'dict' or 'JSON'


import json

note_dict = dict(note) # Convert to python built-in `dict`
note_json = json.dumps(note)  # Convert to JSON string

Project details


Download files

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

Source Distribution

dictify-3.1.1.tar.gz (2.9 kB view hashes)

Uploaded Source

Built Distribution

dictify-3.1.1-py3-none-any.whl (3.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page