o
    ?e                     @   s   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 deZG dd deZG dd deZdd Zdd Zdd Zdd ZdS ) 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dZ  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__ l/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/keras/utils/version_utils.pyr   3      zModelVersionSelector.__new____name__
__module____qualname____doc__r   __classcell__r   r   r   r   r   0       r   c                       r   )LayerVersionSelectorz,Chooses between Keras v1 and v2 Layer class.c                    r   r   )r   r   r   Layerr   r   r%   r   r   r   r   r   r   <   r   zLayerVersionSelector.__new__r   r   r   r   r   r%   9   r$   r%   c                       r   )TensorBoardVersionSelectorz;Chooses between Keras v1 and v2 TensorBoard callback class.c                    sN   t  }| }t|tjtj|} |tjkr| tjkr| |i |S tt| | S r   )r   r   r	   ZTensorBoardr
   r   r'   r   )r   r   r   r   Z	start_clsr   r   r   r   E   s   z"TensorBoardVersionSelector.__new__r   r   r   r   r   r'   B   r$   r'   c                  C   s@   t  rdS t rt } t| ddr| jdrdS dS dS )z-Determine if v1 or v2 version should be used.TnameFZwrapped_function)r   Zexecuting_eagerlyr   #executing_eagerly_outside_functionsZget_default_graphgetattrr(   
startswith)graphr   r   r   r   Q   s   
r   c                 C   s|   | t kr| S | ||fv r|r|S |S g }| jD ]}|r t||s'|s/t||r/t||||}n|}|| qt|| _| S )z2Swaps in v2_cls or v1_cls depending on graph mode.)object	__bases__
issubclassr   appendtuple)r   Zv2_clsZv1_clsr   	new_basesbasenew_baser   r   r   r   a   s    

r   c                 C   s&   t  sd}|j| |d}t|d S )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   r)   format
ValueError)r5   r6   	error_msgr   r   r   disallow_legacy_graphz   s   r:   c                 C   s   t | tjtjfS r   )
isinstancer   r&   r   r   )objr   r   r   is_v1_layer_or_model   s   r=   N)r"   Ztensorflow.python.eagerr   Ztensorflow.python.frameworkr   Z+tensorflow.python.keras.utils.generic_utilsr   globalsr   r   r   r   r	   r
   r-   r   r%   r'   r   r   r:   r=   r   r   r   r   <module>   sF   		