
    BVh                     p    d Z ddlZddlZddlZddlmZ dZ G d dej                        Z	 G d de	      Z
y)	zA LazyLoader class.    N)
tf_logging_tfllc                   V     e Zd ZdZd
 fd	Zd Zd Z fdZ fdZd Z	d Z
d	 Z xZS )
LazyLoaderzLazily import a module, mainly to avoid pulling in large dependencies.

  `contrib`, and `ffmpeg` are examples of modules that are large and not always
  needed, and this allows them to only be loaded when they are used.
  c                     || _         || _        || _        t        |   d|j                  dd      d          t        |   dd        t        |   |       y )N
__module__.   r   __wrapped__)_tfll_local_name_tfll_parent_module_globals_tfll_warningsuper__setattr__rsplit__init__)self
local_nameparent_module_globalsnamewarning	__class__s        R/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/util/lazy_loader.pyr   zLazyLoader.__init__"   sX    &D'<D$ D 
Gdkk#q&9!&<=	Gt,	GT    c                 $   t        j                  | j                        }|| j                  | j                  <   | j
                  r&t        j                  | j
                         d| _        | j                  j                  |j                         |S )z8Load the module and insert it into the parent's globals.N)
	importlibimport_module__name__r   r   r   loggingr   __dict__updater   modules     r   _loadzLazyLoader._load1   sp     $$T]]3F>DD$$T%:%:; ood(()d
 	MM)Mr   c                 :    | j                         }t        ||      S N)r$   getattr)r   r   r#   s      r   __getattr__zLazyLoader.__getattr__D   s    ZZ\F64  r   c                 *   |j                  t              rt        |   ||       y | j	                         }t        |||       || j                  |<   	 || j                  vr"|dk7  r| j                  j                  |       y y y # t        $ r Y y w xY w)N__all__)

startswith_TENSORFLOW_LAZY_LOADER_PREFIXr   r   r$   setattrr    r*   appendAttributeError)r   r   valuer#   r   s       r   r   zLazyLoader.__setattr__H   s    56g$&zz|ffdE"!dmmDt||#	(9
,,

d
# ):# s   .B 	BBc                 2   |j                  t              rt        |   |       y | j	                         }t        ||       | j                  j                  |       	 || j                  v r| j                  j                  |       y y # t        $ r Y y w xY wr&   )r+   r,   r   __delattr__r$   delattrr    popr*   remover/   )r   r   r#   r   s      r   r2   zLazyLoader.__delattr__V   s~    56g$zz|ffd
mm4<<
,,

d
#   s   )B
 
	BBc                 <    d| j                    d| j                   dS )Nz<LazyLoader  as >)r   r   r   s    r   __repr__zLazyLoader.__repr__d   s$     $--T-B-B,C1EEr   c                 8    | j                         }t        |      S r&   )r$   dirr"   s     r   __dir__zLazyLoader.__dir__i   s    ZZ\Fv;r   c                 <    t         j                  | j                  ffS r&   )r   r   r   r9   s    r   
__reduce__zLazyLoader.__reduce__m   s    ""T]]$444r   r&   )r   r   __qualname____doc__r   r$   r(   r   r2   r:   r=   r?   __classcell__r   s   @r   r   r      s1    &!F
5r   r   c                   F     e Zd ZdZ	 ddZ fdZ fdZd Z fdZ xZ	S )KerasLazyLoaderz;LazyLoader that handles routing to different Keras version.c                 J    || _         || _        || _        || _        d| _        y )NF)r   
_tfll_mode_tfll_submodule
_tfll_name_tfll_initialized)r   r   mode	submoduler   s        r   r   zKerasLazyLoader.__init__t   s(    '<D$DO$DDO"Dr   c                 4   d| _         d}d}t        j                  j                  dd      dv r	 ddl}d}| j
                  dk(  rd}nd	}n;	 ddl	}|j                  j                  d      rd}d}nd}| j
                  dk(  rd}nd}|| _        |D| j                  |d| j                  z   z  }t        | =  | j                   | j"                  |       yt        d      # t        $ r t        j                  d
       Y xw xY w# t        $ r t        d      w xY w)z;Resolve the Keras version to use and initialize the loader.TNTF_USE_LEGACY_KERAS)trueTrue1r   tf_kerasv1ztf_keras.api._v1.kerasztf_keras.api._v2.keraszYour environment has TF_USE_LEGACY_KERAS set to True, but you do not have the tf_keras package installed. You must install it in order to use the legacy tf.keras. Install it via: `pip install tf_keras`z3.keras_3zkeras._tf_keras.keraskeras_2zkeras.api._v1.keraszkeras.api._v2.kerasz5Keras cannot be imported. Check that it is installed.r	   )rJ   osenvirongetrR   rG   ImportErrorr   r   keras__version__r+   _tfll_keras_versionrH   r   r   rI   r   )r   package_namekeras_versionrR   rZ   r   s        r   _initializezKerasLazyLoader._initialize|   s9   !DLM	zz~~+T26KK
"??d"1,1,
''-#-0, $-__$0L0L  -D 				)d2222g
//4;;\ 
A G  
%	

,  
C
 	

s   C :D C?>C?Dc                    |dv rt         t        j                  |   |      S | j                  s| j                          | j                  dk(  r| j                  dk(  r(| j                  s|j                  d      rt        d      | j                  dk(  r(| j                  s|j                  d      rt        d      | j                  r*| j                  j                  d	      rt        d
| d      | j                         }t        ||      S )N)rG   rJ   rI   rT   rS   z
compat.v1.a  `tf.compat.v1.keras` is not available with Keras 3. Keras 3 has no support for TF 1 APIs. You can install the `tf_keras` package as an alternative, and set the environment variable `TF_USE_LEGACY_KERAS=True` to configure TensorFlow to route `tf.compat.v1.keras` to `tf_keras`.v2z
compat.v2.zT`tf.compat.v2.keras` is not available with Keras 3. Just use `import keras` instead.z__internal__.legacy.`z ` is not available with Keras 3.)r   types
ModuleType__getattribute__rJ   r_   r\   rG   rH   r+   r/   r$   r'   )r   itemr#   r   s      r   r(   zKerasLazyLoader.__getattr__   s   @@5##T;DAA!!
9,
//T
!&&ool+2
 	
 //T
!&&ool+&
 	
 D$8$8$C$C
 % v56
 	
 ZZ\F64  r   c           	          | j                   r7d| j                   d| j                   d| j                   d| j                   d	S y)Nz<KerasLazyLoader (z) r7   z mode=r8   z<KerasLazyLoader>)rJ   r\   r   r   rG   r9   s    r   r:   zKerasLazyLoader.__repr__   sN    t778]]O4 5 56fT__<MQP r   c                 X    | j                   s| j                          t        |          S r&   )rJ   r_   r   r=   )r   r   s    r   r=   zKerasLazyLoader.__dir__   s%    !!
7?r   )NNrZ   )
r   r   r@   rA   r   r_   r(   r:   r=   rB   rC   s   @r   rE   rE   q   s-    C DK#3j"!H r   rE   )rA   r   rV   rc   tensorflow.python.platformr   r   r,   rd   r   rE    r   r   <module>rk      s?       	  <!( T5!! T5noj or   