3
d5,              7   @   s6  d Z ddlmZmZ ddlZddlZddlmZ ddlm	Z
 ddlmZ dZyddlZdZW nh ek
r   d	ZddlZej : ejd
dd yddljjZW n ek
r   Y nX W dQ R X Y nX yZed	krddlmZ ddlmZ ddlmZ dZn$ddlmZ ddlmZ ddlmZ W nf ek
r   y,ddlmZ ddlmZ ddlmZ dZW n" ek
r   dZdZeZY nX Y nX yddlmZ W n ek
r   Y nX yddlmZ W n" ek
r   ddl mZ Y nX ddddgiZ!ddddgZ"dZ#G dd  d eZ$G d!d de
Z%d"d Z&e%Z	e&Z'dS )#z
IPython/Jupyter Notebook progressbar decorator for iterators.
Includes a default `range` iterator printing to `stderr`.

Usage:
>>> from tqdm.notebook import trange, tqdm
>>> for i in trange(10):
...     ...
    )absolute_importdivisionN)proxy   )tqdm)_range       ignorez2.*The `IPython.html` package has been deprecated.*)message)HTML)FloatProgress)HBox   )ContainerWidget)FloatProgressWidget   )display)escapezgithub.com/Zlrq3000Z	casperdclZalexanderkuktqdm_notebooktnranger   trangez|IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.htmlc                   s4   e Zd ZdZd
ddZd fdd	Zdd	 Z  ZS )TqdmHBoxz.`ipywidgets.HBox` with a pretty representationNc             C   s4   t | dd }|d kri S |j}|d k	r0| |d< |S )Npbarascii)getattrformat_dict)selfprettyr   d r    -/tmp/pip-build-v9q4h5k9/tqdm/tqdm/notebook.py_json_Q   s    
zTqdmHBox._json_Fc                s4   t | dd }|d kr"tt| j S |jf | j|S )Nr   )r   superr   __repr__format_meterr"   )r   r   r   )	__class__r    r!   r$   Z   s    zTqdmHBox.__repr__c             O   s   |j | jd d S )NT)textr$   )r   pp___r    r    r!   _repr_pretty_`   s    zTqdmHBox._repr_pretty_)N)F)__name__
__module____qualname____doc__r"   r$   r+   __classcell__r    r    )r&   r!   r   O   s   
	r   c                   s   e Zd ZdZedddZdddZed	d
 Zej	dd
 Z fddZ
 fddZd fdd	Z fddZdd Zd fdd	Z  ZS )r   zB
    Experimental IPython/Jupyter Notebook widget using tqdm!
    Nc             C   s   t dkrtt|r"t d|d}n(t ddd}d|_d|_|dkrJd|j_t }t }|r`||_t|||gd}|dk	rt	|}yt
|dkr|d7 }W n tk
r   Y nX d	|j_||j_d
|j_d|j_|S )zY
        Manage the printing of an IPython/Jupyter Notebook progress bar widget.
        Nr   )minmaxr   infoZ20px)childrenZpx2zinline-flexzrow wrap)	IProgressImportErrorWARN_NOIPYWvalue	bar_stylelayoutwidthr   r   strint
ValueErrorZflexr   Z	flex_flow)r)   totaldescncolsr   ltextrtext	containerr    r    r!   status_printerh   s4    ztqdm_notebook.status_printerFTc             C   s   | r6| r6| j }|d pdjdd|d< | jf |}| jj\}}}	| j|_|rd|krrttt	j
d|d\}
}ndt| }
}|
|_|r||	_|r|jdks|d	kr||_|r|jdkry| jj  W n tk
r   d
| j_Y nX d| jj_|r| jdkr| j rt| j d| _d S )NZ
bar_formatz{l_bar}<bar/>{r_bar}z{bar}z<bar/>z\|?<bar/>\|?r    dangersuccessFhiddenr   T)r   replacer%   rE   r4   nr9   mapr   resplitr:   closeAttributeErrorZvisibler;   Z
visibilitydelay	displayedr   )r   msgposrP   r:   check_delayr   rC   r   rD   leftrightr    r    r!   r      s4    


