dynamodb-fsm


Namedynamodb-fsm JSON
Version 0.0.1 PyPI version JSON
download
home_pageNone
SummaryFSM storage on dynamo data bases for aiogram 3.10
upload_time2024-09-30 10:30:12
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords fsm aiogram asyncio bot dynamodb finite-state-machine ydb
VCS
bugtrack_url
requirements aiogram boto3 botocore python-dotenv
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FSM-on-dynamodb

<a href="https://opensource.org/license/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg?logo=mit&logoColor=f5f5f5" alt="MIT-license"></a>
<a href="https://github.com/general-soldatov/FSM-on-dynamodb/"><img src="https://img.shields.io/badge/dynamo-fsm-blue.svg?logo=telegram&logoColor=f5f5f5" alt="dynamo-fsm"></a>
<img src="https://img.shields.io/badge/python-3.9%7C3.10%7C3.11-blue?logo=python&logoColor=f5f5f5" alt="Python" />
<a href="https://github.com/aiogram/aiogram/blob/dev-3.x/"><img src="https://img.shields.io/badge/aiogram-3.10-blue.svg?logo=telegram&logoColor=blue" alt="dynamo-fsm"></a>
<img src="https://img.shields.io/badge/boto3-dynamodb-green.svg?logo=" alt="dynamodb-boto3">

