o
    Üe  ã                   @   s@   d Z ddlZddlmZ ddgZdadd„ Zd	d„ Zd
d„ Z	dS )zJ
Required functions for optimized contractions of numpy arrays using jax.
é    Né   )Úto_backend_cache_wrapÚbuild_expressionÚevaluate_constantsc                  C   s.   t d u rdd l} t| jdd„ ƒƒ}| |fa t S )Nr   c                 S   s   | S ©N© )Úxr   r   úGD:\Projects\ConvertPro\env\Lib\site-packages\opt_einsum/backends/jax.pyÚto_jax   s   z#_get_jax_and_to_jax.<locals>.to_jax)Ú_JAXÚjaxr   Újit)r   r
   r   r   r	   Ú_get_jax_and_to_jax   s   r   c                    s&   t ƒ \}} | |j¡‰ ‡ fdd„}|S )z;Build a jax function based on ``arrays`` and ``expr``.
    c                     s   t  ˆ | ƒ¡S r   )ÚnpZasarray)Zarrays©Zjax_exprr   r	   Újax_contract%   s   z&build_expression.<locals>.jax_contract)r   r   Z	_contract)Ú_Úexprr   r   r   r   r	   r      s   
c                    s(   t ƒ \}‰ |‡ fdd„| D ƒdddœŽS )zbConvert constant arguments to jax arrays, and perform any possible
    constant contractions.
    c                    s   g | ]}ˆ |ƒ‘qS r   r   )Ú.0r   ©r
   r   r	   Ú
<listcomp>1   s    z&evaluate_constants.<locals>.<listcomp>r   T)Úbackendr   )r   )Zconst_arraysr   r   r   r   r	   r   +   s   
)
Ú__doc__Únumpyr   Zsharingr   Ú__all__r   r   r   r   r   r   r   r	   Ú<module>   s    