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.1.tar.gz
(5.2 kB
view details)
Built Distribution
File details
Details for the file pydicates-0.1.1.tar.gz
.
File metadata
- Download URL: pydicates-0.1.1.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.4 Linux/5.4.0-72-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 400e9eca362ee9354504cd3295a9e103573adb971e22fbf6f046973e4edc229a |
|
MD5 | ff59060c5c067b96e5e8d881e4501363 |
|
BLAKE2b-256 | 19e1d688bd022af2e9ddf2ead6a06569cd9d9b9a53ae47f1be92839dc0a2f191 |
File details
Details for the file pydicates-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: pydicates-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.9.4 Linux/5.4.0-72-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fd819985839ba5535ea8a296c0a64a14a414ab68b0864a21f3e281d7b607f7d |
|
MD5 | 3cff5df206c9df88fbb71f5fc18deb12 |
|
BLAKE2b-256 | c7fa5c22543b297f2f5ccb5c8aa27c28526c98f4e5379632533ad0323e02b999 |