
    BVh                     :   d Z ddlmZ ddl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e      Z G d de      Z G d de      Zd Zd Zd Zd Zy)z4Utilities for Keras classes with v1 and v2 versions.    )context)ops)
LazyLoadertrainingz'tensorflow.python.keras.engine.trainingtraining_v1z*tensorflow.python.keras.engine.training_v1
base_layerz)tensorflow.python.keras.engine.base_layerbase_layer_v1z,tensorflow.python.keras.engine.base_layer_v1	callbacksz!tensorflow.python.keras.callbackscallbacks_v1z$tensorflow.python.keras.callbacks_v1c                   "     e Zd ZdZ fdZ xZS )ModelVersionSelectorz,Chooses between 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       [/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/keras/utils/version_utils.pyr   zModelVersionSelector.__new__3   s7    _F
S(..+*;*;V
DC%s3C88    __name__
__module____qualname____doc__r   __classcell__r   s   @r   r   r   0       49 9r   r   c                   "     e Zd ZdZ fdZ xZS )LayerVersionSelectorz,Chooses between 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__<   s9    _F
S***M,?,?
HC%s3C88r   r   r#   s   @r   r&   r&   9   r$   r   r&   c                   "     e Zd ZdZ fdZ xZS )TensorBoardVersionSelectorz;Chooses between 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__E   sn    _FI
Y	 5 5|7O7OCL,,,	8M8M1M $!&!!+S9#>>r   r   r#   s   @r   r*   r*   B   s    C	? 	?r   r*   c                      t        j                         ryt        j                         r>t        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)r   executing_eagerlyr   #executing_eagerly_outside_functionsget_default_graphgetattrr/   
startswith)graphs    r   r   r   Q   sU     
..0 !!#Evu%

01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   a   s    F]JVV6'' )mm d	JtV, JtV4D&&&9hhX 	"#-	*r   c                 l    t        j                         s d}|j                  | |      }t        |      y )NzCalling `{cls_name}.{method_name}` in graph mode is not supported when the `{cls_name}` instance was constructed with eager mode enabled. Please construct your `{cls_name}` instance in graph mode or call `{cls_name}.{method_name}` with eager mode enabled.)cls_namemethod_name)r   r2   format
ValueError)rC   rD   	error_msgs      r   disallow_legacy_graphrH   z   s@    		0	0	2	D 
   ( LI
Y
 
3r   c                 V    t        | t        j                  t        j                  f      S r   )
isinstancer	   r(   r   r   )objs    r   is_v1_layer_or_modelrL      s     	C---{/@/@A	BBr   N)r!   tensorflow.python.eagerr   tensorflow.python.frameworkr   +tensorflow.python.keras.utils.generic_utilsr   globalsr   r   r   r	   r
   r   r8   r   r&   r*   r   r   rH   rL    r   r   <module>rR      s     ; + + B
 	-/ 7902 ')/1
 WY24 ')	 GI*,96 996 9? ? 2 Cr   