diff --git a/docs/main/changelog.rst b/docs/main/changelog.rst
index 1827833c..4973e63e 100644
--- a/docs/main/changelog.rst
+++ b/docs/main/changelog.rst
@@ -9,7 +9,8 @@ follows `Semantic versioning`_
4.0.0
-----
-- Add wiring.
+- Add ``wiring`` feature.
+- Update ``aiohttp`` example.
3.44.0
------
diff --git a/examples/miniapps/giphynav-aiohttp/README.rst b/examples/miniapps/aiohttp-giphynav/README.rst
similarity index 89%
rename from examples/miniapps/giphynav-aiohttp/README.rst
rename to examples/miniapps/aiohttp-giphynav/README.rst
index 9ac19d22..f18bc406 100644
--- a/examples/miniapps/giphynav-aiohttp/README.rst
+++ b/examples/miniapps/aiohttp-giphynav/README.rst
@@ -1,8 +1,8 @@
-Aiohttp Dependency Injection Example
-====================================
+Dependency Injector + Aiohttp Example
+=====================================
Application ``giphynavigator`` is an `Aiohttp `_ +
-`Dependency Injector `_ application.
+`Dependency Injector `_ example application.
Run
---
@@ -107,11 +107,11 @@ The output should be something like:
---------------------------------------------------
giphynavigator/__init__.py 0 0 100%
giphynavigator/__main__.py 5 5 0%
- giphynavigator/application.py 10 0 100%
- giphynavigator/containers.py 10 0 100%
+ giphynavigator/application.py 12 0 100%
+ giphynavigator/containers.py 6 0 100%
giphynavigator/giphy.py 14 9 36%
giphynavigator/services.py 9 1 89%
- giphynavigator/tests.py 35 0 100%
- giphynavigator/views.py 7 0 100%
+ giphynavigator/tests.py 37 0 100%
+ giphynavigator/views.py 9 0 100%
---------------------------------------------------
- TOTAL 90 15 83%
+ TOTAL 92 15 84%
diff --git a/examples/miniapps/aiohttp-giphynav/config.yml b/examples/miniapps/aiohttp-giphynav/config.yml
new file mode 100644
index 00000000..d1276f8c
--- /dev/null
+++ b/examples/miniapps/aiohttp-giphynav/config.yml
@@ -0,0 +1,5 @@
+giphy:
+ request_timeout: 10
+default:
+ query: "Dependency Injector"
+ limit: 10
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/__init__.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/__init__.py
similarity index 100%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/__init__.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/__init__.py
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/__main__.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/__main__.py
similarity index 100%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/__main__.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/__main__.py
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/application.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/application.py
similarity index 62%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/application.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/application.py
index 0e446ab4..17703ca0 100644
--- a/examples/miniapps/giphynav-aiohttp/giphynavigator/application.py
+++ b/examples/miniapps/aiohttp-giphynav/giphynavigator/application.py
@@ -2,20 +2,23 @@
from aiohttp import web
-from .containers import ApplicationContainer
+from .containers import Container
+from . import views
def create_app():
"""Create and return aiohttp application."""
- container = ApplicationContainer()
+ container = Container()
container.config.from_yaml('config.yml')
container.config.giphy.api_key.from_env('GIPHY_API_KEY')
- app: web.Application = container.app()
+ container.wire(modules=[views])
+
+ app = web.Application()
app.container = container
app.add_routes([
- web.get('/', container.index_view.as_view()),
+ web.get('/', views.index),
])
return app
diff --git a/examples/miniapps/aiohttp-giphynav/giphynavigator/containers.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/containers.py
new file mode 100644
index 00000000..730c162e
--- /dev/null
+++ b/examples/miniapps/aiohttp-giphynav/giphynavigator/containers.py
@@ -0,0 +1,21 @@
+"""Containers module."""
+
+from dependency_injector import containers, providers
+
+from . import giphy, services
+
+
+class Container(containers.DeclarativeContainer):
+
+ config = providers.Configuration()
+
+ giphy_client = providers.Factory(
+ giphy.GiphyClient,
+ api_key=config.giphy.api_key,
+ timeout=config.giphy.request_timeout,
+ )
+
+ search_service = providers.Factory(
+ services.SearchService,
+ giphy_client=giphy_client,
+ )
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/giphy.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/giphy.py
similarity index 100%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/giphy.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/giphy.py
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/services.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/services.py
similarity index 100%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/services.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/services.py
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/tests.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/tests.py
similarity index 90%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/tests.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/tests.py
index cdd68d54..7f9046e6 100644
--- a/examples/miniapps/giphynav-aiohttp/giphynavigator/tests.py
+++ b/examples/miniapps/aiohttp-giphynav/giphynavigator/tests.py
@@ -10,7 +10,9 @@ from giphynavigator.giphy import GiphyClient
@pytest.fixture
def app():
- return create_app()
+ app = create_app()
+ yield app
+ app.container.unwire()
@pytest.fixture
@@ -73,5 +75,5 @@ async def test_index_default_params(client, app):
assert response.status == 200
data = await response.json()
- assert data['query'] == app.container.config.search.default_query()
- assert data['limit'] == app.container.config.search.default_limit()
+ assert data['query'] == app.container.config.default.query()
+ assert data['limit'] == app.container.config.default.limit()
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/views.py b/examples/miniapps/aiohttp-giphynav/giphynavigator/views.py
similarity index 59%
rename from examples/miniapps/giphynav-aiohttp/giphynavigator/views.py
rename to examples/miniapps/aiohttp-giphynav/giphynavigator/views.py
index 7af5a0f5..5a628dae 100644
--- a/examples/miniapps/giphynav-aiohttp/giphynavigator/views.py
+++ b/examples/miniapps/aiohttp-giphynav/giphynavigator/views.py
@@ -1,15 +1,17 @@
"""Views module."""
from aiohttp import web
+from dependency_injector.wiring import Provide
from .services import SearchService
+from .containers import Container
async def index(
request: web.Request,
- search_service: SearchService,
- default_query: str,
- default_limit: int,
+ search_service: SearchService = Provide[Container.search_service],
+ default_query: str = Provide[Container.config.default.query],
+ default_limit: int = Provide[Container.config.default.limit.as_int()],
) -> web.Response:
query = request.query.get('query', default_query)
limit = int(request.query.get('limit', default_limit))
diff --git a/examples/miniapps/giphynav-aiohttp/requirements.txt b/examples/miniapps/aiohttp-giphynav/requirements.txt
similarity index 100%
rename from examples/miniapps/giphynav-aiohttp/requirements.txt
rename to examples/miniapps/aiohttp-giphynav/requirements.txt
diff --git a/examples/miniapps/giphynav-aiohttp/config.yml b/examples/miniapps/giphynav-aiohttp/config.yml
deleted file mode 100644
index e1a0a14b..00000000
--- a/examples/miniapps/giphynav-aiohttp/config.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-giphy:
- request_timeout: 10
-search:
- default_query: "Dependency Injector"
- default_limit: 10
diff --git a/examples/miniapps/giphynav-aiohttp/giphynavigator/containers.py b/examples/miniapps/giphynav-aiohttp/giphynavigator/containers.py
deleted file mode 100644
index 5e56919f..00000000
--- a/examples/miniapps/giphynav-aiohttp/giphynavigator/containers.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""Application containers module."""
-
-from dependency_injector import containers, providers
-from dependency_injector.ext import aiohttp
-from aiohttp import web
-
-from . import giphy, services, views
-
-
-class ApplicationContainer(containers.DeclarativeContainer):
- """Application container."""
-
- app = aiohttp.Application(web.Application)
-
- config = providers.Configuration()
-
- giphy_client = providers.Factory(
- giphy.GiphyClient,
- api_key=config.giphy.api_key,
- timeout=config.giphy.request_timeout,
- )
-
- search_service = providers.Factory(
- services.SearchService,
- giphy_client=giphy_client,
- )
-
- index_view = aiohttp.View(
- views.index,
- search_service=search_service,
- default_query=config.search.default_query,
- default_limit=config.search.default_limit,
- )