§
    ž²Åjìˆ  ã                  óX  — d dl 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Zd dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlm Z m!Z! d dl"m#Z#  ej$        e%¦  «        Z&erd dl'Z'd dl(Z(	  G d	„ d
e¦  «        Z) G d„ de¦  «        Z* G d„ dej+        ¦  «        Z,	  G d„ d¦  «        Z- ej.        d¬¦  «         G d„ d¦  «        ¦   «         Z/ G d„ de¦  «        Z0ej.         G d„ d¦  «        ¦   «         Z1 ed¦  «        Z2	 ej.         G d„ d¦  «        ¦   «         Z3	 ej.         G d„ de3¦  «        ¦   «         Z4	 ej.         G d„ de3¦  «        ¦   «         Z5	  G d „ d!ee2         ¦  «        Z6 G d"„ d#¦  «        Z7 G d$„ d%¦  «        Z8 G d&„ d'e6e8         ¦  «        Z9 G d(„ d)¦  «        Z: G d*„ d+e6e:         ¦  «        Z;	  G d,„ d-¦  «        Z< G d.„ d/e6e7         ¦  «        Z= G d0„ d1¦  «        Z> G d2„ d3e>¦  «        Z? G d4„ d5¦  «        Z@ ejA        ¦   «         ZB	  G d6„ d7¦  «        ZC G d8„ d9¦  «        ZDedGd<„¦   «         ZEedHd>„¦   «         ZF ej.        d¬¦  «         G d?„ d@¦  «        ¦   «         ZG ej.        d¬¦  «         G dA„ dBeG¦  «        ¦   «         ZHdIdJdE„ZIdF„ ZJdS )Ké    )ÚannotationsN)Úabstractmethod)Úcontextmanager)ÚAnyÚCallableÚDictÚGenericÚListÚ
NamedTupleÚOptionalÚSetÚTupleÚTYPE_CHECKINGÚTypeVarÚUnion)Ú_pytree)ÚCapturedTracebackÚformat_frame)ÚWeakTensorKeyDictionaryc                  ó*   — e Zd ZU ded<   ded<   d„ ZdS )Ú	CompileIdÚintÚframe_idÚframe_compile_idc                ó$   — | j         › d| j        › �S )Nú/)r   r   ©Úselfs    ú>C:\Projects\Historical\venv\Lib\site-packages\torch/_guards.pyÚ__str__zCompileId.__str__@   s   € Ø”-Ð9Ð9 $Ô"7Ð9Ð9Ð9ó    N©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r    © r!   r   r   r   7   s<   € € € € € € Ø€M€M�Mð
 ÐÐÑð:ð :ð :ð :ð :r!   r   c                  ó*   — e Zd ZU ded<   ded<   d„ ZdS )ÚTraceIdr   Ú
compile_idr   Úattemptc                ób   — | j         dk    rt          | j        ¦  «        S | j        › d| j         › �S )Nr   Ú_)r+   Ústrr*   r   s    r   r    zTraceId.__str__J   s7   € ØŒ<˜1ÒÐÝ�t”Ñ'Ô'Ð'à”oÐ6Ð6¨¬Ð6Ð6Ð6r!   Nr"   r'   r!   r   r)   r)   D   s<   € € € € € € ØÐÐÑð €L€L�Lð7ð 7ð 7ð 7ð 7r!   r)   c                  ót   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdd„Zdd„Zdd„Zdd„Zd„ ZdS )ÚGuardSourcer   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   ÚreturnÚboolc                ó6   — | t           j        t           j        fv S ©N)r0   ÚGLOBAL_FSDP_MODULEÚLOCAL_FSDP_MODULEr   s    r   Úis_fsdp_modulezGuardSource.is_fsdp_modulec   s   € Ø�Ô6½Ô8UÐVÐVÐVr!   c                ó6   — | t           j        t           j        fv S rC   )r0   ÚGLOBAL_SPECIALIZED_NN_MODULEÚLOCAL_SPECIALIZED_NN_MODULEr   s    r   Úis_specialized_nn_modulez$GuardSource.is_specialized_nn_modulef   s    € ØÝÔ4ÝÔ3ð
ð 
ð 	
r!   c                ób   — | t           j        t           j        t           j        t           j        fv S rC   )r0   ÚGLOBAL_UNSPECIALIZED_NN_MODULEÚLOCAL_UNSPECIALIZED_NN_MODULEÚ&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEÚ%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULEr   s    r   Úis_unspecialized_nn_modulez&GuardSource.is_unspecialized_nn_modulel   s,   € ØÝÔ6ÝÔ5ÝÔ>ÝÔ=ð	
ð 
ð 	
r!   c                ó6   — | t           j        t           j        fv S rC   )r0   rN   rO   r   s    r   Ú"is_unspecialized_builtin_nn_modulez.GuardSource.is_unspecialized_builtin_nn_modulet   s    € ØÝÔ>ÝÔ=ð
ð 
ð 	
r!   c                óx   — | t           j        t           j        t           j        t           j        t           j        fv S rC   )r0   ÚLOCALrI   rE   rM   rO   r   s    r   Úis_localzGuardSource.is_localz   s2   € ØÝÔÝÔ3ÝÔ)ÝÔ5ÝÔ=ð
ð 
ð 	
r!   N©r@   rA   )r#   r$   r%   rT   ÚGLOBALrI   rH   ÚCONSTANTÚRANDOM_VALUEÚ	SHAPE_ENVrE   rD   ÚBACKWARD_STATEÚ	EPHEMERALÚSYNTHETIC_LOCALrM   rL   rO   rN   rF   rJ   rP   rR   rU   r'   r!   r   r0   r0   Q   sÏ   € € € € € Ø€EØ€FØ"#ÐØ#$Ð Ø€HØ€LØ€IØÐØÐØ€NØ€IØ€OØ$&Ð!Ø%'Ð"Ø,.Ð)Ø-/Ð*ðWð Wð Wð Wð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
r!   r0   c                  ó   — e Zd ZdS )ÚGuardBuilderBaseN©r#   r$   r%   r'   r!   r   r_   r_   ’   s   € € € € € Ø€Dr!   r_   T)Úfrozenc                  ó*   — e Zd ZU ded<   ded<   d„ ZdS )ÚSLocz,Optional[Union[traceback.FrameSummary, str]]Úframework_locúOptional[str]Úmaybe_user_locc                ó    — t          | j        t          ¦  «        r| j        nt          | j        ¦  «        }| j        �| j        › d|› d�S d|› d�S )Nz (ú)ú()Ú
isinstancerd   r.   r   rf   )r   Úflocs     r   r    zSLoc.__str__›   sg   € õ ˜$Ô,­cÑ2Ô2ð2ˆDÔÐå˜dÔ0Ñ1Ô1ð 	ð
 ÔÐ*ØÔ)Ð4Ð4¨TÐ4Ð4Ð4Ð4à�t�;�;�;Ðr!   Nr"   r'   r!   r   rc   rc   –   s=   € € € € € € à?Ð?Ð?Ñ?Ø!Ð!Ð!Ñ!ð	ð 	ð 	ð 	ð 	r!   rc   c                  ó$   — e Zd ZU ded<   ded<   dS )Ú
