{ 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
$ pip install dictify
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
- Required field
- Must be
str
instance - Length is <= 300
content
- Must be
str
instance
timestamp
- Required field
- Default to datetime on creation in ISO format string
- 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.
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.
import json
note_dict = dict(note) # Convert to python built-in `dict`
note_json = json.dumps(note) # Convert to JSON string