
    Sh                     L    d Z ddlmZ ddlmZ g dZed             Zd Zd ZdS )	zIRequired functions for optimized contractions of numpy arrays using cupy.    )has_array_interface)to_backend_cache_wrap)to_cupybuild_expressionevaluate_constantsc                 V    dd l }t          |           r|                    |           S | S )Nr   )cupyr   asarray)arrayr	   s     ^/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/opt_einsum/backends/cupy.pyr   r   	   s2    KKK5!! #||E"""L    c                     fd}|S )z7Build a cupy function based on ``arrays`` and ``expr``.c                  j                         d | D             d                                          S )Nc                 ,    g | ]}t          |          S  r   .0xs     r   
<listcomp>z;build_expression.<locals>.cupy_contract.<locals>.<listcomp>   s    :::awqzz:::r   r	   )backend)	_contractget)arraysexprs    r   cupy_contractz'build_expression.<locals>.cupy_contract   s4    ~~::6:::F~KKOOQQQr   r   )_r   r   s    ` r   r   r      s)    R R R R R r   c                 (     |d | D             dddS )zcConvert constant arguments to cupy arrays, and perform any possible
    constant contractions.
    c                 ,    g | ]}t          |          S r   r   r   s     r   r   z&evaluate_constants.<locals>.<listcomp>    s    333'!**333r   r	   T)r   r   r   )const_arraysr   s     r   r   r      s+     433l333VX\]]]]r   N)	__doc__opt_einsum.helpersr   opt_einsum.sharingr   __all__r   r   r   r   r   r   <module>r%      s    O O 2 2 2 2 2 2 4 4 4 4 4 4
?
?
?     ^ ^ ^ ^ ^r   