o
    4ήcm                     @   sz   d dl Z d dlmZmZ erd dlmZmZmZmZm	Z	m
Z
 d dlmZ dddddZd	ed
efddZG dd dZdS )    N)TYPE_CHECKINGAny)ASGI3ApplicationASGIReceiveCallableASGIReceiveEventASGISendCallableASGISendEventWWWScope)TRACE_LOG_LEVELz<{length} bytes>z<{length} chars>z<...>)bodybytestextheadersmessagereturnc                 C   sL   |   }t D ]}| |dur#| | }t| jt|d}|||< q|S )zi
    Return an ASGI message, with any body-type content omitted and replaced
    with a placeholder.
    N)length)copyPLACEHOLDER_FORMATkeysgetformatlen)r   new_messageattrcontentplaceholder r   H/tmp/pip-target-vg8gfxp4/lib/python/uvicorn/middleware/message_logger.pymessage_with_placeholders   s   r   c                   @   s0   e Zd ZdddZ							
		dddZdS )MessageLoggerMiddlewareappr   c                    sB   d _ | _td _dtdtdtdd f fdd}| j_d S )	Nr   zuvicorn.asgir   argskwargsr   c                    s     j jt| g|R i | d S )N)loggerlogr
   )r   r!   r"   selfr   r   trace,   s    z/MessageLoggerMiddleware.__init__.<locals>.trace)task_counterr    logging	getLoggerr#   r   r'   )r&   r    r'   r   r%   r   __init__'   s
   z MessageLoggerMiddleware.__init__scoper	   receiver   sendr   r   Nc           
   
      s    j d7  _ j |d}|rd|d |d f nd d fdd	}d fdd}t|}d}j| | z|||I d H  W n tyf }	 zd}j|  |	d d }	~	ww d}j|  d S )N   clientz%s:%d - ASGIr   ASGIr   r   c                     s0    I d H } t | }d}j| | | S )Nz%s [%d] Receive %sr   r#   r'   r   logged_messagelog_text)prefixr-   r&   r(   r   r   inner_receive=   s   z7MessageLoggerMiddleware.__call__.<locals>.inner_receiver   r   c                    s2   t | }d}j| | | I d H  d S )Nz%s [%d] Send %sr2   r3   )r6   r&   r.   r(   r   r   
inner_sendF   s   z4MessageLoggerMiddleware.__call__.<locals>.inner_sendz%s [%d] Started scope=%sz%s [%d] Raised exceptionz%s [%d] Completed)r   r   )r   r   r   N)r(   r   r   r#   r'   r    BaseException)
r&   r,   r-   r.   r0   r7   r8   logged_scoper5   excr   )r6   r-   r&   r.   r(   r   __call__1   s(   
	z MessageLoggerMiddleware.__call__)r    r   )r,   r	   r-   r   r.   r   r   N)__name__
__module____qualname__r+   r<   r   r   r   r   r   &   s    

r   )r)   typingr   r   asgiref.typingr   r   r   r   r   r	   uvicorn.loggingr
   r   r   r   r   r   r   r   <module>   s     	