o
    iQ	                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ e jdkr/d dlmZ ddlmZ erGdd	lmZ ed
edef dZG dd dZG dd dZG dd dZdS )    N)default_timer)TracebackType)AnyCallableOptionalTupleTypeTYPE_CHECKINGTypeVarUnion)      r   )Literal   decorate)CounterF.)boundc                   @   sx   e Zd Zdddeee eee df f ddfddZdd	d
Zde	ee  de	e de	e
 ddfddZdddZdS )ExceptionCountercounterr   	exception.returnNc                 C      || _ || _d S N)_counter
_exception)selfr   r    r   ]/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/prometheus_client/context_managers.py__init__      
zExceptionCounter.__init__c                 C   s   d S r   r   r   r   r   r   	__enter__   s   zExceptionCounter.__enter__typvalue	tracebackzLiteral[False]c                 C   s   t || jr| j  dS )NF)
isinstancer   r   incr   r$   r%   r&   r   r   r   __exit__   s   
zExceptionCounter.__exit__fr   c                        fdd}t ||S )Nc                    6     | |i |W  d    S 1 sw   Y  d S r   r   funcargskwargsr"   r   r   wrapped       $z*ExceptionCounter.__call__.<locals>.wrappedr   r   r+   r2   r   r"   r   __call__      
zExceptionCounter.__call__)r   N)r+   r   r   r   )__name__
__module____qualname__r   r   BaseExceptionr   r    r#   r   r   r*   r5   r   r   r   r   r      s
    .
*r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
InprogressTrackerc                 C   s
   || _ d S r   )_gauge)r   gauger   r   r   r    (   s   
zInprogressTracker.__init__c                 C      | j   d S r   )r<   r(   r"   r   r   r   r#   +      zInprogressTracker.__enter__c                 C   r>   r   )r<   decr)   r   r   r   r*   .   r?   zInprogressTracker.__exit__c                    r,   )Nc                    r-   r   r   r.   r"   r   r   r2   2   r3   z+InprogressTracker.__call__.<locals>.wrappedr   r4   r   r"   r   r5   1   r6   zInprogressTracker.__call__N)r7   r8   r9   r    r#   r*   r5   r   r   r   r   r;   '   s
    r;   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Timerc                 C   r   r   )_metric_callback_name)r   metriccallback_namer   r   r   r    :   r!   zTimer.__init__c                 C   s   |  | j| jS r   )	__class__rB   rC   r"   r   r   r   
_new_timer>   s   zTimer._new_timerc                 C   s   t  | _| S r   )r   _startr"   r   r   r   r#   A   s   zTimer.__enter__c                 C   s,   t t | j d}t| j| j}|| d S )Nr   )maxr   rH   getattrrB   rC   )r   r$   r%   r&   durationcallbackr   r   r   r*   E   s   zTimer.__exit__c                 O   s   | j j|i || _ d S r   )rB   labels)r   r0   kwr   r   r   rM   K   s   zTimer.labelsc                    r,   )Nc                    s:       | |i |W  d    S 1 sw   Y  d S r   )rG   r.   r"   r   r   r2   O   s   
$zTimer.__call__.<locals>.wrappedr   r4   r   r"   r   r5   N   s   
zTimer.__call__N)	r7   r8   r9   r    rG   r#   r*   rM   r5   r   r   r   r   rA   9   s    rA   )systimeitr   typesr   typingr   r   r   r   r   r	   r
   r   version_infor   	decoratorr    r   r   r   r;   rA   r   r   r   r   <module>   s    (