ShapeGuardzsympy.logic.boolalg.BooleanÚexprrc   ÚslocN©r#   r$   r%   r&   r'   r!   r   rm   rm   §   s%   € € € € € € Ø%Ð%Ð%Ñ%Ø€J€J�J€J€Jr!   rm   c                  ó  — e Zd ZU ded<   ded<   dZded<   dZded<   dZd	ed
<   dZded<   dZded<   dZ	ded<   dZ
ded<   d„ Zd„ Zd„ Zd„ Zed&d„¦   «         Zed'd„¦   «         Zed„ ¦   «         Zd„ Zd„ Zd(d!„Zd"„ Zd#„ Zd$„ Zd%„ ZdS ))ÚGuardÚSourceÚoriginating_sourcez)Callable[[GuardBuilderBase, Guard], None]Ú	create_fnNzOptional[List[str]]Úguard_typesÚ	code_listzOptional[object]Úobj_weakrefzOptional[type]Úguarded_class_weakrefzOptional[CapturedTraceback]Ústackz Optional[traceback.StackSummary]Ú
user_stackzOptional[int]Ú_hashc                ó„   — | j         €3t          | j        | j        t	          | j        ¦  «        f¦  «        | _         | j         S rC   )r|   ÚhashÚnameÚsourceÚidru   r   s    r   Ú__hash__zGuard.__hash__Ì   s6   € ØŒ:ÐÝ˜tœy¨$¬+µr¸$¼.Ñ7IÔ7IÐJÑKÔKˆDŒJØŒzÐr!   c                ó  — ddl m} t          | j        t          j        ¦  «        o| j        j        |j        u }|| j        r| j        j	        ndt          | j        ¦  «        | j        |                      ¦   «         j        j        fS )Nr   )ÚGuardBuilderéÿÿÿÿ)Útorch._dynamo.guardsr„   rj   ru   Ú	functoolsÚpartialÚfuncÚDUPLICATE_INPUTr€   ÚvalueÚlenr   Úinner_create_fnÚ__code__Úco_firstlineno)r   r„   Úis_duplicate_inputs      r   Úsort_keyzGuard.sort_keyÑ   s�   € ð 	6Ð5Ð5Ð5Ð5Ð5õ �t”~¥yÔ'8Ñ9Ô9ð DØ”Ô# |Ô'CÐCð 	ð
 Ø!%¤Ð4ˆDŒKÔÐ°"Ý�”	‰NŒNØŒIØ× Ò Ñ"Ô"Ô+Ô:ð
ð 	
r!   c                óV   — |                       ¦   «         |                      ¦   «         k     S rC   )r‘   ©r   Úothers     r   Ú__lt__zGuard.__lt__â   s   € Ø�}Š}‰Œ §¢Ñ!1Ô!1Ò1Ð1r!   c                óf   — t          | j        t          j        ¦  «        r| j        j        S | j        S rC   )rj   ru   r‡   rˆ   r‰   r   s    r   r�   zGuard.inner_create_fnå   s,   € Ý�d”n¥iÔ&7Ñ8Ô8ð 	"Ø”>Ô&Ð&à”>Ð!r!   r@   r.   c                ó4   — | j                              ¦   «         S rC   )rt   r   r   s    r   r   z
Guard.nameë   s   € àÔ&×+Ò+Ñ-Ô-Ð-r!   r0   c                ó4   — | j                              ¦   «         S rC   )rt   Úguard_sourcer   s    r   r€   zGuard.sourceï   s   € àÔ&×3Ò3Ñ5Ô5Ð5r!   c           
     ó@  — t          | t          j        ¦  «        rv | ¦   «         }|�Jdt          t	          | ¦  «        ¦  «        › d|j        j        › dt          t	          |¦  «        ¦  «        › d�S dt          t	          | ¦  «        ¦  «        › d�S t          | ¦  «        S )aÔ  
        This is a workaround of a Python weakref bug.

        `obj_weakref` is instance returned by `weakref.ref`,
        `str(obj_weakref)` is buggy if the original obj overrides __getattr__, e.g:

            class MyConfig(dict):
                def __getattr__(self, x):
                    return self[x]

            obj = MyConfig(offset=5)
            obj_weakref = weakref.ref(obj)
            str(obj_weakref)  # raise error: KeyError: '__name__'
        Nz<weakref at z; to 'z' at ú>z; dead>)rj   ÚweakrefÚReferenceTypeÚhexr�   Ú	__class__r#   r.   )rx   Úobjs     r   Úweakref_to_strzGuard.weakref_to_stró   s�   € õ  �k¥7Ô#8Ñ9Ô9ð 	$Ø�+‘-”-ˆCØˆØn¥c­"¨[©/¬/Ñ&:Ô&:ÐnÐnÀ#Ä-ÔBXÐnÐnÕ_bÕceÐfiÑcjÔcjÑ_kÔ_kÐnÐnÐnÐnàC¥c­"¨[©/¬/Ñ&:Ô&:ÐCÐCÐCÐCå�{Ñ#Ô#Ð#r!   c                ó   — d| j         r| j         j                             ¦   «         nd› dt          | j        ¦  «        › d|                      ¦   «         j        › d| j        › d| j        › d|                      | j	        ¦  «        › d| j
        › d�}|S )	Nz	
        Ú ú z&
        {
            'guard_types': z,
            'code': z,
            'obj_weakref': z
            'guarded_class': z
        }
        )r€   r   ÚlowerÚreprr�   r#   rv   rw   r¡   rx   ry   )r   Úss     r   Ú__repr__zGuard.__repr__  sÅ   € ðØ%)¤[Ð	8ˆŒÔ	×	Ò	Ñ	!Ô	!Ð	!°bðð Ý;?ÀÄ	¹?¼?ðð ØMQ×MaÒMaÑMcÔMcÔMlðð ð !Ô,ðð ð ”^ð	ð ð
 !×/Ò/°Ô0@ÑAÔAðð ð #Ô8ðð ð ˆð ˆr!   c                ól  — dt          | j        ¦  «        › d�}| j        r| j        j                             ¦   «         nd}|d|› d�z  }|d|                      ¦   «         j        › d�z  }|d| j        › d�z  }|d| j        › d�z  }|d|                      | j	        ¦  «        › d�z  }|d	| j
        › d�z  }|S )
