o
    2h                     @   s   d dl Z G dd dZdS )    Nc                   @   s(   e Zd Zdd Zedd Zdd ZdS )KerasSaveablec                 C   s   t d)NzGKerasSaveable subclases must provide an implementation for `obj_type()`)NotImplementedError)self r   Z/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/saving/keras_saveable.py	_obj_type
   s   zKerasSaveable._obj_typec                 C   s*   dd l m  m  m} |j|d dddS )Nr   TF)custom_objectscompile	safe_mode)keras.src.saving.saving_libsrcsaving
saving_lib_load_model_from_fileobj)clsbytesior   r   r   r   _unpickle_model   s   zKerasSaveable._unpickle_modelc                 C   s:   ddl m  m  m} t }|| |d | j|ffS )z__reduce__ is used to customize the behavior of `pickle.pickle()`.

        The method returns a tuple of two elements: a function, and a list of
        arguments to pass to that function.  In this case we just leverage the
        keras saving library.r   Nh5)r   r   r   r   ioBytesIO_save_model_to_fileobjr   )r   r   bufr   r   r   
__reduce__   s   zKerasSaveable.__reduce__N)__name__
__module____qualname__r   classmethodr   r   r   r   r   r   r      s
    
r   )r   r   r   r   r   r   <module>   s    