Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adriamontoto/criteria-pattern

The "Criteria Pattern" is a Python 🐍 package that simplifies and standardizes criteria based filtering 🤏🏻, validation and selection.
https://github.com/adriamontoto/criteria-pattern

criteria development filtering pattern python python3 python311 python312 python313 selection sql tools utilities validation

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

        

# 🤏🏻 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
- [📥 Installation](#installation)
- [🔑 License](#license)
- [💻 Utilization](#utilization)



🔼 Back to top


## 📥 Installation
```bash
pip install criteria-pattern
```



🔼 Back to top


## 💻 Utilization

```python
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](https://choosealicense.com/licenses/mit/).



🔼 Back to top