NzName: ú
r£   z    Source: z    Create Function: z    Guard Types: z    Code List: z    Object Weakref: z    Guarded Class Weakref: )r¦   r   r€   r¥   r�   r#   rv   rw   r¡   rx   ry   )r   Úoutputr€   s      r   r    zGuard.__str__  sí   € Ø-�$˜tœy™/œ/Ð-Ð-Ð-ˆØ-1¬[Ð@�”Ô!×'Ò'Ñ)Ô)Ð)¸bˆØÐ+ Ð+Ð+Ð+Ñ+ˆØÐM¨$×*>Ò*>Ñ*@Ô*@Ô*IÐMÐMÐMÑMˆØÐ: dÔ&6Ð:Ð:Ð:Ñ:ˆØÐ6 D¤NÐ6Ð6Ð6Ñ6ˆØÐR¨×)<Ò)<¸TÔ=MÑ)NÔ)NÐRÐRÐRÑRˆØÐN°Ô0JÐNÐNÐNÑNˆØˆr!   Úbuilderr_   c           	     óŽ  — 	 |                       || ¦  «        S # t          $ r¢ t                               dt	          | ¦  «                             ¦   «         ¦  «         | j        r_t                               dd                     | j         	                    ¦   «         dd …         ¦  «                             ¦   «         ¦  «         ‚ w xY w)NzError while creating guard:
%szCreated at:
%sr£   éüÿÿÿ)
ru   Ú	ExceptionÚlogÚ	exceptionr.   Úrstriprz   ÚerrorÚjoinÚformat)r   r¬   s     r   ÚcreatezGuard.create#  s¯   € ð	Ø—>’> '¨4Ñ0Ô0Ð0øÝð 	ð 	ð 	Ý�MŠMÐ;½SÀ¹Y¼Y×=MÒ=MÑ=OÔ=OÑPÔPÐPØŒzð YÝ—	’	Ð+¨R¯WªW°T´Z×5FÒ5FÑ5HÔ5HÈÈÈÔ5MÑ-NÔ-N×-UÒ-UÑ-WÔ-WÑXÔXÐXØð		øøøs
   ‚ ˜B,Cc                ó4   — | j                              ¦   «         S rC   )r€   rJ   r   s    r   rJ   zGuard.is_specialized_nn_module,  s   € ØŒ{×3Ò3Ñ5Ô5Ð5r!   c                ó4   — | j                              ¦   «         S rC   )r€   rF   r   s    r   rF   zGuard.is_fsdp_module/  s   € ØŒ{×)Ò)Ñ+Ô+Ð+r!   c                ó4   — | j                              ¦   «         S rC   )r€   rU   r   s    r   rU   zGuard.is_local2  s   € ØŒ{×#Ò#Ñ%Ô%Ð%r!   c                óh  — | j         sg | _         | j                              |¦  «         | j        |d fv s
J d¦   «         ‚|| _        | j        s|| _        n| j                             |¦  «         | j        |d fv s2t          | j        ¦  «        r|                      ¦   «         �
J d¦   «         ‚|| _        d S )Nz+Guarded class id must be identical, or NonezBGuarded object must be identical, None or ephemeral (dead weakref))rv   Úappendry   rw   Úextendrx   Úcallable)r   Ú
guard_typeÚguarded_classrw   rx   s        r   Úset_export_infozGuard.set_export_info5  sð   € ØÔð 	"Ø!ˆDÔàÔ×Ò 
Ñ+Ô+Ð+àÔ)ØØð.
ð 
ð 
ð 
ð 9ñ
ô 
ð 
ð &3ˆÔ"àŒ~ð 	-Ø&ˆDŒNˆNàŒN×!Ò! )Ñ,Ô,Ð,ð Ô ¨dÐ 3Ð3Ð3Ý˜Ô(Ñ)Ô)ð 4à× Ò Ñ"Ô"Ð*Ð*ØOñ +Ô*ð+ð 'ˆÔÐÐr!   ©r@   r.   ©r@   r0   )r¬   r_   )r#   r$   r%   r&   rv   rw   rx   ry   rz   r{   r|   r‚   r‘   r•   r�   Úpropertyr   r€   Ústaticmethodr¡   r¨   r    r¶   rJ   rF   rU   rÀ   r'   r!   r   rr   rr   ¬   s¯  € € € € € € ð& ÐÐÑØ8Ð8Ð8Ñ8ð (,€KÐ+Ð+Ð+Ñ+Ø%)€IÐ)Ð)Ð)Ñ)Ø$(€KÐ(Ð(Ð(Ñ(Ø,0ÐÐ0Ð0Ð0Ñ0à)-€EÐ-Ð-Ð-Ñ-Ø37€JÐ7Ð7Ð7Ñ7Ø€EÐÐÐÑðð ð ð

ð 
ð 
ð"2ð 2ð 2ð"ð "ð "ð ð.ð .ð .ñ „Xð.ð ð6ð 6ð 6ñ „Xð6ð ð$ð $ñ „\ð$ð0
ð 
ð 
ð	ð 	ð 	ðð ð ð ð6ð 6ð 6ð,ð ,ð ,ð&ð &ð &ð'ð 'ð 'ð 'ð 'r!   rr   ÚTc                  ó   — e Zd ZdS )ÚGuardEnvExprNr`   r'   r!   r   rÇ   rÇ   \  s   € € € € € à€Dr!   rÇ   c                  ó*   — e Zd ZU ded<   ded<   d„ ZdS )ÚDuplicateInputsrs   Úinput_source_aÚinput_source_bc                ó*   — | j         | j        k    sJ ‚d S rC   )rÊ   rË   r   s    r   Ú__post_init__zDuplicateInputs.__post_init__l  s   € ØÔ" dÔ&9Ò9Ð9Ð9Ð9Ð9Ð9r!   N)r#   r$   r%   r&   rÍ   r'   r!   r   rÉ   rÉ   g  s=   € € € € € € àÐÐÑØÐÐÑð:ð :ð :ð :ð :r!   rÉ   c                  ó$   — e Zd ZU ded<   ded<   dS )ÚStorageOverlapzList[Source]Úoverlapping_sourcesÚnon_overlapping_sourcesNrp   r'   r!   r   rÏ   rÏ   ~  s*   € € € € € € à%Ð%Ð%Ñ%Ø)Ð)Ð)Ñ)Ð)Ð)r!   rÏ   c                  ó>   — e Zd Zedd„¦   «         Zedd„¦   «         ZdS )	ÚCheckpointabler@   rÅ   c                ó   — d S rC   r'   r   s    r   Úcopy_graphstatezCheckpointable.copy_graphstate’  s   € Ø$' Cr!   Ústatec                ó   — d S rC   r'   ©r   rÖ   s     r   Úrestore_graphstatez!Checkpointable.restore_graphstate•  s   € Ø,/¨Cr!   N)r@   rÅ   )rÖ   rÅ   )r#   r$   r%   r   rÕ   rÙ   r'   r!   r   rÓ   rÓ   ‘  s<   € € € € € ØØ'Ð'Ð'ñ „^Ø'àØ/Ð/Ð/ñ „^Ø/Ð/Ð/r!   rÓ   c                  óD   — e Zd ZU dZ e¦   «         Zded<   d„ Zd„ Zd„ Z	dS )ÚGuardsCheckpointStatezW
    The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
    ú
Set[Guard]Údynamo_guardsc                ó   — || _         d S rC   )rÝ   )r   rÝ   s     r   Ú__init__zGuardsCheckpointState.__init__   s   € Ø*ˆÔÐÐr!   c                ón   — | j                              |j         ¦  «        }t          |¦  «        dk    rdS |S )z¹
        Produces a delta against another GuardsCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        Guard type objects.
        r   N)rÝ   Ú
differencerŒ   ©r   r”   Úrs      r   ÚdiffzGuardsCheckpointState.diff£  s6   € ð Ô×)Ò)¨%Ô*=Ñ>Ô>ˆÝˆq‰6Œ6�QŠ;ˆ;Ø�4Øˆr!   c                ó0   — |                       |¦  «        d u S rC   ©rä   r“   s     r   Ú__eq__zGuardsCheckpointState.__eq__¯  ó   € Ø�yŠy˜ÑÔ 4Ð'Ð'r!   N)
r#   r$   r%   Ú__doc__ÚsetrÝ   r&   rß   rä   rç   r'   r!   r   rÛ   rÛ   ™  sf   € € € € € € ðð ð !$ ¡¤€MÐ%Ð%Ð%Ñ%ð+ð +ð +ð
ð 
ð 
ð(ð (ð (ð (ð (r!   rÛ   c                  ó0   — e Zd ZU i Zded<   d„ Zd„ Zd„ ZdS )ÚModuleContextCheckpointStatezDict[str, torch.nn.Module]Ú
nn_modulesc                ó   — || _         d S rC   ©rí   )r   rí   s     r   rß   z%ModuleContextCheckpointState.__init__¶  s   € Ø$ˆŒˆˆr!   c                óê   — t          | j                             ¦   «         ¦  «                             t          |j                             ¦   «         ¦  «        ¦  «        }t	          |¦  «        dk    rdS |S )z¾
        Produces a delta against another ModuleContextCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        module key names.
        r   N)rê   rí   Úkeysrá   rŒ   râ   s      r   rä   z!ModuleContextCheckpointState.diff¹  s]   € õ �”×$Ò$Ñ&Ô&Ñ'Ô'×2Ò2µ3°uÔ7G×7LÒ7LÑ7NÔ7NÑ3OÔ3OÑPÔPˆÝˆq‰6Œ6�QŠ;ˆ;Ø�4Øˆr!   c                ó0   — |                       |¦  «        d u S rC   ræ   r“   s     r   rç   z#ModuleContextCheckpointState.__eq__Å  rè   r!   N)r#   r$   r%   rí   r&   rß   rä   rç   r'   r!   r   rì   rì   ³  sT   € € € € € € Ø-/€JÐ/Ð/Ð/Ñ/ð%ð %ð %ð
