Metadata-Version: 2.1
Name: prejudice
Version: 0.1
Summary: Python/Cython predicate/guard/validation system.
Home-page: https://github.com/HorsemanWSGI/prejudice
Author: Souheil CHELFOUH
Author-email: trollfot@gmail.com
License: ZPL
Download-URL: http://pypi.python.org/pypi/prejudice
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'

prejudice
*********

This package helps defining and creating small and reusable components
that can serve as guard or validation methods.


Example
=======

Below is an example of a validation on a content item.


.. code-block:: python

  from dataclasses import dataclass
  from prejudice.errors import ConstraintError
  from prejudice.validators import Or


  @dataclass
  class Document:
      id: str
      body: str = ''
      content_type: str = 'text/plain'


  def non_empty_document(item):
      """Implementation of a validator/predicate
      """
      if not item.body:
          raise ConstraintError('Body is empty.')


  class ContentType:

      def __init__(self, content_type):
          self.ct = content_type

      def __call__(self, item):
          if item.content_type != self.ct:
              raise ConstraintError(
                  f'Expected {self.ct}, got {item.content_type}.')


    validator = Or((
        ContentType('text/plain'),
        Or((ContentType('text/html'), non_empty_document))
    ))
    document = Document(id='test', content_type='application/json')
    validator(document)  # raises ConstraintsErrors

CHANGES
=======

0.1 (2022-03-16)
----------------

  * Initial release.


