Metadata-Version: 2.1
Name: aiogram3-di
Version: 2.0.0
Summary: Dependency Injection implementation for aiogram 3.
Home-page: https://github.com/Vladyslav49/aiogram3_di
License: MIT
Keywords: Aiogram,Telegram,Bots,DI,Dependency Injection
Author: Vladyslav Timofeev
Author-email: Timofeevvladyslav49@gmail.com
Requires-Python: >=3.10
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: aiogram (>=3.0.0)
Project-URL: Repository, https://github.com/Vladyslav49/aiogram3_di
Description-Content-Type: text/markdown

### Example of usage

```python
import logging
from os import getenv
from typing import Annotated

from aiogram import Router, Bot, Dispatcher
from aiogram.types import Message, User
from aiogram3_di import setup_di, Depends

router = Router()


def get_user_full_name(event_from_user: User) -> str:
    return event_from_user.full_name


@router.message()
async def start(
        message: Message, full_name: Annotated[str, Depends(get_user_full_name)]
) -> None:
    await message.answer(f"Hi {full_name}")


def main() -> None:
    logging.basicConfig(level=logging.INFO)

    bot = Bot(token=getenv("BOT_TOKEN"))

    dp = Dispatcher()

    dp.include_router(router)

    setup_di(dp)

    dp.run_polling(bot)


if __name__ == "__main__":
    main()
```

### Handler Dependencies.

You can use `Depends` in the flags parameter of the handler, for example: 

```python
flags={"dependencies": [Depends(verify_user)]}
```

### Details

It is inspired by [FastAPI](https://github.com/tiangolo/fastapi).

If you define a normal def, your function will be called in a different thread.

### License

MIT

