§
    Ÿ²Åjù  ã                   ó  — d dl Z d dlmZ d dlmZmZmZ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 j        d¦  «        d„ ¦   «         Z e j        d¦  «        d„ ¦   «         Z G d„ de	j        j        ¦  «        ZdS )	é    N)Únullcontext)ÚAnyÚCallableÚDictÚOptionalÚSequence)Útorch_function_passthroughc            	      ó	  — 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        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        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)        i¥}| D ]D\  }}|j*        D ]7}|j+         ,                    |¦  «        ||j+         ,                    |¦  «        <   Œ8ŒEt[          t           j        ¦  «        D ]T}|t           j        j*        v r?t           j        j+         ,                    |¦  «        |t]          t           j        |¦  «        <   ŒUt           j        j/        j*        D ]^}t]          t           j        |d¦  «        pt]          t           |¦  «        }t           j        j/        j+         ,                    |¦  «        ||<   Œ_|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         úEC:\Projects\Historical\venv\Lib\site-packages\torch/_prims/context.pyÚtorch_to_refs_maprB      s;  € õ 
•”ÐÝ	Œ•5”;”>Ð"Ý	ŒÔ	�eœkœnÔ7Ð8Ý	Œ�œÔ+Ð,Ý	Œ•E”K”OÐ$Ý	Œ•u”{Ô)Ð*ð€GðÝŒÔ¥¤Ô!8ðåŒÔ�eœkÔ5ðõ 	ŒÔ�eœkÔ5ðõ 	ŒÔ�Uœ[Ô3ð	õ
 	ŒÔ�Uœ[œ^ðõ 	ŒÔ�uœ{Ô/ðõ 	ŒÔ!¥5¤;Ô#7ðõ 	ŒÔ!¥5¤;Ô#;ðõ 	ŒÔ"¥E¤KÔ$9ðõ 	ŒÔ�eœkœoðõ 	ŒÔ�uœ{Ô/ðõ 	ŒÔ¥¤Ô 5ðõ 	ŒÔ�uœ{Ô3ðõ 	ŒÔ¥¤Ô 5ðõ 	ŒÔ�uœ{Ô3ðõ  	ŒÔ�EœKÔ-ð!õ" 	ŒÔ�EœKÔ-ð#õ$ 	ŒŒ�œœÝŒÔ ¥%¤+Ô"9åŒÔ�EœLÔ0ÝŒÔ�Uœ\Ô0ð-ð €Að0  'ð Dð DÑˆ	�8ØÔ!ð 	Dð 	DˆAØ+3Ô+<×+@Ò+@ÀÑ+CÔ+CˆAˆiÔ ×$Ò$ QÑ'Ô'Ñ(Ð(ð	Dõ •”ÑÔð Fð FˆØ•”Ô#Ð#Ð#Ý*/¬+Ô*>×*BÒ*BÀ1Ñ*EÔ*EˆA�g•e”l AÑ&Ô&Ñ'øõ Œ[Ô%Ô-ð Bð BˆÝ�eœl¨A¨tÑ4Ô4ÐI½ÅÀqÑ8IÔ8IˆÝœÔ1Ô:×>Ò>¸qÑAÔAˆˆ+‰ˆà€Hó    c                  ó8   — d„ t           j        j        D ¦   «         S )zJ
    Set of all prim functions, e.g., torch._prims.add in all_prims()
    c                 óV   — h | ]&}t           j        j                             |¦  «        ’Œ'S © )r   r2   r6   r7   )Ú.0r?   s     rA   ú	<setcomp>zall_prims.<locals>.<setcomp>M   s+   € ÐGÐGÐG¨Q�EŒLÔ!×%Ò% aÑ(Ô(ÐGÐGÐGrC   )r   r2   r5   rF   rC   rA   Ú	all_primsrI   H   s   € ð
 HÐGµ%´,Ô2FÐGÑGÔGÐGrC   c            
       óX   — e Zd ZdZdd„ efd„Z	 	 ddeded	ee         d
