o
    Œõ±j,  ã                   @   s¦   d dl m Z  d dlmZ ddlmZ zd dlZW n& eefy> Z	 zzd dl
mZ W n	 ey3   e	‚w W Y dZ	[	ndZ	[	ww ddgiZd	gZG d
d	„ d	ejjƒZdS )é    )Úcopy)Úpartialé   )ÚtqdmN)Úkeraszgithub.com/Ú	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   ó   dS )Nr   © ©Úlogsr
   r
   ú}/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/tqdm/keras.pyÚ<lambda>   s    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)Úrefresh)r   ÚpopÚ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i |¤Ž}|| _||dd�| _|  | j¡| _|r+|r+|| d |  | _}nd | _}|| _|dkrO||ddd�| _| j| jddgd	d
„ d�| _dS 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   ó   |   dd¡S ©Nr    r   ©Úgetr   r
   r
   r   r   B   ó    z'TqdmCallback.__init__.<locals>.<lambda>©r   r   )	r   Ú
tqdm_classÚ	epoch_barr   Úon_epoch_endÚbatchesÚverboseÚ	batch_barÚon_batch_end)ÚselfÚepochsÚ	data_sizeÚ
batch_sizer+   r'   Útqdm_kwargsr*   r
   r
   r   Ú__init__!   s    

þþzTqdmCallback.__init__c                 O   sF   | j j}|d|dd ƒƒ}|d ur|| jjkr!| jj|d� d S d S d S )Nr/   Únb_epoch©r   )Úparamsr$   r(   r   Úreset)r.   r   Ú__r6   Ú
auto_totalr
   r
   r   Úon_train_beginD   s
   ÿzTqdmCallback.on_train_beginc                 O   sì   | j j|k r| j }| |_ |_|_| jrt| jj}|d|d|dd ƒƒƒp&| j}| jdkrWt| dƒr6| j	 
¡  | j|ddd|d	dƒpBd d
�| _	| j| j	ddgdd„ d�| _d S | jdkrpd|d	dƒpcd | j	_| j	j|d� d S tdƒ‚d S )NÚsamplesÚ	nb_sampleÚstepsé   r,   r   Tr   r1   )r   r   r   Ú
unit_scaler    c                 S   r!   r"   r#   r   r
   r
   r   r   Z   r%   z-TqdmCallback.on_epoch_begin.<locals>.<lambda>r&   r5   zUnknown verbosity)r(   r   Úlast_print_nÚinitialr+   r6   r$   r*   Úhasattrr,   Úcloser'   r   r-   r?   r7   ÚKeyError)r.   r   r   r8   Úebarr6   r   r
   r
   r   Úon_epoch_beginJ   s4   
ÿÿ


þ
þ
ïzTqdmCallback.on_epoch_beginc                 O   s"   t | dƒr
| j ¡  | j ¡  d S )Nr,   )rB   r,   rC   r(   )r.   r   r8   r
   r
   r   Úon_train_enda   s   

zTqdmCallback.on_train_endc                 C   sT   t | jddƒ}|du rdS ddlm} ||ƒ t | ddƒ}|dur(||jƒ dS dS )z*Displays in the current cell in Notebooks.Ú	containerNr   )Údisplayr,   )Úgetattrr(   ÚnotebookrI   rH   )r.   rH   rI   r,   r
   r
   r   rI   f   s   ÿzTqdmCallback.displayc                   C   r	   ©NTr
   r
   r
   r
   r   Ú_implements_train_batch_hooksq   ó   z*TqdmCallback._implements_train_batch_hooksc                   C   r	   rL   r
   r
   r
   r
   r   Ú_implements_test_batch_hooksu   rN   z)TqdmCallback._implements_test_batch_hooksc                   C   r	   rL   r
   r
   r
   r
   r   Ú_implements_predict_batch_hooksy   rN   z,TqdmCallback._implements_predict_batch_hooks)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   Ú	tqdm_autor3   r:   rF   rG   rI   rM   rO   rP   r
   r
   r
   r   r      s"    
ÿ#

)r   Ú	functoolsr   Úautor   rV   r   ÚImportErrorÚAttributeErrorÚeÚ
tensorflowÚ
__author__Ú__all__Ú	callbacksÚCallbackr   r
   r
   r
   r   Ú<module>   s"    ÿÿ€þ
