falcon-deps


Namefalcon-deps JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-10-20 19:10:16
maintainerNone
docs_urlNone
authorchandr-andr (Kiselev Aleksandr)
requires_python<4.0,>=3.9
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.36593s