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
Description: 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.
        
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
