Ë
    @çiŒ  ã                   ó¸   — 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y)é    )Ú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y)Ú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        |«      }|| _        || _        || _        || _        || _        || _	        || _
        y )N)r   Ú
isinstancer   Úlenr   r   r   r   r   r   r   )	Úselfr   r   r   r   r   r   r   r   s	            ú]/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/dora/log.pyÚ__init__zLogProgress.__init__   s\   € ð !ˆŒØˆ=Ü˜h¬Ô.Ð.Ð.Ü˜“MˆEØˆŒ
ØˆŒØ(ˆÔØ&ˆÔØˆŒ	ØˆŒØˆ�
ó    Ú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   s9   € Ü˜dŸm™mÓ,ˆŒØˆŒØˆŒØˆŒÜ—i‘i“kˆŒØˆr   c                 ó†  — | j                   r| j                  «        d| _         	 t        | j                  «      }| xj                  dz  c_        | j
                  dkD  rUt        | 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£   € Ø�>Š>Ø�I‰IŒKØ"ˆDŒNð	Ü˜Ÿ™Ó(ˆEð �KŠK˜1Ñ�KØ�|‰|˜aÒÜ × 1Ñ 1°4·:±:ÀÇÁÑ3MÓN�	à—;‘; !Ò#¨¯©°iÑ(?À1Ò(DØ%)�D”NØˆLøô ò 	Øð	ús   ¥B5 Â5C c                 ó®  — d| j                   z   t        j                  «       | j                  z
  z  | _        dj	                  d„ | j
                  j                  «       D «       «      }| j                  dk  rd}n‚| j                  r#| j                  dk  rd| j                  z  d›d�}nS| j                  rd| j                  z  d	›d
�}n3| 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                  | j                  |«       y )Nr
   z | c              3   óL   K  — | ]  \  }}|j                  «       › d |› �–— Œ y­w)Ú N)Ú
capitalize)Ú.0ÚkÚvs      r   Ú	<genexpr>z#LogProgress._log.<locals>.<genexpr>T   s)   è ø€ ÐSÑ?R±t°q¸!˜aŸl™l›nÐ-¨Q¨q¨cÔ2Ñ?Rùs   ‚"$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   s'  € Ø˜4Ÿ;™;‘¬4¯9©9«;¸¿¹Ñ+DÑEˆŒØ—
‘
ÑS¸t¿{¹{×?PÑ?PÔ?RÓSÓSˆØ�;‰;˜ÒØ‰EØ×Ò $§+¡+°¢/Ø˜4Ÿ;™;‘ sÐ+¨7Ð3‰EØ×ÒØ˜dŸk™kÑ)¨#Ð.¨fÐ5‰EØ�[‰[˜3ÒØ˜Ÿ™‘} SÐ)¨Ð1‰Eà—{‘{ 3Ð' wÐ/ˆEØ—‘�˜3˜tŸ{™{˜m¨1¨T¯Z©Z¨L¸¸E¸7ÐCˆÙØ�5˜5‘=Ñ ˆ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™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                óP   — t        t        | «      g|¢­dt        j                  iŽ y )NÚfile)ÚprintrP   ÚsysÚstderr)rU   rT   Úargss      r   Ú
simple_logr\   s   s   € Ü	Œ$ˆu‹+Ð.˜Ò.¤3§:¡:Ó.r   c                  óF   — t        dg| ¢­Ž  t        j                  d«       y )NzFATAL:r
   )r\   rY   Úexit)r[   s    r   Úfatalr_   w   s   € ÜˆxÐ˜$ÓÜ‡H�HˆQ…Kr   c                 ó~  — | rt         j                  nt         j                  }t        j                  d«      }|j	                  |«       t        j
                  t        j                  «      at        j                  t        j                  d«      «       t        j	                  |«       |j                  t        «       y )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      sy   € á!(”—’¬g¯l©l€IÜ×Ñ˜vÓ&€FØ
‡O�O�IÔÜ×)Ñ)¬#¯*©*Ó5€MÜ×Ñœw×0Ñ0Ð1UÓVÔWÜ×Ñ˜9Ô%Ø
×Ñ”mÕ$r   c                  óh   — t         €J ‚t        j                  d«      } | j                  t         «       y )Nra   )rf   rC   rc   ÚremoveHandler)r   s    r   Údisable_loggingro   Š   s,   € ÜÐ$Ð$Ð$Ü×Ñ˜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      s~   ð÷ ,Û Û 
Û Û å #÷R)ñ R)ðjˆsð �só ð ˆcð  �có  ð )-ò /�có /ð�B—K‘Kó ð
 €ó%ó(r   