Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/venv/lib/python3.8/site-packages/aiohttp/tracing.py
7763 views
from types import SimpleNamespace1from typing import TYPE_CHECKING, Awaitable, Optional, Type, TypeVar23import attr4from aiosignal import Signal5from multidict import CIMultiDict6from yarl import URL78from .client_reqrep import ClientResponse910if TYPE_CHECKING: # pragma: no cover11from .client import ClientSession12from .typedefs import Protocol1314_ParamT_contra = TypeVar("_ParamT_contra", contravariant=True)1516class _SignalCallback(Protocol[_ParamT_contra]):17def __call__(18self,19__client_session: ClientSession,20__trace_config_ctx: SimpleNamespace,21__params: _ParamT_contra,22) -> Awaitable[None]:23...242526__all__ = (27"TraceConfig",28"TraceRequestStartParams",29"TraceRequestEndParams",30"TraceRequestExceptionParams",31"TraceConnectionQueuedStartParams",32"TraceConnectionQueuedEndParams",33"TraceConnectionCreateStartParams",34"TraceConnectionCreateEndParams",35"TraceConnectionReuseconnParams",36"TraceDnsResolveHostStartParams",37"TraceDnsResolveHostEndParams",38"TraceDnsCacheHitParams",39"TraceDnsCacheMissParams",40"TraceRequestRedirectParams",41"TraceRequestChunkSentParams",42"TraceResponseChunkReceivedParams",43"TraceRequestHeadersSentParams",44)454647class TraceConfig:48"""First-class used to trace requests launched via ClientSession objects."""4950def __init__(51self, trace_config_ctx_factory: Type[SimpleNamespace] = SimpleNamespace52) -> None:53self._on_request_start = Signal(54self55) # type: Signal[_SignalCallback[TraceRequestStartParams]]56self._on_request_chunk_sent = Signal(57self58) # type: Signal[_SignalCallback[TraceRequestChunkSentParams]]59self._on_response_chunk_received = Signal(60self61) # type: Signal[_SignalCallback[TraceResponseChunkReceivedParams]]62self._on_request_end = Signal(63self64) # type: Signal[_SignalCallback[TraceRequestEndParams]]65self._on_request_exception = Signal(66self67) # type: Signal[_SignalCallback[TraceRequestExceptionParams]]68self._on_request_redirect = Signal(69self70) # type: Signal[_SignalCallback[TraceRequestRedirectParams]]71self._on_connection_queued_start = Signal(72self73) # type: Signal[_SignalCallback[TraceConnectionQueuedStartParams]]74self._on_connection_queued_end = Signal(75self76) # type: Signal[_SignalCallback[TraceConnectionQueuedEndParams]]77self._on_connection_create_start = Signal(78self79) # type: Signal[_SignalCallback[TraceConnectionCreateStartParams]]80self._on_connection_create_end = Signal(81self82) # type: Signal[_SignalCallback[TraceConnectionCreateEndParams]]83self._on_connection_reuseconn = Signal(84self85) # type: Signal[_SignalCallback[TraceConnectionReuseconnParams]]86self._on_dns_resolvehost_start = Signal(87self88) # type: Signal[_SignalCallback[TraceDnsResolveHostStartParams]]89self._on_dns_resolvehost_end = Signal(90self91) # type: Signal[_SignalCallback[TraceDnsResolveHostEndParams]]92self._on_dns_cache_hit = Signal(93self94) # type: Signal[_SignalCallback[TraceDnsCacheHitParams]]95self._on_dns_cache_miss = Signal(96self97) # type: Signal[_SignalCallback[TraceDnsCacheMissParams]]98self._on_request_headers_sent = Signal(99self100) # type: Signal[_SignalCallback[TraceRequestHeadersSentParams]]101102self._trace_config_ctx_factory = trace_config_ctx_factory103104def trace_config_ctx(105self, trace_request_ctx: Optional[SimpleNamespace] = None106) -> SimpleNamespace:107"""Return a new trace_config_ctx instance"""108return self._trace_config_ctx_factory(trace_request_ctx=trace_request_ctx)109110def freeze(self) -> None:111self._on_request_start.freeze()112self._on_request_chunk_sent.freeze()113self._on_response_chunk_received.freeze()114self._on_request_end.freeze()115self._on_request_exception.freeze()116self._on_request_redirect.freeze()117self._on_connection_queued_start.freeze()118self._on_connection_queued_end.freeze()119self._on_connection_create_start.freeze()120self._on_connection_create_end.freeze()121self._on_connection_reuseconn.freeze()122self._on_dns_resolvehost_start.freeze()123self._on_dns_resolvehost_end.freeze()124self._on_dns_cache_hit.freeze()125self._on_dns_cache_miss.freeze()126self._on_request_headers_sent.freeze()127128@property129def on_request_start(self) -> "Signal[_SignalCallback[TraceRequestStartParams]]":130return self._on_request_start131132@property133def on_request_chunk_sent(134self,135) -> "Signal[_SignalCallback[TraceRequestChunkSentParams]]":136return self._on_request_chunk_sent137138@property139def on_response_chunk_received(140self,141) -> "Signal[_SignalCallback[TraceResponseChunkReceivedParams]]":142return self._on_response_chunk_received143144@property145def on_request_end(self) -> "Signal[_SignalCallback[TraceRequestEndParams]]":146return self._on_request_end147148@property149def on_request_exception(150self,151) -> "Signal[_SignalCallback[TraceRequestExceptionParams]]":152return self._on_request_exception153154@property155def on_request_redirect(156self,157) -> "Signal[_SignalCallback[TraceRequestRedirectParams]]":158return self._on_request_redirect159160@property161def on_connection_queued_start(162self,163) -> "Signal[_SignalCallback[TraceConnectionQueuedStartParams]]":164return self._on_connection_queued_start165166@property167def on_connection_queued_end(168self,169) -> "Signal[_SignalCallback[TraceConnectionQueuedEndParams]]":170return self._on_connection_queued_end171172@property173def on_connection_create_start(174self,175) -> "Signal[_SignalCallback[TraceConnectionCreateStartParams]]":176return self._on_connection_create_start177178@property179def on_connection_create_end(180self,181) -> "Signal[_SignalCallback[TraceConnectionCreateEndParams]]":182return self._on_connection_create_end183184@property185def on_connection_reuseconn(186self,187) -> "Signal[_SignalCallback[TraceConnectionReuseconnParams]]":188return self._on_connection_reuseconn189190@property191def on_dns_resolvehost_start(192self,193) -> "Signal[_SignalCallback[TraceDnsResolveHostStartParams]]":194return self._on_dns_resolvehost_start195196@property197def on_dns_resolvehost_end(198self,199) -> "Signal[_SignalCallback[TraceDnsResolveHostEndParams]]":200return self._on_dns_resolvehost_end201202@property203def on_dns_cache_hit(self) -> "Signal[_SignalCallback[TraceDnsCacheHitParams]]":204return self._on_dns_cache_hit205206@property207def on_dns_cache_miss(self) -> "Signal[_SignalCallback[TraceDnsCacheMissParams]]":208return self._on_dns_cache_miss209210@property211def on_request_headers_sent(212self,213) -> "Signal[_SignalCallback[TraceRequestHeadersSentParams]]":214return self._on_request_headers_sent215216217@attr.s(auto_attribs=True, frozen=True, slots=True)218class TraceRequestStartParams:219"""Parameters sent by the `on_request_start` signal"""220221method: str222url: URL223headers: "CIMultiDict[str]"224225226@attr.s(auto_attribs=True, frozen=True, slots=True)227class TraceRequestChunkSentParams:228"""Parameters sent by the `on_request_chunk_sent` signal"""229230method: str231url: URL232chunk: bytes233234235@attr.s(auto_attribs=True, frozen=True, slots=True)236class TraceResponseChunkReceivedParams:237"""Parameters sent by the `on_response_chunk_received` signal"""238239method: str240url: URL241chunk: bytes242243244@attr.s(auto_attribs=True, frozen=True, slots=True)245class TraceRequestEndParams:246"""Parameters sent by the `on_request_end` signal"""247248method: str249url: URL250headers: "CIMultiDict[str]"251response: ClientResponse252253254@attr.s(auto_attribs=True, frozen=True, slots=True)255class TraceRequestExceptionParams:256"""Parameters sent by the `on_request_exception` signal"""257258method: str259url: URL260headers: "CIMultiDict[str]"261exception: BaseException262263264@attr.s(auto_attribs=True, frozen=True, slots=True)265class TraceRequestRedirectParams:266"""Parameters sent by the `on_request_redirect` signal"""267268method: str269url: URL270headers: "CIMultiDict[str]"271response: ClientResponse272273274@attr.s(auto_attribs=True, frozen=True, slots=True)275class TraceConnectionQueuedStartParams:276"""Parameters sent by the `on_connection_queued_start` signal"""277278279@attr.s(auto_attribs=True, frozen=True, slots=True)280class TraceConnectionQueuedEndParams:281"""Parameters sent by the `on_connection_queued_end` signal"""282283284@attr.s(auto_attribs=True, frozen=True, slots=True)285class TraceConnectionCreateStartParams:286"""Parameters sent by the `on_connection_create_start` signal"""287288289@attr.s(auto_attribs=True, frozen=True, slots=True)290class TraceConnectionCreateEndParams:291"""Parameters sent by the `on_connection_create_end` signal"""292293294@attr.s(auto_attribs=True, frozen=True, slots=True)295class TraceConnectionReuseconnParams:296"""Parameters sent by the `on_connection_reuseconn` signal"""297298299@attr.s(auto_attribs=True, frozen=True, slots=True)300class TraceDnsResolveHostStartParams:301"""Parameters sent by the `on_dns_resolvehost_start` signal"""302303host: str304305306@attr.s(auto_attribs=True, frozen=True, slots=True)307class TraceDnsResolveHostEndParams:308"""Parameters sent by the `on_dns_resolvehost_end` signal"""309310host: str311312313@attr.s(auto_attribs=True, frozen=True, slots=True)314class TraceDnsCacheHitParams:315"""Parameters sent by the `on_dns_cache_hit` signal"""316317host: str318319320@attr.s(auto_attribs=True, frozen=True, slots=True)321class TraceDnsCacheMissParams:322"""Parameters sent by the `on_dns_cache_miss` signal"""323324host: str325326327@attr.s(auto_attribs=True, frozen=True, slots=True)328class TraceRequestHeadersSentParams:329"""Parameters sent by the `on_request_headers_sent` signal"""330331method: str332url: URL333headers: "CIMultiDict[str]"334335336class Trace:337"""Internal dependency holder class.338339Used to keep together the main dependencies used340at the moment of send a signal.341"""342343def __init__(344self,345session: "ClientSession",346trace_config: TraceConfig,347trace_config_ctx: SimpleNamespace,348) -> None:349self._trace_config = trace_config350self._trace_config_ctx = trace_config_ctx351self._session = session352353async def send_request_start(354self, method: str, url: URL, headers: "CIMultiDict[str]"355) -> None:356return await self._trace_config.on_request_start.send(357self._session,358self._trace_config_ctx,359TraceRequestStartParams(method, url, headers),360)361362async def send_request_chunk_sent(363self, method: str, url: URL, chunk: bytes364) -> None:365return await self._trace_config.on_request_chunk_sent.send(366self._session,367self._trace_config_ctx,368TraceRequestChunkSentParams(method, url, chunk),369)370371async def send_response_chunk_received(372self, method: str, url: URL, chunk: bytes373) -> None:374return await self._trace_config.on_response_chunk_received.send(375self._session,376self._trace_config_ctx,377TraceResponseChunkReceivedParams(method, url, chunk),378)379380async def send_request_end(381self,382method: str,383url: URL,384headers: "CIMultiDict[str]",385response: ClientResponse,386) -> None:387return await self._trace_config.on_request_end.send(388self._session,389self._trace_config_ctx,390TraceRequestEndParams(method, url, headers, response),391)392393async def send_request_exception(394self,395method: str,396url: URL,397headers: "CIMultiDict[str]",398exception: BaseException,399) -> None:400return await self._trace_config.on_request_exception.send(401self._session,402self._trace_config_ctx,403TraceRequestExceptionParams(method, url, headers, exception),404)405406async def send_request_redirect(407self,408method: str,409url: URL,410headers: "CIMultiDict[str]",411response: ClientResponse,412) -> None:413return await self._trace_config._on_request_redirect.send(414self._session,415self._trace_config_ctx,416TraceRequestRedirectParams(method, url, headers, response),417)418419async def send_connection_queued_start(self) -> None:420return await self._trace_config.on_connection_queued_start.send(421self._session, self._trace_config_ctx, TraceConnectionQueuedStartParams()422)423424async def send_connection_queued_end(self) -> None:425return await self._trace_config.on_connection_queued_end.send(426self._session, self._trace_config_ctx, TraceConnectionQueuedEndParams()427)428429async def send_connection_create_start(self) -> None:430return await self._trace_config.on_connection_create_start.send(431self._session, self._trace_config_ctx, TraceConnectionCreateStartParams()432)433434async def send_connection_create_end(self) -> None:435return await self._trace_config.on_connection_create_end.send(436self._session, self._trace_config_ctx, TraceConnectionCreateEndParams()437)438439async def send_connection_reuseconn(self) -> None:440return await self._trace_config.on_connection_reuseconn.send(441self._session, self._trace_config_ctx, TraceConnectionReuseconnParams()442)443444async def send_dns_resolvehost_start(self, host: str) -> None:445return await self._trace_config.on_dns_resolvehost_start.send(446self._session, self._trace_config_ctx, TraceDnsResolveHostStartParams(host)447)448449async def send_dns_resolvehost_end(self, host: str) -> None:450return await self._trace_config.on_dns_resolvehost_end.send(451self._session, self._trace_config_ctx, TraceDnsResolveHostEndParams(host)452)453454async def send_dns_cache_hit(self, host: str) -> None:455return await self._trace_config.on_dns_cache_hit.send(456self._session, self._trace_config_ctx, TraceDnsCacheHitParams(host)457)458459async def send_dns_cache_miss(self, host: str) -> None:460return await self._trace_config.on_dns_cache_miss.send(461self._session, self._trace_config_ctx, TraceDnsCacheMissParams(host)462)463464async def send_request_headers(465self, method: str, url: URL, headers: "CIMultiDict[str]"466) -> None:467return await self._trace_config._on_request_headers_sent.send(468self._session,469self._trace_config_ctx,470TraceRequestHeadersSentParams(method, url, headers),471)472473474