
    i                         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y)    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         j0                  t         j2                  t         j4                  t         j6                  t         j8                  t         j:                  t         j<                  t         j>                  t         j@                  t         jB                  t         jD                  t         jF                  t         jH                  t         jJ                  t         jL                  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     d/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/utils/_device.py_device_constructorsr8      sF   )) 	) 		)
 	) 	

) 	) 	) 	) 			) 			) 			) 	

) 	) 	)  	!)" 	#)$ 	%)& 	""'), 	

-). 	/)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y)DeviceContextNc                 F    t        j                  |      | _        d | _        y r   )r   device	prev_mode)selfr<   s     r7   __init__zDeviceContext.__init__>   s    ll6*26r6   c                    t         | _        | j                  a t        t	                     D cg c]  }t                }}t        |        t        |      D ]%  }t        |t              r|| _
        t        |       ' y c c}w r   )r
   
old_devicer<   r'   r   r   r   reversed
isinstancer:   r=   )r>   _	cur_stackmodes       r7   	__enter__zDeviceContext.__enter__C   sm    (
 +00I0K*LMQY[M	M4Y' 	!D$.!%4 		!	 Ns   A?c                    | j                   ag }t        t               dz
        D ]8  }t	               }t        |t              rt        d      |j                  |       : t               dkD  r%t	               }t        |t              st        d      | j                  t        | j                         t        |      D ]  }t        |        y )Nr   z@Found nested DeviceContext on the mode stack where none expectedr   z8Expected a DeviceContext at the bottom of the mode stack)rA   r
   r'   r   r   rC   r:   AssertionErrorappendr=   r   rB   )r>   exc_typeexc_valexc_tbrE   rD   rF   s          r7   __exit__zDeviceContext.__exit__U   s    	 02Q67 	#A;D$.$V  T"	# %&*;DdM2$N  >>%t~~&Y' 	Dt	r6   c                 v    |xs i }|t               v r |j                  d      | j                  |d<    ||i |S )Nr<   )r8   getr<   )r>   functypesargskwargss        r7   __torch_function__z DeviceContext.__torch_function__p   sC    2'))fjj.B.J#{{F8T$V$$r6   )returnN)r5   N)__name__
__module____qualname__r?   rG   rN   rU   r5   r6   r7   r:   r:   =   s    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<   rQ   s   ` r7   device_decoratorr^   x   s    ^T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                 B    t        t        j                        |       S r   )r^   r   r<   )rQ   r<   s    r7   r]   zset_device.<locals>.<lambda>   s    (f)=tD r6   r5   r\   s   `r7   
set_devicera   |   s     E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      sj       . D D 5 '+t# * Q* *\7%% 7%v3Er6   