ztqdm_notebook.displayc             C   s   t | dr| jjd jjS d S )NrE   r   )hasattrrE   r4   style	bar_color)r   r    r    r!   colour   s    
ztqdm_notebook.colourc             C   s   t | dr|| jjd j_d S )NrE   r   rY   )rZ   rE   r4   r[   r\   )r   r\   r    r    r!   r]      s    
c                sN  |j  }|jdtj}|tjks(|dkr2tj|d< d|d< t|jdd|d< |jdd}|jdd}tt| j	|| | j
s|d  rd	d
 | _dS | jrdn
|jdd| _| jdkrdn| jpd}| jr| j| n| j}| j| j|| j| j| _t| | j_d| _|r(| jdkr(t| j d| _| j| _|| _| j
sJ| jdd dS )z
        Supports the usual `tqdm.tqdm` parameters as well as those listed below.

        Parameters
        ----------
        display  : Whether to call `display(self.container)` immediately
            [default: True].
        fileNTguidisableFr]   r   c              _   s   d S )Nr    )r)   r*   r    r    r!   <lambda>   s    z(tqdm_notebook.__init__.<locals>.<lambda>z100%rB   r   r   )rV   )copygetsysstderrstdoutboolpopr#   r   __init__r`   dispZdynamic_ncolsrB   
unit_scaler@   rF   fprA   rE   r   r   rS   rR   r   r]   )r   argskwargsZ
file_kwargr]   Zdisplay_hererk   r@   )r&   r    r!   ri      s2    	


ztqdm_notebook.__init__c          	   #   sF   y&t t| j }x|D ]
}|V  qW W n   | jdd  Y nX d S )NrH   )r:   )r#   r   __iter__rj   )r   itobj)r&   r    r!   ro      s    
ztqdm_notebook.__iter__r   c          	      s2   yt t| j|dS    | jdd  Y nX d S )N)rL   rH   )r:   )r#   r   updaterj   )r   rL   )r&   r    r!   rr     s
    ztqdm_notebook.updatec                sb   | j r
d S tt| j  | jr:| j| jk r:| jddd n$| jrP| jddd n| jddd d S )NrH   F)r:   rV   rI   T)rP   rV   )r`   r#   r   rP   r@   rL   rj   Zleave)r   )r&   r    r!   rP     s    ztqdm_notebook.closec             O   s   d S )Nr    )r   r)   r*   r    r    r!   clear'  s    ztqdm_notebook.clearc                sf   | j rtt| j|dS | jj\}}}d|_|dk	rT||_| j rT| j	dkrTd|j
_tt| j|dS )z
        Resets to 0 iterations for repeated use.

        Consider combining with `leave=True`.

        Parameters
        ----------
        total  : int or float, optional. Total to use for the new bar.
        )r@   rG   N)r`   r#   r   resetrE   r4   r:   r2   r@   rB   r;   r<   )r   r@   r)   r   )r&   r    r!   rt   *  s    
ztqdm_notebook.reset)NNN)NNFNT)r   )N)r,   r-   r.   r/   staticmethodrF   r   propertyr]   setterri   ro   rr   rP   rs   rt   r0   r    r    )r&   r!   r   d   s   , 
2-c              O   s   t t|  f|S )z}
    A shortcut for `tqdm.notebook.tqdm(xrange(*args), **kwargs)`.
    On Python3+, `range` is used instead of `xrange`.
    )r   r   )rm   rn   r    r    r!   r   ?  s    )(r/   
__future__r   r   rN   rd   weakrefr   Zstdr   Zstd_tqdmutilsr   ZIPYZ
ipywidgetsr7   warningscatch_warningsfilterwarningsZIPython.html.widgetshtmlZwidgetsr   r   r6   r   r   r   objectZIPython.displayr   r   cgi
__author____all__r8   r   r   r   r   r    r    r    r!   <module>	   sp   

 \	