o
    2gi                     @  s:   d dl mZ d dlZd dlZd dlmZ G dd dZdS )    )annotationsN)Mappingc                   @  s8   e Zd ZdZdddZdd
dZdddZdddZdS )GcLoggerz1Context manager to log GC stats and overall time.returnc                 C  s:   d | _ d| _d| _d| _d| _tj| j t		 | _
| S )Ng        r   )gc_start_timegc_timegc_callsgc_collectedgc_uncollectablegc	callbacksappendgc_callbacktime
start_time)self r   E/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/gclogger.py	__enter__   s   
zGcLogger.__enter__phasestrinfoMapping[str, int]Nonec                 C  s   |dkr| j d u sJ dt | _ d S |dkrK| j d us!J d|  jd7  _|  jt | j  7  _d | _ |  j|d 7  _|  j|d 7  _d S J d	|d
)NstartzStart phase out of sequencestopzStop phase out of sequence   	collecteduncollectableFzUnrecognized gc phase ())r   r   r   r   r	   r
   )r   r   r   r   r   r   r      s   zGcLogger.gc_callbackargsobjectc                 G  s.   | j tjv rtj| j  | j tjv sd S d S )N)r   r   r   remove)r   r    r   r   r   __exit__#   s   zGcLogger.__exit__Mapping[str, float]c                 C  sF   t   }i }| j|d< | j|d< | j|d< | j|d< || j |d< |S )Nr   r   r	   r
   
build_time)r   r   r   r	   r
   r   )r   end_timeresultr   r   r   	get_stats'   s   



zGcLogger.get_statsN)r   r   )r   r   r   r   r   r   )r    r!   r   r   )r   r$   )__name__
__module____qualname____doc__r   r   r#   r(   r   r   r   r   r      s    



r   )
__future__r   r   r   typingr   r   r   r   r   r   <module>   s
    