o
    i e?                     @   sX   d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 e
dG dd	 d	eZdS )
zeBase class for wrapper layers.

Wrappers are layers that augment the functionality of another layer.
    N)Layer)serialization_lib)serialization)keras_exportzkeras.layers.Wrapperc                       sP   e Zd ZdZ fddZdddZedd Z fd	d
Ze	dddZ
  ZS )Wrappera,  Abstract wrapper base class.

    Wrappers take another layer and augment it in various ways.
    Do not use this class as a layer, it is only an abstract base class.
    Two usable wrappers are the `TimeDistributed` and `Bidirectional` wrappers.

    Args:
      layer: The layer to be wrapped.
    c                    sN   z	t |tsJ W n ty   td| dw || _t jdi | d S )NzLayer zg supplied to wrapper is not a supported layer type. Please ensure wrapped layer is a valid Keras layer. )
isinstancer   	Exception
ValueErrorlayersuper__init__)selfr   kwargs	__class__r   P/var/www/myenv/lib/python3.10/site-packages/keras/src/layers/rnn/base_wrapper.pyr   +   s   
zWrapper.__init__Nc                 C   s&   | j js| j | d| j _d| _d S )NT)r   builtbuild)r   input_shaper   r   r   r   7   s   
zWrapper.buildc                 C   s   t | jdr
| jjS d S )Nactivity_regularizer)hasattrr   r   )r   r   r   r   r   =   s   zWrapper.activity_regularizerc                    s^   z
dt | ji}W n ty   dt| ji}Y nw t  }tt|	 t|	  S )Nr   )
r   serialize_keras_objectr   	TypeErrorlegacy_serializationr   
get_configdictlistitems)r   configbase_configr   r   r   r   D   s   
zWrapper.get_configc                 C   sB   ddl m} t|}d|v}||d||d}| |fi |S )Nr   )deserializemoduler   )custom_objectsuse_legacy_format)keras.src.layersr!   copydeepcopypop)clsr   r#   deserialize_layerr$   r   r   r   r   from_configP   s   
zWrapper.from_config)N)__name__
__module____qualname____doc__r   r   propertyr   r   classmethodr+   __classcell__r   r   r   r   r      s    


r   )r/   r&   keras.src.engine.base_layerr   keras.src.savingr   keras.src.saving.legacyr   r    tensorflow.python.util.tf_exportr   r   r   r   r   r   <module>   s   