o
    MK&hp                     @  sJ   d dl mZ d dlZd dlZd dlZd dlZddlmZ G dd dZdS )    )annotationsN   )Requestc                   @  sh   e Zd Z		d"d#ddZd$ddZd%ddZ			d&d'ddZd$ddZd%ddZ			d&d'd d!Z	dS )(TraceNnamestrloggerlogging.LoggerrequestRequest | Nonekwargsdict[str, typing.Any] | NonereturnNonec                 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   B/var/www/html/venv/lib/python3.10/site-packages/httpcore/_trace.py__init__   s   
zTrace.__init__infodict[str, typing.Any]c                 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__1   s   zTrace.__enter__exc_typetype[BaseException] | None	exc_valueBaseException | None	tracebacktypes.TracebackType | Nonec                 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   r;   r=   r?   r"   r   r   r    __exit__7   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,   U   r-   z Trace.atrace.<locals>.<listcomp>r.   )r   r   r"   r4   coror6   r7   r   r   r    atraceE   s    


zTrace.atracec                   s,   | j r| j}| | j d|I d H  | S r8   )r   r   rF   r   r9   r   r   r    
__aenter__Y   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 rA   )r   r   rF   r   rC   r   r   r    	__aexit___   s   
zTrace.__aexit__)NN)
r   r   r   r	   r
   r   r   r   r   r   )r   r   r"   r#   r   r   )r   r   )NNN)r;   r<   r=   r>   r?   r@   r   r   )
__name__
__module____qualname__r!   r   r:   rD   rF   rG   rH   r   r   r   r    r      s     



r   )	
__future__r   r/   r   typestyping_modelsr   r   r   r   r   r    <module>   s    