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 < cis equal to(a < b) and (b < c)which translates by Python tob < c, becausea < bis 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|