diff --git a/aiohttp/tracing.py b/aiohttp/tracing.py index 41df012d427..8325ed1812c 100644 --- a/aiohttp/tracing.py +++ b/aiohttp/tracing.py @@ -1,5 +1,5 @@ from types import SimpleNamespace -from typing import TYPE_CHECKING, Any, Awaitable, Generic, Protocol, TypeVar, overload +from typing import TYPE_CHECKING, Any, Generic, Protocol, TypeVar, overload from aiosignal import Signal from multidict import CIMultiDict @@ -12,14 +12,7 @@ from .client import ClientSession _ParamT_contra = TypeVar("_ParamT_contra", contravariant=True) - - class _SignalCallback(Protocol[_ParamT_contra]): - def __call__( - self, - __client_session: ClientSession, - __trace_config_ctx: SimpleNamespace, - __params: _ParamT_contra, - ) -> Awaitable[None]: ... + _TracingSignal = Signal[ClientSession, SimpleNamespace, _ParamT_contra] __all__ = ( @@ -59,54 +52,46 @@ def __init__(self, trace_config_ctx_factory: _Factory[_T]) -> None: ... def __init__( self, trace_config_ctx_factory: _Factory[Any] = SimpleNamespace ) -> None: - self._on_request_start: Signal[_SignalCallback[TraceRequestStartParams]] = ( + self._on_request_start: _TracingSignal[TraceRequestStartParams] = Signal(self) + self._on_request_chunk_sent: _TracingSignal[TraceRequestChunkSentParams] = ( Signal(self) ) - self._on_request_chunk_sent: Signal[ - _SignalCallback[TraceRequestChunkSentParams] - ] = Signal(self) - self._on_response_chunk_received: Signal[ - _SignalCallback[TraceResponseChunkReceivedParams] + self._on_response_chunk_received: _TracingSignal[ + TraceResponseChunkReceivedParams ] = Signal(self) - self._on_request_end: Signal[_SignalCallback[TraceRequestEndParams]] = Signal( + self._on_request_end: _TracingSignal[TraceRequestEndParams] = Signal(self) + self._on_request_exception: _TracingSignal[TraceRequestExceptionParams] = ( + Signal(self) + ) + self._on_request_redirect: _TracingSignal[TraceRequestRedirectParams] = Signal( self ) - self._on_request_exception: Signal[ - _SignalCallback[TraceRequestExceptionParams] - ] = Signal(self) - self._on_request_redirect: Signal[ - _SignalCallback[TraceRequestRedirectParams] + self._on_connection_queued_start: _TracingSignal[ + TraceConnectionQueuedStartParams ] = Signal(self) - self._on_connection_queued_start: Signal[ - _SignalCallback[TraceConnectionQueuedStartParams] + self._on_connection_queued_end: _TracingSignal[ + TraceConnectionQueuedEndParams ] = Signal(self) - self._on_connection_queued_end: Signal[ - _SignalCallback[TraceConnectionQueuedEndParams] + self._on_connection_create_start: _TracingSignal[ + TraceConnectionCreateStartParams ] = Signal(self) - self._on_connection_create_start: Signal[ - _SignalCallback[TraceConnectionCreateStartParams] + self._on_connection_create_end: _TracingSignal[ + TraceConnectionCreateEndParams ] = Signal(self) - self._on_connection_create_end: Signal[ - _SignalCallback[TraceConnectionCreateEndParams] + self._on_connection_reuseconn: _TracingSignal[ + TraceConnectionReuseconnParams ] = Signal(self) - self._on_connection_reuseconn: Signal[ - _SignalCallback[TraceConnectionReuseconnParams] + self._on_dns_resolvehost_start: _TracingSignal[ + TraceDnsResolveHostStartParams ] = Signal(self) - self._on_dns_resolvehost_start: Signal[ - _SignalCallback[TraceDnsResolveHostStartParams] - ] = Signal(self) - self._on_dns_resolvehost_end: Signal[ - _SignalCallback[TraceDnsResolveHostEndParams] - ] = Signal(self) - self._on_dns_cache_hit: Signal[_SignalCallback[TraceDnsCacheHitParams]] = ( + self._on_dns_resolvehost_end: _TracingSignal[TraceDnsResolveHostEndParams] = ( Signal(self) ) - self._on_dns_cache_miss: Signal[_SignalCallback[TraceDnsCacheMissParams]] = ( + self._on_dns_cache_hit: _TracingSignal[TraceDnsCacheHitParams] = Signal(self) + self._on_dns_cache_miss: _TracingSignal[TraceDnsCacheMissParams] = Signal(self) + self._on_request_headers_sent: _TracingSignal[TraceRequestHeadersSentParams] = ( Signal(self) ) - self._on_request_headers_sent: Signal[ - _SignalCallback[TraceRequestHeadersSentParams] - ] = Signal(self) self._trace_config_ctx_factory: _Factory[_T] = trace_config_ctx_factory @@ -133,91 +118,89 @@ def freeze(self) -> None: self._on_request_headers_sent.freeze() @property - def on_request_start(self) -> "Signal[_SignalCallback[TraceRequestStartParams]]": + def on_request_start(self) -> "_TracingSignal[TraceRequestStartParams]": return self._on_request_start @property - def on_request_chunk_sent( - self, - ) -> "Signal[_SignalCallback[TraceRequestChunkSentParams]]": + def on_request_chunk_sent(self) -> "_TracingSignal[TraceRequestChunkSentParams]": return self._on_request_chunk_sent @property def on_response_chunk_received( self, - ) -> "Signal[_SignalCallback[TraceResponseChunkReceivedParams]]": + ) -> "_TracingSignal[TraceResponseChunkReceivedParams]": return self._on_response_chunk_received @property - def on_request_end(self) -> "Signal[_SignalCallback[TraceRequestEndParams]]": + def on_request_end(self) -> "_TracingSignal[TraceRequestEndParams]": return self._on_request_end @property def on_request_exception( self, - ) -> "Signal[_SignalCallback[TraceRequestExceptionParams]]": + ) -> "_TracingSignal[TraceRequestExceptionParams]": return self._on_request_exception @property def on_request_redirect( self, - ) -> "Signal[_SignalCallback[TraceRequestRedirectParams]]": + ) -> "_TracingSignal[TraceRequestRedirectParams]": return self._on_request_redirect @property def on_connection_queued_start( self, - ) -> "Signal[_SignalCallback[TraceConnectionQueuedStartParams]]": + ) -> "_TracingSignal[TraceConnectionQueuedStartParams]": return self._on_connection_queued_start @property def on_connection_queued_end( self, - ) -> "Signal[_SignalCallback[TraceConnectionQueuedEndParams]]": + ) -> "_TracingSignal[TraceConnectionQueuedEndParams]": return self._on_connection_queued_end @property def on_connection_create_start( self, - ) -> "Signal[_SignalCallback[TraceConnectionCreateStartParams]]": + ) -> "_TracingSignal[TraceConnectionCreateStartParams]": return self._on_connection_create_start @property def on_connection_create_end( self, - ) -> "Signal[_SignalCallback[TraceConnectionCreateEndParams]]": + ) -> "_TracingSignal[TraceConnectionCreateEndParams]": return self._on_connection_create_end @property def on_connection_reuseconn( self, - ) -> "Signal[_SignalCallback[TraceConnectionReuseconnParams]]": + ) -> "_TracingSignal[TraceConnectionReuseconnParams]": return self._on_connection_reuseconn @property def on_dns_resolvehost_start( self, - ) -> "Signal[_SignalCallback[TraceDnsResolveHostStartParams]]": + ) -> "_TracingSignal[TraceDnsResolveHostStartParams]": return self._on_dns_resolvehost_start @property def on_dns_resolvehost_end( self, - ) -> "Signal[_SignalCallback[TraceDnsResolveHostEndParams]]": + ) -> "_TracingSignal[TraceDnsResolveHostEndParams]": return self._on_dns_resolvehost_end @property - def on_dns_cache_hit(self) -> "Signal[_SignalCallback[TraceDnsCacheHitParams]]": + def on_dns_cache_hit(self) -> "_TracingSignal[TraceDnsCacheHitParams]": return self._on_dns_cache_hit @property - def on_dns_cache_miss(self) -> "Signal[_SignalCallback[TraceDnsCacheMissParams]]": + def on_dns_cache_miss(self) -> "_TracingSignal[TraceDnsCacheMissParams]": return self._on_dns_cache_miss @property def on_request_headers_sent( self, - ) -> "Signal[_SignalCallback[TraceRequestHeadersSentParams]]": + ) -> "_TracingSignal[TraceRequestHeadersSentParams]": return self._on_request_headers_sent diff --git a/aiohttp/web_app.py b/aiohttp/web_app.py index 78fb1da8514..69eafe5c7d4 100644 --- a/aiohttp/web_app.py +++ b/aiohttp/web_app.py @@ -52,8 +52,8 @@ if TYPE_CHECKING: - _AppSignal = Signal[Callable[["Application"], Awaitable[None]]] - _RespPrepareSignal = Signal[Callable[[Request, StreamResponse], Awaitable[None]]] + _AppSignal = Signal["Application"] + _RespPrepareSignal = Signal[Request, StreamResponse] _Middlewares = FrozenList[Middleware] _MiddlewaresHandlers = Sequence[Middleware] _Subapps = List["Application"] diff --git a/requirements/base.txt b/requirements/base.txt index feac73173fa..ac2325409ce 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,7 +8,7 @@ aiodns==3.5.0 # via -r requirements/runtime-deps.in aiohappyeyeballs==2.6.1 # via -r requirements/runtime-deps.in -aiosignal==1.3.2 +aiosignal==1.4.0 # via -r requirements/runtime-deps.in async-timeout==5.0.1 ; python_version < "3.11" # via -r requirements/runtime-deps.in @@ -39,7 +39,9 @@ pycares==4.9.0 pycparser==2.22 # via cffi typing-extensions==4.14.0 - # via multidict + # via + # aiosignal + # multidict uvloop==0.21.0 ; platform_system != "Windows" and implementation_name == "cpython" # via -r requirements/base.in yarl==1.20.1 diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 8564850f2da..2a147a57082 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -12,7 +12,7 @@ aiohappyeyeballs==2.6.1 # via -r requirements/runtime-deps.in aiohttp-theme==0.1.7 # via -r requirements/doc.in -aiosignal==1.3.2 +aiosignal==1.4.0 # via -r requirements/runtime-deps.in alabaster==1.0.0 # via sphinx @@ -268,6 +268,7 @@ trustme==1.2.1 ; platform_machine != "i686" # -r requirements/test.in typing-extensions==4.14.0 # via + # aiosignal # exceptiongroup # multidict # mypy diff --git a/requirements/dev.txt b/requirements/dev.txt index 30af4338e51..bf44edac144 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -12,7 +12,7 @@ aiohappyeyeballs==2.6.1 # via -r requirements/runtime-deps.in aiohttp-theme==0.1.7 # via -r requirements/doc.in -aiosignal==1.3.2 +aiosignal==1.4.0 # via -r requirements/runtime-deps.in alabaster==1.0.0 # via sphinx @@ -259,6 +259,7 @@ trustme==1.2.1 ; platform_machine != "i686" # -r requirements/test.in typing-extensions==4.14.0 # via + # aiosignal # exceptiongroup # multidict # mypy diff --git a/requirements/runtime-deps.txt b/requirements/runtime-deps.txt index 84908059ad0..64bcd16af81 100644 --- a/requirements/runtime-deps.txt +++ b/requirements/runtime-deps.txt @@ -8,7 +8,7 @@ aiodns==3.5.0 # via -r requirements/runtime-deps.in aiohappyeyeballs==2.6.1 # via -r requirements/runtime-deps.in -aiosignal==1.3.2 +aiosignal==1.4.0 # via -r requirements/runtime-deps.in async-timeout==5.0.1 ; python_version < "3.11" # via -r requirements/runtime-deps.in @@ -35,7 +35,9 @@ pycares==4.9.0 pycparser==2.22 # via cffi typing-extensions==4.14.0 - # via multidict + # via + # aiosignal + # multidict yarl==1.20.1 # via -r requirements/runtime-deps.in zstandard==0.23.0 ; platform_python_implementation == "CPython" and python_version < "3.14" diff --git a/requirements/test.txt b/requirements/test.txt index cfea417df2d..1b96b5ada61 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -8,7 +8,7 @@ aiodns==3.5.0 # via -r requirements/runtime-deps.in aiohappyeyeballs==2.6.1 # via -r requirements/runtime-deps.in -aiosignal==1.3.2 +aiosignal==1.4.0 # via -r requirements/runtime-deps.in annotated-types==0.7.0 # via pydantic @@ -129,6 +129,7 @@ trustme==1.2.1 ; platform_machine != "i686" # via -r requirements/test.in typing-extensions==4.14.0 # via + # aiosignal # exceptiongroup # multidict # mypy