
    ,Vh                     D    d Z ddlmZ ddlmZ g dZed        Zd Zd Zy)	zIRequired functions for optimized contractions of numpy arrays using cupy.    )has_array_interface)to_backend_cache_wrap)to_cupybuild_expressionevaluate_constantsc                 F    dd l }t        |       r|j                  |       S | S )Nr   )cupyr   asarray)arrayr	   s     H/home/dcms/DCMS/lib/python3.12/site-packages/opt_einsum/backends/cupy.pyr   r   	   s!    5!||E""L    c                     fd}|S )z7Build a cupy function based on ``arrays`` and ``expr``.c                  ~    j                  | D cg c]  }t        |       c}d      j                         S c c}w )Nr	   )backend)	_contractr   get)arraysxexprs     r   cupy_contractz'build_expression.<locals>.cupy_contract   s1    ~~6:awqz:F~KOOQQ:s   : )_r   r   s    ` r   r   r      s    R r   c                 L     || D cg c]  }t        |       c}dddS c c}w )zcConvert constant arguments to cupy arrays, and perform any possible
    constant contractions.
    r	   T)r   r   )r   )const_arraysr   r   s      r   r   r      s&     l3'!*3VX\]]3s   !N)	__doc__opt_einsum.helpersr   opt_einsum.sharingr   __all__r   r   r   r   r   r   <module>r      s2    O 2 4
?  ^r   