U
    ·ÜŸj,  ã                   @   sª   d dl m Z  d dlmZ ddlmZ zd dlZW nP eefk
r€ Z	 z.zd dl
mZ W n ek
rn   e	‚Y nX W 5 dZ	[	X Y nX ddgiZd	gZG d
d	„ d	ejjƒZdS )é    )Úcopy)Úpartialé   )ÚtqdmN)Úkeraszgithub.com/Z	casperdclÚTqdmCallbackc                   @   s~   e Zd ZdZeddd„ fdd„ƒZddddefdd	„Zd
d„ Zdd„ Z	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZdS )r   z,Keras callback for epoch and batch progress.Nc                 C   s   dS )Nr   © ©Úlogsr   r   ú./tmp/pip-unpacked-wheel-ktn_y856/tqdm/keras.pyÚ<lambda>   ó    zTqdmCallback.<lambda>c                    s   d‡ ‡‡fdd„	}|S )Nc                    sJ   ˆ|ƒ}|r<ˆr.t |ƒ}ˆD ]}| |d¡ qˆ j|dd� ˆ  |¡ d S )Nr   F)Zrefresh)r   ÚpopZset_postfixÚupdate)Ú_r
   ÚnÚi©ÚbarÚdeltar   r   r   Úcallback   s    z+TqdmCallback.bar2callback.<locals>.callback)Nr   )r   r   r   r   r   r   r   Úbar2callback   s    
zTqdmCallback.bar2callbackr   c                 K   sš   |rt |f|Ž}|| _||dd�| _|  | j¡| _|rR|rR|| d |  | _}n
d | _}|| _|dkr–||ddd�| _| j| jddgd	d
„ d�| _dS )a^  
        Parameters
        ----------
        epochs  : int, optional
        data_size  : int, optional
            Number of training pairs.
        batch_size  : int, optional
            Number of training pairs per batch.
        verbose  : int
            0: epoch, 1: batch (transient), 2: batch. [default: 1].
            Will be set to `0` unless both `data_size` and `batch_size`
            are given.
        tqdm_class  : optional
            `tqdm` class to use for bars [default: `tqdm.auto.tqdm`].
        tqdm_kwargs  : optional
            Any other arguments used for all bars.
        Úepoch)ÚtotalÚunitr   NÚbatchF)r   r   ÚleaveÚsizec                 S   s   |   dd¡S ©Nr   r   ©Úgetr	   r   r   r   r   B   r   z'TqdmCallback.__init__.<locals>.<lambda>©r   r   )	r   Ú
tqdm_classÚ	epoch_barr   Zon_epoch_endÚbatchesÚverboseÚ	batch_barÚon_batch_end)ÚselfÚepochsÚ	data_sizeÚ
batch_sizer%   r"   Ztqdm_kwargsr$   r   r   r   Ú__init__!   s     
 þzTqdmCallback.__init__c                 O   s>   | j j}|d|dd ƒƒ}|d k	r:|| jjkr:| jj|d� d S )Nr)   Znb_epoch©r   )Úparamsr    r#   r   Úreset)r(   r   Ú__r.   Z
auto_totalr   r   r   Úon_train_beginD   s    zTqdmCallback.on_train_beginc                 O   sè   | j j|k r$| j }| |_ |_|_| jrä| jj}|d|d|dd ƒƒƒpL| j}| jdkr¬t| dƒrl| j	 
¡  | j|ddd|d	dƒp„d d
�| _	| j| j	ddgdd„ d�| _n8| jdkrÜd|d	dƒpÄd | j	_| j	j|d� ntdƒ‚d S )NZsamplesZ	nb_sampleZstepsé   r&   r   Tr   r+   )r   r   r   Ú
unit_scaler   c                 S   s   |   dd¡S r   r   r	   r   r   r   r   Z   r   z-TqdmCallback.on_epoch_begin.<locals>.<lambda>r!   r-   zUnknown verbosity)r#   r   Zlast_print_nÚinitialr%   r.   r    r$   Úhasattrr&   Úcloser"   r   r'   r3   r/   ÚKeyError)r(   r   r   r0   Zebarr.   r   r   r   r   Úon_epoch_beginJ   s:     ÿÿ


  þ þ

zTqdmCallback.on_epoch_beginc                 O   s"   t | dƒr| j ¡  | j ¡  d S )Nr&   )r5   r&   r6   r#   )r(   r   r0   r   r   r   Úon_train_enda   s    

zTqdmCallback.on_train_endc                 C   sP   t | jddƒ}|dkrdS ddlm} ||ƒ t | ddƒ}|dk	rL||jƒ dS )z*Displays in the current cell in Notebooks.Ú	containerNr   )Údisplayr&   )Úgetattrr#   Znotebookr;   r:   )r(   r:   r;   r&   r   r   r   r;   f   s    zTqdmCallback.displayc                   C   s   dS ©NTr   r   r   r   r   Ú_implements_train_batch_hooksq   s    z*TqdmCallback._implements_train_batch_hooksc                   C   s   dS r=   r   r   r   r   r   Ú_implements_test_batch_hooksu   s    z)TqdmCallback._implements_test_batch_hooksc                   C   s   dS r=   r   r   r   r   r   Ú_implements_predict_batch_hooksy   s    z,TqdmCallback._implements_predict_batch_hooks)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   Ú	tqdm_autor,   r1   r8   r9   r;   r>   r?   r@   r   r   r   r   r      s    ÿ
#

)r   Ú	functoolsr   Úautor   rF   r   ÚImportErrorÚAttributeErrorÚeZ
tensorflowÚ
__author__Ú__all__Ú	callbacksZCallbackr   r   r   r   r   Ú<module>   s   
