Valedictory validates the data in dicts. It is designed for use in API validation, and other situations where you are receiving structured JSON data as opposed to key-value POST form data. It takes in a dict of data (probably obtained from a JSON POST request), and validates that data against some fields.
Validators are defined as classes. Declare fields on a Validator class. Once constructed, Validator instances are immutable.
from valedictory import Validator, fields, InvalidDataException
class PersonValidator(Validator):
name = fields.CharField()
height = fields.IntegerField()
date_of_birth = fields.DateField()
person_validator = PersonValidator()
A Python dict can be checked to see if it conforms to this validator. The dict can come from a JSON POST request, or a configuration file, or any other external data source that needs validation and cleaning. The cleaned data will be returned. Validator classes will return a dict of cleaned data. Each field type may transform the data as part of cleaning it. For example, the DateField will transform the data into a datetime.date instance.
input_data = json.loads(request.body)
try:
# cleaned_data will be a dict of cleaned, validated data
cleaned_data = person_validator.clean(input_data)
# Do something with the returned data
Person.objects.create(**cleaned_data)
except InvalidDataException as errors:
# The data did not pass validation
for path, message in errors.flatten():
# This will print something like 'name: This field is required'
print("{0}: {1}".format('.'.join(path), message))
Validators can be nested, allowing dicts of arbitrary complexity:
class ArticleValidator(Validator):
content = fields.CharField()
published = fields.DateTimeField()
author = fields.NestedValidator(PersonValidator())
tags = fields.ListField(fields.CharField())
# Some example data that would pass validation:
data = {
"content": "An interesting article",
"published": "2018-06-13T1:44:00+10:00",
"author": {
"name": "Alex Smith",
"height": 175,
"date_of_birth": "1990-03-26",
},
"tags": ["humour", "interesting", "clickbait"],
}
Metadata
Release files for valedictory 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| valedictory-0.6.0.tar.gz | 16.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| valedictory-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.2 kB
Release files / valedictory-0.6.0.tar.gz
| Download URL | valedictory-0.6.0.tar.gz |
|---|---|
| Size | 16.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c21b4d3f3d7ebfe1a6337eeeab873f6016874cce73981541d738e3c4159eb60
|
|
BLAKE2b-256 checksum How to use checksums |
5c1010812b63869e6e16a0b645c4baf46c851359f26d40b96fe3c323c4d9fc00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / valedictory-0.6.0-py3-none-any.whl
| Download URL | valedictory-0.6.0-py3-none-any.whl |
|---|---|
| Size | 19.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f40701961ef156e70f5c4924c3376db650a1ccc72c2de0757852d7d294aa39d9
|
|
BLAKE2b-256 checksum How to use checksums |
e01f8a5593c0f70133784c33634c4add45efd250eb1342c02caa5ac3bf81f481
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for valedictory 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.