From 7f586246b43afba60aef728a324339c5c02e94b0 Mon Sep 17 00:00:00 2001 From: ZipFile Date: Sun, 8 Dec 2024 18:53:29 +0200 Subject: [PATCH] Update examples (#838) --- docs/tutorials/asyncio-daemon.rst | 38 +++++++++---------- examples/miniapps/aiohttp/README.rst | 5 ++- .../miniapps/aiohttp/giphynavigator/tests.py | 10 +++-- examples/miniapps/aiohttp/requirements.txt | 1 + examples/miniapps/asyncio-daemon/Dockerfile | 2 +- examples/miniapps/asyncio-daemon/README.rst | 11 +++--- .../asyncio-daemon/monitoringdaemon/tests.py | 3 +- examples/miniapps/fastapi-redis/Dockerfile | 2 +- examples/miniapps/fastapi-redis/README.rst | 14 +++---- .../fastapi-redis/fastapiredis/redis.py | 2 +- .../fastapi-redis/fastapiredis/services.py | 2 +- .../miniapps/fastapi-redis/requirements.txt | 2 +- examples/miniapps/fastapi-simple/tests.py | 5 ++- .../miniapps/fastapi-sqlalchemy/Dockerfile | 2 +- .../miniapps/fastapi-sqlalchemy/README.rst | 10 ++--- .../fastapi-sqlalchemy/requirements.txt | 2 +- examples/miniapps/fastapi/README.rst | 6 +-- .../miniapps/fastapi/giphynavigator/tests.py | 3 +- examples/miniapps/flask-blueprints/README.rst | 5 ++- .../githubnavigator/application.py | 4 +- examples/miniapps/flask/README.rst | 5 ++- .../flask/githubnavigator/application.py | 4 +- examples/miniapps/movie-lister/README.rst | 4 +- examples/miniapps/sanic/README.rst | 7 ++-- .../miniapps/sanic/giphynavigator/tests.py | 25 ++++++------ examples/miniapps/sanic/requirements.txt | 4 +- 26 files changed, 93 insertions(+), 85 deletions(-) diff --git a/docs/tutorials/asyncio-daemon.rst b/docs/tutorials/asyncio-daemon.rst index 0c6d552a5..09dbf29cf 100644 --- a/docs/tutorials/asyncio-daemon.rst +++ b/docs/tutorials/asyncio-daemon.rst @@ -18,7 +18,7 @@ In this tutorial we will use: - Python 3 - Docker -- Docker-compose +- Docker Compose Start from the scratch or jump to the section: @@ -47,28 +47,27 @@ response it will log: Prerequisites ------------- -We will use `Docker `_ and -`docker-compose `_ in this tutorial. Let's check the versions: +We will use `docker compose `_ in this tutorial. Let's check the versions: .. code-block:: bash docker --version - docker-compose --version + docker compose version The output should look something like: .. code-block:: bash - Docker version 20.10.5, build 55c4c88 - docker-compose version 1.29.0, build 07737305 + Docker version 27.3.1, build ce12230 + Docker Compose version v2.29.7 .. note:: - If you don't have ``Docker`` or ``docker-compose`` you need to install them before proceeding. + If you don't have ``Docker`` or ``docker compose`` you need to install them before proceeding. Follow these installation guides: - `Install Docker `_ - - `Install docker-compose `_ + - `Install docker compose `_ The prerequisites are satisfied. Let's get started with the project layout. @@ -129,13 +128,13 @@ Put next lines into the ``requirements.txt`` file: pytest-cov Second, we need to create the ``Dockerfile``. It will describe the daemon's build process and -specify how to run it. We will use ``python:3.9-buster`` as a base image. +specify how to run it. We will use ``python:3.13-bookworm`` as a base image. Put next lines into the ``Dockerfile`` file: .. code-block:: bash - FROM python:3.10-buster + FROM python:3.13-bookworm ENV PYTHONUNBUFFERED=1 @@ -155,8 +154,6 @@ Put next lines into the ``docker-compose.yml`` file: .. code-block:: yaml - version: "3.7" - services: monitor: @@ -171,7 +168,7 @@ Run in the terminal: .. code-block:: bash - docker-compose build + docker compose build The build process may take a couple of minutes. You should see something like this in the end: @@ -184,7 +181,7 @@ After the build is done run the container: .. code-block:: bash - docker-compose up + docker compose up The output should look like: @@ -461,7 +458,7 @@ Run in the terminal: .. code-block:: bash - docker-compose up + docker compose up The output should look like: @@ -705,7 +702,7 @@ Run in the terminal: .. code-block:: bash - docker-compose up + docker compose up You should see: @@ -813,7 +810,7 @@ Run in the terminal: .. code-block:: bash - docker-compose up + docker compose up You should see: @@ -965,15 +962,16 @@ Run in the terminal: .. code-block:: bash - docker-compose run --rm monitor py.test monitoringdaemon/tests.py --cov=monitoringdaemon + docker compose run --rm monitor py.test monitoringdaemon/tests.py --cov=monitoringdaemon You should see: .. code-block:: bash - platform linux -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 + platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /code - plugins: asyncio-0.16.0, cov-3.0.0 + plugins: cov-6.0.0, asyncio-0.24.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 2 items monitoringdaemon/tests.py .. [100%] diff --git a/examples/miniapps/aiohttp/README.rst b/examples/miniapps/aiohttp/README.rst index 10464017e..017c3a938 100644 --- a/examples/miniapps/aiohttp/README.rst +++ b/examples/miniapps/aiohttp/README.rst @@ -98,8 +98,9 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: asyncio-0.16.0, anyio-3.3.4, aiohttp-0.3.0, cov-3.0.0 + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0, anyio-4.4.0, asyncio-0.24.0, aiohttp-1.0.5 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 3 items giphynavigator/tests.py ... [100%] diff --git a/examples/miniapps/aiohttp/giphynavigator/tests.py b/examples/miniapps/aiohttp/giphynavigator/tests.py index 84eddc60e..0201ed014 100644 --- a/examples/miniapps/aiohttp/giphynavigator/tests.py +++ b/examples/miniapps/aiohttp/giphynavigator/tests.py @@ -3,11 +3,15 @@ from unittest import mock import pytest +import pytest_asyncio from giphynavigator.application import create_app from giphynavigator.giphy import GiphyClient +pytestmark = pytest.mark.asyncio + + @pytest.fixture def app(): app = create_app() @@ -15,9 +19,9 @@ def app(): app.container.unwire() -@pytest.fixture -def client(app, aiohttp_client, loop): - return loop.run_until_complete(aiohttp_client(app)) +@pytest_asyncio.fixture +async def client(app, aiohttp_client): + return await aiohttp_client(app) async def test_index(client, app): diff --git a/examples/miniapps/aiohttp/requirements.txt b/examples/miniapps/aiohttp/requirements.txt index e84f6b893..16c8ba121 100644 --- a/examples/miniapps/aiohttp/requirements.txt +++ b/examples/miniapps/aiohttp/requirements.txt @@ -2,4 +2,5 @@ dependency-injector aiohttp pyyaml pytest-aiohttp +pytest-asyncio pytest-cov diff --git a/examples/miniapps/asyncio-daemon/Dockerfile b/examples/miniapps/asyncio-daemon/Dockerfile index accf7ae08..c40ff77da 100644 --- a/examples/miniapps/asyncio-daemon/Dockerfile +++ b/examples/miniapps/asyncio-daemon/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10-buster +FROM python:3.13-bookworm ENV PYTHONUNBUFFERED=1 diff --git a/examples/miniapps/asyncio-daemon/README.rst b/examples/miniapps/asyncio-daemon/README.rst index 83848bd0c..241e9f55e 100644 --- a/examples/miniapps/asyncio-daemon/README.rst +++ b/examples/miniapps/asyncio-daemon/README.rst @@ -13,13 +13,13 @@ Build the Docker image: .. code-block:: bash - docker-compose build + docker compose build Run the docker-compose environment: .. code-block:: bash - docker-compose up + docker compose up The output should be something like: @@ -59,15 +59,16 @@ To run the tests do: .. code-block:: bash - docker-compose run --rm monitor py.test monitoringdaemon/tests.py --cov=monitoringdaemon + docker compose run --rm monitor py.test monitoringdaemon/tests.py --cov=monitoringdaemon The output should be something like: .. code-block:: - platform linux -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 + platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /code - plugins: asyncio-0.16.0, cov-3.0.0 + plugins: cov-6.0.0, asyncio-0.24.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 2 items monitoringdaemon/tests.py .. [100%] diff --git a/examples/miniapps/asyncio-daemon/monitoringdaemon/tests.py b/examples/miniapps/asyncio-daemon/monitoringdaemon/tests.py index 87c1a5452..1c55b4edc 100644 --- a/examples/miniapps/asyncio-daemon/monitoringdaemon/tests.py +++ b/examples/miniapps/asyncio-daemon/monitoringdaemon/tests.py @@ -61,7 +61,7 @@ async def test_example_monitor(container, caplog): @pytest.mark.asyncio -async def test_dispatcher(container, caplog, event_loop): +async def test_dispatcher(container, caplog): caplog.set_level("INFO") example_monitor_mock = mock.AsyncMock() @@ -72,6 +72,7 @@ async def test_dispatcher(container, caplog, event_loop): httpbin_monitor=httpbin_monitor_mock, ): dispatcher = container.dispatcher() + event_loop = asyncio.get_running_loop() event_loop.create_task(dispatcher.start()) await asyncio.sleep(0.1) dispatcher.stop() diff --git a/examples/miniapps/fastapi-redis/Dockerfile b/examples/miniapps/fastapi-redis/Dockerfile index 8b7ce3bcc..74f3a6443 100644 --- a/examples/miniapps/fastapi-redis/Dockerfile +++ b/examples/miniapps/fastapi-redis/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10-buster +FROM python:3.13-bookworm ENV PYTHONUNBUFFERED=1 diff --git a/examples/miniapps/fastapi-redis/README.rst b/examples/miniapps/fastapi-redis/README.rst index 1ef75b312..0e9a49ebd 100644 --- a/examples/miniapps/fastapi-redis/README.rst +++ b/examples/miniapps/fastapi-redis/README.rst @@ -12,13 +12,13 @@ Build the Docker image: .. code-block:: bash - docker-compose build + docker compose build Run the docker-compose environment: .. code-block:: bash - docker-compose up + docker compose up The output should be something like: @@ -54,16 +54,16 @@ To run the tests do: .. code-block:: bash - docker-compose run --rm example py.test fastapiredis/tests.py --cov=fastapiredis + docker compose run --rm example py.test fastapiredis/tests.py --cov=fastapiredis The output should be something like: .. code-block:: - platform linux -- Python 3.10.9, pytest-7.2.0, pluggy-1.0.0 + platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /code - plugins: cov-4.0.0, asyncio-0.20.3 - collected 1 item + plugins: cov-6.0.0, asyncio-0.24.0, anyio-4.7.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None fastapiredis/tests.py . [100%] @@ -77,4 +77,4 @@ The output should be something like: fastapiredis/services.py 7 3 57% fastapiredis/tests.py 18 0 100% ------------------------------------------------- - TOTAL 52 7 87% \ No newline at end of file + TOTAL 52 7 87% diff --git a/examples/miniapps/fastapi-redis/fastapiredis/redis.py b/examples/miniapps/fastapi-redis/fastapiredis/redis.py index e770906cb..e1067f4af 100644 --- a/examples/miniapps/fastapi-redis/fastapiredis/redis.py +++ b/examples/miniapps/fastapi-redis/fastapiredis/redis.py @@ -1,6 +1,6 @@ from typing import AsyncIterator -from aioredis import from_url, Redis +from redis.asyncio import from_url, Redis async def init_redis_pool(host: str, password: str) -> AsyncIterator[Redis]: diff --git a/examples/miniapps/fastapi-redis/fastapiredis/services.py b/examples/miniapps/fastapi-redis/fastapiredis/services.py index 0cae07311..4bee7ae70 100644 --- a/examples/miniapps/fastapi-redis/fastapiredis/services.py +++ b/examples/miniapps/fastapi-redis/fastapiredis/services.py @@ -1,6 +1,6 @@ """Services module.""" -from aioredis import Redis +from redis.asyncio import Redis class Service: diff --git a/examples/miniapps/fastapi-redis/requirements.txt b/examples/miniapps/fastapi-redis/requirements.txt index c217324ad..6da76d96a 100644 --- a/examples/miniapps/fastapi-redis/requirements.txt +++ b/examples/miniapps/fastapi-redis/requirements.txt @@ -1,7 +1,7 @@ dependency-injector fastapi uvicorn -aioredis +redis>=4.2 # For testing: pytest diff --git a/examples/miniapps/fastapi-simple/tests.py b/examples/miniapps/fastapi-simple/tests.py index cf0335923..54cf4171e 100644 --- a/examples/miniapps/fastapi-simple/tests.py +++ b/examples/miniapps/fastapi-simple/tests.py @@ -1,13 +1,14 @@ from unittest import mock import pytest +import pytest_asyncio from httpx import ASGITransport, AsyncClient from fastapi_di_example import app, container, Service -@pytest.fixture -async def client(event_loop): +@pytest_asyncio.fixture +async def client(): async with AsyncClient( transport=ASGITransport(app=app), base_url="http://test", diff --git a/examples/miniapps/fastapi-sqlalchemy/Dockerfile b/examples/miniapps/fastapi-sqlalchemy/Dockerfile index 17676624a..b36cfa63b 100644 --- a/examples/miniapps/fastapi-sqlalchemy/Dockerfile +++ b/examples/miniapps/fastapi-sqlalchemy/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.10-buster +FROM python:3.13-bookworm ENV PYTHONUNBUFFERED=1 ENV HOST=0.0.0.0 diff --git a/examples/miniapps/fastapi-sqlalchemy/README.rst b/examples/miniapps/fastapi-sqlalchemy/README.rst index 9c305f187..753d20eb5 100644 --- a/examples/miniapps/fastapi-sqlalchemy/README.rst +++ b/examples/miniapps/fastapi-sqlalchemy/README.rst @@ -15,13 +15,13 @@ Build the Docker image: .. code-block:: bash - docker-compose build + docker compose build Run the docker-compose environment: .. code-block:: bash - docker-compose up + docker compose up The output should be something like: @@ -67,15 +67,15 @@ To run the tests do: .. code-block:: bash - docker-compose run --rm webapp py.test webapp/tests.py --cov=webapp + docker compose run --rm webapp py.test webapp/tests.py --cov=webapp The output should be something like: .. code-block:: - platform linux -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 + platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 rootdir: /code - plugins: cov-3.0.0 + plugins: cov-6.0.0, anyio-4.7.0 collected 7 items webapp/tests.py ....... [100%] diff --git a/examples/miniapps/fastapi-sqlalchemy/requirements.txt b/examples/miniapps/fastapi-sqlalchemy/requirements.txt index f2c5ade55..ef0cbbd62 100644 --- a/examples/miniapps/fastapi-sqlalchemy/requirements.txt +++ b/examples/miniapps/fastapi-sqlalchemy/requirements.txt @@ -1,5 +1,5 @@ dependency-injector -fastapi +fastapi[standard] uvicorn pyyaml sqlalchemy diff --git a/examples/miniapps/fastapi/README.rst b/examples/miniapps/fastapi/README.rst index 779ccac82..e7417c293 100644 --- a/examples/miniapps/fastapi/README.rst +++ b/examples/miniapps/fastapi/README.rst @@ -101,9 +101,9 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: asyncio-0.16.0, cov-3.0.0 - collected 3 items + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0, anyio-4.4.0, asyncio-0.24.0, aiohttp-1.0.5 + asyncio: mode=Mode.STRICT, default_loop_scope=None giphynavigator/tests.py ... [100%] diff --git a/examples/miniapps/fastapi/giphynavigator/tests.py b/examples/miniapps/fastapi/giphynavigator/tests.py index c1505e78e..3dabd0b24 100644 --- a/examples/miniapps/fastapi/giphynavigator/tests.py +++ b/examples/miniapps/fastapi/giphynavigator/tests.py @@ -3,13 +3,14 @@ from unittest import mock import pytest +import pytest_asyncio from httpx import ASGITransport, AsyncClient from giphynavigator.application import app from giphynavigator.giphy import GiphyClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with AsyncClient( transport=ASGITransport(app=app), diff --git a/examples/miniapps/flask-blueprints/README.rst b/examples/miniapps/flask-blueprints/README.rst index 3d61636c4..6f8385c99 100644 --- a/examples/miniapps/flask-blueprints/README.rst +++ b/examples/miniapps/flask-blueprints/README.rst @@ -81,8 +81,9 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: cov-3.0.0, flask-1.2.0 + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0, flask-1.3.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 2 items githubnavigator/tests.py .. [100%] diff --git a/examples/miniapps/flask-blueprints/githubnavigator/application.py b/examples/miniapps/flask-blueprints/githubnavigator/application.py index 4b1ae03b5..1e4891349 100644 --- a/examples/miniapps/flask-blueprints/githubnavigator/application.py +++ b/examples/miniapps/flask-blueprints/githubnavigator/application.py @@ -1,7 +1,7 @@ """Application module.""" from flask import Flask -from flask_bootstrap import Bootstrap +from flask_bootstrap import Bootstrap4 from .containers import Container from .blueprints import example @@ -15,7 +15,7 @@ def create_app() -> Flask: app.container = container app.register_blueprint(example.blueprint) - bootstrap = Bootstrap() + bootstrap = Bootstrap4() bootstrap.init_app(app) return app diff --git a/examples/miniapps/flask/README.rst b/examples/miniapps/flask/README.rst index 93d45a00b..c691b2a29 100644 --- a/examples/miniapps/flask/README.rst +++ b/examples/miniapps/flask/README.rst @@ -81,8 +81,9 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: cov-3.0.0, flask-1.2.0 + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0, flask-1.3.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 2 items githubnavigator/tests.py .. [100%] diff --git a/examples/miniapps/flask/githubnavigator/application.py b/examples/miniapps/flask/githubnavigator/application.py index 8943c55c2..2520d146f 100644 --- a/examples/miniapps/flask/githubnavigator/application.py +++ b/examples/miniapps/flask/githubnavigator/application.py @@ -1,7 +1,7 @@ """Application module.""" from flask import Flask -from flask_bootstrap import Bootstrap +from flask_bootstrap import Bootstrap4 from .containers import Container from . import views @@ -15,7 +15,7 @@ def create_app() -> Flask: app.container = container app.add_url_rule("/", "index", views.index) - bootstrap = Bootstrap() + bootstrap = Bootstrap4() bootstrap.init_app(app) return app diff --git a/examples/miniapps/movie-lister/README.rst b/examples/miniapps/movie-lister/README.rst index 1600d9e3e..3787e327b 100644 --- a/examples/miniapps/movie-lister/README.rst +++ b/examples/miniapps/movie-lister/README.rst @@ -58,8 +58,8 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: cov-3.0.0 + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0 collected 2 items movies/tests.py .. [100%] diff --git a/examples/miniapps/sanic/README.rst b/examples/miniapps/sanic/README.rst index d50b85523..cc8ba1587 100644 --- a/examples/miniapps/sanic/README.rst +++ b/examples/miniapps/sanic/README.rst @@ -27,7 +27,7 @@ To run the application do: .. code-block:: bash export GIPHY_API_KEY=wBJ2wZG7SRqfrU9nPgPiWvORmloDyuL0 - python -m giphynavigator + sanic giphynavigator.application:create_app The output should be something like: @@ -98,8 +98,9 @@ The output should be something like: .. code-block:: - platform darwin -- Python 3.10.0, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 - plugins: sanic-1.9.1, anyio-3.3.4, cov-3.0.0 + platform linux -- Python 3.12.3, pytest-8.3.2, pluggy-1.5.0 + plugins: cov-6.0.0, anyio-4.4.0, asyncio-0.24.0 + asyncio: mode=Mode.STRICT, default_loop_scope=None collected 3 items giphynavigator/tests.py ... [100%] diff --git a/examples/miniapps/sanic/giphynavigator/tests.py b/examples/miniapps/sanic/giphynavigator/tests.py index 097848de1..180be8c70 100644 --- a/examples/miniapps/sanic/giphynavigator/tests.py +++ b/examples/miniapps/sanic/giphynavigator/tests.py @@ -8,6 +8,8 @@ from giphynavigator.application import create_app from giphynavigator.giphy import GiphyClient +pytestmark = pytest.mark.asyncio + @pytest.fixture def app(): @@ -17,12 +19,7 @@ def app(): app.ctx.container.unwire() -@pytest.fixture -def test_client(loop, app, sanic_client): - return loop.run_until_complete(sanic_client(app)) - - -async def test_index(app, test_client): +async def test_index(app): giphy_client_mock = mock.AsyncMock(spec=GiphyClient) giphy_client_mock.search.return_value = { "data": [ @@ -32,7 +29,7 @@ async def test_index(app, test_client): } with app.ctx.container.giphy_client.override(giphy_client_mock): - response = await test_client.get( + _, response = await app.asgi_client.get( "/", params={ "query": "test", @@ -41,7 +38,7 @@ async def test_index(app, test_client): ) assert response.status_code == 200 - data = response.json() + data = response.json assert data == { "query": "test", "limit": 10, @@ -52,30 +49,30 @@ async def test_index(app, test_client): } -async def test_index_no_data(app, test_client): +async def test_index_no_data(app): giphy_client_mock = mock.AsyncMock(spec=GiphyClient) giphy_client_mock.search.return_value = { "data": [], } with app.ctx.container.giphy_client.override(giphy_client_mock): - response = await test_client.get("/") + _, response = await app.asgi_client.get("/") assert response.status_code == 200 - data = response.json() + data = response.json assert data["gifs"] == [] -async def test_index_default_params(app, test_client): +async def test_index_default_params(app): giphy_client_mock = mock.AsyncMock(spec=GiphyClient) giphy_client_mock.search.return_value = { "data": [], } with app.ctx.container.giphy_client.override(giphy_client_mock): - response = await test_client.get("/") + _, response = await app.asgi_client.get("/") assert response.status_code == 200 - data = response.json() + data = response.json assert data["query"] == app.ctx.container.config.default.query() assert data["limit"] == app.ctx.container.config.default.limit() diff --git a/examples/miniapps/sanic/requirements.txt b/examples/miniapps/sanic/requirements.txt index 7e4352aba..aaa946c7a 100644 --- a/examples/miniapps/sanic/requirements.txt +++ b/examples/miniapps/sanic/requirements.txt @@ -1,6 +1,6 @@ dependency-injector -sanic<=21.6 +sanic +sanic-testing aiohttp pyyaml -pytest-sanic pytest-cov