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 = 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'));
We welcome contributions to Criteria Pattern! To ensure a smooth collaboration process, please follow the guidelines below.
1. Fork the Repository: Click the "Fork" button at the top right of the repository page.
2. Clone Your Fork:
git clone git+ssh://git@github.com/<your-username>/criteria-pattern.git
3. Create a Branch:
git checkout -b feature/your-feature-name
4. Make Your Changes: Implement your new feature or fix a bug.
5. Run Tests: Ensure all the following tests pass before submitting your changes.
- Run tests:
make test
- Run tests with coverage:
make coverage
- Run linter:
make lint
- Run formatter:
make format
6. Commit Your Changes:
git commit -m "✨ feature: your feature description"
7. Push to Your Fork:
git push origin feature/your-feature-name
8. Create a Pull Request: Navigate to the original repository and create a pull request from your fork.
9. Wait for Review: Your pull request will be reviewed by the maintainers. Make any necessary changes based on their feedback.
This project is licensed under the terms of the MIT license
.