
    0h=                     .   d Z ddlmc mZ ddlmZ  ed e       d      Z ed e       d      Z	 ed e       d	      Z
 ed
 e       d      Z ed e       d      Z ed e       d      Z G d d      Z G d d      Z G d d      Zd Zd Zd Zd Zy)z7Utilities for TF-Keras classes with v1 and v2 versions.    N)
LazyLoadertrainingztf_keras.src.engine.trainingtraining_v1ztf_keras.src.engine.training_v1
base_layerztf_keras.src.engine.base_layerbase_layer_v1z!tf_keras.src.engine.base_layer_v1	callbacksztf_keras.src.callbackscallbacks_v1ztf_keras.src.callbacks_v1c                   "     e Zd ZdZ fdZ xZS )ModelVersionSelectorz/Chooses between TF-Keras v1 and v2 Model class.c                     t               }t        | t        j                  t        j                  |      } t
        t        |   |       S N)should_use_v2
swap_classr   Modelr   superr   __new__clsargskwargsuse_v2	__class__s       Z/var/www/html/engine/venv/lib/python3.12/site-packages/tf_keras/src/utils/version_utils.pyr   zModelVersionSelector.__new__(   s7    hnnk.?.?H)37<<    __name__
__module____qualname____doc__r   __classcell__r   s   @r   r   r   %       9= =r   r   c                   "     e Zd ZdZ fdZ xZS )LayerVersionSelectorz/Chooses between TF-Keras v1 and v2 Layer class.c                     t               }t        | t        j                  t        j                  |      } t
        t        |   |       S r   )r   r   r   Layerr   r   r$   r   r   s       r   r   zLayerVersionSelector.__new__1   s9    j..0C0CVL)37<<r   r   r!   s   @r   r$   r$   .   r"   r   r$   c                   "     e Zd ZdZ fdZ xZS )TensorBoardVersionSelectorz>Chooses between TF-Keras v1 and v2 TensorBoard callback class.c                     t               }| }t        |t        j                  t        j                  |      } |t        j                  k(  r| t        j                  k(  r | |i |S t
        t        |   |       S r   )r   r   r   TensorBoardr	   r   r(   r   )r   r   r   r   	start_clsr   s        r   r   z"TensorBoardVersionSelector.__new__:   sq    	y,,l.F.F
 111y,,, '''/=cBBr   r   r!   s   @r   r(   r(   7   s    HC Cr   r(   c                  "   t        j                         ryt         j                  j                  j	                         rRt         j                  j                  j                         } t        | dd      r| j                  j                  d      ryyy)z-Determine if v1 or v2 version should be used.TnameFwrapped_function)	tfexecuting_eagerlycompatv1#executing_eagerly_outside_functionsget_default_graphgetattrr-   
startswith)graphs    r   r   r   J   sh    			9	9	; 		..05&%(UZZ-B-B.
 r   c                     | t         k(  r| S | ||fv r|r|S |S g }| j                  D ]@  }|rt        ||      s|st        ||      rt        ||||      }n|}|j	                  |       B t        |      | _        | S )z2Swaps in v2_cls or v1_cls depending on graph mode.)object	__bases__
issubclassr   appendtuple)r   v2_clsv1_clsr   	new_basesbasenew_bases          r   r   r   [   s    
f}

vvv+V+ I #4( z$7!$?HH"# )$CMJr   c                     t         j                  j                  j                         s d|  d| d|  d|  d|  d| d}t	        |      y )Nz	Calling `.z+` in graph mode is not supported when the `zK` instance was constructed with eager mode enabled. Please construct your `z"` instance in graph mode or call `z` with eager mode enabled.)r/   r1   r2   r3   
ValueError)cls_namemethod_name	error_msgs      r   disallow_legacy_graphrI   w   si    99<<;;=z;- 0##+* -::B D&&.Zq >"" 	 ## >r   c                 V    t        | t        j                  t        j                  f      S r   )
isinstancer   r&   r   r   )objs    r   is_v1_layer_or_modelrM      s     cM//1B1BCDDr   )r   tensorflow.compat.v2r1   v2r/    tf_keras.src.utils.generic_utilsr   globalsr   r   r   r   r   r	   r   r$   r(   r   r   rI   rM    r   r   <module>rS      s     > ! ! 7
 j')-KL79? gi1QR
WY C {GI/GH	.')5PQ= == =C C&"8	$Er   