§
    é&Vf"  ã                   ó´   — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d„ Zdd„Z G d„ d¦  «        Z G d	„ d
¦  «        Z ed¦  «        d„ ¦   «         ZdS )é    N©Úbackend)Úkeras_export)Úglobal_statec                  ó†   — t          j        dd¦  «        rdS dt          j        v rddlm}  |                      ¦   «          S dS )NÚin_tf_graph_scopeFTÚ
tensorflowr   ©r	   )r   Úget_global_attributeÚsysÚmodulesÚkeras.src.utils.module_utilsr	   Úexecuting_eagerly)Útfs    úZ/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/utils/backend_utils.pyÚin_tf_graphr      sV   € ÝÔ(Ð)<¸eÑDÔDð Øˆtà•s”{Ð"Ð"ØAÐAÐAÐAÐAÐAà×'Ò'Ñ)Ô)Ð)Ð)Øˆ5ó    c                 ó|   — t          j        ¦   «         dk    r$t          ¦   «         st          j        | |¬¦  «        } | S )Nr	   )Údtype)Úbackend_moduler   r   Úconvert_to_tensor)Úoutputsr   s     r   Úconvert_tf_tensorr      s9   € ÝÔÑÔ <Ò/Ð/½¹¼Ð/Ý Ô2°7À%ÐHÑHÔHˆØ€Nr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTFGraphScopec                 ó:   — t          j        dd¦  «        | _        d S )Nr   F)r   r   Ú_original_value©Úselfs    r   Ú__init__zTFGraphScope.__init__   s"   € Ý+Ô@Ø ñ 
ô  
ˆÔÐÐr   c                 ó0   — t          j        dd¦  «         d S )Nr   T)r   Úset_global_attributer   s    r   Ú	__enter__zTFGraphScope.__enter__"   s   € ÝÔ)Ð*=¸tÑDÔDÐDÐDÐDr   c                 ó:   — t          j        d| j        ¦  «         d S )Nr   )r   r"   r   )r   ÚargsÚkwargss      r   Ú__exit__zTFGraphScope.__exit__%   s)   € ÝÔ)Ø Ô!5ñ	
ô 	
ð 	
ð 	
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__r    r#   r'   © r   r   r   r      sD   € € € € € ð
ð 
ð 
ð
Eð Eð Eð
ð 
ð 
ð 
ð 
r   r   c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )ÚDynamicBackendaF  A class that can be used to switch from one backend to another.

    Example:

    ```python
    backend = DynamicBackend("tensorflow")
    y = backend.square(tf.constant(...))
    backend.set_backend("jax")
    y = backend.square(jax.numpy.array(...))
    ```

    Args:
        backend: Initial backend to use (string).
    Nc                 ó:   — |pt          j        ¦   «         | _        d S ©N©r   r   Ú_backend©r   r   s     r   r    zDynamicBackend.__init__;   s   € ØÐ;¥>Ô#9Ñ#;Ô#;ˆŒˆˆr   c                 ó   — || _         d S r/   )r1   r2   s     r   Úset_backendzDynamicBackend.set_backend>   s   € ØˆŒˆˆr   c                 ó6   — t          j        ¦   «         | _        d S r/   r0   r   s    r   ÚresetzDynamicBackend.resetA   s   € Ý&Ô.Ñ0Ô0ˆŒˆˆr   c                 ó  — | j         dk    rddlm} t          ||¦  «        S | j         dk    rddlm} t          ||¦  «        S | j         dk    rddlm} t          ||¦  «        S | j         dk    rdd	lm} t          ||¦  «        S d S )
Nr	   r   r
   Újax)r8   Útorch)r9   Únumpyr   )r1   Úkeras.src.backendr	   Úgetattrr8   r9   Ú	keras.srcr   )r   ÚnameÚ
