o
    Zhr                     @   sR   d dl Z d dlZd dlmZ d dlmZmZmZmZ ddl	m
Z
 G dd dZdS )    N)TracebackType)AnyDictOptionalType   )Requestc                   @   s   e Zd Z		ddedejdee deeee	f  ddf
ddZ
ded	eee	f ddfd
dZdddZ			ddeee  dee dee ddfddZded	eee	f ddfddZdddZ			ddeee  dee dee ddfddZdS )TraceNnameloggerrequestkwargsreturnc                 C   sp   || _ || _|d u rd n|jd| _| jtj| _|pi | _	d | _
| jp*| jd u| _| jj dd | _d S )Ntrace.)r
   r   
extensionsgettrace_extensionisEnabledForloggingDEBUGdebugr   return_valueshould_tracesplitprefix)selfr
   r   r   r    r   F/var/www/html/lang_env/lib/python3.10/site-packages/httpcore/_trace.py__init__
   s   
zTrace.__init__infoc                 C   s   | j d ur| j d| }|  ||}t|rtd| jrI|r+d|v r.|d d u r.|}nddd | D }| d| }| j| d S d S )Nr   zIf you are using a synchronous interface, the callback of the `trace` extension should be a normal function instead of an asynchronous function.r    c                 S      g | ]\}}| d |qS =r   .0keyvaluer   r   r   
<listcomp>+       zTrace.trace.<locals>.<listcomp>	r   r   inspectiscoroutine	TypeErrorr   joinitemsr   )r   r
   r!   prefix_and_nameretmessageargsr   r   r   r      s   

zTrace.tracec                 C   s$   | j r| j}| | j d| | S Nz.started)r   r   r   r
   r   r!   r   r   r   	__enter__/   s   zTrace.__enter__exc_type	exc_value	tracebackc                 C   sT   | j r(|d u rd| ji}| | j d| d S d|i}| | j d| d S d S Nr   z	.complete	exceptionz.failed)r   r   r   r
   r   r9   r:   r;   r!   r   r   r   __exit__5   s   
zTrace.__exit__c                    s   | j d ur"| j d| }|  ||}t|std|I d H  | jrO|r1d|v r4|d d u r4|}nddd | D }| d| }| j| d S d S )Nr   zIf you're using an asynchronous interface, the callback of the `trace` extension should be an asynchronous function rather than a normal function.r   r"   c                 S   r#   r$   r   r&   r   r   r   r*   S   r+   z Trace.atrace.<locals>.<listcomp>r,   )r   r
   r!   r2   coror4   r5   r   r   r   atraceC   s    


zTrace.atracec                    s,   | j r| j}| | j d|I d H  | S r6   )r   r   rA   r
   r7   r   r   r   
__aenter__W   s
   zTrace.__aenter__c                    sb   | j r/|d u rd| ji}| | j d|I d H  d S d|i}| | j d|I d H  d S d S r<   )r   r   rA   r
   r>   r   r   r   	__aexit__]   s   
zTrace.__aexit__)NN)r   r	   )NNN)__name__
__module____qualname__strr   Loggerr   r   r   r   r    r   r8   r   BaseExceptionr   r?   rA   rB   rC   r   r   r   r   r	   	   sT    





r	   )r-   r   typesr   typingr   r   r   r   Z_modelsr   r	   r   r   r   r   <module>   s    