e	e
         fd„ZdS )Ú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                  ó   — dS )NFrF   )Ú_s    rA   ú<lambda>zTorchRefsMode.<lambda>b   s   €  e€ rC   c                 ó0   — || _         || _        || _        d S )N)ÚstrictÚshould_fallback_fnÚprims_mode_cls)ÚselfrP   rQ   rR   s       rA   Ú__init__zTorchRefsMode.__init___   s!   € ð ˆŒØ"4ˆÔØ,ˆÔÐÐrC   rF   NÚ	orig_funcÚtypesÚargsÚkwargsc                 ó2  — |€i }|t           v s|t          ¦   «         v r4|                      ¦   «         5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   t          ¦   «         }|                     |d ¦  «        }|€Et          |t          j        j        ¦  «        r&t          j	        j
                             |d ¦  «        }nY|€Wt          |t          j        j        ¦  «        r8t          |dd ¦  «        }|�%t          j	        j
                             |d ¦  «        }|�C|                      | ||||¦  «        r ||i |¤ŽS | 5   ||i |¤Žcd d d ¦  «         S # 1 swxY w Y   | j        r/t          dt          j                             |¦  «        › �¦  «        ‚ ||i |¤ŽS )NÚdefaultzno _refs support for )r	   rI   rR   rB   r7   Ú
isinstancer   Ú_opsÚ
OpOverloadÚ_decompÚdecomposition_tableÚOpOverloadPacketr9   rQ   rP   ÚRuntimeErrorÚ	overridesÚresolve_name)rS   rU   rV   rW   rX   ÚmappingÚfuncrZ   s           rA   Ú__torch_function__z TorchRefsMode.__torch_function__i   s>  € ð ˆ>ØˆFð Õ2Ð2Ð2°iÅ9Á;Ä;Ð6NÐ6NØ×$Ò$Ñ&Ô&ð 2ð 2Ø �y $Ð1¨&Ð1Ð1ð2ð 2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2å#Ñ%Ô%ˆØ�{Š{˜9 dÑ+Ô+ˆð ˆ<�J yµ%´*Ô2GÑHÔHˆ<Ý”=Ô4×8Ò8¸ÀDÑIÔIˆDˆDØˆ\�j¨µE´JÔ4OÑPÔPˆ\Ý˜i¨°DÑ9Ô9ˆGØÐ"Ý”}Ô8×<Ò<¸WÀdÑKÔK�àÐà×&Ò& t¨Y¸¸dÀFÑKÔKð 2Ø �y $Ð1¨&Ð1Ð1Ð1àð -ð -Ø�t˜TÐ, VÐ,Ð,ð-ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -àŒ;ð 	ÝØQ­¬×(DÒ(DÀYÑ(OÔ(OÐQÐQñô ð ð ˆy˜$Ð) &Ð)Ð)Ð)s#   ²AÁAÁAÄ;EÅEÅE)rF   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rT   r   r   r   r   r   rf   rF   rC   rA   rK   rK   P   s�   € € € € € ðð ð  Ø+Ð+Ø"ð	-ð -ð -ð -ð !Ø!%ð)*ð )*àð)*ð ð)*ð �sŒmð	)*ð
 ˜”ð)*ð )*ð )*ð )*ð )*ð )*rC   rK   )Ú	functoolsÚ
contextlibr   Útypingr   r   r   r   r   r   Útorch._decompÚtorch._primsÚtorch._refsÚtorch._refs.nnÚtorch._refs.nn.functionalÚtorch._refs.specialÚtorch.overridesÚtorch._prims_commonr	   Ú	lru_cacherB   rI   rb   ÚTorchFunctionModerK   rF   rC   rA   ú<module>rx      sU  ðà Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ø Ð Ð Ð Ø Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :ð €Ô�TÑÔð3ð 3ñ Ôð3ðl €Ô�TÑÔðHð Hñ ÔðHðB*ð B*ð B*ð B*ð B*�E”OÔ5ñ B*ô B*ð B*ð B*ð B*rC   