Ë
    øÿæih  ã                  óN  — 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
 erd dlmZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ  e
d«      Z ed	«      Zej4                  dd
„«       Zej4                  dd„«       Z G d„ dej:                  j<                  «      Zy)é    )ÚannotationsN)Únullcontext)ÚAnyÚTYPE_CHECKINGÚTypeVar)Ú	ParamSpec)ÚCallableÚSequence)Útorch_function_passthroughÚ_PÚ_Rc            	     ó  — t         t         j                  ft         j                  t         j                  j                  ft         j                  j                  t         j                  j                  j                  ft         j                  t         j                  j                  ft         j
                  t         j                  j
                  ft         j                  t         j                  j                  fg} i t         j                  j                  t         j                  j                  “t         j                  j                  t         j                  j                  “t         j                  j                  t         j                  j                  “t         j                  j                  t         j                  j                  “t         j                  j                   t         j                  j"                  “t         j                  j$                  t         j                  j&                  “t         j                  j(                  t         j                  j*                  “t         j                  j,                  t         j                  j.                  “t         j                  j0                  t         j                  j2                  “t         j                  j4                  t         j                  j6                  “t         j                  j8                  t         j                  j:                  “t         j                  j<                  t         j                  j<                  “t         j                  j>                  t         j                  j>                  “t         j                  j@                  t         j                  j@                  “t         j                  jB                  t         j                  jB                  “t         j                  jD                  t         j                  jD                  “t         j                  jF                  t         j                  jF                  “t         j                  jH                  t         j                  jH                  t         j                  jJ                  t         j                  jJ                  t         j                  jL                  t         jN                  jP                  t         j                  jR                  t         jN                  jR                  i¥}| D ]M  \  }}|jT                  D ]9  }|jV                  jY                  |«      ||jV                  jY                  |«      <   Œ; ŒO t[        t         j                  «      D ]c  }|t         j                  jT                  v sŒ t         j                  jV                  jY                  |«      |t]        t         j                  |«      <   Œe t         j                  j^                  jT                  D ]e  }t]        t         j                  |d«      xs t]        t         |«      }t         j                  j^                  jV                  jY                  |«      ||<   Œg |S )z}
    Mapping of torch API functions to torch._refs functions.
    E.g. torch_to_refs_map()[torch.add] == torch._refs.add
    N)0ÚtorchÚ_refsÚnnÚ
functionalÚspecialÚfftÚlinalgÚTensorÚ
__invert__Úbitwise_notÚ__xor__Úbitwise_xorÚ__and__Úbitwise_andÚ__or__Ú
bitwise_orÚ__eq__ÚeqÚ__rsub__ÚrsubÚ__rtruediv__ÚrtruedivÚ__floordiv__Úfloor_divideÚ__rfloordiv__Ú	rfloordivÚ__pow__ÚpowÚ__rpow__ÚrpowÚ	new_emptyÚnew_fullÚ	new_zerosÚnew_onesÚfill_Úzero_ÚtoÚsum_to_sizeÚcopy_Ú_primsÚcopy_toÚresizeÚ__all__Ú__dict__ÚgetÚdirÚgetattrÚ_conversions)ÚmodulesÚrÚ	mod_torchÚmod_refsÚsÚtensor_attrs         úi/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/_prims/context.pyÚtorch_to_refs_maprF      s  € ô 
”—‘ÐÜ	�‰”5—;‘;—>‘>Ð"Ü	�‰×	Ñ	œeŸk™kŸn™n×7Ñ7Ð8Ü	�‰œŸ™×+Ñ+Ð,Ü	�‰”E—K‘K—O‘OÐ$Ü	�‰”u—{‘{×)Ñ)Ð*ð€GðÜ�‰×Ñ¤§¡×!8Ñ!8ðä�‰×ÑœeŸk™k×5Ñ5ðô 	�‰×ÑœeŸk™k×5Ñ5ðô 	�‰×ÑœUŸ[™[×3Ñ3ð	ô
 	�‰×ÑœUŸ[™[Ÿ^™^ðô 	�‰×ÑœuŸ{™{×/Ñ/ðô 	�‰×!Ñ!¤5§;¡;×#7Ñ#7ðô 	�‰×!Ñ!¤5§;¡;×#;Ñ#;ðô 	�‰×"Ñ"¤E§K¡K×$9Ñ$9ðô 	�‰×ÑœeŸk™kŸo™oðô 	�‰×ÑœuŸ{™{×/Ñ/ðô 	�‰×Ñ¤§¡× 5Ñ 5ðô 	�‰×ÑœuŸ{™{×3Ñ3ðô 	�‰×Ñ¤§¡× 5Ñ 5ðô 	�‰×ÑœuŸ{™{×3Ñ3ðô  	�‰×ÑœEŸK™K×-Ñ-ð!ô" 	�‰×ÑœEŸK™K×-Ñ-ð#ô$ 	�‰�‰œŸ™Ÿ™Ü�‰× Ñ ¤%§+¡+×"9Ñ"9ä�‰×ÑœEŸL™L×0Ñ0Ü�‰×ÑœUŸ\™\×0Ñ0ñ-€Aó0  'Ñˆ	�8Ø×!Ô!ˆAØ+3×+<Ñ+<×+@Ñ+@ÀÓ+CˆAˆi× Ñ ×$Ñ$ QÓ'Ò(ñ "ð  'ô
 ”—‘ÖˆØ”—‘×#Ñ#Ò#Ü*/¯+©+×*>Ñ*>×*BÑ*BÀ1Ó*EˆAŒg”e—l‘l AÓ&Ò'ð ô
 �[‰[×%Ñ%×-Ô-ˆÜœeŸl™l¨A¨tÓ4ÒI¼ÄÀqÓ8IˆÜŸ™×1Ñ1×:Ñ:×>Ñ>¸qÓAˆˆ+Šð .ð €Hó    c                 óª   — t         j                  j                  D � ch c]+  } t         j                  j                  j	                  | «      ’Œ- c} S c c} w )zJ
    Set of all prim functions, e.g., torch._prims.add in all_prims()
    )r   r6   r9   r:   r;   )rC   s    rE   Ú	all_primsrI   R   s=   € ô
 38·,±,×2FÒ2FÓGÑ2F¨QŒE�L‰L×!Ñ!×%Ñ% aÕ(Ð2FÑGÐGùÒGs   �0Ac                  óP   — e Zd ZdZdd„ ef	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 d	d„Zy)
