
    6biN                     l    S r SSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  \
" S5       " S S	\5      5       rg)
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                   f   ^  \ rS rSrSrU 4S jrS	S jr\S 5       rU 4S jr	\
S	S j5       rSrU =r$ )
Wrapper   a  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                    >  [        U[        5      (       d   e Xl        [
        TU ]  " S0 UD6  g ! [         a    [        SU S35      ef = f)NzLayer zj supplied to wrapper is not a supported layer type. Please ensure wrapped layer is a valid TF-Keras layer. )
isinstancer   	Exception
ValueErrorlayersuper__init__)selfr   kwargs	__class__s      ^/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/layers/rnn/base_wrapper.pyr   Wrapper.__init__+   sc    	eU++++ 
"6"  	  C C 	s	   2 Ac                     U R                   R                  (       d,  U R                   R                  U5        SU R                   l        SU l        g )NT)r   builtbuild)r   input_shapes     r   r   Wrapper.build7   s4    zzJJ[)#DJJ
    c                 f    [        U R                  S5      (       a  U R                  R                  $ g )Nactivity_regularizer)hasattrr   r   )r   s    r   r   Wrapper.activity_regularizer=   s'    4::566::222r   c                 B  >  S[         R                  " U R                  5      0n[
        TU ]  5       n[        [        UR                  5       5      [        UR                  5       5      -   5      $ ! [         a%    S[        R                  " U R                  5      0n Nxf = f)Nr   )
r   serialize_keras_objectr   	TypeErrorlegacy_serializationr   
get_configdictlistitems)r   configbase_configr   s      r   r%   Wrapper.get_configD   s    	*AA$**MF g(*D**,-V\\^0DDEE  	-DDTZZPF	s   "A/ /,BBc                     SSK Jn  [        R                  " U5      nSU;  nU" UR	                  S5      UUS9nU " U40 UD6$ )Nr   )deserializemoduler   )custom_objectsuse_legacy_format)tf_keras.src.layersr-   copydeepcopypop)clsr)   r/   deserialize_layerr0   r   s         r   from_configWrapper.from_configP   sN    H v&$F2!JJw)/

 5#F##r   )r   r   )N)__name__
__module____qualname____firstlineno____doc__r   r   propertyr   r%   classmethodr7   __static_attributes____classcell__)r   s   @r   r   r      s@    
#  
F $ $r   r   )r=   r2   tf_keras.src.engine.base_layerr   tf_keras.src.savingr   tf_keras.src.saving.legacyr   r$    tensorflow.python.util.tf_exportr   r   r   r   r   <module>rF      s>     0 1 L : $%<$e <$ &<$r   