The Criteria Pattern is a Python ๐ package that simplifies and standardizes criteria based filtering ๐ค๐ป, validation and selection. This package provides a set of prebuilt ๐ท๐ป objects and utilities that you can drop into your existing projects and not have to implement yourself.
These utilities ๐ ๏ธ are useful when you need complex filtering logic. It also enforces ๐ฎ๐ป best practices so all your filtering processes follow a uniform standard.
Easy to install and integrate, this is a must have for any Python developer looking to simplify their workflow, enforce design patterns and use the full power of modern ORMs and SQL ๐๏ธ in their projects ๐.
You can install Criteria Pattern using pip
:
pip install criteria-pattern
from criteria_pattern import Criteria, Filter, FilterOperator
from criteria_pattern.converter import SqlConverter
is_adult = Criteria(filters=[Filter('age', FilterOperator.GREATER_OR_EQUAL, 18)])
email_is_gmail = Criteria(filters=[Filter('email', FilterOperator.ENDS_WITH, '@gmail.com')])
email_is_yahoo = Criteria(filters=[Filter('email', FilterOperator.ENDS_WITH, '@yahoo.com')])
query, parameters = SqlConverter.convert(criteria=is_adult & (email_is_gmail | email_is_yahoo), table='user')
print(query)
print(parameters)
# >>> SELECT * FROM user WHERE (age >= %(parameter_0)s AND (email LIKE '%%' || %(parameter_1)s OR email LIKE '%%' || %(parameter_2)s));
# >>> {'parameter_0': 18, 'parameter_1': '@gmail.com', 'parameter_2': '@yahoo.com'}
We love community help! Before you open an issue or pull request, please read:
Thank you for helping make ๐ค๐ป Criteria Pattern package awesome! ๐
This project is licensed under the terms of the MIT license
.