
    Vh                         d dl mZmZ d dlZd dlZd dlZd dlZd dlm	Z	  G d d          Z
dedefdZdedefd	Zdd
defdZdej        fdZdaddZd ZdS )    )IterableSizedNcolorizec                       e Zd ZdZddddd ej        fdej        deded	ed
e	de
j        e         dedefdZde	fdZd Zd Zd ZdS )LogProgressa>  
    Sort of like tqdm but using log lines and not as real time.
    Args:
        - logger: logger obtained from `logging.getLogger`,
        - iterable: iterable object to wrap
        - updates (int): number of lines that will be printed, e.g.
            if `updates=5`, log every 1/5th of the total length.
        - time_per_it (bool): force speed to display as ms/it
        - total (int): length of the iterable, in case it does not support
            `len`.
        - name (str): prefix to use in the log.
        - level: logging level (like `logging.INFO`).
          FNloggeriterableupdatesmin_intervaltime_per_ittotalnamelevelc	                     || _         |&t          |t                    sJ t          |          }|| _        || _        || _        || _        || _        || _	        || _
        d S )N)r   
isinstancer   lenr   r   r   r   r   r   r   )	selfr   r   r   r   r   r   r   r   s	            N/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/dora/log.py__init__zLogProgress.__init__   sh     !=h.....MME
(&	


    returnc                     || _         | j        S )zqUpdate the metrics to show when logging. Return True if logging will
        happen at the end of this iteration.)_infos	_will_log)r   infoss     r   updatezLogProgress.update3   s     ~r   c                     t          | j                  | _        d| _        d| _        i | _        t          j                    | _        | S )NF)iterr   	_iteratorr   _indexr   time_begin)r   s    r   __iter__zLogProgress.__iter__9   s:    dm,,ikkr   c                 L   | j         r|                                  d| _         	 t          | j                  }| xj        dz  c_        | j        dk    rBt          | j        | j        | j        z            }| j        dk    r| j        |z  dk    rd| _         |S # t          $ r  w xY w)NFr
   r   T)
r   _lognextr#   r$   r   maxr   r   StopIteration)r   value	log_everys      r   __next__zLogProgress.__next__A   s    > 	#IIKKK"DN	((E KK1KK|a 14:3MNN	;!##i(?1(D(D%)DNL  	 	 		s   B B#c                 (   d| j         z   t          j                    | j        z
  z  | _        d                    d | j                                        D                       }| j        dk     rd}n\| j        r| j        dk     rd| j        z  dd}n;| j        rd| j        z  d	d
}n%| j        dk     rd| j        z  d	d}n| j        dd}| j         d| j          d| j	         d| }|r|d|z   z  }| j
                            | j        |           d S )Nr
   z | c              3   N   K   | ] \  }}|                                  d | V  !dS ) N)
capitalize).0kvs      r   	<genexpr>z#LogProgress._log.<locals>.<genexpr>T   s<      SStq!allnn22q22SSSSSSr   g-C6?z	oo sec/itz.2fz sec/iti  z.1fz ms/itg?z it/sec/)r$   r%   r&   _speedjoinr   itemsr   r   r   r   logr   )r   r   speedouts       r   r)   zLogProgress._logR   sL   4;49;;+DE

SSt{?P?P?R?RSSSSS;EE 	0$+//4;3333EE 	0dk)5555EE[3}1111EE{////ECCt{CCTZCCECC 	!55= C
C(((((r   )__name__
__module____qualname____doc__loggingINFOLoggerr   intbooltpOptionalstrr   r   r'   r/   r)    r   r   r   r      s           !"%&%*+/*%l  #   #	
 # C(     *        ") ) ) ) )r   r   textr   c                 "    t          | d          S )z/
    Display text in bold in the terminal.
    1r   rL   s    r   boldrP   e   s     D#r   c                 "    t          | d          S )zDisplay text in red.
    31r   rO   s    r   redrS   l   s     D$r   )colorfirstc                T    t          t          |           g|R dt          j        i d S )Nfile)printrP   sysstderr)rU   rT   argss      r   
simple_logr\   s   s.    	$u++....3:.....r   c                  H    t          dg| R   t          j        d           d S )NzFATAL:r
   )r\   rY   exit)r[   s    r   fatalr_   w   s)    x$HQKKKKKr   Fc                    | rt           j        nt           j        }t          j        d          }|                    |           t          j        t          j                  at          	                    t          j
        d                     t                              |           |                    t                     d S )Ndoraz"%(levelname)s:%(name)s:%(message)s)rC   DEBUGrD   	getLoggersetLevelStreamHandlerrY   rZ   _dora_handlersetFormatter	Formatter
addHandler)verbose	log_levelr   s      r   setup_loggingrl      s    !(:glIv&&F
OOI)#*55Mw01UVVWWW9%%%
m$$$$$r   c                  t    t           J t          j        d          } |                     t                      d S )Nra   )rf   rC   rc   removeHandler)r   s    r   disable_loggingro      s8    $$$v&&F
'''''r   )F)collections.abcr   r   rC   rY   r%   typingrH   treetable.textr   r   rJ   rP   rS   r\   NoReturnr_   rf   rl   ro   rK   r   r   <module>rt      sH   , + + + + + + +  



      # # # # # #R) R) R) R) R) R) R) R)js s     c  c         )- / / /c / / / /BK    
 % % % %( ( ( ( (r   