o
    °2úh=  ã                   @   s8   d Z ddlmZ ddgZdadd„ Zdd„ Zd	d„ ZdS )
zHRequired functions for optimized contractions of numpy arrays using jax.é    )Úto_backend_cache_wrapÚbuild_expressionÚevaluate_constantsNc                  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   úR/var/www/html/chatgem/venv/lib/python3.10/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 )z6Build a jax function based on ``arrays`` and ``expr``.c                     s   dd l }| ˆ | ƒ¡S )Nr   )ÚnumpyÚasarray)ÚarraysÚnp©Ú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>-   s    z&evaluate_constants.<locals>.<listcomp>r
   T)Úbackendr   )r   )Úconst_arraysr   r
   r   r   r   r   '   s   
)Ú__doc__Úopt_einsum.sharingr   Ú__all__r	   r   r   r   r   r   r   r   Ú<module>   s    