
    Yh}                         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ej                 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     e/var/www/tools.fuzzalab.pt/emblema-extractor/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 Zd Zd ZddZdS )DeviceContextc                 8    t          j        |          | _        d S r   )r   device)selfr<   s     r7   __init__zDeviceContext.__init__>   s    l6**r6   c                     t           | _        | j        a d t          t	                                D             }t          |            t          |          D ]}t          |           d S )Nc                 *    g | ]}t                      S r5   )r   ).0_s     r7   
<listcomp>z+DeviceContext.__enter__.<locals>.<listcomp>I   s    MMMQY[[MMMr6   )r
   
old_devicer<   r'   r   r   reversed)r=   	cur_stackmodes      r7   	__enter__zDeviceContext.__enter__A   su    (
 NM%0I0K0K*L*LMMM	4Y'' 	 	Dt	 	r6   c                 ~   | j         ag }t          t                      dz
            D ]<}t	                      }t          |t                    rJ |                    |           =t                      dk    r%t	                      }t          |t                    sJ t          |          D ]}t          |           d S )Nr   r   )
rD   r
   r'   r   r   
isinstancer:   appendrE   r   )r=   exc_typeexc_valexc_tbrF   rB   rG   s          r7   __exit__zDeviceContext.__exit__P   s    	 022Q677 	# 	#A;;D!$66666T""""$&&**;;DdM22222Y'' 	 	Dt	 	r6   r5   Nc                 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__c   sO    2'))))fjj.B.B.J#{F8tT$V$$$r6   )r5   N)__name__
__module____qualname__r>   rH   rO   rV   r5   r6   r7   r:   r:   =   sU        + + +    &% % % % % %r6   r:   c                 *     t           fd|          S )Nc                       S r   r5   r<   s   r7   <lambda>z"device_decorator.<locals>.<lambda>l   s    V r6   r   )r<   rR   s   ` r7   device_decoratorr^   k   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   )r^   r   r<   )rR   r<   s    r7   r]   zset_device.<locals>.<lambda>v   s    (f)=)=tDD r6   r5   r\   s   `r7   
set_devicera   o   s     EDDDDr6   )	functoolstypingr   r   torch._Cr   torch.overridesr   r   r   torch.utils._contextlibr	   r
   r<   __annotations__	lru_cacher8   r:   r^   ra   r5   r6   r7   <module>ri      s               . . . . . . D D D D D D D D D D 5 5 5 5 5 5 *.& - - - Q* * *\*% *% *% *% *%% *% *% *%\3 3 3E E E E Er6   