U
    ){f1                     @  sx   d dl mZ d dlmZmZmZ ddlmZ erLddlm	Z	 ddlm
Z
mZ dZdZd	Zd
ZdZdZG dd deZdS )    )annotations)AnyOptionalTYPE_CHECKING   )Logger)Config)ResponseSummaryWWWScopemetricvaluemtypegaugecounter	histogramc                      sV  e Zd Zddd fddZddddd fd	d
Zddddd fddZddddd fddZddddd fddZddddd fddZddddd fddZ	dddddd fddZ
ddddd fddZddddd d!Zd0ddddd#d$d%Zd1ddddd#d&d'Zddddd(d)Zddd*d+d,Zd-dd*d.d/Z  ZS )2StatsdLoggerz'Config'None)configreturnc                   sF   t  | |j| _|j| _t| jrB| jd dkrB|  jd7  _d S )N.)super__init__dogstatsd_tagsZstatsd_prefixprefixlen)selfr   	__class__ O/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/hypercorn/statsd.pyr      s
    zStatsdLogger.__init__strr   )messageargskwargsr   c                   s0   t  j|f||I d H  | ddI d H  d S )Nzhypercorn.log.criticalr   )r   critical	incrementr   r"   r#   r$   r   r   r    r%      s    zStatsdLogger.criticalc                   s0   t  j|f||I d H  | ddI d H  d S )Nzhypercorn.log.errorr   )r   errorr&   r'   r   r   r    r(      s    zStatsdLogger.errorc                   s0   t  j|f||I d H  | ddI d H  d S )Nzhypercorn.log.warningr   )r   warningr&   r'   r   r   r    r)   #   s    zStatsdLogger.warningc                   s   t  j|f||I d H  d S N)r   infor'   r   r   r    r+   '   s    zStatsdLogger.infoc                   s   t  j|f||I d H  d S r*   )r   debugr'   r   r   r    r,   *   s    zStatsdLogger.debugc                   s0   t  j|f||I d H  | ddI d H  d S )Nzhypercorn.log.exceptionr   )r   	exceptionr&   r'   r   r   r    r-   -   s    zStatsdLogger.exceptionint)levelr"   r#   r$   r   c           	        s   z| dd }|d k	r| td }| td }| td }|r|r|r|tkrb| ||I d H  n6|tkr~| ||I d H  n|tkr| 	||I d H  |rt
 j||f||I d H  W n* tk
r   t
 jdddI d H  Y nX d S )NextrazFailed to log to statsdT)exc_info)get
METRIC_VAR	VALUE_VAR	MTYPE_VAR
GAUGE_TYPEr   COUNTER_TYPEr&   HISTOGRAM_TYPEr   r   log	Exceptionr)   )	r   r/   r"   r#   r$   r0   r   r   type_r   r   r    r9   1   s"     zStatsdLogger.logz
'WWWScope'zOptional['ResponseSummary']float)requestresponserequest_timer   c                   sf   t  |||I d H  | d|d I d H  | ddI d H  |d k	rb| d|d  dI d H  d S )Nzhypercorn.request.durationi  zhypercorn.requestsr   zhypercorn.request.status.status)r   accessr   r&   )r   r=   r>   r?   r   r   r    rA   E   s
    zStatsdLogger.access)namer   r   c                   s&   |  | j | d| dI d H  d S )N:z|g_sendr   r   rB   r   r   r   r    r   N   s    zStatsdLogger.gauge      ?)rB   r   sampling_rater   c                   s*   |  | j | d| d| I d H  d S )NrC   |c|@rD   r   rB   r   rH   r   r   r    r&   Q   s    zStatsdLogger.incrementc                   s*   |  | j | d| d| I d H  d S )Nz:-rI   rD   rJ   r   r   r    	decrementT   s    zStatsdLogger.decrementc                   s&   |  | j | d| dI d H  d S )NrC   z|msrD   rF   r   r   r    r   W   s    zStatsdLogger.histogram)r"   r   c                   s0   | j r| d| j  }| |dI d H  d S )Nz|#ascii)r   _socket_sendencoder   r"   r   r   r    rE   Z   s    zStatsdLogger._sendbytesc                   s
   t  d S r*   )NotImplementedErrorrO   r   r   r    rM   _   s    zStatsdLogger._socket_send)rG   )rG   )__name__
__module____qualname__r   r%   r(   r)   r+   r,   r-   r9   rA   r   r&   rK   r   rE   rM   __classcell__r   r   r   r    r      s   	r   N)
__future__r   typingr   r   r   loggingr   r   r   r	   r
   r3   r4   r5   r6   r7   r8   r   r   r   r   r    <module>   s   