py-assimilator


Namepy-assimilator JSON
Version 1.3.1 PyPI version JSON
download
home_page
SummaryThe best Domain-driven design patterns for your projects
upload_time2023-06-25 12:31:14
maintainer
docs_urlNone
author
requires_python>=3.8
license
keywords architecture backend ddd database domain-driven design events patterns
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Assimilator - the best Python patterns for the best projects

<p align="center">
  <a href="https://knucklesuganda.github.io/py_assimilator/"><img src="https://knucklesuganda.github.io/py_assimilator/images/logo.png" alt="PyAssimilator"></a>
</p>
<p align="center">
<a href="https://pypi.org/project/py-assimilator/" target="_blank">
    <img src="https://img.shields.io/github/license/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge" alt="License">
</a>

<a href="https://pypi.org/project/py-assimilator/" target="_blank">
    <img src="https://img.shields.io/github/stars/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge" alt="Stars">
</a>
<a href="https://pypi.org/project/py-assimilator/" target="_blank">
    <img src="https://img.shields.io/github/last-commit/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge" alt="Last commit">
</a>
</p>


## Install now
* `pip install py-assimilator`

## What is that all about?

1. We want to write the best code.
2. We need the best patterns and techniques for this.
3. We use PyAssimilator and save lots of time.
4. We use PyAssimilator and write the best code.
4. We use PyAssimilator and use the best patterns.
6. We use PyAssimilator and have no dependencies in our code.
7. We use PyAssimilator and can switch one database to another in a matter of seconds.
7. We learn PyAssimilator once and use it forever!
7. **And most importantly, we make Python projects better!**


## Code comparison

Before PyAssimilator:
```Python
# BAD CODE :(

def create_user(username: str, email: str):
    # NO PATTERNS!
    # ONLY ONE DATABASE CHOICE!
    new_user = User(username=username, email=email, balance=0) # DEPENDENCY!
    session = db_session()  # DEPENDENCY!
    session.add(new_user)
    session.commit()  # NO ACID TRANSACTIONS!
    return new_user

```

After:
```Python
# GOOD CODE :)

def create_user(username: str, email: str, uow: UnitOfWork):
    # BEST DDD PATTERNS
    # PATTERN SUBSTITUTION/MULTIPLE DATABASES AT ONCE

    with uow:   # ACID TRANSACTIONS IN ANY DATABASE
        new_user = uow.repository.save(
            username=username,  # NO MODEL DEPENDENCIES
            email=email,
            balance=0,
        )
        uow.commit()    # AUTO ROLLBACK

    return new_user

```

## So, do I really need it?

If you want to spend less time writing your code, but write better code - then you must use PyAssimilator.
It can be hard to start if you have no experience with good code, so you can watch creator's [video tutorials](https://knucklesuganda.github.io/py_assimilator/video_tutorials/).


## Our vision

Make Python the best programming language for enterprise development and use all of its dynamic capabilities to write
things that other languages can't even comprehend!

- Pattern substitution(switch databases easily) ✔️
- Event-based apps(in development) 🛠️
- 45% of all Python projects use PyAssimilator 🛠️
- Independent code(in development) 🛠️
- Adaptive patterns(in development) 🛠️
- Automatic code improvements(in development) 🛠️
- Decentralized code management(in development) 🛠️

If you want to help with any of those things - be free to contribute to the project. Remember, you never do anything for
free - and that will not be the case either.

