Predicates for Python.
Project description
Predicates for Python
Library for constuction predicates like (OwnedBy('alex') | OwnedBy('alice')) & HasTag('game-design')
and applying them to other objects.
Motivation
I tired from reimplementation of custom predicate logic in my pet projects. So, I implemented that library.
Library focus on usability, not performance. At least, for now.
Install
pip install pydicates
Use
from pydicates import Predicate, common
def HasTag(tag):
return Predicate('has_tag', tag)
def has_tag(context, tag, document):
return tag in document['tags']
common.register('has_tag', has_tag)
document = {'tags': ('a', 'b', 'c', 'd')}
assert common(HasTag('a') & HasTag('c'), document)
assert not common(HasTag('a') & HasTag('e'), document)
assert common(HasTag('a') & ~HasTag('e'), document)
assert common(HasTag('a') & (HasTag('e') | HasTag('d')), document)
More examples can be found in ./examples directory.
See ./examples/documents_check.py for API description.
See ./tests for more examples.
Limitations
- Can not chain redefined comparisons:
a < b < c
is equal to(a < b) and (b < c)
which translates by Python tob < c
, becausea < b
is object (Predicate) and alwaysTrue
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pydicates-0.1.tar.gz
(5.2 kB
view hashes)