o
    9n0j,                     @   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/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      dS )Nr    logsr	   r	   Q/home/wildlama/miniconda3/envs/lam_a2e/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   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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   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   sF   | j j}|d|dd }|d ur|| jjkr!| jj|d d S d S d S )Nr,   Znb_epochr   )paramsr"   r&   r   reset)r+   r   __r1   Z
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 )NZsamplesZ	nb_sampleZsteps   r)   r   Tr   r.   )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$   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_beginJ   s4   





zTqdmCallback.on_epoch_beginc                 O   s"   t | dr
| j  | j  d S )Nr)   )r8   r)   r9   r&   )r+   r   r3   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&   notebookr>   r=   )r+   r=   r>   r)   r	   r	   r   r>   f   s   zTqdmCallback.displayc                   C   r   NTr	   r	   r	   r	   r   _implements_train_batch_hooksq      z*TqdmCallback._implements_train_batch_hooksc                   C   r   rA   r	   r	   r	   r	   r   _implements_test_batch_hooksu   rC   z)TqdmCallback._implements_test_batch_hooksc                   C   r   rA   r	   r	   r	   r	   r   _implements_predict_batch_hooksy   rC   z,TqdmCallback._implements_predict_batch_hooks)__name__
__module____qualname____doc__staticmethodr   	tqdm_autor/   r4   r;   r<   r>   rB   rD   rE   r	   r	   r	   r   r      s"    
#

)r   	functoolsr   autor   rK   r   ImportErrorAttributeErroreZ
tensorflow
__author____all__	callbacksZCallbackr   r	   r	   r	   r   <module>   s"    
