a
    Sic  ã                   @   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   úS/var/www/html/django/DPS/env/lib/python3.9/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   )ÚnpÚasarray)Úarrays©Zjax_exprr   r	   Újax_contract%   s    z&build_expression.<locals>.jax_contract)r   r   Ú	_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   ó    z&evaluate_constants.<locals>.<listcomp>r   T)Úbackendr   )r   )Úconst_arraysr   r   r   r   r	   r   +   s    
)
Ú__doc__Únumpyr   Úsharingr   Ú__all__r   r   r   r   r   r   r   r	   Ú<module>   s   