ð 
ð 
ð(ð (ð (ð (ð (r!   rì   c                  ó"   — e Zd Zdd„Zd„ Zd„ ZdS )ÚModuleContextr@   ÚNonec                ó   — i | _         d S rC   rï   r   s    r   rß   zModuleContext.__init__Ê  s   € Ø*,ˆŒˆˆr!   c                óD   — t          t          | j        ¦  «        ¦  «        S rC   )rì   Údictrí   r   s    r   rÕ   zModuleContext.copy_graphstateÍ  s   € Ý+­D°´Ñ,AÔ,AÑBÔBÐBr!   c                óL   — t          |t          ¦  «        sJ ‚|j        | _        d S rC   )rj   rì   rí   rØ   s     r   rÙ   z ModuleContext.restore_graphstateÐ  s'   € Ý˜%Õ!=Ñ>Ô>Ð>Ð>Ð>ØÔ*ˆŒˆˆr!   N©r@   rõ   ©r#   r$   r%   rß   rÕ   rÙ   r'   r!   r   rô   rô   É  sI   € € € € € ð-ð -ð -ð -ðCð Cð Cð+ð +ð +ð +ð +r!   rô   c                  ó0   — e Zd ZU i Zded<   d„ Zd„ Zd„ ZdS )ÚGlobalContextCheckpointStatezDict[str, Tuple[Callable, ...]]Úglobal_statec                ó   — || _         d S rC   ©rþ   )r   Úglobal_statess     r   rß   z%GlobalContextCheckpointState.__init__Ø  s   € Ø)ˆÔÐÐr!   c                óê   — t          | j                             ¦   «         ¦  «                             t          |j                             ¦   «         ¦  «        ¦  «        }t	          |¦  «        dk    rdS |S )z¾
        Produces a delta against another GlobalContextCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        global key names.
        r   N)rê   rþ   rñ   rá   rŒ   râ   s      r   rä   z!GlobalContextCheckpointState.diffÛ  s^   € õ �Ô!×&Ò&Ñ(Ô(Ñ)Ô)×4Ò4µS¸Ô9K×9PÒ9PÑ9RÔ9RÑ5SÔ5SÑTÔTˆÝˆq‰6Œ6�QŠ;ˆ;Ø�4Øˆr!   c                ó0   — |                       |¦  «        d u S rC   ræ   r“   s     r   rç   z#GlobalContextCheckpointState.__eq__ç  rè   r!   N)r#   r$   r%   rþ   r&   rß   rä   rç   r'   r!   r   rý   rý   Õ  sT   € € € € € € Ø46€LÐ6Ð6Ð6Ñ6ð*ð *ð *ð
ð 
ð 
ð(ð (ð (ð (ð (r!   rý   c                  ó.   — e Zd ZdZh d£Zd	d„Zd„ Zd„ ZdS )
ÚGlobalContextzz
    This keeps track of the global torch state during tracing of a function.
    For example, torch.is_grad_enabled.
    >   Úgrad_enabledÚautocast_enabledÚautocast_cpu_dtypeÚautocast_gpu_dtypeÚautocast_cpu_enabledÚautocast_cache_enabledÚtorch_function_enabledr@   rõ   c                ó   — i | _         d S rC   r   r   s    r   rß   zGlobalContext.__init__û  s   € Ø=?ˆÔÐÐr!   c                óD   — t          t          | j        ¦  «        ¦  «        S rC   )rý   rø   rþ   r   s    r   rÕ   zGlobalContext.copy_graphstateþ  s   € Ý+­D°Ô1BÑ,CÔ,CÑDÔDÐDr!   c                óf  — t          |t          ¦  «        sJ ‚|j        | _        t          | j        ¦  «        t          | j        ¦  «        k    r/t          | j                             ¦   «         ¦  «        | j        k    s
J d¦   «         ‚| j                             ¦   «         D ]\  }} ||¦  «         Œd S )NzGlobal state mismatch)rj   rý   rþ   rŒ   Ú_supported_global_statesrê   rñ   Úvalues)r   rÖ   r‰   Úargss       r   rÙ   z GlobalContext.restore_graphstate  s¼   € Ý˜%Õ!=Ñ>Ô>Ð>Ð>Ð>Ø!Ô.ˆÔå�Ô!Ñ"Ô"¥c¨$Ô*GÑ&HÔ&HÒHÐHÝ�DÔ%×*Ò*Ñ,Ô,Ñ-Ô-°Ô1NÒNÐNÐNØ"ñ OÔNðOð Ô+×2Ò2Ñ4Ô4ð 	ð 	‰JˆD�$ØˆD�‰JŒJˆJˆJð	ð 	r!   Nrú   )r#   r$   r%   ré   r  rß   rÕ   rÙ   r'   r!   r   r  r  ë  si   € € € € € ðð ð
 ð  ð  Ðð@ð @ð @ð @ðEð Eð Eðð ð ð ð r!   r  c                  óL   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zddd	œdd„Zdd„Z	d„ Z
dS )Ú	GuardsSetNc                ó4   — |€t          ¦   «         }|| _        d S rC   )rê   Úinner)r   r  s     r   rß   zGuardsSet.__init__  s   € Øˆ=Ý‘E”EˆEØˆŒ
ˆ
ˆ
r!   c                ó*   — t          | j        ¦  «        S rC   )Úiterr  r   s    r   Ú__iter__zGuardsSet.__iter__  ó   € Ý�D”JÑÔÐr!   c                ó*   — t          | j        ¦  «        S rC   )rŒ   r  r   s    r   Ú__len__zGuardsSet.__len__  s   € Ý�4”:‰ŒÐr!   c                ó:   — t          | j        |j        z
  ¦  «        S rC   )r  r  r“   s     r   Ú__sub__zGuardsSet.__sub__$  s   € Ý˜œ e¤kÑ1Ñ2Ô2Ð2r!   c                ó*   — t          | j        ¦  «        S rC   )rA   r  r   s    r   Ú__bool__zGuardsSet.__bool__'  r  r!   Tr   )Úcollect_debug_stackÚskipÚguardrr   c               óæ   — || j         v rd S |rI|j        €t          j        d|z   ¬¦  «        |_        |j        €t
                               ¦   «         |_        | j                              |¦  «         d S ©Nr1   )r"  )r  rz   r   Úextractr{   ÚTracingContextÚextract_stackÚadd)r   r#  r!  r"  s       r   r)  zGuardsSet.add*  su   € Ø�D”JÐÐØˆFØð 	BØŒ{Ð"Ý/Ô7¸QÀ¹XÐFÑFÔF�”ØÔÐ'Ý#1×#?Ò#?Ñ#AÔ#A�Ô ØŒ
�Š�uÑÔÐÐÐr!   ÚothersrÜ   c                óH   — |D ]}|D ]}|                       |d¬¦  «         ŒŒd S r%  )r)  )r   r*  ÚoÚgs       r   ÚupdatezGuardsSet.update4  sH   € Øð 	$ð 	$ˆAØð $ð $�Ø—’˜ �Ñ#Ô#Ð#Ð#ð$ð	$ð 	$r!   c                ó8   ‡— ˆfd„| j         D ¦   «         | _         dS )z%Delete all guards with a given sourcec                ó*   •— h | ]}|j         ‰k    ¯|’ŒS r'   )rt   )Ú.0r-  r€   s     €r   ú	<setcomp>z6GuardsSet.remove_guards_with_source.<locals>.<setcomp>;  s&   ø€ ÐNÐNÐN˜A¨qÔ/CÀvÒ/MÐ/M�aÐ/MÐ/MÐ/Mr!   N)r  )r   r€   s    `r   Úremove_guards_with_sourcez#GuardsSet.remove_guards_with_source9  s$   ø€ àNÐNÐNÐN ¤ÐNÑNÔNˆŒ
ˆ
ˆ
r!   rC   )r#  rr   )r*  rÜ   )r#   r$   r%   rß   r  r  r  r   r)  r.  r3  r'   r!   r   r  r    s±   € € € € € ðð ð ð ð
 ð  ð  ðð ð ð
