Skip to content

Latest commit

 

History

History
147 lines (110 loc) · 3.39 KB

File metadata and controls

147 lines (110 loc) · 3.39 KB

Certifiable

TODO: DISABLE WITH ENVVAR.

https://img.shields.io/badge/Author:%20francis%20horsman-Available-brightgreen.svg?style=plastic Documentation Status Updates

Certifiable is a powerful runtime parameter validation library for python.

Features


Examples of all features can be found here: :ref:`usage`.

Core types

It can validate the following core types

  • Text
  • Unicode
  • String
  • Bytes
  • Bool
  • Int
  • Long
  • Number
  • Decimal
  • Float
  • Enum
  • Enum value
  • Timestamp
  • Date
  • Time
  • Object

Complex types

There are more complex or compound types into which you can pass other certifiers:

  • List
  • Tuple
  • Set
  • Iterable
  • Dict
  • Email

Operators

There are logical operators to combine certifiers:

  • ANY (certify_only_one)
  • AND (certify_all)
  • ALL (certify_all)
  • NAND (certify_none)
  • XOR (certify_only_one)

Custom Certifier

Use the make_certifier decorator and (optionally) bake-in some args and kwargs (any return value from a certifier is ignored) to create your own certifier (first arg must be the value to certify):

>>> @make_certifier
... def my_certifier(value, *baked_args, **baked_kwargs):
...     print value
...     print baked_args
...     print baked_kwargs
...     baked_kwargs['data'].append('green')
...     if len(baked_kwargs['data'])==2:
...         raise MyError('damn!')
>>> args_to_bake = ('eggs', 'ham')
>>> kwargs_to_bake = dict(spam='lots', data=[])
>>> certifier = my_certifier(*args_to_bake, **kwargs_to_bake)

certifier can now be used as an argument to other certifiers.

>>> certify_list(
...     [1,'a'],
...     certifier=certifiers,
...     min_len=2,
...     max_len=5,
...     required=True,
... )
1
('eggs', 'ham')
{'spam': 'lots', data: []}
'a'
('eggs', 'ham')
{'spam': 'lots', data: ['green']}
Traceback (most recent call last):
    ...
    ...
    ...
MyError: damn!

Status