Skip to content

Commit

Permalink
Bump the pip-packages group with 6 updates (#261)
Browse files Browse the repository at this point in the history
* Bump the pip-packages group with 6 updates

Updates the requirements on [flake8](https://github.com/pycqa/flake8), [black](https://github.com/psf/black), [pyright](https://github.com/RobertCraigie/pyright-python), [pytest](https://github.com/pytest-dev/pytest), [aiohttp](https://github.com/aio-libs/aiohttp) and [werkzeug](https://github.com/pallets/werkzeug) to permit the latest version.

Updates `flake8` from 7.0.0 to 7.1.1
- [Commits](PyCQA/flake8@7.0.0...7.1.1)

Updates `black` from 24.4.2 to 24.8.0
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](psf/black@24.4.2...24.8.0)

Updates `pyright` from 1.1.365 to 1.1.377
- [Release notes](https://github.com/RobertCraigie/pyright-python/releases)
- [Commits](RobertCraigie/pyright-python@v1.1.365...v1.1.377)

Updates `pytest` from 8.2.1 to 8.3.2
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@8.2.1...8.3.2)

Updates `aiohttp` from 3.9.5 to 3.10.5
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](aio-libs/aiohttp@v3.9.5...v3.10.5)

Updates `werkzeug` to 3.0.4
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](pallets/werkzeug@0.1...3.0.4)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-packages
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-packages
- dependency-name: pyright
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: pip-packages
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-packages
- dependency-name: aiohttp
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-packages
- dependency-name: werkzeug
  dependency-type: direct:development
  dependency-group: pip-packages
...

Signed-off-by: dependabot[bot] <[email protected]>

* Fix lint

* Fix tests

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Iurii Pliner <[email protected]>
  • Loading branch information
dependabot[bot] and Pliner authored Aug 27, 2024
1 parent f3d2997 commit c93cf40
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 30 deletions.
29 changes: 13 additions & 16 deletions aio_request/aiohttp.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import contextlib
import json
import logging
import socket
import sys
import time
import warnings
from typing import Any

import aiohttp
import aiohttp.abc
import aiohttp.typedefs
import aiohttp.web
import aiohttp.web_exceptions
import aiohttp.web_middlewares
Expand Down Expand Up @@ -62,14 +64,18 @@ def __init__(

self._interval = interval
self._resolver = resolver
self._results: dict[tuple[str, int, int], list[dict[str, Any]]] = {}
self._results: dict[tuple[str, int, socket.AddressFamily], list[aiohttp.abc.ResolveResult]] = {}
self._task = asyncio.create_task(self._resolve())
self._max_failures = max_failures

def resolve_no_wait(self, host: str, port: int, family: int) -> list[dict[str, Any]] | None:
def resolve_no_wait(
self, host: str, port: int = 0, family: socket.AddressFamily = socket.AF_INET
) -> list[aiohttp.abc.ResolveResult] | None:
return self._results.get((host, port, family))

async def resolve(self, host: str, port: int, family: int) -> list[dict[str, Any]]:
async def resolve(
self, host: str, port: int = 0, family: socket.AddressFamily = socket.AF_INET
) -> list[aiohttp.abc.ResolveResult]:
key = (host, port, family)
addresses = self._results.get(key)
if addresses is not None:
Expand All @@ -85,7 +91,7 @@ async def close(self) -> None:
await self._resolver.close()

async def _resolve(self) -> None:
failures_per_endpoint: dict[tuple[str, int, int], int] = {}
failures_per_endpoint: dict[tuple[str, int, socket.AddressFamily], int] = {}
while True:
await asyncio.sleep(self._interval)

Expand Down Expand Up @@ -167,7 +173,7 @@ async def send(self, endpoint: yarl.URL, request: Request, timeout: float) -> Cl
url,
headers=headers,
data=body,
timeout=timeout,
timeout=aiohttp.ClientTimeout(total=timeout),
allow_redirects=allow_redirects,
max_redirects=max_redirects,
)
Expand Down Expand Up @@ -259,15 +265,6 @@ async def text(self, encoding: str | None = None) -> str:
return await self._response.text(encoding=encoding)


_HANDLER = collections.abc.Callable[
[aiohttp.web_request.Request], collections.abc.Awaitable[aiohttp.web_response.StreamResponse]
]
_MIDDLEWARE = collections.abc.Callable[
[aiohttp.web_request.Request, _HANDLER],
collections.abc.Awaitable[aiohttp.web_response.StreamResponse],
]


