a
    Sic                     @   s   d Z ddlm  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ZG dd dZG dd dZdd Zdd Zdd Zdd ZdS )z4Utilities for Keras classes with v1 and v2 versions.    N)
LazyLoadertrainingzkeras.engine.trainingtraining_v1zkeras.engine.training_v1
base_layerzkeras.engine.base_layerbase_layer_v1zkeras.engine.base_layer_v1	callbackszkeras.callbackscallbacks_v1zkeras.callbacks_v1c                       s    e Zd ZdZ fddZ  ZS )ModelVersionSelectorz,Chooses between Keras v1 and v2 Model class.c                    s(   t  }t| tjtj|} tt| | S N)should_use_v2
swap_classr   Modelr   superr	   __new__clsargskwargsuse_v2	__class__ U/var/www/html/django/DPS/env/lib/python3.9/site-packages/keras/utils/version_utils.pyr   &   s    zModelVersionSelector.__new____name__
__module____qualname____doc__r   __classcell__r   r   r   r   r	   #   s   r	   c                       s    e Zd ZdZ fddZ  ZS )LayerVersionSelectorz,Chooses between Keras v1 and v2 Layer class.c                    s(   t  }t| tjtj|} tt| | S r
   )r   r   r   Layerr   r   r   r   r   r   r   r   r   /   s    zLayerVersionSelector.__new__r   r   r   r   r   r   ,   s   r   c                       s    e Zd ZdZ fddZ  ZS )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   TensorBoardr   r   r!   r   )r   r   r   r   	start_clsr   r   r   r   8   s    z"TensorBoardVersionSelector.__new__r   r   r   r   r   r!   5   s   r!   c                  C   sL   t  rdS t jj rDt jj } t| ddr@| jdr@dS dS dS dS )z-Determine if v1 or v2 version should be used.TnameFwrapped_functionN)	tfexecuting_eagerlycompatv1#executing_eagerly_outside_functionsget_default_graphgetattrr$   
startswith)graphr   r   r   r   H   s    r   c                 C   s|   | t kr| S | ||fv r$|r |S |S g }| jD ]>}|r@t||sN|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   v2_clsv1_clsr   	new_basesbasenew_baser   r   r   r   Y   s&    


r   c                 C   sB   t jj s>d|  d| d|  d|  d|  d| d}t|d S )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&   r(   r)   r*   
ValueError)cls_namemethod_name	error_msgr   r   r   disallow_legacy_graphu   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    rA   )r   tensorflow.compat.v2r(   v2r&   keras.utils.generic_utilsr   globalsr   r   r   r   r   r   r	   r   r!   r   r   r>   rA   r   r   r   r   <module>   s"   		