o
    Rh!;                     @   s  d dl mZ d dlmZmZ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rLd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 d/d0 d0Z(e
jddddG d1d2 d2Z)G d3d4 d4Z*dS )5    )SimpleNamespace)TYPE_CHECKING	AwaitableMappingOptionalProtocolTypeTypeVarN)Signal)CIMultiDict)URL   )ClientResponse)ClientSession_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   Q/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-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                   @   sf  e Zd ZdZefdee ddfddZ	d<deee	e	f  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   r0   r   r   r   __init__1   sD   
zTraceConfig.__init__trace_request_ctxc                 C   s   | j |dS )z&Return a new trace_config_ctx instance)rC   )rA   )r   rC   r   r   r   trace_config_ctxg   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   )r1   freezer2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   r   r   r   rE   m   s    














zTraceConfig.freeze0Signal[_SignalCallback[TraceRequestStartParams]]c                 C      | j S r   )r1   rF   r   r   r   on_request_start      zTraceConfig.on_request_start4Signal[_SignalCallback[TraceRequestChunkSentParams]]c                 C   rH   r   )r2   rF   r   r   r   on_request_chunk_sent      z!TraceConfig.on_request_chunk_sent9Signal[_SignalCallback[TraceResponseChunkReceivedParams]]c                 C   rH   r   )r3   rF   r   r   r   on_response_chunk_received   rM   z&TraceConfig.on_response_chunk_received.Signal[_SignalCallback[TraceRequestEndParams]]c                 C   rH   r   )r4   rF   r   r   r   on_request_end   rJ   zTraceConfig.on_request_end4Signal[_SignalCallback[TraceRequestExceptionParams]]c                 C   rH   r   )r5   rF   r   r   r   on_request_exception   rM   z TraceConfig.on_request_exception3Signal[_SignalCallback[TraceRequestRedirectParams]]c                 C   rH   r   )r6   rF   r   r   r   on_request_redirect   rM   zTraceConfig.on_request_redirect9Signal[_SignalCallback[TraceConnectionQueuedStartParams]]c                 C   rH   r   )r7   rF   r   r   r   on_connection_queued_start   rM   z&TraceConfig.on_connection_queued_start7Signal[_SignalCallback[TraceConnectionQueuedEndParams]]c                 C   rH   r   )r8   rF   r   r   r   on_connection_queued_end   rM   z$TraceConfig.on_connection_queued_end9Signal[_SignalCallback[TraceConnectionCreateStartParams]]c                 C   rH   r   )r9   rF   r   r   r   on_connection_create_start   rM   z&TraceConfig.on_connection_create_start7Signal[_SignalCallback[TraceConnectionCreateEndParams]]c                 C   rH   r   )r:   rF   r   r   r   on_connection_create_end   rM   z$TraceConfig.on_connection_create_end7Signal[_SignalCallback[TraceConnectionReuseconnParams]]c                 C   rH   r   )r;   rF   r   r   r   on_connection_reuseconn   rM   z#TraceConfig.on_connection_reuseconn7Signal[_SignalCallback[TraceDnsResolveHostStartParams]]c                 C   rH   r   )r<   rF   r   r   r   on_dns_resolvehost_start   rM   z$TraceConfig.on_dns_resolvehost_start5Signal[_SignalCallback[TraceDnsResolveHostEndParams]]c                 C   rH   r   )r=   rF   r   r   r   on_dns_resolvehost_end   rM   z"TraceConfig.on_dns_resolvehost_end/Signal[_SignalCallback[TraceDnsCacheHitParams]]c                 C   rH   r   )r>   rF   r   r   r   on_dns_cache_hit   rJ   zTraceConfig.on_dns_cache_hit0Signal[_SignalCallback[TraceDnsCacheMissParams]]c                 C   rH   r   )r?   rF   r   r   r   on_dns_cache_miss   rJ   zTraceConfig.on_dns_cache_miss6Signal[_SignalCallback[TraceRequestHeadersSentParams]]c                 C   rH   r   )r@   rF   r   r   r   on_request_headers_sent   rM   z#TraceConfig.on_request_headers_sentr   r   N)r   rG   )r   rK   )r   rN   )r   rP   )r   rR   )r   rT   )r   rV   )r   rX   )r   rZ   )r   r\   )r   r^   )r   r`   )r   rb   )r   rd   )r   rf   )r   rh   )r   r   r   __doc__r   r   rB   r   r   strrD   rE   propertyrI   rL   rO   rQ   rS   rU   rW   rY   r[   r]   r_   ra   rc   re   rg   ri   r   r   r   r   r   .   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   rk   rl   __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` signalrr   rs   chunkNr   r   r   rk   rl   rw   r   bytesr   r   r   r   r-      rx   r-   c                   @   ry   )r.   z:Parameters sent by the `on_response_chunk_received` signalrr   rs   rz   Nr{   r   r   r   r   r.      rx   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` signalrr   rs   rt   ru   responseNr   r   r   rk   rl   rw   r   r   r   r   r   r   r!         
 r!   c                   @   r}   )r"   z4Parameters sent by the `on_request_exception` signalrr   rs   rt   ru   	exceptionN)r   r   r   rk   rl   rw   r   BaseExceptionr   r   r   r   r"      r   r"   c                   @   r}   )r,   z3Parameters sent by the `on_request_redirect` signalrr   rs   rt   ru   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   rk   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   rk   rl   rw   r   r   r   r   r(   *     
 r(   c                   @   r   )r)   z6Parameters sent by the `on_dns_resolvehost_end` signalr   Nr   r   r   r   r   r)   1  r   r)   c                   @   r   )r*   z0Parameters sent by the `on_dns_cache_hit` signalr   Nr   r   r   r   r   r*   8  r   r*   c                   @   r   )r+   z1Parameters sent by the `on_dns_cache_miss` signalr   Nr   r   r   r   r   r+   ?  r   r+   c                   @   rq   )r/   z7Parameters sent by the `on_request_headers_sent` signalrr   rs   rt   ru   Nrv   r   r   r   r   r/   F  rx   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_configrD   r   Nc                 C   s   || _ || _|| _d S r   )_trace_config_trace_config_ctx_session)r   r   r   rD   r   r   r   rB   V  s   