3ð 3ð 3ð ð  ð  ð 8<À!ð ð ð ð ð ð ð$ð $ð $ð $ð
Oð Oð Oð Oð Or!   r  c                  ó"   — e Zd Zdd„Zd„ Zd„ ZdS )ÚGuardsContextr@   rõ   c                ó:   — t          ¦   «         | _        g | _        d S rC   )r  rÝ   Úaotautograd_guardsr   s    r   rß   zGuardsContext.__init__?  s   € Ý(1©¬ˆÔØ68ˆÔÐÐr!   c                óN   — t          t          | j        j        ¦  «        ¦  «        S rC   )rÛ   rê   rÝ   r  r   s    r   rÕ   zGuardsContext.copy_graphstateC  s   € Ý$¥S¨Ô);Ô)AÑ%BÔ%BÑCÔCÐCr!   c                óf   — t          |t          ¦  «        sJ ‚t          |j        ¦  «        | _        d S rC   )rj   rÛ   r  rÝ   rØ   s     r   rÙ   z GuardsContext.restore_graphstateF  s2   € å˜%Õ!6Ñ7Ô7Ð7Ð7Ð7Ý& uÔ':Ñ;Ô;ˆÔÐÐr!   Nrú   rû   r'   r!   r   r5  r5  >  sI   € € € € € ð9ð 9ð 9ð 9ðDð Dð Dð<ð <ð <ð <ð <r!   r5  c                  óž   — e Zd Zedd„¦   «         Zedd„¦   «         Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	dS )ÚHopSubgraphCacheÚ	cache_keyr.   Ú
identifierc                ó   — d S rC   r'   ©r   r<  r=  s      r   Úadd_dynamo_identifierz&HopSubgraphCache.add_dynamo_identifierM  ó   € ØFIÀcr!   r@   re   c                ó   — d S rC   r'   ©r   r<  s     r   Úget_dynamo_identifierz&HopSubgraphCache.get_dynamo_identifierP  rA  r!   Úkeyr   c                ó   — d S rC   r'   ©r   r=  rE  s      r   Úadd_autograd_key_entryz'HopSubgraphCache.add_autograd_key_entryS  rA  r!   c                ó   — d S rC   r'   ©r   r=  s     r   Úget_autograd_key_entryz'HopSubgraphCache.get_autograd_key_entryV  s   € Ø7:°sr!   c                ó   — d S rC   r'   rG  s      r   Úadd_proxy_dispatch_entryz)HopSubgraphCache.add_proxy_dispatch_entryY  s   € ØHKÈr!   c                ó   — d S rC   r'   rJ  s     r   Úget_proxy_dispatch_entryz)HopSubgraphCache.get_proxy_dispatch_entry\  s   € Ø9<¸r!   N©r<  r.   r=  r.   ©r<  r.   r@   re   ©r=  r.   rE  r   ©r=  r.   )
r#   r$   r%   r   r@  rD  rH  rK  rM  rO  r'   r!   r   r;  r;  L  s”   € € € € € ØØIÐIÐIñ „^ØIàØIÐIÐIñ „^ØIàØIÐIÐIñ „^ØIàØ:Ð:Ð:ñ „^Ø:àØKÐKÐKñ „^ØKàØ<Ð<Ð<ñ „^Ø<Ð<Ð<r!   r;  c                  óF   — e Zd Zdd„Zdd„Zdd	„Zdd„Zdd„Zdd„Zdd„Z	dS )ÚInvokeSubgraphCacher@   rõ   c                ó0   — i | _         i | _        i | _        d S rC   )Úautograd_cacheÚproxy_dispatch_cacheÚdynamo_identifiersr   s    r   rß   zInvokeSubgraphCache.__init__a  s    € Ø35ˆÔØ9;ˆÔ!Ø24ˆÔÐÐr!   r<  r.   r=  c                ó   — || j         |<   d S rC   )rY  r?  s      r   r@  z)InvokeSubgraphCache.add_dynamo_identifierf  s   € Ø-7ˆÔ 	Ñ*Ð*Ð*r!   re   c                ó8   — | j                              |d ¦  «        S rC   )rY  ÚgetrC  s     r   rD  z)InvokeSubgraphCache.get_dynamo_identifieri  s   € ØÔ&×*Ò*¨9°dÑ;Ô;Ð;r!   rE  r   c                ó   — || j         |<   d S rC   )rW  rG  s      r   rH  z*InvokeSubgraphCache.add_autograd_key_entryl  s   € Ø*-ˆÔ˜JÑ'Ð'Ð'r!   c                ó8   — | j                              |d ¦  «        S rC   )rW  r\  rJ  s     r   rK  z*InvokeSubgraphCache.get_autograd_key_entryo  s   € ØÔ"×&Ò& z°4Ñ8Ô8Ð8r!   c                ó   — || j         |<   d S rC   )rX  rG  s      r   rM  z,InvokeSubgraphCache.add_proxy_dispatch_entryr  s   € Ø03ˆÔ! *Ñ-Ð-Ð-r!   c                ó8   — | j                              |d ¦  «        S rC   )rX  r\  rJ  s     r   rO  z,InvokeSubgraphCache.get_proxy_dispatch_entryu  s   € ØÔ(×,Ò,¨Z¸Ñ>Ô>Ð>r!   Nrú   rP  rQ  rR  rS  )
r#   r$   r%   rß   r@  rD  rH  rK  rM  rO  r'   r!   r   rU  rU  `  s    € € € € € ð5ð 5ð 5ð 5ð
8ð 8ð 8ð 8ð<ð <ð <ð <ð.ð .ð .ð .ð9ð 9ð 9ð 9ð4ð 4ð 4ð 4ð?ð ?ð ?ð ?ð ?ð ?r!   rU  c                  ó   — e Zd Zd	d„Zd
d„ZdS )ÚHopDispatchSetCacher@   rõ   c                ó<   — ddl m} |t          ¦   «         i| _        d S )Nr   )Úinvoke_subgraph)Ú'torch._higher_order_ops.invoke_subgraphrd  rU  Úhop_cache_map)r   rd  s     r   rß   zHopDispatchSetCache.__init__z  s.   € àKÐKÐKÐKÐKÐKà-Õ/BÑ/DÔ/DÐEˆÔÐÐr!   Úopútorch._ops.HigherOrderOperatorúOptional[HopSubgraphCache]c                ó2   — || j         vrd S | j         |         S rC   )rf  )r   rg  s     r   Ú	get_cachezHopDispatchSetCache.get_cache€  s%   € ð �TÔ'Ð'Ð'Ø�4ØÔ! "Ô%Ð%r!   Nrú   )rg  rh  r@   ri  )r#   r$   r%   rß   rk  r'   r!   r   rb  rb  y  s@   € € € € € ðFð Fð Fð Fð&ð &ð &ð &ð &ð &r!   rb  c                  óp   — e Zd Zed	d„¦   «         Zed
d„¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚCompileContextr@   c                 ó6   — t           j        €J ‚t           j        S rC   )Ú_TLSÚcompile_contextr'   r!   r   r\  zCompileContext.getž  s   € åÔ#Ð/Ð/Ð/ÝÔ#Ð#r!   úOptional[CompileContext]c                 ó.   — t          t          dd ¦  «        S ©Nrp  ©Úgetattrro  r'   r!   r   Útry_getzCompileContext.try_get£  ó   € å•tÐ.°Ñ5Ô5Ð5r!   c                ób   — |�t          |t          ¦  «        sJ ‚|| _        d| _        g | _        d S )Nr   )rj   r   r*   r+   Úshape_env_guards)r   r*   s     r   rß   zCompileContext.__init__§  s9   € ØÐ!¥Z°
½IÑ%FÔ%FÐ!Ð!ÐFØ/9ˆŒØˆŒà+-ˆÔÐÐr!   c                 óJ   — t                                ¦   «         } | €d S | j        S rC   )rm  rv  r*   r   s    r   Úcurrent_compile_idz!CompileContext.current_compile_id®  s%   € å×%Ò%Ñ'Ô'ˆØˆ<Ø�4ØŒÐr!   c                 ó‚   — t                                ¦   «         } | €d S | j        €d S t          | j        | j        ¦  «        S rC   )rm  rv  r*   r)   r+   r   s    r   Úcurrent_trace_idzCompileContext.current_trace_idµ  s>   € å×%Ò%Ñ'Ô'ˆØˆ<Ø�4ØŒ?Ð"Ø�4Ý�t”¨¬Ñ5Ô5Ð5r!   N)r@   rm  )r@   rq  )	r#   r$   r%   rÄ   r\  rv  rß   r{  r}  r'   r!   r   rm  rm  �  s—   € € € € € Øð$ð $ð $ñ „\ð$ð ð6ð 6ð 6ñ „\ð6ð.ð .ð .ð ðð ñ „\ðð ð6ð 6ñ „\ð6ð 6ð 6r!   rm  c                  ó0  — e Zd ZdZedd„¦   «         Zedd„¦   «         Zd„ Zd„ Zee	d„ ¦   «         ¦   «         Z
ed	„ ¦   «         Zeej	        d
„ ¦   «         ¦   «         Zeej	        d„ ¦   «         ¦   «         Zeej	        d„ ¦   «         ¦   «         Zed„ ¦   «         ZdS )r'  zÅ
    Provides the currently installed TracingContext, or None.

    Note that it is a staticmethod, and invocations outside of `with tracing()` (see below), are valid but
    will return None.
    r@   úOptional[TracingContext]c                 ó.   — t          t          dd ¦  «        S )NÚtracing_contextrt  r'   r!   r   rv  zTracingContext.try_getÇ  rw  r!   c                 óZ   — t                                ¦   «         x} r| S t          d¦  «        ‚)Nz<TracingContext.get() must be called within an ongoing trace.)r'  rv  ÚRuntimeError)Úctxs    r   r\  zTracingContext.getË  s5   € å ×(Ò(Ñ*Ô*Ð*ˆ3ð 	ØˆJÝØJñ
ô 
ð 	
r!   c                ó^  — t          ¦   «         | _        t          ¦   «         | _        t	          ¦   «         | _        || _        g | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d| _        t!          ¦   «         | _        d| _        t'          ¦   «         | _        d S ©NF)r5  Úguards_contextrô   Úmodule_contextr  Úglobal_contextÚ	fake_modeÚframe_summary_stackÚloc_in_frameÚfw_metadataÚaot_graph_nameÚparams_flatÚparams_flat_unwrap_subclassesÚparams_unwrapped_to_flat_indexÚoutput_stridesÚ#force_unspec_int_unbacked_size_liker   Útensor_to_contextÚfakify_first_callrb  Úhop_dispatch_set_cache)r   rŠ  s     r   rß   zTracingContext.__init__Ó  s©   € Ý+™oœoˆÔÝ+™oœoˆÔÝ+™oœoˆÔØ"ˆŒØ#%ˆÔ ð !ˆÔàˆÔà"ˆÔØˆÔØ-1ˆÔ*Ø.2ˆÔ+ð JNˆÔð 49ˆÔ0å!8Ñ!:Ô!:ˆÔð
 "'ˆÔÝ&9Ñ&;Ô&;ˆÔ#Ð#Ð#r!   c                ó   — i | j         _        d S rC   )r‰  rþ   r   s    r   ÚclearzTracingContext.clear   s   € ð ,.ˆÔÔ(Ð(Ð(r!   c               +  óª  K  — i }t                                ¦   «         }|                      ¦   «         D ]}t          ||¦  «        ||<   Œ|                      ¦   «         D ]\  }}t          |||¦  «         Œ	 d V — |                     ¦   «         D ]\  }}t          |||¦  «         Œd S # |                     ¦   «         D ]\  }}t          |||¦  «         Œw xY wrC   )r'  r\  rñ   ru  ÚitemsÚsetattr)ÚkwargsÚpriorr„  rE  Úvals        r   ÚpatchzTracingContext.patch  sú   è è € ð ˆÝ× Ò Ñ"Ô"ˆà—;’;‘=”=ð 	+ð 	+ˆCå   cÑ*Ô*ˆE�#‰JˆJØŸš™œð 	#ð 	#‰HˆC�Ý�C˜˜cÑ"Ô"Ð"Ð"ð	'ØˆEˆEˆEà!ŸKšK™MœMð 'ð '‘��SÝ˜˜S #Ñ&Ô&Ð&Ð&ð'ð 'ø˜EŸKšK™MœMð 'ð '‘��SÝ˜˜S #Ñ&Ô&Ð&Ð&ð'øøøs   Á4B% Â%-Cc                 óÎ   — t                                ¦   «         } | €t          j        ¦   «         S | j        }| j        �|| j        gz   }t          j                             |¦  «        S rC   )r'  rv  Ú	tracebackÚStackSummaryr‹  rŒ  Ú	from_list)r   rz   s     r   r(  zTracingContext.extract_stack  s_   € å×%Ò%Ñ'Ô'ˆØˆ<ÝÔ)Ñ+Ô+Ð+ØÔ(ˆØÔÐ(Ø˜TÔ.Ð/Ñ/ˆEÝÔ%×/Ò/°Ñ6Ô6Ð6r!   c               #  ó˜  K  — t                                ¦   «         } t          j        j                             | dg ¦  «        5  t          j        j                             | dd ¦  «        5  	 d V — n*# t          $ r}t          |d¦  «        sd |_        ‚ d }~ww xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr‹  rŒ  Ú
real_stack)	r'  r\  ÚunittestÚmockrŸ  Úobjectr¯   Úhasattrr¥  )ÚtcÚes     r   Úclear_framezTracingContext.clear_frame"  sd  è è € õ ×ÒÑ!Ô!ˆÝŒ]Ô ×'Ò'ØÐ% rñ
ô 
ð 	ð 	åŒ=Ô×%Ò% b¨.¸$Ñ?Ô?ð	ð 	ðØ����øÝð ð ð õ$ ˜q ,Ñ/Ô/ð (Ø#'�A”LØøøøøð)øøøð ð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sZ   Á'B?Á)B'Á+A0Á/B'Á0
BÁ:BÂBÂB'ÂB?Â'B+	Â+B?Â.B+	Â/B?Â?CÃCc              #  ó¨  K  — t                                ¦   «         }| �|j                             | ¦  «         |j        }d |_        	 d V — n<# t
          $ r/}t          |d¦  «        s|                     ¦   «         |_        ‚ d }~ww xY w	 | �|j         	                    ¦   «          ||_        d S # | �|j         	                    ¦   «          ||_        w xY w)Nr¥  )