## Sources
* [Github](https://github.com/knucklesuganda/py_assimilator)
* [PyPI](https://pypi.org/project/py-assimilator/)
* [Documentation](https://knucklesuganda.github.io/py_assimilator/)
* [Github](https://github.com/knucklesuganda/py_assimilator)
* [Author's YouTube RU](https://www.youtube.com/channel/UCSNpJHMOU7FqjD4Ttux0uuw)
* [Author's YouTube ENG](https://www.youtube.com/channel/UCeC9LNDwRP9OfjyOFHaSikA)
* [Discord channel](https://discord.gg/gTVaGu7DHN)

 ## Contributors

<a href="https://github.com/knucklesuganda/py_assimilator/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=knucklesuganda/py_assimilator" />
</a>

## Stars history

[![Star History Chart](https://api.star-history.com/svg?repos=knucklesuganda/py_assimilator&type=Date)](https://star-history.com/#knucklesuganda/py_assimilator&Date)


## ⭐Stargazers⭐

We love all people who star our library. You can look at all stargazers in the documentation:

https://knucklesuganda.github.io/py_assimilator/#stars-history

> If you star the library you will appear there as well!


## Types of patterns
These are different use cases for the patterns implemented:

- Database - patterns for database/data layer interactions.
- Events(in development) - projects with events or event-driven architecture.
- Unidentified - patterns that are useful for different purposes.

## Available providers
Providers are different patterns for external modules like SQLAlchemy or FastAPI.

- Alchemy(Database, Events) - patterns for [SQLAlchemy](https://docs.sqlalchemy.org/en/20/) for both database and events.
- Kafka(Events) - patterns in [Kafka](https://kafka.apache.org/) related to events.
- Internal(Database, Events) - internal is the type of provider that saves everything in memory(dict, list and all the tools within your app).
- Redis(Database, Events) - redis_ allows us to work with [Redis](https://redis.io/) memory database.
- MongoDB(Database) - mongo allows us to work with [MongoDB](https://www.mongodb.com/) database.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "py-assimilator",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Andrey Ivanov <python.on.papyrus@gmail.com>",
    "keywords": "Architecture,Backend,DDD,Database,Domain-driven design,Events,Patterns",
    "author": "",
    "author_email": "Andrey Ivanov <python.on.papyrus@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/6d/19/ffcc25b2efcdb164c8ed5fcff85c7a14b35ce792ff71574d73e489e9a893/py_assimilator-1.3.1.tar.gz",
    "platform": null,
    "description": "# Assimilator - the best Python patterns for the best projects\n\n<p align=\"center\">\n  <a href=\"https://knucklesuganda.github.io/py_assimilator/\"><img src=\"https://knucklesuganda.github.io/py_assimilator/images/logo.png\" alt=\"PyAssimilator\"></a>\n</p>\n<p align=\"center\">\n<a href=\"https://pypi.org/project/py-assimilator/\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/license/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge\" alt=\"License\">\n</a>\n\n<a href=\"https://pypi.org/project/py-assimilator/\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/stars/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge\" alt=\"Stars\">\n</a>\n<a href=\"https://pypi.org/project/py-assimilator/\" target=\"_blank\">\n    <img src=\"https://img.shields.io/github/last-commit/knucklesuganda/py_assimilator?color=%237e56c2&style=for-the-badge\" alt=\"Last commit\">\n</a>\n</p>\n\n\n## Install now\n* `pip install py-assimilator`\n\n## What is that all about?\n\n1. We want to write the best code.\n2. We need the best patterns and techniques for this.\n3. We use PyAssimilator and save lots of time.\n4. We use PyAssimilator and write the best code.\n4. We use PyAssimilator and use the best patterns.\n6. We use PyAssimilator and have no dependencies in our code.\n7. We use PyAssimilator and can switch one database to another in a matter of seconds.\n7. We learn PyAssimilator once and use it forever!\n7. **And most importantly, we make Python projects better!**\n\n\n## Code comparison\n\nBefore PyAssimilator:\n```Python\n# BAD CODE :(\n\ndef create_user(username: str, email: str):\n    # NO PATTERNS!\n    # ONLY ONE DATABASE CHOICE!\n    new_user = User(username=username, email=email, balance=0) # DEPENDENCY!\n    session = db_session()  # DEPENDENCY!\n    session.add(new_user)\n    session.commit()  # NO ACID TRANSACTIONS!\n    return new_user\n\n```\n\nAfter:\n```Python\n# GOOD CODE :)\n\ndef create_user(username: str, email: str, uow: UnitOfWork):\n    # BEST DDD PATTERNS\n    # PATTERN SUBSTITUTION/MULTIPLE DATABASES AT ONCE\n\n    with uow:   # ACID TRANSACTIONS IN ANY DATABASE\n        new_user = uow.repository.save(\n            username=username,  # NO MODEL DEPENDENCIES\n            email=email,\n            balance=0,\n        )\n        uow.commit()    # AUTO ROLLBACK\n\n    return new_user\n\n```\n\n## So, do I really need it?\n\nIf you want to spend less time writing your code, but write better code - then you must use PyAssimilator.\nIt can be hard to start if you have no experience with good code, so you can watch creator's [video tutorials](https://knucklesuganda.github.io/py_assimilator/video_tutorials/).\n\n\n## Our vision\n\nMake Python the best programming language for enterprise development and use all of its dynamic capabilities to write\nthings that other languages can't even comprehend!\n\n- Pattern substitution(switch databases easily) \u2714\ufe0f\n- Event-based apps(in development) \ud83d\udee0\ufe0f\n- 45% of all Python projects use PyAssimilator \ud83d\udee0\ufe0f\n- Independent code(in development) \ud83d\udee0\ufe0f\n- Adaptive patterns(in development) \ud83d\udee0\ufe0f\n- Automatic code improvements(in development) \ud83d\udee0\ufe0f\n- Decentralized code management(in development) \ud83d\udee0\ufe0f\n\nIf you want to help with any of those things - be free to contribute to the project. Remember, you never do anything for\nfree - and that will not be the case either.\n\n## Sources\n* [Github](https://github.com/knucklesuganda/py_assimilator)\n* [PyPI](https://pypi.org/project/py-assimilator/)\n* [Documentation](https://knucklesuganda.github.io/py_assimilator/)\n* [Github](https://github.com/knucklesuganda/py_assimilator)\n* [Author's YouTube RU](https://www.youtube.com/channel/UCSNpJHMOU7FqjD4Ttux0uuw)\n* [Author's YouTube ENG](https://www.youtube.com/channel/UCeC9LNDwRP9OfjyOFHaSikA)\n* [Discord channel](https://discord.gg/gTVaGu7DHN)\n\n ## Contributors\n\n<a href=\"https://github.com/knucklesuganda/py_assimilator/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=knucklesuganda/py_assimilator\" />\n</a>\n\n## Stars history\n\n[![Star History Chart](https://api.star-history.com/svg?repos=knucklesuganda/py_assimilator&type=Date)](https://star-history.com/#knucklesuganda/py_assimilator&Date)\n\n\n## \u2b50Stargazers\u2b50\n\nWe love all people who star our library. You can look at all stargazers in the documentation:\n\nhttps://knucklesuganda.github.io/py_assimilator/#stars-history\n\n> If you star the library you will appear there as well!\n\n\n## Types of patterns\nThese are different use cases for the patterns implemented:\n\n- Database - patterns for database/data layer interactions.\n- Events(in development) - projects with events or event-driven architecture.\n- Unidentified - patterns that are useful for different purposes.\n\n## Available providers\nProviders are different patterns for external modules like SQLAlchemy or FastAPI.\n\n- Alchemy(Database, Events) - patterns for [SQLAlchemy](https://docs.sqlalchemy.org/en/20/) for both database and events.\n- Kafka(Events) - patterns in [Kafka](https://kafka.apache.org/) related to events.\n- Internal(Database, Events) - internal is the type of provider that saves everything in memory(dict, list and all the tools within your app).\n- Redis(Database, Events) - redis_ allows us to work with [Redis](https://redis.io/) memory database.\n- MongoDB(Database) - mongo allows us to work with [MongoDB](https://www.mongodb.com/) database.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "The best Domain-driven design patterns for your projects",
    "version": "1.3.1",
    "project_urls": {
        "Documentation": "https://knucklesuganda.github.io/py_assimilator/",
        "Github": "https://github.com/knucklesuganda/py_assimilator/",
        "Youtube ENG": "https://www.youtube.com/channel/UCeC9LNDwRP9OfjyOFHaSikA",
        "Youtube RU": "https://www.youtube.com/channel/UCSNpJHMOU7FqjD4Ttux0uuw"
    },
    "split_keywords": [
        "architecture",
        "backend",
        "ddd",
        "database",
        "domain-driven design",
        "events",
        "patterns"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b669acbd24cb5489ae5a6c824244ac3778f8c6c83efc2795eb8df1a5b371443",
                "md5": "0a0b89bd9eb69423ca83d189c724e64a",
                "sha256": "94f184f43097f7587f679a76489eb00e6aa40a1bdf95863458ff7d87a094fbd2"
            },
            "downloads": -1,
            "filename": "py_assimilator-1.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0a0b89bd9eb69423ca83d189c724e64a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 49820,
            "upload_time": "2023-06-25T12:31:13",
            "upload_time_iso_8601": "2023-06-25T12:31:13.252711Z",
            "url": "https://files.pythonhosted.org/packages/9b/66/9acbd24cb5489ae5a6c824244ac3778f8c6c83efc2795eb8df1a5b371443/py_assimilator-1.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d19ffcc25b2efcdb164c8ed5fcff85c7a14b35ce792ff71574d73e489e9a893",
                "md5": "2d209bddefd167a5ec4b637d7ed17c8c",
                "sha256": "43b3292a82a3bd7251ae7c531634f9c70544c21b807e8268c8f545aaa9b6e935"
            },
            "downloads": -1,
            "filename": "py_assimilator-1.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "2d209bddefd167a5ec4b637d7ed17c8c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 26985,
            "upload_time": "2023-06-25T12:31:14",
            "upload_time_iso_8601": "2023-06-25T12:31:14.502045Z",
            "url": "https://files.pythonhosted.org/packages/6d/19/ffcc25b2efcdb164c8ed5fcff85c7a14b35ce792ff71574d73e489e9a893/py_assimilator-1.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-25 12:31:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "knucklesuganda",
    "github_project": "py_assimilator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "py-assimilator"
}
        
Elapsed time: 0.08305s