o
    X۷it                     @  s   d dl mZ d dlZd dlZd dlmZ zd dlmZ	 W n e
y'   dZ	Y nw dZi Zg Zdd Zdd Zdd	 Zg d
Ze	rSeD ]ZeeeZee	eZeee< qBdS dS )    )annotationsNznumpy.scipy.linalgc                 C  s\   |rz	dd | D }W n t y   t Y S w dd | D }tdd t|| D s,tS |S )Nc                 S  s0   g | ]}|j r|jtju rt|jn|jqS  )	coercibletypenpndarraycupyasarrayvalue.0dr   r   P/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupyx/scipy/linalg/_uarray.py
<listcomp>   s
    z"__ua_convert__.<locals>.<listcomp>c                 S  s   g | ]}|j qS r   )r
   r   r   r   r   r      s    c                 s  s,    | ]\}}|j tjupt|tjV  qd S N)r   r   r   
isinstancer   )r   rr   r   r   r   	<genexpr>    s     z!__ua_convert__.<locals>.<genexpr>)	TypeErrorNotImplementedallzip)dispatchablescoercereplacedr   r   r   __ua_convert__   s   
r   c                 C  s&   t | d }|d u rtS ||i |S r   )_implementedgetr   )methodargskwargsfnr   r   r   __ua_function__'   s   r"   c                   s    fdd}|S )zBDecorator adds function to the dictionary of implemented functionsc                   s.   t ott  d }|r| t|< | S t  | S r   )_scipy_linalggetattrr   	_notfoundappend)func
scipy_funcscipy_func_namer   r   inner0   s   
zimplements.<locals>.innerr   )r*   r+   r   r)   r   
implements.   s   	r,   )eigheigvalshcholeskyqrsvdnormdetsolvelstsqinvpinv)
__future__r   numpyr   r   cupy.linalglinalg
_cp_linalgscipy.linalgr#   ImportError__ua_domain__r   r%   r   r"   r,   _cp_linalg_functions	func_namer$   cp_funcr(   r   r   r   r   <module>   s.    