r'  r\  r‹  r»   rŒ  r¯   r©  r(  r¥  Úpop)Úframe_summaryrª  Úoldr«  s       r   Úcurrent_framezTracingContext.current_frameA  sù   è è € õ
 ×ÒÑ!Ô!ˆØÐ$ØÔ"×)Ò)¨-Ñ8Ô8Ð8ØŒoˆØˆŒð		"ØˆEˆEˆEˆEøÝð 	ð 	ð 	Ý˜1˜lÑ+Ô+ð 2Ø!×/Ò/Ñ1Ô1�”Øøøøøð	øøøð ð Ð(ØÔ&×*Ò*Ñ,Ô,Ð,Ø!ˆBŒOˆOˆOøð Ð(ØÔ&×*Ò*Ñ,Ô,Ð,Ø!ˆBŒOÐ!Ð!Ð!Ð!s*   ÁA ÁB- Á
BÁ*B Â BÂB- Â-$Cc               #  ó¢   K  — t                                ¦   «         } | €d V — d S | j        }g | _        	 | j        V — || _        d S # || _        w xY wrC   )r'  rv  r’  )rª  Úold_output_stridess     r   Úreport_output_stridesz$TracingContext.report_output_stridesV  st   è è € õ ×#Ò#Ñ%Ô%ˆØˆ:ØˆJˆJˆJØˆFØÔ.ÐØˆÔð	3ØÔ#Ð#Ð#Ð#à 2ˆBÔÐÐøÐ 2ˆBÔÐ2Ð2Ð2Ð2s   ³	A Á	Ac                ón   — t          j        | ||d¬¦  «        t                               ¦   «         _        d S )NF)Úlookup_line)r¡  ÚFrameSummaryr'  r\  rŒ  )ÚfilenameÚlinenoÚ
frame_names      r   Úset_current_loczTracingContext.set_current_locd  s7   € å,5Ô,BØ�f˜j°eð-
ñ -
ô -
�×ÒÑÔÔ)Ð)Ð)r!   N)r@   r  )r@   r'  )r#   r$   r%   ré   rÄ   rv  r\  rß   r˜  r   rŸ  r(  Ú
contextlibr¬  r±  r´  r»  r'   r!   r   r'  r'  ¿  sS  € € € € € ðð ð ð6ð 6ð 6ñ „\ð6ð ð
ð 
ð 
ñ „\ð
ð+<ð +<ð +<ðZ.ð .ð .ð
 Øð'ð 'ñ „^ñ „\ð'ð ð7ð 7ñ „\ð7ð ØÔðð ñ Ôñ „\ðð: ØÔð"ð "ñ Ôñ „\ð"ð& ØÔð
