a
    Sic                     @   s@   d Z ddlZddlmZ g dZedd Zdd	 Zd
d ZdS )zK
Required functions for optimized contractions of numpy arrays using cupy.
    N   )to_backend_cache_wrap)to_cupybuild_expressionevaluate_constantsc                 C   s"   dd l }t| tjr|| S | S )Nr   )cupy
isinstancenpndarrayasarray)arrayr    r   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/opt_einsum/backends/cupy.pyr      s    
r   c                    s    fdd}|S )z<Build a cupy function based on ``arrays`` and ``expr``.
    c                     s    j dd | D dd S )Nc                 S   s   g | ]}t |qS r   r   .0xr   r   r   
<listcomp>       z;build_expression.<locals>.cupy_contract.<locals>.<listcomp>r   )backend)	_contractget)arraysexprr   r   cupy_contract   s    z'build_expression.<locals>.cupy_contractr   )_r   r   r   r   r   r      s    r   c                 C   s   |dd | D dddS )zcConvert constant arguments to cupy arrays, and perform any possible
    constant contractions.
    c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   #   r   z&evaluate_constants.<locals>.<listcomp>r   T)r   r   r   )Zconst_arraysr   r   r   r   r      s    r   )	__doc__numpyr	   sharingr   __all__r   r   r   r   r   r   r   <module>   s   
		