Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
1576 views


9T#X�4�@s�dZddlmZmZddlZddlmZddlmZddlm	Z	dd	d
giZ
ddgZGd
d�de	�Zdd�Z
dS)z�
GUI progressbar decorator for iterators.
Includes a default (x)range iterator printing to stderr.

Usage:
  >>> from tqdm_gui import tgrange[, tqdm_gui]
  >>> for i in tgrange(10): #same as: for i in tqdm_gui(xrange(10))
  ...     ...
�)�division�absolute_importN)�time�)�_range)�tqdmzgithub.com/�	casperdcl�lrq3000�tqdm_gui�tgrangecsjeZdZdZeejddd��Z�fdd�Zdd�Z	d	d
d�Z
dd
�Z�S)r
z+
    Experimental GUI version of tqdm!
    �
cCs|j|�|j|�dS)zH
        Print a message via tqdm_gui (just an alias for print)
        N)�write)�cls�s�file�end�r�S/projects/382bb574-6d4d-4998-962a-4389b3ceddc1/vanguard_tutorials/tqdm/_tqdm_gui.pyr
s
ztqdm_gui.writec	s�ddl}ddlj}ddlm}d|d<tt|�j||�|jsb|drfdS|j	j
d�||_||_d|_
|jjd|_d|jjd<t|jd�|_|jd	d$�\|_}|jrg|_g|_g|_n-|g�|_|g�|_|g�|_|j|j|jdd
�\|_|j|j|jdd�\|_|jdd�|jr|jdd�|jd�|jj|j|jfd%dd�|jdddddddd�|_ n:|jdd�|j!�|jd�|jd&dd�|j"�|j#|j$ra|j$ndd�|j%r�|j&ddd d!d"d'�|j'j(�j)d(�|j*�|_+|j,�||_-dS))Nr)�dequeT�guiz#Warning: GUI is experimental/alpha
�toolbar�Noneg�?�figsize�	皙����@�color�b�kg����MbP?�d�percent�cur�est�loczcenter right�xmin�xmax�g�<�secondsz
lower left�itz/s�style�sci�axis�y�	scilimitsg333333�?)rr)�curr!)r.r!)rrg333333ÿ).�
matplotlib�matplotlib.pyplot�pyplot�collectionsr�superr
�__init__�disable�fpr
�mpl�plt�sp�rcParamsr�max�mininterval�subplots�fig�total�xdata�ydata�zdata�plot�line1�line2�set_ylim�set_xlim�
set_xlabel�legend�axhspan�hspan�invert_xaxis�grid�
set_ylabel�unit�
unit_scale�ticklabel_format�yaxis�get_offset_text�set_x�
isinteractive�wasion�ion�ax)�self�args�kwargsr7r8rrX)�	__class__rrr4'sZ
						$$	



#	
ztqdm_gui.__init__c"#s~|j}|jr,x|D]}|VqWdS|j}|j}|j}|j}|j}|j}|j}	|j	}
|j
}|j}|j}
|j
}|j}|j}|j}|j}|j}|j}|j}|j}|j}xr|D]j}|V|
d7}
|
|}||kr�t���|}||kr��|
}|r�|r�|dkrf||n|||d||}|j}||}|
|}|j|r�|
d|n��|j|�|j|�|r	|dkr	|j�|j�|j�|j�\}}||ks3||kr]d|}|j||�|jjj�|rL|j ||�|j ||�y|j!j"�} WnHt#k
r�|j$ddddddd	d
�|_!|j!j"�} YnX|| d<|| d<|
||g| d<| d|g| d<t%| �d
kr9|| d<|j!j&| �n9�fdd�|D�}!|j |!|�|j |!|�|j'|j(|
||d|j)|	|||r�d|nd|�
dddd�|j*d�|rN|r||kr|||}nC|r8|r8||||d||}n||d||}|
}�}q�W||_|
|_|j+�dS)NrgY@�Bg�������?rg����MbP?r#r$rr%���csg|]}�|�qSrr)�.0�i)�cur_trr�
<listcomp>�s	z%tqdm_gui.__iter__.<locals>.<listcomp>�fontnamezDejaVu Sans Mono�fontsize�g��&�.>)rr)rr)r^r)r`r),�iterabler5r<�maxinterval�miniters�dynamic_minitersrOrP�ascii�start_t�last_print_t�last_print_n�n�	smoothing�avg_time�
bar_formatr8rXr@rArBrDrErr?�append�popleft�get_ylimrF�figure�canvas�draw�set_datarK�get_xy�AttributeErrorrJ�len�set_xy�	set_title�format_meter�desc�pause�close)"rYrh�objr<rirjrkrOrPrlrmrnrorprqrrrsr8rXr@rArBrDrE�delta_it�delta_t�elapsedr?r,�z�ymin�ymax�	poly_lims�t_agor)rcr�__iter__es�		
																						


	

	

!











!
		ztqdm_gui.__iter__rc
sD|jr
dS|dkrd}|j|7_|j|j}||jkr@t���|j}||jkr@�|j}|jr�|r�|j	dkr�||n |j||d|j|j	|_	|j
}|j}||}|j|}|jj
|r|jd|n��|jj
|�|jj
|�|rw|dkrw|jj�|jj�|jj�|j�\}	}
||
ks�||
kr�d|}
|j|	|
�|jjj�|r�|jj|j|j�|jj|j|j�y|jj�}WnKtk
rc|jjddddddd	d
�|_|jj�}YnX|	|d<|
|d<|j||
g|d<|d|	g|d<t|�d
kr�|	|d<|jj|�nH�fdd�|jD�}|jj||j�|jj||j�|j |j!|j||d|j"|j#|j$|j%|j	rcd|j	nd|j&�
dddd�|jj'd�|j(r+|j)r�||j)kr�|j|j)||_na|jr	|r	|j||j|d|j|j|_n"|j|d|j|j|_|j|_�|_dS)NrrgY@r]g�������?g����MbP?r#r$rr%r^r_r`csg|]}�|�qSrr)rarb)rcrrrd,s	z#tqdm_gui.update.<locals>.<listcomp>rezDejaVu Sans Monorfrgg��&�.>)rr)rr)r^r)r`r)*r5rprorjrrnr<rmrqrrr?rXr@rtrArBrurvrFrwrxryrDrzrErKr{r|r8rJr}r~rr�r�rlrOrPrsr�rkri)
rYrpr�r�r�r?rXr,r�r�r�r�r�r)rcr�update�s�		

		

	








	
ztqdm_gui.updatecCso|jr
dSd|_|jj|�|j|jjd<|jsO|jj�|j	sk|jj
|j�dS)NTr)r5�
_instances�removerr7r:rVr8�ioff�leaver�r>)rYrrrr�Ms			
	ztqdm_gui.close)�__name__�
__module__�__qualname__�__doc__�classmethod�sys�stdoutr
r4r�r�r�rr)r\rr
s>�dcOstt|�|�S)zl
    A shortcut for tqdm_gui(xrange(*args), **kwargs).
    On Python3+ range is used instead of xrange.
    )r
r)rZr[rrrr`s)r��
__future__rrr�r�_utilsr�_tqdmr�
__author__�__all__r
rrrrr�<module>	s�H