o
    [i9                     @   s   d dl mZmZ 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yF Z zzd dlm	Z	 W n	 e
y;   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 )    )absolute_importdivision)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   H/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/tqdm/keras.py<lambda>   s    zTqdmCallback.<lambda>c                    s   d fdd	}|S )Nc                    sF    } r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   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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   C       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_sizer0   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 )Nr4   nb_epochr!   )paramsr)   r-   r!   reset)r3   r   __r;   
auto_totalr   r   r   on_train_beginE   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   r1   r#   Tr   r6   )r!   r"   r$   
unit_scaler%   c                 S   r&   r'   r(   r   r   r   r   r   [   r*   z-TqdmCallback.on_epoch_begin.<locals>.<lambda>r+   r:   zUnknown verbosity)r-   r   last_print_ninitialr0   r;   r)   r/   hasattrr1   closer,   r   r2   rD   r<   KeyError)r3   r    r   r=   ebarr;   r!   r   r   r   on_epoch_beginK   s4   





zTqdmCallback.on_epoch_beginc                 O   s   | j r| j  | j  d S r   )r0   r1   rH   r-   )r3   r   r=   r   r   r   on_train_endb   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   )displayr1   )getattrr-   notebookrN   rM   )r3   rM   rN   r1   r   r   r   rN   g   s   zTqdmCallback.displayc                   C   r   NTr   r   r   r   r   _implements_train_batch_hooksr      z*TqdmCallback._implements_train_batch_hooksc                   C   r   rQ   r   r   r   r   r   _implements_test_batch_hooksv   rS   z)TqdmCallback._implements_test_batch_hooksc                   C   r   rQ   r   r   r   r   r   _implements_predict_batch_hooksz   rS   z,TqdmCallback._implements_predict_batch_hooks)__name__
__module____qualname____doc__staticmethodr   	tqdm_autor8   r?   rK   rL   rN   rR   rT   rU   r   r   r   r   r
      s"    
#

)
__future__r   r   r   	functoolsr   autor   r[   r   ImportErrorAttributeErrore
tensorflow
__author____all__	callbacksCallbackr
   r   r   r   r   <module>   s$    
