criteria-pattern


Namecriteria-pattern JSON
Version 2024.9.24 PyPI version JSON
download
home_pageNone
SummaryThe "Criteria Pattern" is a Python package that simplifies and standardizes criteria based filtering, validation and selection.
upload_time2024-09-24 09:11:44
maintainerNone
docs_urlNone
authorAdria Montoto
requires_python>=3.11
licenseNone
keywords criteria development filtering pattern python selection tools utilities validation
VCS
bugtrack_url
requirements sqlalchemy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <a name="readme-top"></a>

# 🤏🏻 Criteria Pattern
<p align="center">
    <a href="https://github.com/adriamontoto/criteria-pattern/actions/workflows/test.yaml?event=push&branch=master" target="_blank">
        <img src="https://github.com/adriamontoto/criteria-pattern/actions/workflows/test.yaml/badge.svg?event=push&branch=master" alt="Test Pipeline">
    </a>
    <a href="https://github.com/adriamontoto/criteria-pattern/actions/workflows/lint.yaml?event=push&branch=master" target="_blank">
        <img src="https://github.com/adriamontoto/criteria-pattern/actions/workflows/lint.yaml/badge.svg?event=push&branch=master" alt="Lint Pipeline">
    </a>
        <a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/adriamontoto/criteria-pattern" target="_blank">
        <img src="https://coverage-badge.samuelcolvin.workers.dev/adriamontoto/criteria-pattern.svg" alt="Coverage Pipeline">
    </a>
    <a href="https://pypi.org/project/criteria-pattern" target="_blank">
        <img src="https://img.shields.io/pypi/v/criteria-pattern?color=%2334D058&label=pypi%20package" alt="Package Version">
    </a>
    <a href="https://pypi.org/project/criteria-pattern/" target="_blank">
        <img src="https://img.shields.io/pypi/pyversions/criteria-pattern.svg?color=%2334D058" alt="Supported Python Versions">
    </a>
</p>

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


