U
    ¸mœd  ã                   @   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   úC/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/tqdm/keras.pyÚ<lambda>   ó    zTqdmCallback.<lambda>c                    s   d‡ ‡‡fdd„	}|S )Nc                    sF   ˆˆ ƒ}ˆ r8ˆr*t ˆ ƒ‰ ‡ fdd„ˆD ƒ ˆjˆ dd� ˆ |¡ d S )Nc                    s   g | ]}ˆ   |d ¡‘qS )r   )Úpop)Ú.0Úir	   r   r   Ú
<listcomp>   s     z?TqdmCallback.bar2callback.<locals>.callback.<locals>.<listcomp>F)Úrefresh)r   Zset_postfixÚupdate)Ú_r
   Ún©Ú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   A   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   Ú__r1   Z
auto_totalr   r   r   Úon_train_beginC   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   Y   r   z-TqdmCallback.on_epoch_begin.<locals>.<lambda>r$   r0   zUnknown verbosity)r&   r   Zlast_print_nÚinitialr(   r1   r#   r'   Úhasattrr)   Úcloser%   r   r*   r6   r2   ÚKeyError)r+   r   r   r3   Zebarr1   r   r   r   r   Úon_epoch_beginI   s:     ÿÿ


  þ þ

zTqdmCallback.on_epoch_beginc                 O   s   | j r| j ¡  | j ¡  d S )N)r(   r)   r9   r&   )r+   r   r3   r   r   r   Úon_train_end`   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&   Únotebookr>   r=   )r+   r=   r>   r)   r   r   r   r>   e   s    zTqdmCallback.displayc                   C   s   dS ©NTr   r   r   r   r   Ú_implements_train_batch_hooksp   s    z*TqdmCallback._implements_train_batch_hooksc                   C   s   dS rA   r   r   r   r   r   Ú_implements_test_batch_hookst   s    z)TqdmCallback._implements_test_batch_hooksc                   C   s   dS rA   r   r   r   r   r   Ú_implements_predict_batch_hooksx   s    z,TqdmCallback._implements_predict_batch_hooks)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   Ú	tqdm_autor/   r4   r;   r<   r>   rB   rC   rD   r   r   r   r   r      s    ÿ
#

)r   Ú	functoolsr   Úautor   rJ   r   ÚImportErrorÚAttributeErrorÚeZ
tensorflowÚ
__author__Ú__all__Ú	callbacksZCallbackr   r   r   r   r   Ú<module>   s   