tf_backendÚjax_backendÚtorch_backendÚnumpy_backends         r   Ú__getattr__zDynamicBackend.__getattr__D   sÈ   € ØŒ=˜LÒ(Ð(ØBÐBÐBÐBÐBÐBå˜: tÑ,Ô,Ð,ØŒ=˜EÒ!Ð!Ø<Ð<Ð<Ð<Ð<Ð<å˜;¨Ñ-Ô-Ð-ØŒ=˜GÒ#Ð#Ø@Ð@Ð@Ð@Ð@Ð@å˜=¨$Ñ/Ô/Ð/ØŒ=˜GÒ#Ð#ð
 ;Ð:Ð:Ð:Ð:Ð:å˜=¨$Ñ/Ô/Ð/ð $Ð#r   r/   )r(   r)   r*   Ú__doc__r    r4   r6   rC   r+   r   r   r-   r-   +   s_   € € € € € ðð ð<ð <ð <ð <ð ð  ð  ð1ð 1ð 1ð0ð 0ð 0ð 0ð 0r   r-   zkeras.config.set_backendc                 óV  — | t           j        d<   d„ t          j                             ¦   «         D ¦   «         }|D ]}t          j        |= Œddl}t          j        t          ¦   «         ¦  «        }|                     ¦   «         D ]¦\  }}|j	        |j	        k    r‘t          |¦  «                             d¦  «        rot          |¦  «        }||                     d¦  «        dz   d…         }|d|                     d¦  «        …         }t          j        |¦  «        t          ¦   «         |<   Œ§dS )uÆ  Reload the backend (and the Keras package).

    Example:

    ```python
    keras.config.set_backend("jax")
    ```

    âš ï¸ WARNING âš ï¸: Using this function is dangerous and should be done
    carefully. Changing the backend will **NOT** convert
    the type of any already-instantiated objects.
    Thus, any layers / tensors / etc. already created will no
    longer be usable without errors. It is strongly recommended **not**
    to keep around **any** Keras-originated objects instances created
    before calling `set_backend()`.

    This includes any function or class instance that uses any Keras
    functionality. All such code needs to be re-executed after calling
    `set_backend()`.
    ÚKERAS_BACKENDc                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )Úkeras)Ú
startswith)Ú.0Úkeys     r   ú
<listcomp>zset_backend.<locals>.<listcomp>s   s9   € ð ð ð Ø¨S¯^ª^¸GÑ-DÔ-DðØðð ð r   r   Nz<module 'keras.ú'é   )ÚosÚenvironr   r   ÚkeysrH   ÚcopyÚglobalsÚitemsÚ	__class__ÚstrrI   ÚfindÚ	importlibÚimport_module)r   Úloaded_modulesrK   rH   ÚglobsÚvalueÚmodule_names          r   r4   r4   [   s3  € ð, #*…B„JˆÑðð Ý”{×'Ò'Ñ)Ô)ðñ ô €Nð ð ð ˆÝŒK˜ÐÐà€L€L€Lõ ŒI•g‘i”iÑ Ô €EØ—k’k‘m”mð Fð F‰
ˆˆUØŒ?˜eœoÒ-Ð-Ý5‰zŒz×$Ò$Ð%6Ñ7Ô7ð FÝ! %™jœjØ)¨+×*:Ò*:¸3Ñ*?Ô*?À!Ñ*CÐ*EÐ*EÔFØ)Ð*A¨K×,<Ò,<¸SÑ,AÔ,AÐ*AÔBÝ!*Ô!8¸Ñ!EÔ!E•‘	”	˜#‘øðFð Fr   r/   )rR   rX   rO   r   r=   r   r   Úkeras.src.api_exportr   Úkeras.src.backend.commonr   r   r   r   r-   r4   r+   r   r   ú<module>r`      s  ðØ €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
à /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ðð ð ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð-0ð -0ð -0ð -0ð -0ñ -0ô -0ð -0ð` €Ð(Ñ)Ô)ð'Fð 'Fñ *Ô)ð'Fð 'Fð 'Fr   