Metadata-Version: 2.4
Name: dishka-pyramid
Version: 1.0.2
Summary: Dishka DI integration for Pyramid framework
Project-URL: Homepage, https://github.com/WorkHardes/dishka-pyramid
Project-URL: Repository, https://github.com/WorkHardes/dishka-pyramid
Project-URL: Issues, https://github.com/WorkHardes/dishka-pyramid/issues
Author-email: Orekhov Arkady <arckadyor34@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: dependency-injection,di,dishka,ioc,pyramid,web,wsgi
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Pyramid
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: dishka>=1.8.0
Requires-Dist: pyramid>=2.1
Description-Content-Type: text/markdown

# Pyramid integration for Dishka

Dishka DI integration for the [Pyramid](https://trypyramid.com/) framework.

## Installation

via uv:

```shell
uv add dishka-pyramid
```

via pip:

```shell
pip install dishka-pyramid
```

## Usage

Usage example

```python
from typing import Final

from dishka import Provider, Scope, make_container, provide
from pyramid.config import Configurator
from pyramid.request import Request
from pyramid.response import Response
from pyramid.view import view_config

from dishka_pyramid import FromDishka, PyramidProvider, inject, setup_dishka


class GetHelloInteractor:
    def execute(self) -> str:
        return "Hello from Dishka!"


class MyProvider(Provider):
    @provide(scope=Scope.REQUEST)
    def get_hello_interactor(self) -> GetHelloInteractor:
        return GetHelloInteractor()


GET_HELLO_ROUTE_NAME: Final[str] = "hello"


@view_config(route_name=GET_HELLO_ROUTE_NAME)
@inject
def my_view(request: Request, interactor: FromDishka[GetHelloInteractor]) -> Response:
    response_text = interactor.execute()
    return Response(response_text)


container = make_container(PyramidProvider(), MyProvider())

config = Configurator()
setup_dishka(container=container, config=config)

config.add_route(name=GET_HELLO_ROUTE_NAME, pattern="/hello")
config.scan()

app = config.make_wsgi_app()
```
