Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eventbrite/conformity
https://github.com/eventbrite/conformity
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/eventbrite/conformity
- Owner: eventbrite
- License: apache-2.0
- Created: 2016-09-19T14:41:03.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-05-17T19:06:22.000Z (over 1 year ago)
- Last Synced: 2024-11-08T03:08:43.012Z (3 months ago)
- Language: Python
- Size: 401 KB
- Stars: 1
- Watchers: 19
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - conformity - (Python)
README
Conformity - Declarative Schema for Python
==========================================.. image:: https://readthedocs.org/projects/conformity/badge/
:target: https://conformity.readthedocs.io.. image:: https://pepy.tech/badge/conformity
:target: https://pepy.tech/project/conformity.. image:: https://img.shields.io/pypi/l/conformity.svg
:target: https://pypi.python.org/pypi/conformity.. image:: https://api.travis-ci.org/eventbrite/conformity.svg
:target: https://travis-ci.org/eventbrite/conformity.. image:: https://img.shields.io/pypi/v/conformity.svg
:target: https://pypi.python.org/pypi/conformity.. image:: https://img.shields.io/pypi/wheel/conformity.svg
:target: https://pypi.python.org/pypi/conformity.. image:: https://img.shields.io/pypi/pyversions/conformity.svg
:target: https://pypi.python.org/pypi/conformity**Conformity** is a declarative schema validation library designed for use in libraries, services, application
settings, and more.------------
Declare a schema:
.. code-block:: python
from conformity.fields import Dictionary, Float, Integer, List, UnicodeString
person = Dictionary({
"name": UnicodeString(),
"height": Float(gte=0),
"event_ids": List(Integer(gt=0)),
})Check to see if data is valid:
.. code-block:: python
data = {"name": "Andrew", "height": 180.3, "event_ids": [1, "3"]}
errors = person.errors(data)# Key event_ids: Index 1: Not an integer
And wrap functions to validate on the way in and out:
.. code-block:: python
kwargs = Dictionary({
"name": UnicodeString(),
"score": Integer(),
}, optional_keys=["score"])@validate_call(kwargs, UnicodeString())
def greet(name, score=0):
if score > 10:
return "So nice to meet you, {}!".format(name)
else:
return "Hello, {}.".format(name)There's support for basic string, numeric, geographic, temporal, networking, and other field types, with everything
easily extensible (optionally via subclassing). Conformity also boasts support for full-blown application settings
schema definition and validation complete with definable defaults, and includes Sphinx ``autodoc`` extensions to help
you generate meaningful documentation for your code using Conformity.License
-------Conformity is licensed under the `Apache License, version 2.0 `_.
Installation
------------Conformity is available in PyPi and can be installing directly via Pip or listed in ``setup.py``, ``requirements.txt``,
or ``Pipfile``:.. code-block:: bash
pip install 'conformity~=1.26'
.. code-block:: python
install_requires=[
...
'conformity~=1.26',
...
].. code-block:: text
conformity~=1.26
.. code-block:: text
conformity = {version="~=1.26"}
Documentation
-------------The complete Conformity documentation is available on `Read the Docs `_!