File: //usr/local/lib/python3.10/dist-packages/tqdm/contrib/__pycache__/logging.cpython-310.pyc
o
���g� � @ s� d Z ddlZddlZddlmZ zddlmZmZmZm Z W n e
y' Y nw ddlmZ
G dd� dej�Zd d
� Zdd� Zede
fd
d��Zedd� �ZdS )zB
Helper functionality for interoperability with stdlib `logging`.
� N)�contextmanager)�Iterator�List�Optional�Type� )�tqdmc s( e Zd Zef� fdd� Zdd� Z� ZS )�_TqdmLoggingHandlerc s t � �� || _d S �N)�super�__init__�
tqdm_class)�selfr
�� __class__� �?/usr/local/lib/python3.10/dist-packages/tqdm/contrib/logging.pyr s
z_TqdmLoggingHandler.__init__c C sT z| � |�}| jj|| jd� | �� W d S ttfy � | �|� Y d S )N)�file)�formatr
�write�stream�flush�KeyboardInterrupt�
SystemExit�handleError)r �record�msgr r r �emit s
z_TqdmLoggingHandler.emit)�__name__�
__module__�__qualname__�std_tqdmr r �
__classcell__r r r r r s �r c C s t | tj�o| jtjtjhv S r
)�
isinstance�logging�
StreamHandlerr �sys�stdout�stderr)�handlerr r r �_is_console_logging_handler# s �r* c C s | D ]
}t |�r| S qd S r
�r* )�handlersr) r r r �(_get_first_found_console_logging_handler( s
��r- c c s� � | du r t jg} dd� | D �}z;| D ]%}t|�}t|j�}|dur,|�|j� |j|_dd� |jD �|g |_qdV W t| |�D ]\}}||_qBdS t| |�D ]\}}||_qQw )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
```
Nc S s g | ]}|j �qS r )r, )�.0�loggerr r r �
<listcomp>R s z)logging_redirect_tqdm.<locals>.<listcomp>c S s g | ]}t |�s|�qS r r+ )r. r) r r r r0 Z s ��) r$ �rootr r- r, �setFormatter� formatterr �zip)�loggersr
�original_handlers_listr/ �tqdm_handler�orig_handler�original_handlersr r r �logging_redirect_tqdm. s, �"
����r: c o s� � |� � }|�dd�}|�dt�}|| i |���*}t||d�� |V W d � n1 s-w Y W d � dS W d � dS 1 sEw Y dS )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`.
r5 Nr
)r5 r
)�copy�popr! r: )�args�kwargs�tqdm_kwargsr5 r
�pbarr r r �tqdm_logging_redirectc s ���"�rA )�__doc__r$ r&