B
    .l\                 @   sX   d dl mZ d dlmZ ddlmZ G dd deZG dd deZG d	d
 d
eZ	dS )    )unicode_literals)default_timer   )decoratec               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ExceptionCounterc             C   s   || _ || _d S )N)_counter
_exception)selfZcounterZ	exception r
   Alib/python3.7/site-packages/prometheus_client/context_managers.py__init__	   s    zExceptionCounter.__init__c             C   s   d S )Nr
   )r	   r
   r
   r   	__enter__   s    zExceptionCounter.__enter__c             C   s   t || jr| j  d S )N)
isinstancer   r   inc)r	   typvalue	tracebackr
   r
   r   __exit__   s    zExceptionCounter.__exit__c                s    fdd}t ||S )Nc          	      s     | ||S Q R X d S )Nr
   )funcargskwargs)r	   r
   r   wrapped   s    z*ExceptionCounter.__call__.<locals>.wrapped)r   )r	   fr   r
   )r	   r   __call__   s    zExceptionCounter.__call__N)__name__
__module____qualname__r   r   r   r   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 )N)_gauge)r	   Zgauger
   r
   r   r      s    zInprogressTracker.__init__c             C   s   | j   d S )N)r   r   )r	   r
   r
   r   r       s    zInprogressTracker.__enter__c             C   s   | j   d S )N)r   Zdec)r	   r   r   r   r
   r
   r   r   #   s    zInprogressTracker.__exit__c                s    fdd}t ||S )Nc          	      s     | ||S Q R X d S )Nr
   )r   r   r   )r	   r
   r   r   '   s    z+InprogressTracker.__call__.<locals>.wrapped)r   )r	   r   r   r
   )r	   r   r   &   s    zInprogressTracker.__call__N)r   r   r   r   r   r   r   r
   r
   r
   r   r      s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Timerc             C   s
   || _ d S )N)	_callback)r	   callbackr
   r
   r   r   /   s    zTimer.__init__c             C   s   |  | jS )N)	__class__r    )r	   r
   r
   r   
_new_timer2   s    zTimer._new_timerc             C   s   t  | _d S )N)r   _start)r	   r
   r
   r   r   5   s    zTimer.__enter__c             C   s    t t | j d}| | d S )Nr   )maxr   r$   r    )r	   r   r   r   Zdurationr
   r
   r   r   8   s    zTimer.__exit__c                s    fdd}t ||S )Nc          	      s       | ||S Q R X d S )N)r#   )r   r   r   )r	   r
   r   r   >   s    
zTimer.__call__.<locals>.wrapped)r   )r	   r   r   r
   )r	   r   r   =   s    zTimer.__call__N)r   r   r   r   r#   r   r   r   r
   r
   r
   r   r   .   s
   r   N)
Z
__future__r   Ztimeitr   Z	decoratorr   objectr   r   r   r
   r
   r
   r   <module>   s
   