Skip to content

The "Criteria Pattern" is a Python 🐍 package that simplifies and standardizes criteria based filtering 🤏🏻, validation and selection.

License

Notifications You must be signed in to change notification settings

adriamontoto/criteria-pattern

Repository files navigation

🤏🏻 Criteria Pattern

Test Pipeline Lint Pipeline Coverage Pipeline Package Version Supported Python Versions

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 🚀.

Table of Contents

🔼 Back to top

📥 Installation

pip install criteria-pattern



🔼 Back to top

💻 Utilization

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 = SqlConverter.convert(criteria=is_adult & (email_is_gmail | email_is_yahoo), table='user')

print(query)

# >>> SELECT * FROM user WHERE (age >= '18' AND (email LIKE '%@gmail.com' OR email LIKE '%@yahoo.com'));



🔼 Back to top

🔑 License

This project is licensed under the terms of the MIT license.

🔼 Back to top