
    Vpf                        d Z ddlm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
ZddlZddlmZ ej         G d d                      Zdd
edefdZd
efdZdd
edefdZ ede           ed ej        ed                     eded           ede           ed ej        ed	                    gZdS )zConverters for jax2tf.    )CallableN)Any)jax2tf)ModelHarnessc                   B    e Zd ZU eed<   edef         ed<   dZeed<   dS )	Convertername.
convert_fnTcompare_numericsN)	__name__
__module____qualname__str__annotations__r   r   r   bool     h/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/experimental/jax2tf/tests/converters.pyr   r      sA         )))sCx    Dr   r   Tharness
enable_xlac                 D    t          j        | j        || j                  S )N)r   polymorphic_shapes)r   convertapply_with_varsr   )r   r   s     r   jax2tf_convertr   $   s*    	 3
5 
5 
5 5r   c                     t          j                    5 }t          j                            | j        | j        | j        | j        |           ddd           dS # 1 swxY w Y   dS )z8Converts the given `test_case` using the TFjs converter.)apply_fnparamsinput_signaturesr   	model_dirN)	tempfileTemporaryDirectorytfjs
convertersconvert_jaxapply	variablestf_input_signaturer   )r   r    s     r   jax2tfjsr)   +   s    "$$ 	O  3"5                      s   9AA!AFuse_flex_opsc                   	
 t          j        t          | d          | j        d          }|                                }t           j        j                            |g|          }t           j        j        j	        g}|r)|
                    t           j        j        j                   ||j        _        |                                }t           j                            |          

                                 
                                	
                                }t'          
fd|D                       	
fd}|S )zEReturns a converter with Flex ops linked in iff `use_flex_ops==True`.Fr   )input_signature	autograph)model_contentc              3   N   K   | ]}                     |d                    V   dS )indexN)tensor).0outinterpreters     r   	<genexpr>zjax2tflite.<locals>.<genexpr>L   s5      MMs+$$S\22MMMMMMr   c                  V   t          |           t                    k    sJ t          |           D ]'\  }}                    |         d         |           (                                 t                    dk    rt	          d D                       S  d                     S )Nr1      c              3   *   K   | ]} |            V  d S )Nr   )r3   os     r   r6   z3jax2tflite.<locals>.apply_tflite.<locals>.<genexpr>T   s(      ((11133((((((r   r   )len	enumerate
set_tensorinvoketuple)xsixinputsr5   outputss      r   apply_tflitez jax2tflite.<locals>.apply_tfliteN   s    r77c&kk!!!!" 4 41VAYw/3333
7||a((((((((WQZ\\r   )tffunctionr   r(   get_concrete_functionliteTFLiteConverterfrom_concrete_functionsOpsSetTFLITE_BUILTINSappendSELECT_TF_OPStarget_specsupported_opsr   Interpreterallocate_tensorsget_input_detailsget_output_detailsr?   )r   r*   tf_fnapply_tf	converterrQ   tflite_modeloutput_detailsrE   rC   r5   rD   s            @@@r   
jax2tfliter[   6   sN   
+W///0  % ((**(g%==xj%PP)7>12- 75666(5)% ""$$, ##,#??+   ((**&1133.MMMMnMMMMM'       
r   
jax2tf_xla)r	   r
   jax2tf_noxlar,   r)   )r	   r
   r   r[   zjax2tflite+flex)r*   )T)F)__doc__collections.abcr   dataclasses	functoolsr!   typingr   jax.experimentalr   
tensorflowrF   tensorflowjsr#   +jax.experimental.jax2tf.tests.model_harnessr   	dataclassr   r   r   r)   r[   partialALL_CONVERTERSr   r   r   <module>rj      s     $ $ $ $ $ $                # # # # # #         D D D D D D                5 5L 5d 5 5 5 5l    " " "D " " " "N I<N;;;I$9$^FFFH H H I:(UKKKI<J777I$9$ZdCCCE E Er   