Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update examples #838

Merged
merged 1 commit into from
Dec 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 18 additions & 20 deletions docs/tutorials/asyncio-daemon.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -47,28 +47,27 @@ response it will log:
Prerequisites
-------------

We will use `Docker <https://www.docker.com/>`_ and
`docker-compose <https://docs.docker.com/compose/>`_ in this tutorial. Let's check the versions:
We will use `docker compose <https://docs.docker.com/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 <https://docs.docker.com/get-docker/>`_
- `Install docker-compose <https://docs.docker.com/compose/install/>`_
- `Install docker compose <https://docs.docker.com/compose/install/>`_

The prerequisites are satisfied. Let's get started with the project layout.

Expand Down Expand Up @@ -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

Expand All @@ -155,8 +154,6 @@ Put next lines into the ``docker-compose.yml`` file:

.. code-block:: yaml

version: "3.7"

services:

monitor:
Expand All @@ -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:

Expand All @@ -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:

Expand Down Expand Up @@ -461,7 +458,7 @@ Run in the terminal:

.. code-block:: bash

docker-compose up
docker compose up

The output should look like:

Expand Down Expand Up @@ -705,7 +702,7 @@ Run in the terminal:

.. code-block:: bash

docker-compose up
docker compose up

You should see:

Expand Down Expand Up @@ -813,7 +810,7 @@ Run in the terminal:

.. code-block:: bash

docker-compose up
docker compose up

You should see:

Expand Down Expand Up @@ -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%]
Expand Down
5 changes: 3 additions & 2 deletions examples/miniapps/aiohttp/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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%]
Expand Down
10 changes: 7 additions & 3 deletions examples/miniapps/aiohttp/giphynavigator/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,25 @@
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()
yield 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):
Expand Down
1 change: 1 addition & 0 deletions examples/miniapps/aiohttp/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ dependency-injector
aiohttp
pyyaml
pytest-aiohttp
pytest-asyncio
pytest-cov
2 changes: 1 addition & 1 deletion examples/miniapps/asyncio-daemon/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.10-buster
FROM python:3.13-bookworm

ENV PYTHONUNBUFFERED=1

Expand Down
11 changes: 6 additions & 5 deletions examples/miniapps/asyncio-daemon/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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%]
Expand Down
3 changes: 2 additions & 1 deletion examples/miniapps/asyncio-daemon/monitoringdaemon/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-redis/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.10-buster
FROM python:3.13-bookworm

ENV PYTHONUNBUFFERED=1

Expand Down
14 changes: 7 additions & 7 deletions examples/miniapps/fastapi-redis/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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%]

Expand All @@ -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%
TOTAL 52 7 87%
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-redis/fastapiredis/redis.py
Original file line number Diff line number Diff line change
@@ -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]:
Expand Down
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-redis/fastapiredis/services.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Services module."""

from aioredis import Redis
from redis.asyncio import Redis


class Service:
Expand Down
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-redis/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
dependency-injector
fastapi
uvicorn
aioredis
redis>=4.2

# For testing:
pytest
Expand Down
5 changes: 3 additions & 2 deletions examples/miniapps/fastapi-simple/tests.py
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-sqlalchemy/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.10-buster
FROM python:3.13-bookworm

ENV PYTHONUNBUFFERED=1
ENV HOST=0.0.0.0
Expand Down
10 changes: 5 additions & 5 deletions examples/miniapps/fastapi-sqlalchemy/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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%]
Expand Down
2 changes: 1 addition & 1 deletion examples/miniapps/fastapi-sqlalchemy/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
dependency-injector
fastapi
fastapi[standard]
uvicorn
pyyaml
sqlalchemy
Expand Down
6 changes: 3 additions & 3 deletions examples/miniapps/fastapi/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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%]
Expand Down
Loading
Loading