o
    n~b;                     @   s  d dl mZ d dlmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZ ddlmZ erNdd	lmZ dd
lmZ edddZG dd dee ZdZG dd dZejddddG dd dZejddddG dd dZejddddG dd dZejddddG dd dZejddddG dd dZejddddG dd dZejddddG d d! d!Z ejddddG d"d# d#Z!ejddddG d$d% d%Z"ejddddG d&d' d'Z#ejddddG d(d) d)Z$ejddddG d*d+ d+Z%ejddddG d,d- d-Z&ejddddG d.d/ d/Z'ejddddG d0d1 d1Z(ejddddG d2d3 d3Z)G d4d5 d5Z*dS )6    )SimpleNamespace)TYPE_CHECKING	AwaitableOptionalTypeTypeVarN)Signal)CIMultiDict)URL   )ClientResponse)ClientSession)Protocol_ParamT_contraT)contravariantc                	   @   s*   e Zd Zdedededed fddZdS )_SignalCallback_SignalCallback__client_session!_SignalCallback__trace_config_ctx_SignalCallback__paramsreturnNc                 C   s   d S N )selfr   r   r   r   r   :/usr/local/lib/python3.10/dist-packages/aiohttp/tracing.py__call__   s   z_SignalCallback.__call__)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r      s    r   )TraceConfigTraceRequestStartParamsTraceRequestEndParamsTraceRequestExceptionParams TraceConnectionQueuedStartParamsTraceConnectionQueuedEndParams TraceConnectionCreateStartParamsTraceConnectionCreateEndParamsTraceConnectionReuseconnParamsTraceDnsResolveHostStartParamsTraceDnsResolveHostEndParamsTraceDnsCacheHitParamsTraceDnsCacheMissParamsTraceRequestRedirectParamsTraceRequestChunkSentParams TraceResponseChunkReceivedParamsTraceRequestHeadersSentParamsc                   @   s^  e Zd ZdZefdee ddfddZ	d<dee defdd	Zd=d
dZ	e
d>ddZe
		d?ddZe
		d@ddZe
dAddZe
		dBddZe
		dCddZe
		dDdd Ze
		!dEd"d#Ze
		$dFd%d&Ze
		'dGd(d)Ze
		*dHd+d,Ze
		-dId.d/Ze
		0dJd1d2Ze
dKd4d5Ze
dLd7d8Ze
		9dMd:d;ZdS )Nr   zFFirst-class used to trace requests launched via ClientSession objects.trace_config_ctx_factoryr   Nc                 C   s   t | | _t | | _t | | _t | | _t | | _t | | _t | | _t | | _t | | _	t | | _
t | | _t | | _t | | _t | | _t | | _t | | _|| _d S r   )r   _on_request_start_on_request_chunk_sent_on_response_chunk_received_on_request_end_on_request_exception_on_request_redirect_on_connection_queued_start_on_connection_queued_end_on_connection_create_start_on_connection_create_end_on_connection_reuseconn_on_dns_resolvehost_start_on_dns_resolvehost_end_on_dns_cache_hit_on_dns_cache_miss_on_request_headers_sent_trace_config_ctx_factory)r   r/   r   r   r   __init__3   sb   
zTraceConfig.__init__trace_request_ctxc                 C   s   | j |dS )z&Return a new trace_config_ctx instance)rB   )r@   )r   rB   r   r   r   trace_config_ctxi   s   zTraceConfig.trace_config_ctxc                 C   s   | j   | j  | j  | j  | j  | j  | j  | j  | j	  | j
  | j  | j  | j  | j  | j  | j  d S r   )r0   freezer1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   r   r   r   rD   o   s    














