Skip to content
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
103 changes: 43 additions & 60 deletions aiohttp/tracing.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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__ = (
Expand Down Expand Up @@ -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

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


Expand Down
4 changes: 2 additions & 2 deletions aiohttp/web_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down
6 changes: 4 additions & 2 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions requirements/runtime-deps.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
Expand Down
3 changes: 2 additions & 1 deletion requirements/test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Loading