
    kh                         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     P/var/www/teggl/fontify/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OO!!#DKK!8JJL!:. 		%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::szz"::<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&fooDD0 	NF.z:LCFOOTL')),*@*@A&2&9&9#'-=#27; =@L~NFO	N 	),W6L)M 	0%F%/FO	0 E=
 *-W6L)M 	0%F%/FO	0s9   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ooi.Gx8J	T	)[	) T"7z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0h  u  		s   A AA