
    %^g^                    @    d dl mZ d dlZd dlZd dlmZ  G d d      Zy)    )annotationsN)Mappingc                  0    e Zd ZdZddZddZd	dZd
dZy)GcLoggerz1Context manager to log GC stats and overall time.c                    d | _         d| _        d| _        d| _        d| _        t
        j                  j                  | j                         t        j                         | _
        | S )Ng        r   )gc_start_timegc_timegc_callsgc_collectedgc_uncollectablegc	callbacksappendgc_callbacktime
start_time)selfs    -lib/python3.12/site-packages/mypy/gclogger.py	__enter__zGcLogger.__enter__   sR    +/ !
D,,-))+    c                   |dk(  r-| j                   J d       t        j                         | _         y |dk(  r| j                   J d       | xj                  dz  c_        | xj                  t        j                         | j                   z
  z  c_        d | _         | xj                  |d   z  c_        | xj
                  |d   z  c_        y J d|d	       )
NstartzStart phase out of sequencestopzStop phase out of sequence   	collecteduncollectablezUnrecognized gc phase ())r   r   r
   r	   r   r   )r   phaseinfos      r   r   zGcLogger.gc_callback   s    G%%-L/LL-!%Df_%%1O3OO1MMQMLLDIIK$*<*<<<L!%Dk!22!!T/%::!>3E9A>>5r   c                    | j                   t        j                  v rGt        j                  j                  | j                          | j                   t        j                  v rFy y )N)r   r   r   remove)r   argss     r   __exit__zGcLogger.__exit__#   s@    ",,.LL 0 01 ",,.r   c                    t        j                          }| j                  | j                  | j                  | j                  || j
                  z
  d}|S )N)r	   r
   r   r   
build_time)r   r	   r
   r   r   r   )r   end_timeresults      r   	get_statszGcLogger.get_stats'   sG    99;|| -- $ 5 5"T__4
 r   N)returnr   )r   strr   zMapping[str, int]r)   None)r"   objectr)   r+   )r)   zMapping[str, float])__name__
__module____qualname____doc__r   r   r#   r(    r   r   r   r      s    ;?2	r   r   )
__future__r   r   r   typingr   r   r1   r   r   <module>r4      s    " 	  ( (r   