Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python - Cerberus, jsonschema, voluptous - Which one will be appropriate? [closed]

I am developing a small RESTful web application in python and using JSON as interface. The application accepts JSON data and needs to validate them against a schema. The schema may be very strict or flexible depending on the request. Also, the application may need to validate user objects at a later improvement.

I have found some suggestions in stack overflow as well as at other websites. Those include

  • Cerberus
  • jsonschema
  • voluptuous

But could not find a proper comparison.

In terms of simplicity, flexibility and extend-ability, which one do you think should I choose?

Cerberus seems to be very flexible and extend-ability seems very good from their documentation and examples. But I don't know about the other libraries.

EDIT 1: For now the application's needs are pretty simple and a basic schema validation with scope for adding custom types and custom validation rules will suffice. So if all these libraries offer the basic requirements, I would go for the one that is simplest to use. Also I am open to other suggestions if any.

Hoping to find some help.

like image 238
Abhishek Dey Avatar asked Mar 07 '17 06:03

Abhishek Dey


People also ask

What is Cerberus Python?

Cerberus is a Python validation library which provides powerful yet simple and lightweight data validation functionality. It is designed to be easily extensible, allowing for custom validation. Cerberus works by defining a validation schema for data. The schema is passed to the Validator and validated with validate .

What is schema in Python?

schema is a library for validating Python data structures, such as those obtained from config-files, forms, external services or command-line parsing, converted from JSON/YAML (or something else) to Python data-types.

How do you validate a schema?

The Schema Validation filter can be found under the "Content Filtering" category of filters in the Policy Studio. Drag and drop the filter onto the policy where you want to perform schema validation. The Schema Validation filter dialog has 3 tabs, each of which will be explained in the following sections.


1 Answers

I would take Cerberus then if only for its wonderful documentation. It allows to set dependencies according to certain conditions (http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies) and is certainly as simple for the basic schema validation needs you're referring to as jsonschema, voluptuous, etc..

Nested fields are supported also (in all libraries i'm familiar with) and their customization docs are amazing: http://docs.python-cerberus.org/en/stable/customize.html

That being said, I'm not basing this answer on using all three proposed packages but rather on using jsonschema extensively and reading enough documentation and recommendations on the other two.

like image 154
nir0s Avatar answered Sep 21 '22 19:09

nir0s