o
    Ù­jp  ã                   @  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   úL/var/www/html/CropPilot/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   z�If 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   z’If 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    