zTraceConfig.freeze0Signal[_SignalCallback[TraceRequestStartParams]]c                 C      | j S r   )r0   rE   r   r   r   on_request_start      zTraceConfig.on_request_start4Signal[_SignalCallback[TraceRequestChunkSentParams]]c                 C   rG   r   )r1   rE   r   r   r   on_request_chunk_sent      z!TraceConfig.on_request_chunk_sent9Signal[_SignalCallback[TraceResponseChunkReceivedParams]]c                 C   rG   r   )r2   rE   r   r   r   on_response_chunk_received   rL   z&TraceConfig.on_response_chunk_received.Signal[_SignalCallback[TraceRequestEndParams]]c                 C   rG   r   )r3   rE   r   r   r   on_request_end   rI   zTraceConfig.on_request_end4Signal[_SignalCallback[TraceRequestExceptionParams]]c                 C   rG   r   )r4   rE   r   r   r   on_request_exception   rL   z TraceConfig.on_request_exception3Signal[_SignalCallback[TraceRequestRedirectParams]]c                 C   rG   r   )r5   rE   r   r   r   on_request_redirect   rL   zTraceConfig.on_request_redirect9Signal[_SignalCallback[TraceConnectionQueuedStartParams]]c                 C   rG   r   )r6   rE   r   r   r   on_connection_queued_start   rL   z&TraceConfig.on_connection_queued_start7Signal[_SignalCallback[TraceConnectionQueuedEndParams]]c                 C   rG   r   )r7   rE   r   r   r   on_connection_queued_end   rL   z$TraceConfig.on_connection_queued_end9Signal[_SignalCallback[TraceConnectionCreateStartParams]]c                 C   rG   r   )r8   rE   r   r   r   on_connection_create_start   rL   z&TraceConfig.on_connection_create_start7Signal[_SignalCallback[TraceConnectionCreateEndParams]]c                 C   rG   r   )r9   rE   r   r   r   on_connection_create_end   rL   z$TraceConfig.on_connection_create_end7Signal[_SignalCallback[TraceConnectionReuseconnParams]]c                 C   rG   r   )r:   rE   r   r   r   on_connection_reuseconn   rL   z#TraceConfig.on_connection_reuseconn7Signal[_SignalCallback[TraceDnsResolveHostStartParams]]c                 C   rG   r   )r;   rE   r   r   r   on_dns_resolvehost_start   rL   z$TraceConfig.on_dns_resolvehost_start5Signal[_SignalCallback[TraceDnsResolveHostEndParams]]c                 C   rG   r   )r<   rE   r   r   r   on_dns_resolvehost_end   rL   z"TraceConfig.on_dns_resolvehost_end/Signal[_SignalCallback[TraceDnsCacheHitParams]]c                 C   rG   r   )r=   rE   r   r   r   on_dns_cache_hit   rI   zTraceConfig.on_dns_cache_hit0Signal[_SignalCallback[TraceDnsCacheMissParams]]c                 C   rG   r   )r>   rE   r   r   r   on_dns_cache_miss   rI   zTraceConfig.on_dns_cache_miss6Signal[_SignalCallback[TraceRequestHeadersSentParams]]c                 C   rG   r   )r?   rE   r   r   r   on_request_headers_sent   rL   z#TraceConfig.on_request_headers_sentr   r   N)r   rF   )r   rJ   )r   rM   )r   rO   )r   rQ   )r   rS   )r   rU   )r   rW   )r   rY   )r   r[   )r   r]   )r   r_   )r   ra   )r   rc   )r   re   )r   rg   )r   r   r   __doc__r   r   rA   r   rC   rD   propertyrH   rK   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   rb   rd   rf   rh   r   r   r   r   r   0   s    
7

r   )auto_attribsfrozenslotsc                   @   *   e Zd ZU dZeed< eed< ded< dS )r   z0Parameters sent by the `on_request_start` signalmethodurlCIMultiDict[str]headersNr   r   r   rj   str__annotations__r
   r   r   r   r   r      
   
 r   c                   @   *   e Zd ZU dZeed< eed< eed< dS )r,   z5Parameters sent by the `on_request_chunk_sent` signalrp   rq   chunkNr   r   r   rj   ru   rv   r
   bytesr   r   r   r   r,      rw   r,   c                   @   rx   )r-   z:Parameters sent by the `on_response_chunk_received` signalrp   rq   ry   Nrz   r   r   r   r   r-      rw   r-   c                   @   2   e Zd ZU dZeed< eed< ded< eed< dS )r    z.Parameters sent by the `on_request_end` signalrp   rq   rr   rs   responseNr   r   r   rj   ru   rv   r
   r   r   r   r   r   r          
 r    c                   @   r|   )r!   z4Parameters sent by the `on_request_exception` signalrp   rq   rr   rs   	exceptionN)r   r   r   rj   ru   rv   r
   BaseExceptionr   r   r   r   r!      r   r!   c                   @   r|   )r+   z3Parameters sent by the `on_request_redirect` signalrp   rq   rr   rs   r}   Nr~   r   r   r   r   r+   	  r   r+   c                   @      e Zd ZdZdS )r"   z:Parameters sent by the `on_connection_queued_start` signalNr   r   r   rj   r   r   r   r   r"         r"   c                   @   r   )r#   z8Parameters sent by the `on_connection_queued_end` signalNr   r   r   r   r   r#     r   r#   c                   @   r   )r$   z:Parameters sent by the `on_connection_create_start` signalNr   r   r   r   r   r$     r   r$   c                   @   r   )r%   z8Parameters sent by the `on_connection_create_end` signalNr   r   r   r   r   r%   "  r   r%   c                   @   r   )r&   z7Parameters sent by the `on_connection_reuseconn` signalNr   r   r   r   r   r&   '  r   r&   c                   @      e Zd ZU dZeed< dS )r'   z8Parameters sent by the `on_dns_resolvehost_start` signalhostNr   r   r   rj   ru   rv   r   r   r   r   r'   ,     
 r'   c                   @   r   )r(   z6Parameters sent by the `on_dns_resolvehost_end` signalr   Nr   r   r   r   r   r(   3  r   r(   c                   @   r   )r)   z0Parameters sent by the `on_dns_cache_hit` signalr   Nr   r   r   r   r   r)   :  r   r)   c                   @   r   )r*   z1Parameters sent by the `on_dns_cache_miss` signalr   Nr   r   r   r   r   r*   A  r   r*   c                   @   ro   )r.   z7Parameters sent by the `on_request_headers_sent` signalrp   rq   rr   rs   Nrt   r   r   r   r   r.   H  rw   r.   c                
   @   sf  e Zd ZdZdddededdfdd	Zd