3ð 
3ñ Ôñ „\ð
3ð ð
ð 
ñ „\ð
ð 
ð 
r!   r'  Úcontextrq  c              #  ó’   K  — t          t          dd ¦  «        }| t          _        	 | V — |t          _        d S # |t          _        w xY wrs  )ru  ro  rp  )r½  Úold_contexts     r   rp  rp  k  sP   è è € å�$Ð 1°4Ñ8Ô8€KØ"…DÔð+Øˆˆˆà*�ÔÐÐø˜{�ÔÐ*Ð*Ð*Ð*s	   ¦8 ¸Ar  c              #  óÞ  K  — t          t          dd¦  «        }| t          _        	 | V — n># t          $ r1}t	          |d¦  «        s| �|                      ¦   «         |_        ‚ d}~ww xY w	 | �1| j        �*| j        j        �| j        j         	                    ¦   «          |t          _        dS # | �1| j        �*| j        j        �| j        j         	                    ¦   «          |t          _        w xY w)zË
    This function installs the passed in tracing context as a dynamic scoped
    global variable.

    Calls to TracingContext.get() while not under a `with tracing()` context
    will return None.
    r�  Nr¥  )
ru  ro  r�  r¯   r©  r(  r¥  rŠ  Ú	shape_envÚcleanup)r½  r¿  r«  s      r   ÚtracingrÃ  u  s  è è € õ �$Ð 1°4Ñ8Ô8€KØ"…DÔð+ØˆˆˆˆøÝð ð ð Ý�q˜,Ñ'Ô'ð 	3¨GÐ,?Ø"×0Ò0Ñ2Ô2ˆAŒLØøøøøðøøøð 	ð ÐØÔ!Ð-ØÔ!Ô+Ð7àÔÔ'×/Ò/Ñ1Ô1Ð1Ø*�ÔÐÐøð ÐØÔ!Ð-ØÔ!Ô+Ð7àÔÔ'×/Ò/Ñ1Ô1Ð1Ø*�ÔÐ*Ð*Ð*Ð*s&   ¦+ ªB+ «
A&µ,A!Á!A&Á&B+ Â+AC,c                  óF   — e Zd Zd„ Zd„ Zd„ Zdd„Zdd„Zdd
„Zdd„Z	d„ Z
dS )rs   c                ó   — dS r†  r'   r   s    r   Úis_dict_keyzSource.is_dict_key”  ó   € Øˆur!   c                ó   — dS r†  r'   r   s    r   Úis_ephemeralzSource.is_ephemeral—  rÇ  r!   c                ó   — t           ‚rC   ©ÚNotImplementedError)r   Úcodegens     r   ÚreconstructzSource.reconstructš  ó   € Ý!Ð!r!   r@   r0   c                ó   — t           ‚rC   rË  r   s    r   r™   zSource.guard_source�  rÏ  r!   r.   c                ó   — t           ‚rC   rË  r   s    r   r   zSource.name   rÏ  r!   rr   c                óp   — |                       ¦   «         t          j        u rt          ‚t	          | |¦  «        S rC   )r™   r0   rX   rÌ  rr   )r   Úfns     r   Ú
make_guardzSource.make_guard£  s0   € Ø×ÒÑÔ¥+Ô"6Ð6Ð6Ý%Ð%Ý�T˜2‰ŒÐr!   rA   c                óN   — |                       ¦   «                              ¦   «         S rC   )r™   rJ   r   s    r   rJ   zSource.is_specialized_nn_module¨  s    € Ø× Ò Ñ"Ô"×;Ò;Ñ=Ô=Ð=r!   c                óF   — |                       ¦   «         t          j        k    S )z+True if you can guard on attributes of this)r™   r0   r]   r   s    r   Úsubguards_allowedzSource.subguards_allowed«  s   € à× Ò Ñ"Ô"¥kÔ&AÒAÐAr!   NrÂ   rÁ   )r@   rr   rV   )r#   r$   r%   rÆ  rÉ  rÎ  r™   r   rÔ  rJ   r×  r'   r!   r   rs   rs   ’  s¥   € € € € € ðð ð ðð ð ð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ðð ð ð ð
>ð >ð >ð >ðBð Bð Bð Bð Br!   rs   c                  ó&   — e Zd ZU ded<   d„ Zd„ ZdS )ÚChainedSourcers   Úbasec                ó4   — | j                              ¦   «         S rC   )rÚ  rÆ  r   s    r   rÆ  zChainedSource.is_dict_keyµ  s   € àŒy×$Ò$Ñ&Ô&Ð&r!   c                ó4   — | j                              ¦   «         S rC   )rÚ  rÉ  r   s    r   rÉ  zChainedSource.is_ephemeral¹  s   € ØŒy×%Ò%Ñ'Ô'Ð'r!   N)r#   r$   r%   r&   rÆ  rÉ  r'   r!   r   rÙ  rÙ  ±  s=   € € € € € € à€L€L�Lð'ð 'ð 'ð(ð (ð (ð (ð (r!   rÙ  Úinputsr   c                ó¨  — ddl m}m} g }t                               ¦   «         x}r!|j        }|�|                     |ddf¦  «         ddlm} t          t           |¦   «         ¦  «        ¦  «        D ]-\  }}t          ||¦  «        r|                     |d|f¦  «         Œ.t          j        | ¦  «        }	t          |	¦  «        D ]2\  }}
t          |
|¦  «        r|                     |
j        d|f¦  «         Œ3|r[|d         \  }}}|dd…         D ]B\  }}}||u s8J d	|› d
|› d|› d|› d
|› d|› d|› d|› d|j        › d|› d|› d|j        › �¦   «         ‚ŒC|S dS )a˜  
    Attempts to "detect" what the current fake mode is.  If there is one ambiently
    available from TracingContext, we preferentially use that.  Otherwise, we
    heuristically detect the fake mode via the following sources, in order of
    priority:

        - Currently active fake mode on stack
        - Fake mode associated with passed in tensors (inputs does not
          have to be flattened)
    r   )Ú