Надстройка над `aiogram` для организации FSM (finite-state-machine) на базе базы данных dynamodb с использованием библиотеки boto3 &amp; botocore. Может быть использована на serverless-решениях AWS и YandexCloud. Установить библиотеку можно с помощью команды:
```bash
pip install dynamodb_fsm
```
В GUI облачной панели управления или с помощью CLI создайте динамическую serverless базу данных и сервисный аккаунт с ключом. Для пользователей YandexCloud можете воспользоваться [документацией](https://yandex.cloud/ru/docs/ydb/quickstart).
Для корректной работы библиотеки `boto3` используется dataclass c переменными окружения, поэтому не забудьте внести следующую информацию в файл `.env`
```BASH
ENDPOINT='url_endpoint'
REGION_NAME='ru-central1'
AWS_ACCESS_KEY_ID='key_id'
AWS_SECRET_ACCESS_KEY='access_key_db'
```
В случае использования собственной конфигурации рекомендуется реализовать следующий код:

```python
from dynamodb_fsm import FSMDynamodb

...

@dataclass
class DatabaseConfig:
    endpoint_url: str = 'ENDPOINT'
    region_name: str = 'REGION_NAME'
    aws_access_key_id: str = 'AWS_ACCESS_KEY_ID'
    aws_secret_access_key: str = 'AWS_SECRET_ACCESS_KEY'


config = DatabaseConfig().__dict__
storage = FSMDynamodb(config=config)
```
Для подключения хранилища состояний к диспетчеру `aiogram` используйте следующий пример кода:

```python
from dynamodb_fsm import FSMDynamodb

...

storage = FSMDynamodb()
dp = Dispatcher(storage=storage)
```

Актуальная информация о функциях надстройки есть в репозитории [dynamodb-fsm](https://github.com/general-soldatov/FSM-on-dynamodb/tree/main)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dynamodb-fsm",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "FSM, aiogram, asyncio, bot, dynamodb, finite-state-machine, ydb",
    "author": null,
    "author_email": "Yury Soldatov <general-soldatov@mail.ru>",
    "download_url": "https://files.pythonhosted.org/packages/67/13/001316902106da8c21aaafe8dab7f5ace8bce314548cee1d4ee0ce73bff2/dynamodb_fsm-0.0.1.tar.gz",
    "platform": null,
    "description": "# FSM-on-dynamodb\n\n<a href=\"https://opensource.org/license/MIT\"><img src=\"https://img.shields.io/badge/license-MIT-green.svg?logo=mit&logoColor=f5f5f5\" alt=\"MIT-license\"></a>\n<a href=\"https://github.com/general-soldatov/FSM-on-dynamodb/\"><img src=\"https://img.shields.io/badge/dynamo-fsm-blue.svg?logo=telegram&logoColor=f5f5f5\" alt=\"dynamo-fsm\"></a>\n<img src=\"https://img.shields.io/badge/python-3.9%7C3.10%7C3.11-blue?logo=python&logoColor=f5f5f5\" alt=\"Python\" />\n<a href=\"https://github.com/aiogram/aiogram/blob/dev-3.x/\"><img src=\"https://img.shields.io/badge/aiogram-3.10-blue.svg?logo=telegram&logoColor=blue\" alt=\"dynamo-fsm\"></a>\n<img src=\"https://img.shields.io/badge/boto3-dynamodb-green.svg?logo=\" alt=\"dynamodb-boto3\">\n\n\u041d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0430\u0434 `aiogram` \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 FSM (finite-state-machine) \u043d\u0430 \u0431\u0430\u0437\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 dynamodb \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 boto3 &amp; botocore. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 serverless-\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 AWS \u0438 YandexCloud. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n```bash\npip install dynamodb_fsm\n```\n\u0412 GUI \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CLI \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e serverless \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c. \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 YandexCloud \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f [\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439](https://yandex.cloud/ru/docs/ydb/quickstart).\n\u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 `boto3` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f dataclass c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b `.env`\n```BASH\nENDPOINT='url_endpoint'\nREGION_NAME='ru-central1'\nAWS_ACCESS_KEY_ID='key_id'\nAWS_SECRET_ACCESS_KEY='access_key_db'\n```\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:\n\n```python\nfrom dynamodb_fsm import FSMDynamodb\n\n...\n\n@dataclass\nclass DatabaseConfig:\n    endpoint_url: str = 'ENDPOINT'\n    region_name: str = 'REGION_NAME'\n    aws_access_key_id: str = 'AWS_ACCESS_KEY_ID'\n    aws_secret_access_key: str = 'AWS_SECRET_ACCESS_KEY'\n\n\nconfig = DatabaseConfig().__dict__\nstorage = FSMDynamodb(config=config)\n```\n\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 `aiogram` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:\n\n```python\nfrom dynamodb_fsm import FSMDynamodb\n\n...\n\nstorage = FSMDynamodb()\ndp = Dispatcher(storage=storage)\n```\n\n\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0435\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 [dynamodb-fsm](https://github.com/general-soldatov/FSM-on-dynamodb/tree/main)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "FSM storage on dynamo data bases for aiogram 3.10",
    "version": "0.0.1",
    "project_urls": {
        "Contacts": "https://t.me/general_soldatov",
        "Documentation": "https://github.com/general-soldatov/FSM-on-dynamodb/tree/main/doc",
        "Homepage": "https://github.com/general-soldatov/FSM-on-dynamodb"
    },
    "split_keywords": [
        "fsm",
        " aiogram",
        " asyncio",
        " bot",
        " dynamodb",
        " finite-state-machine",
        " ydb"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "57f9bb0b724441f194166880f62a4a3793421d924659f3df20a7f128f57e20dc",
                "md5": "10ebed3aa14102883a838a4bf7392266",
                "sha256": "b8c2d68c98afc4f79429a5077aec812c597111a32f8ad4eab0e4298eb552bb50"
            },
            "downloads": -1,
            "filename": "dynamodb_fsm-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "10ebed3aa14102883a838a4bf7392266",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 5248,
            "upload_time": "2024-09-30T10:29:59",
            "upload_time_iso_8601": "2024-09-30T10:29:59.991530Z",
            "url": "https://files.pythonhosted.org/packages/57/f9/bb0b724441f194166880f62a4a3793421d924659f3df20a7f128f57e20dc/dynamodb_fsm-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6713001316902106da8c21aaafe8dab7f5ace8bce314548cee1d4ee0ce73bff2",
                "md5": "8beee835ef0e57729dcce5bcdeae708b",
                "sha256": "08b30cf6b072ae15e2fcc38fcb58a9f72dacf518f95e5d1278ff2bd78280bf03"
            },
            "downloads": -1,
            "filename": "dynamodb_fsm-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8beee835ef0e57729dcce5bcdeae708b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 16868009,
            "upload_time": "2024-09-30T10:30:12",
            "upload_time_iso_8601": "2024-09-30T10:30:12.434837Z",
            "url": "https://files.pythonhosted.org/packages/67/13/001316902106da8c21aaafe8dab7f5ace8bce314548cee1d4ee0ce73bff2/dynamodb_fsm-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-30 10:30:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "general-soldatov",
    "github_project": "FSM-on-dynamodb",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "aiogram",
            "specs": [
                [
                    "==",
                    "3.10.0"
                ]
            ]
        },
        {
            "name": "boto3",
            "specs": [
                [
                    "==",
                    "1.34.0"
                ]
            ]
        },
        {
            "name": "botocore",
            "specs": [
                [
                    "==",
                    "1.34.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        }
    ],
    "lcname": "dynamodb-fsm"
}
        
Elapsed time: 0.38407s