Ë
    ¬¯wg°  ã                   ó¼   — d Z ddlZddlZddlmZ 	 ddlmZmZmZm	Z	 ddlmZ  G d„ dej                  «      Zd	„ Zd
„ Zedefd„«       Zed„ «       Zy# e
$ r Y Œ<w xY w)zB
Helper functionality for interoperability with stdlib `logging`.
é    N)Úcontextmanager)ÚIteratorÚListÚOptionalÚTypeé   )Útqdmc                   ó(   ‡ — e Zd Zefˆ fd„	Zd„ Zˆ xZS )Ú_TqdmLoggingHandlerc                 ó0   •— t         ‰|   «        || _        y ©N)ÚsuperÚ__init__Ú
tqdm_class)Úselfr   Ú	__class__s     €úY/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/tqdm/contrib/logging.pyr   z_TqdmLoggingHandler.__init__   s   ø€ ô 	‰ÑÔØ$ˆó    c                 óä   — 	 | j                  |«      }| j                  j                  || j                  ¬«       | j	                  «        y # t
        t        f$ r ‚  | j                  |«       Y y xY w)N)Úfile)Úformatr   ÚwriteÚstreamÚflushÚKeyboardInterruptÚ
SystemExitÚhandleError)r   ÚrecordÚmsgs      r   Úemitz_TqdmLoggingHandler.emit   s^   € ð	%Ø—+‘+˜fÓ%ˆCØO‰O×!Ñ! #¨D¯K©KÐ!Ô8ØJ‰JLøÜ!¤:Ð.ò 	Øð	%Ø×Ñ˜VÖ$ús   ‚AA Á"A/)Ú__name__Ú
__module__Ú__qualname__Ústd_tqdmr   r    Ú__classcell__)r   s   @r   r   r      s   ø„ ð õ%ö%r   r   c                 ó’   — t        | t        j                  «      xr, | j                  t        j
                  t        j                  hv S r   )Ú
isinstanceÚloggingÚStreamHandlerr   ÚsysÚstdoutÚstderr)Úhandlers    r   Ú_is_console_logging_handlerr.   #   s5   € Üw¤× 5Ñ 5Ó6ò ;Ø—‘¤3§:¡:¬s¯z©zÐ":Ð:ð<r   c                 ó0   — | D ]  }t        |«      sŒ|c S  y r   )r.   )Úhandlersr-   s     r   Ú(_get_first_found_console_logging_handlerr1   (   s   € Øò ˆÜ& wÕ/ØŠNñr   c              #   óþ  K  — | €t         j                  g} | D cg c]  }|j                  ‘Œ }}	 | D ]~  }t        |«      }t	        |j                  «      }|,|j                  |j                  «       |j                  |_        |j                  D cg c]  }t        |«      s|‘Œ c}|gz   |_        Œ€ d–— t        | |«      D ]  \  }}||_        Œ yc c}w c c}w # t        | |«      D ]  \  }}||_        Œ w xY w­w)aõ  
    Context manager redirecting console logging to `tqdm.write()`, leaving
    other logging handlers (e.g. log files) unaffected.

    Parameters
    ----------
    loggers  : list, optional
      Which handlers to redirect (default: [logging.root]).
    tqdm_class  : optional

    Example
    -------
    ```python
    import logging
    from tqdm import trange
    from tqdm.contrib.logging import logging_redirect_tqdm

    LOG = logging.getLogger(__name__)

    if __name__ == '__main__':
        logging.basicConfig(level=logging.INFO)
        with logging_redirect_tqdm():
            for i in trange(9):
                if i == 4:
                    LOG.info("console logging redirected to `tqdm.write()`")
        # logging restored
    ```
    N)
r(   Úrootr0   r   r1   ÚsetFormatterÚ	formatterr   r.   Úzip)Úloggersr   ÚloggerÚoriginal_handlers_listÚtqdm_handlerÚorig_handlerr-   Úoriginal_handlerss           r   Úlogging_redirect_tqdmr=   .   s  è ø€ ðD €Ü—<‘<.ˆØ<CÖD°&˜fŸo›oÐDÐÐDð0Øò 	NˆFÜ.¨zÓ:ˆLÜCÀFÇOÁOÓTˆLØÐ'Ø×)Ñ)¨,×*@Ñ*@ÔAØ&2×&9Ñ&9Ô#à'-§¡ö=Ø#Ü2°7Ô;ò ò=à@L¸~ñNˆFOð	Nó 	ä),¨WÐ6LÓ)Mò 	0Ñ%ˆFÐ%Ø/ˆFOñ	0ùò Eùò=øô
 *-¨WÐ6LÓ)Mò 	0Ñ%ˆFÐ%Ø/ˆFOñ	0üs9   ‚C=šC­C=°A!C ÂCÂ%C Â7!C=ÃC ÃC:Ã:C=c               /   ó  K  — |j                  «       }|j                  dd«      }|j                  dt        «      } || i |¤Ž5 }t        ||¬«      5  |–— ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w­w)ap  
    Convenience shortcut for:
    ```python
    with tqdm_class(*args, **tqdm_kwargs) as pbar:
        with logging_redirect_tqdm(loggers=loggers, tqdm_class=tqdm_class):
            yield pbar
    ```

    Parameters
    ----------
    tqdm_class  : optional, (default: tqdm.std.tqdm).
    loggers  : optional, list.
    **tqdm_kwargs  : passed to `tqdm_class`.
    r7   Nr   )r7   r   )ÚcopyÚpopr$   r=   )ÚargsÚkwargsÚtqdm_kwargsr7   r   Úpbars         r   Útqdm_logging_redirectrE   c   s   è ø€ ð, —+‘+“-€KØo‰o˜i¨Ó.€GØ—‘ ¬xÓ8€JÙ	TÐ	)˜[Ñ	)ð ¨TÜ"¨7¸zÔJñ 	ØŠJ÷	÷ð ÷	ð 	ú÷ð üs6   ‚AA?ÁA3ÁA'ÁA3Á	A?Á'A0	Á,A3Á3A<Á8A?)Ú__doc__r(   r*   Ú
contextlibr   Útypingr   r   r   r   ÚImportErrorÚstdr	   r$   r)   r   r.   r1   r=   rE   © r   r   ú<module>rL      s…   ðñó Û 
Ý %ð	ß5Ó5õ #ô%˜'×/Ñ/ô %ò&<ò
ð àØò10ó ð10ðh ñó ñøðu ò 	Ùð	ús   ’A ÁAÁA