def aiohttp_timeout(*, seconds: float) -> collections.abc.Callable[..., Any]:
def wrapper(func: collections.abc.Callable[..., Any]) -> collections.abc.Callable[..., Any]:
setattr(func, "__aio_request_timeout__", seconds)
Expand All @@ -284,7 +281,7 @@ def aiohttp_middleware_factory(
metrics_provider: MetricsProvider | None = None,
client_header_name: str | multidict.istr = Header.X_SERVICE_NAME,
cancel_on_timeout: bool = False,
) -> _MIDDLEWARE:
) -> aiohttp.typedefs.Middleware:
if metrics_provider is not None:
warnings.warn(
"metrics_provider is deprecated, it will not be used, consider a migration to OpenTelemetry",
Expand All @@ -311,7 +308,7 @@ def capture_metrics(request: aiohttp.web_request.Request, status: int, started_a

@aiohttp.web_middlewares.middleware
async def middleware(
request: aiohttp.web_request.Request, handler: _HANDLER
request: aiohttp.web_request.Request, handler: aiohttp.typedefs.Handler
) -> aiohttp.web_response.StreamResponse:
deadline = _get_deadline(request) or _get_deadline_from_handler(request) or Deadline.from_timeout(timeout)
started_at = time.perf_counter()
Expand Down
10 changes: 5 additions & 5 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
flake8==7.0.0
flake8==7.1.1
isort==5.13.2
black==24.4.2
pyright==1.1.365
pytest==8.2.1
black==24.8.0
pyright==1.1.377
pytest==8.3.2
pytest-aiohttp==1.0.5
pytest-httpbin==2.0.0
aiohttp==3.9.5
aiohttp==3.10.5
async-timeout==4.0.2;python_version<"3.11"
yarl==1.9.4
multidict==6.0.5
Expand Down
19 changes: 10 additions & 9 deletions tests/test_aiohttp_resolver.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import asyncio
import socket
import unittest.mock

import aiohttp.abc
Expand All @@ -11,12 +12,12 @@ async def test_multiple_resolve():
base_resolver.resolve.side_effect = [[{"endpoint": {"ip": "1"}}], [{"endpoint": {"ip": "2"}}]]
resolver = aio_request.AioHttpDnsResolver(base_resolver, interval=0.5)
try:
first = await resolver.resolve("host", 80, 0)
second = await resolver.resolve("host", 80, 0)
first = await resolver.resolve("host", 80, socket.AF_INET)
second = await resolver.resolve("host", 80, socket.AF_INET)
finally:
await resolver.close()

base_resolver.resolve.assert_called_once_with("host", 80, 0)
base_resolver.resolve.assert_called_once_with("host", 80, socket.AF_INET)
base_resolver.close.assert_called_once()

assert first == [{"endpoint": {"ip": "1"}}]
Expand All @@ -28,13 +29,13 @@ async def test_resolve_in_background():
base_resolver.resolve.side_effect = [[{"endpoint": {"ip": "1"}}], [{"endpoint": {"ip": "2"}}]]
resolver = aio_request.AioHttpDnsResolver(base_resolver, interval=0.5)
try:
first = await resolver.resolve("host", 80, 0)
first = await resolver.resolve("host", 80, socket.AF_INET)
await asyncio.sleep(0.7)
second = await resolver.resolve("host", 80, 0)
second = await resolver.resolve("host", 80, socket.AF_INET)
finally:
await resolver.close()

base_resolver.resolve.assert_called_with("host", 80, 0)
base_resolver.resolve.assert_called_with("host", 80, socket.AF_INET)
base_resolver.close.assert_called_once()

assert first == [{"endpoint": {"ip": "1"}}]
Expand All @@ -52,13 +53,13 @@ async def test_resolve_failures_in_background():
]
resolver = aio_request.AioHttpDnsResolver(base_resolver, interval=0.5)
try:
first = await resolver.resolve("host", 80, 0)
first = await resolver.resolve("host", 80, socket.AF_INET)
await asyncio.sleep(2)
second = resolver.resolve_no_wait("host", 80, 0)
second = resolver.resolve_no_wait("host", 80, socket.AF_INET)
finally:
await resolver.close()

base_resolver.resolve.assert_called_with("host", 80, 0)
base_resolver.resolve.assert_called_with("host", 80, socket.AF_INET)
assert base_resolver.resolve.call_count == 4
base_resolver.close.assert_called_once()

Expand Down

0 comments on commit c93cf40

Please sign in to comment.