zTrace.__init__rr   rs   ru   rt   c                    &   | j j| j| jt|||I d H S r   )r   rI   sendr   r   r    r   rr   rs   ru   r   r   r   send_request_start`     

zTrace.send_request_startrz   c                    r   r   )r   rL   r   r   r   r-   r   rr   rs   rz   r   r   r   send_request_chunk_senti  r   zTrace.send_request_chunk_sentc                    r   r   )r   rO   r   r   r   r.   r   r   r   r   send_response_chunk_receivedr  r   z"Trace.send_response_chunk_receivedr~   c              	      (   | j j| j| jt||||I d H S r   )r   rQ   r   r   r   r!   r   rr   rs   ru   r~   r   r   r   send_request_end{     
zTrace.send_request_endr   c              	      r   r   )r   rS   r   r   r   r"   )r   rr   rs   ru   r   r   r   r   send_request_exception  r   zTrace.send_request_exceptionc              	      r   r   )r   r6   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   rW   r   r   r   r#   rF   r   r   r   send_connection_queued_start     
z"Trace.send_connection_queued_startc                    r   r   )r   rY   r   r   r   r$   rF   r   r   r   send_connection_queued_end  r   z Trace.send_connection_queued_endc                    r   r   )r   r[   r   r   r   r%   rF   r   r   r   send_connection_create_start  r   z"Trace.send_connection_create_startc                    r   r   )r   r]   r   r   r   r&   rF   r   r   r   send_connection_create_end  r   z Trace.send_connection_create_endc                    r   r   )r   r_   r   r   r   r'   rF   r   r   r   send_connection_reuseconn  r   zTrace.send_connection_reuseconnr   c                    "   | j j| j| jt|I d H S r   )r   ra   r   r   r   r(   r   r   r   r   r   send_dns_resolvehost_start     
z Trace.send_dns_resolvehost_startc                    r   r   )r   rc   r   r   r   r)   r   r   r   r   send_dns_resolvehost_end  r   zTrace.send_dns_resolvehost_endc                    r   r   )r   re   r   r   r   r*   r   r   r   r   send_dns_cache_hit  r   zTrace.send_dns_cache_hitc                    r   r   )r   rg   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_headersrj   )r   r   r   rk   r   r   rB   rl   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   O  s    


	
	
	







r   )+typesr   typingr   r   r   r   r   r   r	   attr	aiosignalr
   	multidictr   yarlr   client_reqrepr   clientr   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^    $	 +			