a
    !fr                     @   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eejee eeee	f  ddddZ
eeee	f ddddZd dd	d
Zdeee  ee ee ddddZeeee	f ddddZd dddZdeee  ee ee dd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pT| 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   P/var/www/html/python-backend/venv/lib/python3.9/site-packages/httpcore/_trace.py__init__
   s    
zTrace.__init__)r
   infor   c                 C   s   | j d ur8| j d| }|  ||}t|r8td| jr|rVd|v r\|d d u r\|}n&ddd | D }| d| }| j| 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   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.trace)r   c                 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	tracebackr   c                 C   sN   | j rJ|d u r.d| ji}| | j d| nd|i}| | j d| d S Nr   z	.complete	exceptionz.failed)r   r   r   r
   r   r8   r9   r:   r!   r   r   r   __exit__5   s    
zTrace.__exit__c                    s   | j d urB| j d| }|  ||}t|s8td|I d H  | jr|r`d|v rf|d d u rf|}n&ddd | D }| d| }| j| 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   s   g | ]\}}| d |qS r#   r   r%   r   r   r   r)   S   r*   z Trace.atrace.<locals>.<listcomp>r+   )r   r
   r!   r1   coror3   r4   r   r   r   atraceC   s    


zTrace.atracec                    s*   | j r&| j}| | j d|I d H  | S r5   )r   r   r@   r
   r6   r   r   r   
__aenter__W   s    zTrace.__aenter__c                    sZ   | j rV|d u r4d| ji}| | j d|I d H  n"d|i}| | j d|I d H  d S r;   )r   r   r@   r
   r=   r   r   r   	__aexit__]   s    
zTrace.__aexit__)NN)NNN)NNN)__name__
__module____qualname__strr   Loggerr   r   r   r   r    r   r7   r   BaseExceptionr   r>   r@   rA   rB   r   r   r   r   r	   	   s>        
   
r	   )r,   r   typesr   typingr   r   r   r   Z_modelsr   r	   r   r   r   r   <module>   s
   