# Falcon-deps
Dependency injector for [Falcon Framework](https://github.com/falconry/falcon) based on [taskiq-dependencies](https://github.com/taskiq-python/taskiq-dependencies).
## Installation
Install with pip
```bash
pip install falcon-deps
```
Install with poetry
```bash
poetry add falcon-deps
```
## Usage
### Start Usage
It's simple as possible.
```python
from falcon_deps import InjectableResource
from falcon.asgi import App, Request, Response
from taskiq_dependencies import Depends
# Imagine we have a database pool.
async def db_pool(
# Retrieve request object from the actual request.
request: Request = Depends(),
) -> ConnectionPool:
return request.context._pool
class Resource(InjectableResource):
async def on_get(
self,
request: Request,
response: Response,
# Retrieve database pool as a dependency
db_pool: ConnctionPool = Depends(db_pool)
) -> None:
...
app = App()
app.add_route(
"/test",
Resource(),
)
```
### Advanced Usage
Falcon gives option to specify suffix for resource.
If you want to use suffix with `InjectableResource` you need to pass suffix to `InjectableResource` too.
```python
app.add_route(
"/test",
Resource(suffix="bob",),
suffix="bob",
)
```
If some of methods in Resource don't need dependency injection, it's possible to remove them from injection with `exclude_responder_from_inject`.
```python
app.add_route(
"/test",
Resource(
exclude_responder_from_inject={
# Remove on_get and on_post methods from injection.
"on_get",
"on_post",
},
),
)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "falcon-deps",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": null,
"author": "chandr-andr (Kiselev Aleksandr)",
"author_email": "chandr@chandr.net",
"download_url": "https://files.pythonhosted.org/packages/1d/7c/63c4c5ae3a0125d0a288e55a41f1ee6c2b6e60216e64edb9e525a0cf211d/falcon_deps-0.1.2.tar.gz",
"platform": null,
"description": "# Falcon-deps\nDependency injector for [Falcon Framework](https://github.com/falconry/falcon) based on [taskiq-dependencies](https://github.com/taskiq-python/taskiq-dependencies).\n\n## Installation\n\nInstall with pip\n```bash\npip install falcon-deps\n```\n\nInstall with poetry\n```bash\npoetry add falcon-deps\n```\n\n## Usage\n\n### Start Usage\nIt's simple as possible.\n\n```python\nfrom falcon_deps import InjectableResource\nfrom falcon.asgi import App, Request, Response\nfrom taskiq_dependencies import Depends\n\n\n# Imagine we have a database pool.\nasync def db_pool(\n # Retrieve request object from the actual request.\n request: Request = Depends(),\n) -> ConnectionPool:\n return request.context._pool\n\n\nclass Resource(InjectableResource):\n async def on_get(\n self,\n request: Request,\n response: Response,\n # Retrieve database pool as a dependency\n db_pool: ConnctionPool = Depends(db_pool)\n ) -> None:\n ...\n\n\napp = App()\napp.add_route(\n \"/test\",\n Resource(),\n)\n```\n\n### Advanced Usage\nFalcon gives option to specify suffix for resource.\nIf you want to use suffix with `InjectableResource` you need to pass suffix to `InjectableResource` too.\n\n```python\napp.add_route(\n \"/test\",\n Resource(suffix=\"bob\",),\n suffix=\"bob\",\n)\n```\n\nIf some of methods in Resource don't need dependency injection, it's possible to remove them from injection with `exclude_responder_from_inject`.\n\n```python\napp.add_route(\n \"/test\",\n Resource(\n exclude_responder_from_inject={\n # Remove on_get and on_post methods from injection.\n \"on_get\",\n \"on_post\",\n },\n ),\n)\n```\n",
"bugtrack_url": null,
"license": null,
"summary": null,
"version": "0.1.2",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ea89e629607ab64050f34a561f0e2ea4cfee2b548e4e80b894cd5027d7db7c0f",
"md5": "ea5f8eb1c602d1f0f2911ca1a89f55e1",
"sha256": "bf30895d6688c9a9b9fe1b6269f08f902b1fc473ba4b3514b566f41af795bed9"
},
"downloads": -1,
"filename": "falcon_deps-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ea5f8eb1c602d1f0f2911ca1a89f55e1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 3856,
"upload_time": "2024-10-20T19:10:15",
"upload_time_iso_8601": "2024-10-20T19:10:15.787219Z",
"url": "https://files.pythonhosted.org/packages/ea/89/e629607ab64050f34a561f0e2ea4cfee2b548e4e80b894cd5027d7db7c0f/falcon_deps-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1d7c63c4c5ae3a0125d0a288e55a41f1ee6c2b6e60216e64edb9e525a0cf211d",
"md5": "15d29b4d7085380e468aa273b5f4e8a1",
"sha256": "105945b7430c480a4d6d5c9114cab3e4c3ef411c7a565e2d350a4922398ea564"
},
"downloads": -1,
"filename": "falcon_deps-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "15d29b4d7085380e468aa273b5f4e8a1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 4078,
"upload_time": "2024-10-20T19:10:16",
"upload_time_iso_8601": "2024-10-20T19:10:16.626470Z",
"url": "https://files.pythonhosted.org/packages/1d/7c/63c4c5ae3a0125d0a288e55a41f1ee6c2b6e60216e64edb9e525a0cf211d/falcon_deps-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-20 19:10:16",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "falcon-deps"
}