ÚTorchRefsModeaB  
    Switches the interpretation of torch.* functions and Tensor methods to
    use PrimTorch refs in torch._refs.  (Direct calls to _refs are unaffected.)

    >>> # xdoctest: +SKIP
    >>> with TorchRefsMode():
    ...     torch.add(x, y)  # calls torch._refs.add(x, y)

    By default, this context manager will fall back on the torch.* if the
    ref does not exist; set strict=True to error if this occurs.
    If the ref exists we still would like to fall back on the torch.* sometimes,
    this behavior can be customized by passing a function to should_fallback_fn.
    Fc                  ó   — y)NF© )Ú_s    rE   Ú<lambda>zTorchRefsMode.<lambda>l   s   € ¸UrG   c                ó.   — || _         || _        || _        y )N)ÚstrictÚshould_fallback_fnÚprims_mode_cls)ÚselfrQ   rR   rS   s       rE   Ú__init__zTorchRefsMode.__init__i   s   € ð ˆŒØ"4ˆÔØ,ˆÕrG   Nc                ót  — |€i }|t         v s|t        «       v r"| j                  «       5   ||i |¤Žcd d d «       S t        «       }|j	                  |d «      }|€Ot        |t        j                  j                  «      r+t        j                  j                  j	                  |d «      }n‡|€…t        |t        j                  j                  «      rat        |dd «      }|€&|j                  rt        ||j                  d   d «      }|�*t        j                  j                  j	                  |d «      }|�1| j                  | ||||«      r ||i |¤ŽS | 5   ||i |¤Žcd d d «       S | j                  r+t!        dt        j"                  j%                  |«      › �«      ‚ ||i |¤ŽS # 1 sw Y   �ŒpxY w# 1 sw Y   ŒUxY w)NÚdefaultr   zno _refs support for )r   rI   rS   rF   r;   Ú
isinstancer   Ú_opsÚ
OpOverloadÚ_decompÚdecomposition_tableÚOpOverloadPacketr=   Ú_dirrR   rQ   ÚRuntimeErrorÚ	overridesÚresolve_name)rT   Ú	orig_funcÚtypesÚargsÚkwargsÚmappingÚfuncrW   s           rE   Ú__torch_function__z TorchRefsMode.__torch_function__s   s’  € ð ˆ>ØˆFð Ô2Ñ2°iÄ9Ã;Ñ6NØ×$Ñ$Õ&á  $Ð1¨&Ñ1÷ 'Ñ&ô $Ó%ˆØ�{‰{˜9 dÓ+ˆð ˆ<œJ y´%·*±*×2GÑ2GÔHÜ—=‘=×4Ñ4×8Ñ8¸ÀDÓI‰DØˆ\œj¨´E·J±J×4OÑ4OÔPÜ˜i¨°DÓ9ˆGØˆ 9§>¢>Ü! )¨Y¯^©^¸AÑ->ÀÓE�ØÐ"Ü—}‘}×8Ñ8×<Ñ<¸WÀdÓK�àÐà×&Ñ& t¨Y¸¸dÀFÔKá  $Ð1¨&Ñ1Ð1âÙ˜TÐ, VÑ,÷ ‘à�;Š;ÜØ'¬¯©×(DÑ(DÀYÓ(OÐ'PÐQóð ñ ˜$Ð) &Ñ)Ð)÷E 'Ñ&ú÷6 �ús   ©F!ÅF.Æ!F+Æ.F7)rQ   ÚboolrR   zCallable[..., bool]rS   ÚtypeÚreturnÚNone)rM   N)
rb   zCallable[_P, _R]rc   zSequence[type]rd   zSequence[Any]re   zdict[str, Any] | Nonerk   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rU   rh   rM   rG   rE   rK   rK   Z   sz   „ ñð  Ù2BØ*ð	-àð-ð 0ð-ð ð	-ð
 
ó-ð !Ø(,ð.*à#ð.*ð ð.*ð ð	.*ð
 &ð.*ð 
ô.*rG   rK   )rk   zdict[Any, Any])rk   zset[Any]) Ú
__future__r   Ú	functoolsÚ
contextlibr   Útypingr   r   r   Útyping_extensionsr   Úcollections.abcr	   r
   r   Útorch._decompÚtorch._primsÚtorch._refsÚtorch._refs.nnÚtorch._refs.nn.functionalÚtorch._refs.specialÚtorch.overridesÚtorch._prims_commonr   r   r   ÚcacherF   rI   r`   ÚTorchFunctionModerK   rM   rG   rE   Ú<module>r�      s™   ðÝ "ã Ý "ß .Ñ .Ý 'ñ ß2ã Û Û Û Û Û  Û Û Ý :ñ ˆtƒ_€ÙˆTƒ]€ð ‡�ò3ó ð3ðl ‡�òHó ðHôG*�E—O‘O×5Ñ5õ G*rG   