## Table of Contents
- [📥 Installation](#installation)
- [🔑 License](#license)
- [💻 Utilization](#utilization)
<br><br>

<p align="right">
    <a href="#readme-top">🔼 Back to top</a>
</p>


<a name="installation"></a>
## 📥 Installation
```bash
pip install criteria-pattern
```
<br><br>

<p align="right">
    <a href="#readme-top">🔼 Back to top</a>
</p>


<a name="utilization"></a>
## 💻 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'));
```
<br><br>

<p align="right">
    <a href="#readme-top">🔼 Back to top</a>
</p>


<a name="license"></a>
## 🔑 License
This project is licensed under the terms of the [MIT license](https://choosealicense.com/licenses/mit/).
<br><br>

<p align="right">
    <a href="#readme-top">🔼 Back to top</a>
</p>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "criteria-pattern",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "criteria, development, filtering, pattern, python, selection, tools, utilities, validation",
    "author": "Adria Montoto",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/29/4e/1594749d3d21ef939fdb470aed3d5220355f4ba2907adca3dc1fc16ef9f6/criteria_pattern-2024.9.24.tar.gz",
    "platform": null,
    "description": "<a name=\"readme-top\"></a>\n\n# \ud83e\udd0f\ud83c\udffb Criteria Pattern\n<p align=\"center\">\n    <a href=\"https://github.com/adriamontoto/criteria-pattern/actions/workflows/test.yaml?event=push&branch=master\" target=\"_blank\">\n        <img src=\"https://github.com/adriamontoto/criteria-pattern/actions/workflows/test.yaml/badge.svg?event=push&branch=master\" alt=\"Test Pipeline\">\n    </a>\n    <a href=\"https://github.com/adriamontoto/criteria-pattern/actions/workflows/lint.yaml?event=push&branch=master\" target=\"_blank\">\n        <img src=\"https://github.com/adriamontoto/criteria-pattern/actions/workflows/lint.yaml/badge.svg?event=push&branch=master\" alt=\"Lint Pipeline\">\n    </a>\n        <a href=\"https://coverage-badge.samuelcolvin.workers.dev/redirect/adriamontoto/criteria-pattern\" target=\"_blank\">\n        <img src=\"https://coverage-badge.samuelcolvin.workers.dev/adriamontoto/criteria-pattern.svg\" alt=\"Coverage Pipeline\">\n    </a>\n    <a href=\"https://pypi.org/project/criteria-pattern\" target=\"_blank\">\n        <img src=\"https://img.shields.io/pypi/v/criteria-pattern?color=%2334D058&label=pypi%20package\" alt=\"Package Version\">\n    </a>\n    <a href=\"https://pypi.org/project/criteria-pattern/\" target=\"_blank\">\n        <img src=\"https://img.shields.io/pypi/pyversions/criteria-pattern.svg?color=%2334D058\" alt=\"Supported Python Versions\">\n    </a>\n</p>\n\nThe \"Criteria Pattern\" is a Python \ud83d\udc0d package that simplifies and standardizes criteria based filtering \ud83e\udd0f\ud83c\udffb, validation and selection. This package provides a set of prebuilt \ud83d\udc77\ud83c\udffb objects and utilities that you can drop into your existing projects and not have to implement yourself.\n\nThese utilities \ud83d\udee0\ufe0f are useful when you need complex filtering logic. It also enforces \ud83d\udc6e\ud83c\udffb best practices so all your filtering processes follow a uniform standard.\n\nEasy 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 \ud83d\uddc4\ufe0f in their projects \ud83d\ude80.\n<br><br>\n\n\n## Table of Contents\n- [\ud83d\udce5 Installation](#installation)\n- [\ud83d\udd11 License](#license)\n- [\ud83d\udcbb Utilization](#utilization)\n<br><br>\n\n<p align=\"right\">\n    <a href=\"#readme-top\">\ud83d\udd3c Back to top</a>\n</p>\n\n\n<a name=\"installation\"></a>\n## \ud83d\udce5 Installation\n```bash\npip install criteria-pattern\n```\n<br><br>\n\n<p align=\"right\">\n    <a href=\"#readme-top\">\ud83d\udd3c Back to top</a>\n</p>\n\n\n<a name=\"utilization\"></a>\n## \ud83d\udcbb Utilization\n\n```python\nfrom criteria_pattern import Criteria, Filter, FilterOperator\nfrom criteria_pattern.converter import SqlConverter\n\nis_adult = Criteria(filters=[Filter('age', FilterOperator.GREATER_OR_EQUAL, 18)])\nemail_is_gmail = Criteria(filters=[Filter('email', FilterOperator.ENDS_WITH, '@gmail.com')])\nemail_is_yahoo = Criteria(filters=[Filter('email', FilterOperator.ENDS_WITH, '@yahoo.com')])\n\nquery = SqlConverter.convert(criteria=is_adult & (email_is_gmail | email_is_yahoo), table='user')\n\nprint(query)\n\n# >>> SELECT * FROM user WHERE (age >= '18' AND (email LIKE '%@gmail.com' OR email LIKE '%@yahoo.com'));\n```\n<br><br>\n\n<p align=\"right\">\n    <a href=\"#readme-top\">\ud83d\udd3c Back to top</a>\n</p>\n\n\n<a name=\"license\"></a>\n## \ud83d\udd11 License\nThis project is licensed under the terms of the [MIT license](https://choosealicense.com/licenses/mit/).\n<br><br>\n\n<p align=\"right\">\n    <a href=\"#readme-top\">\ud83d\udd3c Back to top</a>\n</p>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "The \"Criteria Pattern\" is a Python package that simplifies and standardizes criteria based filtering, validation and selection.",
    "version": "2024.9.24",
    "project_urls": {
        "Homepage": "https://github.com/adriamontoto/criteria-pattern",
        "Issues": "https://github.com/adriamontoto/criteria-pattern/issues",
        "Repository": "https://github.com/adriamontoto/criteria-pattern"
    },
    "split_keywords": [
        "criteria",
        " development",
        " filtering",
        " pattern",
        " python",
        " selection",
        " tools",
        " utilities",
        " validation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73c2245c887f8d6e11f7c90b33a46d338f2b90353d5d3bbb100db614d28b3b7f",
                "md5": "770e2453a90b90f862cd1bd5c613f23c",
                "sha256": "a4fec1c66e92c3947eb81700f58c238612032a4e5c713a68103725bbe1d728cf"
            },
            "downloads": -1,
            "filename": "criteria_pattern-2024.9.24-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "770e2453a90b90f862cd1bd5c613f23c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 10663,
            "upload_time": "2024-09-24T09:11:43",
            "upload_time_iso_8601": "2024-09-24T09:11:43.436133Z",
            "url": "https://files.pythonhosted.org/packages/73/c2/245c887f8d6e11f7c90b33a46d338f2b90353d5d3bbb100db614d28b3b7f/criteria_pattern-2024.9.24-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "294e1594749d3d21ef939fdb470aed3d5220355f4ba2907adca3dc1fc16ef9f6",
                "md5": "792cfe62bd062a0a8d0fe5f5911f6ed3",
                "sha256": "6dbf83dd34f4eaa37020419c87b665b2c765b82eed8bda233c3f5d8252e58825"
            },
            "downloads": -1,
            "filename": "criteria_pattern-2024.9.24.tar.gz",
            "has_sig": false,
            "md5_digest": "792cfe62bd062a0a8d0fe5f5911f6ed3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 14148,
            "upload_time": "2024-09-24T09:11:44",
            "upload_time_iso_8601": "2024-09-24T09:11:44.336704Z",
            "url": "https://files.pythonhosted.org/packages/29/4e/1594749d3d21ef939fdb470aed3d5220355f4ba2907adca3dc1fc16ef9f6/criteria_pattern-2024.9.24.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-24 09:11:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "adriamontoto",
    "github_project": "criteria-pattern",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "sqlalchemy",
            "specs": [
                [
                    ">=",
                    "2.0.0"
                ],
                [
                    "<",
                    "3.0.0"
                ]
            ]
        }
    ],
    "lcname": "criteria-pattern"
}
        
Elapsed time: 0.36499s