Ë
    úÍ: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ej                     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© ó    úh/home/mcse/projects/srt_converter/srt-converter-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„ Zd„ Zd„ Zdd„Zy)ÚDeviceContextc                 ó8   — t        j                  |«      | _        y r   )r   Údevice)Úselfr<   s     r7   Ú__init__zDeviceContext.__init__>   s   € Ü—l‘l 6Ó*ˆ�r6   c                 óØ   — t         | _        | j                  a t        t	        «       «      D �cg c]  }t        «       ‘Œ }}t        | «       t        |«      D ]  }t        |«       Œ y c c}w r   )r
   Ú
old_devicer<   r'   r   r   r   Úreversed)r=   Ú_Ú	cur_stackÚmodes       r7   Ú	__enter__zDeviceContext.__enter__A   s\   € ä(ˆŒØŸ™ˆô
 +0Ô0IÓ0KÓ*LÖM Q”Y•[ÐMˆ	ÐMä�4Ôä˜YÓ'ò 	ˆDÜ�tÕñ	ùò	 Ns   ­A'c                 ó8  — | j                   ag }t        t        «       dz
  «      D ]/  }t	        «       }t        |t        «      rJ ‚|j                  |«       Œ1 t        «       dkD  rt	        «       }t        |t        «      sJ ‚t        |«      D ]  }t        |«       Œ y )Nr   r   )
r@   r
   r'   r   r   Ú
isinstancer:   ÚappendrA   r   )r=   Úexc_typeÚexc_valÚexc_tbrC   rB   rD   s          r7   Ú__exit__zDeviceContext.__exit__P   s”   € àŸ™ˆØˆ	ô Ô0Ó2°QÑ6Ó7ò 	#ˆAÜ“;ˆDÜ! $¬Ô6Ð6Ð6Ø×Ñ˜TÕ"ð	#ô
 %Ó&¨Ò*Ü“;ˆDÜ˜d¤MÔ2Ð2Ð2ä˜YÓ'ò 	ˆDÜ�tÕñ	r6   Nc                 ó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__c   sC   € Ø’˜2ˆØÔ'Ó)Ñ)¨f¯j©j¸Ó.BÐ.JØ#Ÿ{™{ˆF�8ÑÙ�TÐ$˜VÑ$Ð$r6   )r5   N)Ú__name__Ú
__module__Ú__qualname__r>   rE   rL   rS   r5   r6   r7   r:   r:   =   s   „ ò+òòô&%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<   rO   s   ` r7   Údevice_decoratorr[   k   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<   )rO   r<   s    €r7   rZ   zset_device.<locals>.<lambda>v   s   ø€ Ô(¬¯©°fÓ)=¸tÓD€ r6   r5   rY   s   `r7   Ú
set_devicer^   o   s   ø€ ó EÐDr6   )Ú	functoolsÚtypingr   r   Útorch._Cr   Útorch.overridesr   r   r   Útorch.utils._contextlibr	   r
   r<   Ú__annotations__Ú	lru_cacher8   r:   r[   r^   r5   r6   r7   ú<module>rf      sj   ðä Ý ã Ý .ß DÑ DÝ 5ð *.€�˜Ÿ™Ñ&Ó -ð €×Ñ�QÓñ*ó ð*ô\*%Ð%ô *%ò\3óEr6   