ededdddfddZ	d
edede
ddfddZd
edede
ddfddZd
ededddeddf
ddZd
ededddeddf
ddZd
ededddeddf
ddZd2ddZd2dd Zd2d!d"Zd2d#d$Zd2d%d&Zd'eddfd(d)Zd'eddfd*d+Zd'eddfd,d-Zd'eddfd.d/Zd
ededdddfd0d1ZdS )3TracezInternal dependency holder class.

    Used to keep together the main dependencies used
    at the moment of send a signal.
    sessionr   trace_configrC   r   Nc                 C   s   || _ || _|| _d S r   )_trace_config_trace_config_ctx_session)r   r   r   rC   r   r   r   rA   X  s   
zTrace.__init__rp   rq   rs   rr   c                    &   | j j| j| jt|||I d H S r   )r   rH   sendr   r   r   r   rp   rq   rs   r   r   r   send_request_startb     

zTrace.send_request_startry   c                    r   r   )r   rK   r   r   r   r,   r   rp   rq   ry   r   r   r   send_request_chunk_sentk  r   zTrace.send_request_chunk_sentc                    r   r   )r   rN   r   r   r   r-   r   r   r   r   send_response_chunk_receivedt  r   z"Trace.send_response_chunk_receivedr}   c              	      (   | j j| j| jt||||I d H S r   )r   rP   r   r   r   r    r   rp   rq   rs   r}   r   r   r   send_request_end}     
zTrace.send_request_endr   c              	      r   r   )r   rR   r   r   r   r!   )r   rp   rq   rs   r   r   r   r   send_request_exception  r   zTrace.send_request_exceptionc              	      r   r   )r   r5   r   r   r   r+   r   r   r   r   send_request_redirect  r   zTrace.send_request_redirectc                        | j j| j| jt I d H S r   )r   rV   r   r   r   r"   rE   r   r   r   send_connection_queued_start     
z"Trace.send_connection_queued_startc                    r   r   )r   rX   r   r   r   r#   rE   r   r   r   send_connection_queued_end  r   z Trace.send_connection_queued_endc                    r   r   )r   rZ   r   r   r   r$   rE   r   r   r   send_connection_create_start  r   z"Trace.send_connection_create_startc                    r   r   )r   r\   r   r   r   r%   rE   r   r   r   send_connection_create_end  r   z Trace.send_connection_create_endc                    r   r   )r   r^   r   r   r   r&   rE   r   r   r   send_connection_reuseconn  r   zTrace.send_connection_reuseconnr   c                    "   | j j| j| jt|I d H S r   )r   r`   r   r   r   r'   r   r   r   r   r   send_dns_resolvehost_start     
z Trace.send_dns_resolvehost_startc                    r   r   )r   rb   r   r   r   r(   r   r   r   r   send_dns_resolvehost_end  r   zTrace.send_dns_resolvehost_endc                    r   r   )r   rd   r   r   r   r)   r   r   r   r   send_dns_cache_hit  r   zTrace.send_dns_cache_hitc                    r   r   )r   rf   r   r   r   r*   r   r   r   r   send_dns_cache_miss  r   zTrace.send_dns_cache_missc                    r   r   )r   r?   r   r   r   r.   r   r   r   r   send_request_headers  r   zTrace.send_request_headersri   )r   r   r   rj   r   r   rA   ru   r
   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Q  s    


	
	
	







r   )+typesr   typingr   r   r   r   r   attrZ	aiosignalr   Z	multidictr	   Zyarlr
   Zclient_reqrepr   clientr   Ztypedefsr   r   r   __all__r   sr   r,   r-   r    r!   r+   r"   r#   r$   r%   r&   r'   r(   r)   r*   r.   r   r   r   r   r   <module>   s`    
 +			