
    h                         S r SSKrSSKrSSKJr   SSKJrJrJrJ	r	  SSKJr   " S S\R                  5      rS	 rS
 r\S\4S j5       r\S 5       rg! \
 a     N>f = f)zB
Helper functionality for interoperability with stdlib `logging`.
    N)contextmanager)IteratorListOptionalType   )tqdmc                   4   ^  \ rS rSr\4U 4S jjrS rSrU =r$ )_TqdmLoggingHandler   c                 .   > [         TU ]  5         Xl        g N)super__init__
tqdm_class)selfr   	__class__s     F/var/www/html/env/lib/python3.13/site-packages/tqdm/contrib/logging.pyr   _TqdmLoggingHandler.__init__   s     	$    c                      U R                  U5      nU R                  R                  X R                  S9  U R	                  5         g ! [
        [        4 a    e   U R                  U5         g = f)N)file)formatr   writestreamflushKeyboardInterrupt
SystemExithandleError)r   recordmsgs      r   emit_TqdmLoggingHandler.emit   s\    	%++f%COO!!#KK!8JJL!:. 		%V$s   AA #A,)r   )	__name__
__module____qualname____firstlineno__std_tqdmr   r"   __static_attributes____classcell__)r   s   @r   r   r      s     %% %r   r   c                     [        U [        R                  5      =(       a-    U R                  [        R
                  [        R                  1;   $ r   )
isinstanceloggingStreamHandlerr   sysstdoutstderr)handlers    r   _is_console_logging_handlerr3   #   s5    w 5 56 ;3::szz"::<r   c                 >    U  H  n[        U5      (       d  M  Us  $    g r   )r3   )handlersr2   s     r   (_get_first_found_console_logging_handlerr6   (   s    &w//N r   c              #     #    U c  [         R                  /n U  Vs/ s H  o"R                  PM     nn U  H  n[        U5      n[	        UR                  5      nUb,  UR                  UR                  5        UR                  Ul        UR                   Vs/ s H  n[        U5      (       a  M  UPM     snU/-   Ul        M     Sv   [        X5       H  u  p'Xrl        M     gs  snf s  snf ! [        X5       H  u  p'Xrl        M     f = f7f)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-   rootr5   r   r6   setFormatter	formatterr   r3   zip)loggersr   loggeroriginal_handlers_listtqdm_handlerorig_handlerr2   original_handlerss           r   logging_redirect_tqdmrB   .   s     D <<.<CDG&ooGD0F.z:LCFOOTL')),*@*@A&2&9&9#'-='6G27; =@L~NFO  	),W)M%F/O *N E=
 *-W)M%F/O *Ns?   DC"DA"C, C'-C'3C,  D'C, ,DDc               /     #    UR                  5       nUR                  SS5      nUR                  S[        5      nU" U 0 UD6 n[        X4S9   Uv   SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f7f)a@  
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`.
r<   Nr   )r<   r   )copypopr(   rB   )argskwargstqdm_kwargsr<   r   pbars         r   tqdm_logging_redirectrJ   c   sk     , ++-Kooi.Gx8J	T	)[	)T"7JJ K 
*	)JJ 
*	)s6   AB
A4A#A4	B#
A1	-A44
B>B)__doc__r-   r/   
contextlibr   typingr   r   r   r   ImportErrorstdr	   r(   r.   r   r3   r6   rB   rJ    r   r   <module>rQ      s     
 %	55 #%'// %&<
 10 10h  u  		s   A AA