FakeTensorÚFakeTensorModeNztracing context©Ú _get_current_dispatch_mode_stackzactive fake modezfake tensor inputr1   zfake mode (z) from r¤   z doesn't match mode (z

fake mode from z allocated at:
z
fake mode from )Útorch._subclasses.fake_tensorrß  rà  r'  rv  rŠ  r»   Útorch.utils._python_dispatchrâ  Ú	enumerateÚreversedrj   ÚpytreeÚtree_leavesrz   )rÝ  rß  rà  Ú
fake_modesr½  rŠ  râ  ÚiÚmÚflat_inputsÚ
flat_inputÚdesc1Úi1Údesc2Úi2s                  r   Údetect_fake_moderò  ½  sG  € ð IÐHÐHÐHÐHÐHÐHÐHà€Jå ×(Ò(Ñ*Ô*Ð*€wð AØÔ%ˆ	ØÐ Ø×Ò˜yÐ*;¸QÐ?Ñ@Ô@Ð@àMÐMÐMÐMÐMÐMå�(Ð#CÐ#CÑ#EÔ#EÑFÔFÑGÔGð :ð :‰ˆˆ1Ý�a˜Ñ(Ô(ð 	:Ø×Ò˜qÐ"4°aÐ8Ñ9Ô9Ð9øåÔ$ VÑ,Ô,€KÝ" ;Ñ/Ô/ð Nð N‰ˆˆ:Ý�j *Ñ-Ô-ð 	NØ×Ò˜zÔ3Ð5HÈ!ÐLÑMÔMÐMøàð 
Ø)¨!œ}Ñˆ	�5˜"Ø& q r rœNð 	ð 	‰LˆAˆu�bØ �>�>�>ðH˜ið Hð H°ð Hð H¸ð Hð HÐQRð Hð HÐ[`ð Hð HÐceð Hð HØ"'ðHð HØ*,ðHð HØ>G¼oðHð Hà"'ðHð Hà*,ðHð Hà>?¼gðHð Hñ "”>�>�>ð
 Ðàˆtr!   c                 óš   — ddl m}  ddlm} t	          t           |¦   «         ¦  «        ¦  «        D ]\  }}t          || ¦  «        r|c S ŒdS )z~
    Inspects the dispatch mode stack for an active fake mode and returns it.
    Returns None if no fake mode is active.
    r   )rà  rá  N)rã  rà  rä  râ  rå  ræ  rj   )rà  râ  r-   rë  s       r   Úactive_fake_moderô  é  s|   € ð
 =Ð<Ð<Ð<Ð<Ð<ØMÐMÐMÐMÐMÐMå�(Ð#CÐ#CÑ#EÔ#EÑFÔFÑGÔGð ð ‰ˆˆ1Ý�a˜Ñ(Ô(ð 	ØˆHˆHˆHð	ð ˆ4r!   )r½  rq  )r½  r  rC   )rÝ  r   )KÚ
__future__r   r¼  ÚdataclassesÚenumr‡   ÚloggingÚ	threadingr¡  Úunittest.mockr¦  rœ   Úabcr   r   Útypingr   r   r   r	   r
   r   r   r   r   r   r   r   Útorch.utilsr   rç  Útorch.utils._tracebackr   r   Útorch.utils.weakr   Ú	getLoggerr#   r°   ÚsympyÚtorchr   r)   ÚEnumr0   r_   Ú	dataclassrc   rm   rr   rÅ   rÇ   rÉ   rÏ   rÓ   rÛ   rì   rô   rý   r  r  r5  r;  rU  rb  Úlocalro  rm  r'  rp  rÃ  rs   rÙ  rò  rô  r'   r!   r   ú<module>r     s+  ðà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 4Ð 4Ð 4Ð 4Ð 4Ð 4ð €gÔ˜Ñ!Ô!€ð ð Ø€L€L€Lð
 €L€L€Lðð
:ð 
:ð 
:ð 
:ð 
:�
ñ 
:ô 
:ð 
:ð
7ð 
7ð 
7ð 
7ð 
7ˆjñ 
7ô 
7ð 
7ð0
ð 0
ð 0
ð 0
ð 0
�$”)ñ 0
ô 0
ð 0
ðfð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð ð ð ð ð �ñ ô ð ð
 Ôðb'ð b'ð b'ð b'ð b'ñ b'ô b'ñ Ôðb'ðJ €GˆC�L„L€ðð Ôð	ð 	ð 	ð 	ð 	ñ 	ô 	ñ Ôð	ðð Ôð:ð :ð :ð :ð :�lñ :ô :ñ Ôð:ðð Ôð*ð *ð *ð *ð *�\ñ *ô *ñ Ôð*ð

ð0ð 0ð 0ð 0ð 0�W˜Q”Zñ 0ô 0ð 0ð(ð (ð (ð (ð (ñ (ô (ð (ð4(ð (ð (ð (ð (ñ (ô (ð (ð,	+ð 	+ð 	+ð 	+ð 	+�NÐ#?Ô@ñ 	+ô 	+ð 	+ð(ð (ð (ð (ð (ñ (ô (ð (ð,ð ð ð ð �NÐ#?Ô@ñ ô ð ðBð%Oð %Oð %Oð %Oð %Oñ %Oô %Oð %OðP<ð <ð <ð <ð <�NÐ#8Ô9ñ <ô <ð <ð=ð =ð =ð =ð =ñ =ô =ð =ð(?ð ?ð ?ð ?ð ?Ð*ñ ?ô ?ð ?ð2&ð &ð &ð &ð &ñ &ô &ð &ð €y„ÑÔ€ðð&6ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ðDi
ð i
ð i
ð i
ð i
ñ i
ô i
ð i
ðX ð+ð +ð +ñ „ð+ð ð+ð +ð +ñ „ð+ð8 €Ô˜dÐ#Ñ#Ô#ðBð Bð Bð Bð Bñ Bô Bñ $Ô#ðBð< €Ô˜dÐ#Ñ#Ô#ð(ð (ð (ð (ð (�Fñ (ô (ñ $Ô#ð(ð)ð )ð )ð )ð )ðXð ð ð ð r!   