
    /j                         U d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	 d dl
mZ daej        dz  ed<    e j        d          d             Z G d	 d
e	          Zd Zd ZdS )    N)Optional)_len_torch_function_stack)	_pop_mode
_push_modeTorchFunctionModecontext_decoratorCURRENT_DEVICE   c                     h t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        t           j
        j        t           j
        j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j         t           j!        t           j"        t           j#        t           j$        t           j%        t           j&        S N)'torchemptyempty_permutedempty_stridedempty_quantizedonesarangebartlett_windowblackman_windoweyefftfftfreqrfftfreqfullhamming_windowhann_windowkaiser_windowlinspacelogspacenestednested_tensorrandrandnrandintrandpermrangesparse_coo_tensorsparse_compressed_tensorsparse_csr_tensorsparse_csc_tensorsparse_bsr_tensorsparse_bsc_tensortril_indicestriu_indiceszerosasarraytensor	as_tensorscalar_tensor     X/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/utils/_device.py_device_constructorsr8      s   )) 	) 		)
 	) 	
) 	) 	) 	) 		) 		) 		) 	
) 	) 	)  	!)" 	#)$ 	%)& 	"'), 	
-). 	/)0 	1)2 	3)4 	5)6 	7)8 	&9): 	;)< 	=)> 	?)@ 	A)B 	C)D 	E)F 	G)H 	I)L 	M)N 	O)P 	Q) )r6   c                   *    e Zd ZddZd Zd Zd	dZdS )
DeviceContextreturnNc                 F    t          j        |          | _        d | _        d S r   )r   device	prev_mode)selfr=   s     r7   __init__zDeviceContext.__init__>   s    l6**26r6   c                    t           | _        | j        a d t          t	                                D             }t          |            t          |          D ].}t          |t                    r|| _	        t          |           /d S )Nc                 *    g | ]}t                      S r5   )r   ).0_s     r7   
<listcomp>z+DeviceContext.__enter__.<locals>.<listcomp>K   s    MMMQY[[MMMr6   )
r
   
old_devicer=   r'   r   r   reversed
isinstancer:   r>   )r?   	cur_stackmodes      r7   	__enter__zDeviceContext.__enter__C   s    (
 NM%0I0K0K*L*LMMM	4Y'' 	! 	!D$.. !!%4    		! 	!r6   c                    | j         ag }t          t                      dz
            D ]I}t	                      }t          |t                    rt          d          |                    |           Jt                      dk    r2t	                      }t          |t                    st          d          | j	        t          | j	                   t          |          D ]}t          |           d S )Nr   z@Found nested DeviceContext on the mode stack where none expectedr   z8Expected a DeviceContext at the bottom of the mode stack)rF   r
   r'   r   r   rH   r:   AssertionErrorappendr>   r   rG   )r?   exc_typeexc_valexc_tbrI   rD   rJ   s          r7   __exit__zDeviceContext.__exit__U   s	   	 022Q677 	# 	#A;;D$.. $V   T""""$&&**;;DdM22 $N   >%t~&&&Y'' 	 	Dt	 	r6   r5   c                 x    |pi }|t                      v r|                    d          
| j        |d<    ||i |S )Nr=   )r8   getr=   )r?   functypesargskwargss        r7   __torch_function__z DeviceContext.__torch_function__p   sO    2'))))fjj.B.B.J#{F8tT$V$$$r6   )r;   N)r5   N)__name__
__module____qualname__r@   rK   rR   rY   r5   r6   r7   r:   r:   =   sZ        7 7 7 7
! ! !$  6% % % % % %r6   r:   c                 *     t           fd|          S )Nc                       S r   r5   r=   s   r7   <lambda>z"device_decorator.<locals>.<lambda>y   s    V r6   r   )r=   rU   s   ` r7   device_decoratorra   x   s    ^^^^T222r6   c                       fdS )z
    Set the default device inside of the wrapped function by decorating it with this function.

    If you would like to use this as a context manager, use device as a
    context manager directly, e.g., ``with torch.device(device)``.
    c                 H    t          t          j                  |           S r   )ra   r   r=   )rU   r=   s    r7   r`   zset_device.<locals>.<lambda>   s    (f)=)=tDD r6   r5   r_   s   `r7   
set_devicerd   |   s     EDDDDr6   )	functoolstypingr   r   torch._Cr   torch.overridesr   r   r   torch.utils._contextlibr	   r
   r=   __annotations__	lru_cacher8   r:   ra   rd   r5   r6   r7   <module>rl      s               . . . . . . D D D D D D D D D D 5 5 5 5 5 5 '+t# * * * Q* * *\7% 7% 7% 7% 7%% 7% 7% 7%v3 3 3E E E E Er6   