Ë
    òÍ:j]˜  ã                  ól  — 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Zd dlmZ d dlm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 d dlZd dlmZ d d	l m!Z! d d
l"m#Z#m$Z$ d dl%m&Z&  ejN                  e(«      Z)er
d dl*m+Z+ d dl,Z,	  ejZ                  d«      Z. ejZ                  d«      Z/ ed¬«       G d„ d«      «       Z0 G d„ de«      Z1 G d„ dejd                  «      Z3	  G d„ d«      Z4 ej$                  d¬«       G d„ d«      «       Z5 G d„ de«      Z6e!ej$                   G d„ d«      «       «       Z7 ed«      Z8	  ej$                  d¬«       G d „ d!«      «       Z9	  ej$                  d¬«       G d"„ d#e9«      «       Z:	  ej$                  d¬«       G d$„ d%e9«      «       Z;	  G d&„ d'ee8   «      Z< G d(„ d)«      Z= G d*„ d+«      Z> G d,„ d-e<e>   «      Z? G d.„ d/«      Z@ G d0„ d1e<e@   «      ZA G d2„ d3«      ZB	  G d4„ d5e<e=   «      ZC G d6„ d7«      ZD G d8„ d9eD«      ZE G d:„ d;«      ZF ejŽ                  «       ZH	  G d<„ d=«      ZI G d>„ d?«      ZJedHd@„«       ZKedIdA„«       ZL ej$                  d¬«       G dB„ dC«      «       ZM ej$                  d¬«       G dD„ dEeM«      «       ZNdJdKdF„ZOdG„ ZPy)Lé    )ÚannotationsN)Úabstractmethod)Údefaultdict)Úcontextmanager)Ú	dataclass)ÚAnyÚCallableÚGenericÚ
NamedTupleÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)Ú_pytree)Údataclass_slots)ÚCapturedTracebackÚformat_frame)ÚWeakTensorKeyDictionary)ÚCodeTypez-^(?P<frame_id>\d+)/(?P<frame_compile_id>\d+)$zQ^!(?P<compiled_autograd_id>\d+)(?:/(?P<frame_id>\d+)/(?P<frame_compile_id>\d+))?$T)Úfrozenc                  óH   — e Zd ZU ded<   ded<   dZded<   d„ Zedd„«       Zy)	Ú	CompileIdúOptional[int]Úframe_idÚframe_compile_idNÚcompiled_autograd_idc                ó8  — | j                   �Z| j                  d u | j                  d u k(  sJ ‚d}| j                  �d| j                  › d| j                  › �}d| j                   › |› �S | j                  �| j                  €J ‚| j                  › d| j                  › �S )NÚ ú/ú!)r   r   r   )ÚselfÚ	frame_strs     úb/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torch/_guards.pyÚ__str__zCompileId.__str__V   s«   € à×$Ñ$Ð0Ø—M‘M TÐ)¨t×/DÑ/DÈÐ/LÒMÐMÐMØˆIØ�}‰}Ð(Ø §¡˜¨a°×0EÑ0EÐ/FÐG�	à�t×0Ñ0Ð1°)°Ð=Ð=à—=‘=Ð,°×1FÑ1FÐ1RÐRÐRØ—m‘m�_ A d×&;Ñ&;Ð%<Ð=Ð=ó    c                ó&  — |€y	 t         t        fD ]X  }|j                  |«      x}sŒ|j                  «       }|j	                  «       D ]  \  }}|€Œ	t        |«      ||<   Œ  | di |¤Žc S  t        ‚# t        $ r}t        d|› d�«      |‚d}~ww xY w)zŒ
        Factory method that creates a CompileId from its string representation.
        Keep this in sync with the __str__ method.
        NzInvalid compile_id 'ú'© )ÚCOMPILE_ID_PATTERNÚCA_COMPILE_ID_PATTERNÚmatchÚ	groupdictÚitemsÚintÚ
ValueErrorÚ	Exception)ÚclsÚ
compile_idÚpatternr+   ÚgroupsÚkÚvÚes           r#   Úfrom_stringzCompileId.from_stringc   s²   € ð ÐØð	JÜ.Ô0EÐFò !�Ø#ŸM™M¨*Ó5Ð5�5Ñ5Ø"Ÿ_™_Ó.�FØ &§¡£ò /™˜˜1Ø™=Ü(+¨A«˜F 1šIð/ñ ™= ™=Ò(ð!ô !Ð øäò 	JÜÐ3°J°<¸qÐAÓBÈÐIûð	Jús(   …"A2 ¨(A2 ÁA2 Á+A2 Á2	BÁ;BÂB)r2   úOptional[str])Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r$   Úclassmethodr8   r(   r%   r#   r   r   G   s8   … àÓð
 $Ó#ð +/Ð˜-Ó.ò
>ð òJó ñJr%   r   c                  ó(   — e Zd ZU ded<   ded<   d„ Zy)ÚTraceIdr   r2   r.   Úattemptc                ó€   — | j                   dk(  rt        | j                  «      S | j                  › d| j                   › �S )Nr   Ú_)rA   Ústrr2   ©r!   s    r#   r$   zTraceId.__str__€   s7   € à�<‰<˜1ÒÜ�t—‘Ó'Ð'à—o‘oÐ& a¨¯© ~Ð6Ð6r%   N©r:   r;   r<   r=   r$   r(   r%   r#   r@   r@   z   s   … ØÓð ƒLó7r%   r@   c                  ór   — 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y)ÚGuardSourcer   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   c                óF   — | t         j                  t         j                  fv S ©N)rH   ÚGLOBAL_FSDP_MODULEÚLOCAL_FSDP_MODULErE   s    r#   Úis_fsdp_modulezGuardSource.is_fsdp_moduleš   s   € Øœ×6Ñ6¼×8UÑ8UÐVÐVÐVr%   c                óØ   — dd l mc m} |j                  r4| t        j
                  t        j                  fv xs | j                  «       S | t        j
                  t        j                  fv S ©Nr   )Útorch._dynamo.configÚ_dynamoÚconfigÚ_unsafe_skip_fsdp_module_guardsrH   ÚGLOBAL_SPECIALIZED_NN_MODULEÚLOCAL_SPECIALIZED_NN_MODULEr\   )r!   ra   s     r#   Úis_specialized_nn_modulez$GuardSource.is_specialized_nn_module�   sn   € ß-Ð-à×1Ò1àä×<Ñ<Ü×;Ñ;ððò )ð
 ×&Ñ&Ó(ðð Ü×4Ñ4Ü×3Ñ3ð
ð 
ð 	
r%   c                ó‚   — | t         j                  t         j                  t         j                  t         j                  fv S rY   )rH   ÚGLOBAL_UNSPECIALIZED_NN_MODULEÚLOCAL_UNSPECIALIZED_NN_MODULEÚ&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEÚ%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULErE   s    r#   Úis_unspecialized_nn_modulez&GuardSource.is_unspecialized_nn_module®   s8   € ØÜ×6Ñ6Ü×5Ñ5Ü×>Ñ>Ü×=Ñ=ð	
ð 
ð 	
r%   c                óF   — | t         j                  t         j                  fv S rY   )rH   ri   rj   rE   s    r#   Ú"is_unspecialized_builtin_nn_modulez.GuardSource.is_unspecialized_builtin_nn_module¶   s&   € ØÜ×>Ñ>Ü×=Ñ=ð
ð 
ð 	
r%   c                ó    — | t         j                  t         j                  t         j                  t         j                  t         j
                  fv S rY   )rH   ÚLOCALrd   r[   rh   rj   rE   s    r#   Úis_localzGuardSource.is_local¼   sA   € ØÜ×ÑÜ×3Ñ3Ü×)Ñ)Ü×5Ñ5Ü×=Ñ=ð
ð 
ð 	
r%   N©ÚreturnÚbool)r:   r;   r<   ro   ÚGLOBALrd   rc   ÚCONSTANTÚRANDOM_VALUEÚ	SHAPE_ENVr[   rZ   ÚBACKWARD_STATEÚ	EPHEMERALÚSYNTHETIC_LOCALrh   rg   rj   ri   r\   re   rk   rm   rp   r(   r%   r#   rH   rH   ˆ   st   „ Ø€EØ€FØ"#ÐØ#$Ð Ø€HØ€LØ€IØÐØÐØ€NØ€IØ€OØ$&Ð!Ø%'Ð"Ø,.Ð)Ø-/Ð*óWó
ó"
ó
ó
r%   rH   c                  ó   — e Zd Zy)ÚGuardBuilderBaseN©r:   r;   r<   r(   r%   r#   r|   r|   Ô   s   „ Ør%   r|   c                  ó(   — e Zd ZU ded<   ded<   d„ Zy)ÚSLocz,Optional[Union[traceback.FrameSummary, str]]Úframework_locr9   Úmaybe_user_locc                óÀ   — t        | j                  t        «      r| j                  nt        | j                  «      }| j                  �| j                  › d|› d�S d|› d�S )Nz (ú)ú()Ú
isinstancer€   rD   r   r�   )r!   Úflocs     r#   r$   zSLoc.__str__Ý   sh   € ô ˜$×,Ñ,¬cÔ2ð ×Òä˜d×0Ñ0Ó1ð 	ð
 ×ÑÐ*Ø×)Ñ)Ð*¨"¨T¨F°!Ð4Ð4à�t�f˜A�;Ðr%   NrF   r(   r%   r#   r   r   Ø   s   … à?Ó?Ø!Ó!ó	r%   r   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú
ShapeGuardzsympy.logic.boolalg.BooleanÚexprr   Úslocrs   Úsize_obliviousN©r:   r;   r<   r=   r(   r%   r#   rˆ   rˆ   é   s   … Ø
%Ó%Ø
ƒJØÔr%   rˆ   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y)$Ú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_stackr   Ú_hashc                ó¦   — | j                   €:t        | j                  | j                  t	        | j
                  «      f«      | _         | j                   S rY   )r˜   ÚhashÚnameÚsourceÚidr‘   rE   s    r#   Ú__hash__zGuard.__hash__  s:   € Ø�:‰:ÐÜ˜tŸy™y¨$¯+©+´r¸$¿.¹.Ó7IÐJÓKˆDŒJØ�z‰zÐr%   c                ó¦  — t        | j                  t        j                  «      xrD | j                  j                  t
        j                  j                  j                  j                  u }|| j                  r| j                  j                  ndt        | j                  «      | j                  | j                  «       j                  j                   fS )Néÿÿÿÿ)r…   r‘   Ú	functoolsÚpartialÚfuncÚtorchr`   ÚguardsÚGuardBuilderÚDUPLICATE_INPUTrœ   ÚvalueÚlenr›   Úinner_create_fnÚ__code__Úco_firstlineno)r!   Úis_duplicate_inputs     r#   Úsort_keyzGuard.sort_key  s™   € ô
 �t—~‘~¤y×'8Ñ'8Ó9ò YØ—‘×#Ñ#¤u§}¡}×';Ñ';×'HÑ'H×'XÑ'XÐXð 	ð
 Ø!%§¢ˆD�K‰K×Ò°"Ü�—	‘	‹NØ�I‰IØ× Ñ Ó"×+Ñ+×:Ñ:ð
ð 	
r%   c                óD   — | j                  «       |j                  «       k  S rY   )r®   ©r!   Úothers     r#   Ú__lt__zGuard.__lt__%  s   € Ø�}‰}‹ §¡Ó!1Ñ1Ð1r%   c                óŽ   — t        | j                  t        j                  «      r| j                  j                  S | j                  S rY   )r…   r‘   r¡   r¢   r£   rE   s    r#   rª   zGuard.inner_create_fn(  s0   € Ü�d—n‘n¤i×&7Ñ&7Ô8Ø—>‘>×&Ñ&Ð&à—>‘>Ð!r%   c                ó6   — | j                   j                  «       S rY   )r�   r›   rE   s    r#   r›   z
Guard.name.  s   € à×&Ñ&×+Ñ+Ó-Ð-r%   c                ó6   — | j                   j                  «       S rY   )r�   Úguard_sourcerE   s    r#   rœ   zGuard.source2  s   € à×&Ñ&×3Ñ3Ó5Ð5r%   c           
     ó  — t        | t        j                  «      re | «       }|�Dd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__'
        z<weakref at z; to 'z' at ú>z; dead>)r…   ÚweakrefÚReferenceTypeÚhexr�   Ú	__class__r:   rD   )r”   Úobjs     r#   Úweakref_to_strzGuard.weakref_to_str6  s„   € ô  �k¤7×#8Ñ#8Ô9Ù“-ˆCØˆØ%¤c¬"¨[«/Ó&:Ð%;¸6À#Ç-Á-×BXÑBXÐAYÐY^Ô_bÔceÐfiÓcjÓ_kÐ^lÐlmÐnÐnà%¤c¬"¨[«/Ó&:Ð%;¸7ÐCÐCä�{Ó#Ð#r%   c                óZ  — d| j                   r$| j                   j                  j                  «       nd› dt        | j                  «      › d| j	                  «       j
                  › d| j                  › d| j                  › d| j                  | j                  «      › d| j                  › d�}|S )	Nz	
        r   ú z&
        {
            'guard_types': z,
            'code': z,
            'obj_weakref': z
            'guarded_class': z
        }
        )rœ   r›   ÚlowerÚreprrª   r:   r’   r“   r¾   r”   r•   )r!   Úss     r#   Ú__repr__zGuard.__repr__O  s¯   € ð	Ø%)§[¢[ˆ�‰×	Ñ	×	Ñ	Ô	!°bÐ9¸¼4ÀÇ	Á	»?Ð:KÈ1ÈT×MaÑMaÓMc×MlÑMlÐLmð nà ×,Ñ,Ð-ð .Ø—^‘^Ð$ð %Ø ×/Ñ/°×0@Ñ0@ÓAÐBð CØ"×8Ñ8Ð9ð :	ðˆð ˆr%   c                ó¦  — dt        | j                  «      › d�}| j                  r$| j                  j                  j                  «       nd}|d|› d�z  }|d| j	                  «       j
                  › d�z  }|d| j                  › d�z  }|d| j                  › d�z  }|d| j                  | 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:   r’   r“   r¾   r”   r•   )r!   Úoutputrœ   s      r#   r$   zGuard.__str__[  sé   € Øœ$˜tŸy™y›/Ð*¨"Ð-ˆØ-1¯[ª[�—‘×!Ñ!×'Ñ'Ô)¸bˆØ�L  ¨Ð+Ñ+ˆØÐ)¨$×*>Ñ*>Ó*@×*IÑ*IÐ)JÈ"ÐMÑMˆØÐ% d×&6Ñ&6Ð%7°rÐ:Ñ:ˆØ�O D§N¡NÐ#3°2Ð6Ñ6ˆØÐ(¨×)<Ñ)<¸T×=MÑ=MÓ)NÐ(OÈrÐRÑRˆØÐ/°×0JÑ0JÐ/KÈ2ÐNÑNˆØˆr%   c           	     óR  — 	 | j                  || «      S # t        $ r‰ t        j                  dt	        | «      j                  «       «       | j                  rNt        j                  ddj                  | j                  j                  «       dd  «      j                  «       «       ‚ w xY w)NzError while creating guard:
%szCreated at:
%sr   éüÿÿÿ)
r‘   r0   ÚlogÚ	exceptionrD   Úrstripr–   ÚerrorÚjoinÚformat)r!   Úbuilders     r#   ÚcreatezGuard.createf  s‚   € ð	Ø—>‘> '¨4Ó0Ð0øÜò 	Ü�M‰MÐ;¼SÀ»Y×=MÑ=MÓ=OÔPØ�zŠzÜ—	‘	Ð+¨R¯W©W°T·Z±Z×5FÑ5FÓ5HÈÈÐ5MÓ-N×-UÑ-UÓ-WÔXØð		ús
   ‚ ”BB&c                ó6   — | j                   j                  «       S rY   )rœ   re   rE   s    r#   re   zGuard.is_specialized_nn_moduleo  s   € Ø�{‰{×3Ñ3Ó5Ð5r%   c                ó6   — | j                   j                  «       S rY   )rœ   r\   rE   s    r#   r\   zGuard.is_fsdp_moduler  s   € Ø�{‰{×)Ñ)Ó+Ð+r%   c                ó6   — | j                   j                  «       S rY   )rœ   rp   rE   s    r#   rp   zGuard.is_localu  s   € Ø�{‰{×#Ñ#Ó%Ð%r%   c                ó€  — | j                   sg | _         | j                   j                  |«       | j                  |d fv sJ d«       ‚|| _        | j                  s|| _        n| j                  j	                  |«       | j
                  |d fv s,t        | j
                  «      r| j                  «       �J d«       ‚|| _        y )Nz+Guarded class id must be identical, or NonezBGuarded object must be identical, None or ephemeral (dead weakref))r’   Úappendr•   r“   Úextendr”   Úcallable)r!   Ú
guard_typeÚguarded_classr“   r”   s        r#   Úset_export_infozGuard.set_export_infox  sÑ   € Ø×ÒØ!ˆDÔà×Ñ×Ñ 
Ô+à×)Ñ)ØØð.
ñ 
ð 	9ð 9ó	9ð 
ð &3ˆÔ"à�~Š~Ø&ˆD�Nà�N‰N×!Ñ! )Ô,ð ×Ñ ¨dÐ 3Ñ3Ü˜×(Ñ(Ô)Ø× Ñ Ó"Ð*ð	Pð Pó		Pð+ð 'ˆÕr%   ©rr   rD   ©rr   rH   )rÐ   r|   )r:   r;   r<   r=   r’   r“   r”   r•   r–   r—   r˜   rž   r®   r²   rª   Úpropertyr›   rœ   Ústaticmethodr¾   rÄ   r$   rÑ   re   r\   rp   rÛ   r(   r%   r#   rŽ   rŽ   ï   sÑ   … ð( ÓØ8Ó8ð (,€KÐ$Ó+Ø%)€IÐ"Ó)Ø$(€KÐ!Ó(Ø,0Ð˜>Ó0à)-€EÐ&Ó-Ø37€JÐ0Ó7Ø€Eˆ=Óòò

ò 2ò"ð ò.ó ð.ð ò6ó ð6ð ñ$ó ð$ò0
ò	óò6ò,ò&ó'r%   rŽ   ÚTc                  ó   — e Zd Zy)ÚGuardEnvExprNr}   r(   r%   r#   râ   râ   Ÿ  s   „ àr%   râ   c                  ó(   — e Zd ZU ded<   ded<   d„ Zy)ÚDuplicateInputsr�   Úinput_source_aÚinput_source_bc                ó:   — | j                   | j                  k7  sJ ‚y rY   )rå   ræ   rE   s    r#   Ú__post_init__zDuplicateInputs.__post_init__¯  s   € Ø×"Ñ" d×&9Ñ&9Ò9Ð9Ñ9r%   N)r:   r;   r<   r=   rè   r(   r%   r#   rä   rä   ª  s   … àÓØÓó:r%   rä   c                  ó"   — e Zd ZU ded<   ded<   y)ÚStorageOverlapzlist[Source]Úoverlapping_sourcesÚnon_overlapping_sourcesNrŒ   r(   r%   r#   rê   rê   Á  s   … à%Ó%Ø)Ô)r%   rê   c                  ó0   — e Zd Zedd„«       Zedd„«       Zy)ÚCheckpointablec                 ó   — y rY   r(   rE   s    r#   Úcopy_graphstatezCheckpointable.copy_graphstateÕ  s   € Ø$'r%   c                 ó   — y rY   r(   ©r!   Ústates     r#   Úrestore_graphstatez!Checkpointable.restore_graphstateØ  s   € Ø,/r%   N)rr   rà   )ró   rà   )r:   r;   r<   r   rð   rô   r(   r%   r#   rî   rî   Ô  s   „ ØÚ'ó Ø'àÚ/ó Ù/r%   rî   c                  ó<   — e Zd ZU dZ e«       Zded<   d„ Zd„ Zd„ Z	y)ÚGuardsCheckpointStatezW
    The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
    ú
set[Guard]Údynamo_guardsc                ó   — || _         y rY   )rø   )r!   rø   s     r#   Ú__init__zGuardsCheckpointState.__init__ã  s
   € Ø*ˆÕr%   c                ón   — | j                   j                  |j                   «      }t        |«      dk(  ry|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æ  s3   € ð ×Ñ×)Ñ)¨%×*=Ñ*=Ó>ˆÜˆq‹6�QŠ;ØØˆr%   c                ó(   — | j                  |«      d u S rY   ©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ö   Ü  s$   … ññ !$£€M�:Ó%ò+ò
ó(r%   rö   c                  ó.   — e Zd ZU i Zded<   d„ Zd„ Zd„ Zy)ÚModuleContextCheckpointStatezdict[str, torch.nn.Module]Ú
nn_modulesc                ó   — || _         y rY   ©r  )r!   r  s     r#   rú   z%ModuleContextCheckpointState.__init__ù  s	   € Ø$ˆ�r%   c                óÊ   — t        | j                  j                  «       «      j                  t        |j                  j                  «       «      «      }t	        |«      dk(  ry|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ü  sM   € ô �—‘×$Ñ$Ó&Ó'×2Ñ2´3°u×7GÑ7G×7LÑ7LÓ7NÓ3OÓPˆÜˆq‹6�QŠ;ØØˆr%   c                ó(   — | j                  |«      d u S rY   r  r°   s     r#   r  z#ModuleContextCheckpointState.__eq__  r  r%   N)r:   r;   r<   r  r=   rú   rÿ   r  r(   r%   r#   r  r  ö  s   … Ø-/€JÐ*Ó/ò%ò
ó(r%   r  c                  ó    — e Zd Zdd„Zd„ Zd„ Zy)ÚModuleContextc                ó   — i | _         y rY   r
  rE   s    r#   rú   zModuleContext.__init__  s	   € Ø*,ˆ�r%   c                ó>   — t        t        | j                  «      «      S rY   )r  Údictr  rE   s    r#   rð   zModuleContext.copy_graphstate  s   € Ü+¬D°·±Ó,AÓBÐBr%   c                óJ   — t        |t        «      sJ ‚|j                  | _        y rY   )r…   r  r  rò   s     r#   rô   z ModuleContext.restore_graphstate  s    € Ü˜%Ô!=Ô>Ð>Ð>Ø×*Ñ*ˆ�r%   N©rr   ÚNone©r:   r;   r<   rú   rð   rô   r(   r%   r#   r  r    s   „ ó-òCó+r%   r  c                  ó.   — e Zd ZU i Zded<   d„ Zd„ Zd„ Zy)ÚGlobalContextCheckpointStatezdict[str, tuple[Callable, ...]]Úglobal_statec                ó   — || _         y rY   ©r  )r!   Úglobal_statess     r#   rú   z%GlobalContextCheckpointState.__init__  s
   € Ø)ˆÕr%   c                óÊ   — t        | j                  j                  «       «      j                  t        |j                  j                  «       «      «      }t	        |«      dk(  ry|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  sO   € ô �×!Ñ!×&Ñ&Ó(Ó)×4Ñ4´S¸×9KÑ9K×9PÑ9PÓ9RÓ5SÓTˆÜˆq‹6�QŠ;ØØˆr%   c                ó(   — | j                  |«      d u S rY   r  r°   s     r#   r  z#GlobalContextCheckpointState.__eq__*  r  r%   N)r:   r;   r<   r  r=   rú   rÿ   r  r(   r%   r#   r  r    s   … Ø46€LÐ1Ó6ò*ò
ó(r%   r  c                  ó,   — e Zd ZdZh d£Zdd„Zd„ Zd„ Zy)Ú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_enabledc                ó   — i | _         y rY   r  rE   s    r#   rú   zGlobalContext.__init__=  s
   € Ø=?ˆÕr%   c                ó>   — t        t        | j                  «      «      S rY   )r  r  r  rE   s    r#   rð   zGlobalContext.copy_graphstate@  s   € Ü+¬D°×1BÑ1BÓ,CÓDÐDr%   c                ób  — t        |t        «      sJ ‚|j                  | _        t        | j                  «      t        | j                  «      k(  r0t        | j                  j                  «       «      | j                  k(  sJ d«       ‚| j                  j                  «       D ]  \  }} ||«       Œ y )NzGlobal state mismatch)r…   r  r  r©   Ú_supported_global_statesr  r  Úvalues)r!   ró   r£   Úargss       r#   rô   z GlobalContext.restore_graphstateC  s¡   € Ü˜%Ô!=Ô>Ð>Ð>Ø!×.Ñ.ˆÔä�×!Ñ!Ó"¤c¨$×*GÑ*GÓ&HÒHÜ�D×%Ñ%×*Ñ*Ó,Ó-°×1NÑ1NÒNð	#ð #ó	#ðOð ×+Ñ+×2Ñ2Ó4ò 	‰JˆD�$Ù��Jñ	r%   Nr  )r:   r;   r<   r  r*  rú   rð   rô   r(   r%   r#   r   r   .  s    „ ñò
 Ðó@òEór%   r   c                  óJ   — 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
y)Ú	GuardsSetNc                ó*   — |€
t        «       }|| _        y rY   )r  Úinner)r!   r0  s     r#   rú   zGuardsSet.__init__Q  s   € Øˆ=Ü“EˆEØˆ�
r%   c                ó,   — t        | j                  «      S rY   )Úiterr0  rE   s    r#   Ú__iter__zGuardsSet.__iter__V  ó   € Ü�D—J‘JÓÐr%   c                ó,   — t        | j                  «      S rY   )r©   r0  rE   s    r#   Ú__len__zGuardsSet.__len__Y  s   € Ü�4—:‘:‹Ðr%   c                óF   — t        | j                  |j                  z
  «      S rY   )r.  r0  r°   s     r#   Ú__sub__zGuardsSet.__sub__^  s   € Ü˜Ÿ™ e§k¡kÑ1Ó2Ð2r%   c                ó,   — t        | j                  «      S rY   )rs   r0  rE   s    r#   Ú__bool__zGuardsSet.__bool__a  r4  r%   Tr   )Úcollect_debug_stackÚskipc               óú   — || j                   v ry |rO|j                  €t        j                  d|z   ¬«      |_        |j                  €t
        j                  «       |_        | j                   j                  |«       y ©NrI   )r<  )r0  r–   r   Úextractr—   ÚTracingContextÚextract_stackÚadd)r!   Úguardr;  r<  s       r#   rB  zGuardsSet.addd  sa   € Ø�D—J‘JÑØÙØ�{‰{Ð"Ü/×7Ñ7¸QÀ¹XÔF�”Ø×ÑÐ'Ü#1×#?Ñ#?Ó#A�Ô Ø�
‰
�‰�uÕr%   c                óF   — |D ]  }|D ]  }| j                  |d¬«       Œ Œ y r>  )rB  )r!   ÚothersÚoÚgs       r#   ÚupdatezGuardsSet.updaten  s0   € Øò 	$ˆAØò $�Ø—‘˜ �Õ#ñ$ñ	$r%   c                ó€   — ddl m} | j                  D �ch c]  } ||j                  |«      rŒ|’Œ c}| _        yc c}w )z.Delete all guards that contains a given sourcerI   )Úis_from_sourceN)Ú_dynamo.sourcerJ  r0  r�   )r!   rœ   rJ  rG  s       r#   Úremove_guards_with_sourcez#GuardsSet.remove_guards_with_sources  s6   € å2ð —z‘zö
Ø©¸×8LÑ8LÈfÕ)UŠAò
ˆ�
ùò 
s   •;®;rY   )rC  rŽ   )rE  r÷   )r:   r;   r<   rú   r3  r6  r8  r:  rB  rH  rL  r(   r%   r#   r.  r.  P  s1   „ óò
 òò
3ò ð 8<À!õ ó$ó

r%   r.  c                  ó    — e Zd Zdd„Zd„ Zd„ Zy)ÚGuardsContextc                ó0   — t        «       | _        g | _        y rY   )r.  rø   Úaotautograd_guardsrE   s    r#   rú   zGuardsContext.__init__…  s   € Ü(1«ˆÔØ68ˆÕr%   c                óR   — t        t        | j                  j                  «      «      S rY   )rö   r  rø   r0  rE   s    r#   rð   zGuardsContext.copy_graphstate‰  s   € Ü$¤S¨×);Ñ);×)AÑ)AÓ%BÓCÐCr%   c                ó\   — t        |t        «      sJ ‚t        |j                  «      | _        y rY   )r…   rö   r.  rø   rò   s     r#   rô   z GuardsContext.restore_graphstateŒ  s&   € ä˜%Ô!6Ô7Ð7Ð7Ü& u×':Ñ':Ó;ˆÕr%   Nr  r  r(   r%   r#   rN  rN  „  s   „ ó9òDó<r%   rN  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	e	 	 	 	 	 	 dd„«       Z
e	 	 	 	 	 	 dd„«       Zy	)ÚHopSubgraphCachec                 ó   — y rY   r(   ©r!   Úfn_idÚ
identifiers      r#   Úadd_dynamo_installed_submodulez/HopSubgraphCache.add_dynamo_installed_submodule“  s   € ØKNr%   c                 ó   — y rY   r(   ©r!   rW  s     r#   Úget_dynamo_installed_submodulesz0HopSubgraphCache.get_dynamo_installed_submodules–  ó   € ØHKr%   c                 ó   — y rY   r(   ©r!   rX  Úkeys      r#   Úadd_autograd_key_entryz'HopSubgraphCache.add_autograd_key_entry™  s   € ØFIr%   c                 ó   — y rY   r(   ©r!   rX  s     r#   Úget_autograd_key_entryz'HopSubgraphCache.get_autograd_key_entryœ  s   € Ø7:r%   c                 ó   — y rY   r(   r_  s      r#   Úadd_proxy_dispatch_entryz)HopSubgraphCache.add_proxy_dispatch_entryŸ  r]  r%   c                 ó   — y rY   r(   rc  s     r#   Úget_proxy_dispatch_entryz)HopSubgraphCache.get_proxy_dispatch_entry¢  s   € Ø9<r%   c                 ó   — y rY   r(   )r!   rX  Útangent_metadataÚgmods       r#   Úadd_lazy_bwd_entryz#HopSubgraphCache.add_lazy_bwd_entry¥  s   € ð r%   c                 ó   — y rY   r(   ©r!   rX  rj  s      r#   Úget_lazy_bwd_entryz#HopSubgraphCache.get_lazy_bwd_entry­  s   € ð r%   N©rW  r.   rX  rD   ©rW  r.   rr   z	list[str]©rX  rD   r`  r	   ©rX  rD   ©rX  rD   rj  útuple[object]rk  ztorch.fx.GraphModule)rX  rD   rj  ru  rr   r.   )r:   r;   r<   r   rY  r\  ra  rd  rf  rh  rl  ro  r(   r%   r#   rT  rT  ’  s°   „ ØÚNó ØNàÚKó ØKàÚIó ØIàÚ:ó Ø:àÚKó ØKàÚ<ó Ø<àðàðð (ðð #ò	ó ðð ðØðØ1>ðà	òó ñr%   rT  c                  ó`   — 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d„Z
dd	„Zy
)ÚInvokeSubgraphCachec                óp   — i | _         i | _        t        t        «      | _        t        t
        «      | _        y rY   )Úautograd_cacheÚproxy_dispatch_cacher   ÚlistÚdynamo_installed_submodulesr  Úlazy_bwd_cacherE   s    r#   rú   zInvokeSubgraphCache.__init__´  s1   € Ø35ˆÔØ9;ˆÔ!ÜALÌTÓARˆÔ(ô œÓð 	Õr%   c                ó@   — | j                   |   j                  |«       y rY   )r|  rÖ   rV  s      r#   rY  z2InvokeSubgraphCache.add_dynamo_installed_submodule¼  s   € Ø×(Ñ(¨Ñ/×6Ñ6°zÕBr%   c                ó:   — | j                   j                  |g «      S rY   )r|  Úgetr[  s     r#   r\  z3InvokeSubgraphCache.get_dynamo_installed_submodules¿  s   € Ø×/Ñ/×3Ñ3°E¸2Ó>Ð>r%   c                ó"   — || j                   |<   y rY   )ry  r_  s      r#   ra  z*InvokeSubgraphCache.add_autograd_key_entryÂ  s   € Ø*-ˆ×Ñ˜JÒ'r%   c                ó:   — | j                   j                  |d «      S rY   )ry  r€  rc  s     r#   rd  z*InvokeSubgraphCache.get_autograd_key_entryÅ  s   € Ø×"Ñ"×&Ñ& z°4Ó8Ð8r%   c                ó"   — || j                   |<   y rY   )rz  r_  s      r#   rf  z,InvokeSubgraphCache.add_proxy_dispatch_entryÈ  s   € Ø03ˆ×!Ñ! *Ò-r%   c                ó:   — | j                   j                  |d «      S rY   )rz  r€  rc  s     r#   rh  z,InvokeSubgraphCache.get_proxy_dispatch_entryË  s   € Ø×(Ñ(×,Ñ,¨Z¸Ó>Ð>r%   c                ó^   — t        | j                  |   «      }||f| j                  |   |<   |S rY   )r©   r}  )r!   rX  rj  rk  Ú	num_gmodss        r#   rl  z&InvokeSubgraphCache.add_lazy_bwd_entryÎ  s:   € ô ˜×+Ñ+¨JÑ7Ó8ˆ	Ø=AÀ9Ð<Mˆ×Ñ˜JÑ'Ð(8Ñ9ØÐr%   c                ó^   — || j                   vry| j                   |   j                  |d«      S )N)NN)r}  r€  rn  s      r#   ro  z&InvokeSubgraphCache.get_lazy_bwd_entryÙ  s2   € Ø˜T×0Ñ0Ñ0Øà×"Ñ" :Ñ.×2Ñ2Ð3CÀ\ÓRÐRr%   Nr  rp  rq  rr  rs  rt  )rX  rD   rj  ru  )r:   r;   r<   rú   rY  r\  ra  rd  rf  rh  rl  ro  r(   r%   r#   rw  rw  ³  sM   „ óóCó?ó.ó9ó4ó?ð	àð	ð (ð	ð #ó		ôSr%   rw  c                  ó$   — e Zd Zdd„Z	 	 	 	 dd„Zy)ÚHopDispatchSetCachec                ó2   — ddl m} |t        «       i| _        y )Nr   )Úinvoke_subgraph)Ú'torch._higher_order_ops.invoke_subgraphr‹  rw  Úhop_cache_map)r!   r‹  s     r#   rú   zHopDispatchSetCache.__init__á  s   € åKà-Ô/BÓ/DÐEˆÕr%   c                ó>   — || j                   vry | j                   |   S rY   )r�  )r!   Úops     r#   Ú	get_cachezHopDispatchSetCache.get_cacheç  s&   € ð �T×'Ñ'Ñ'ØØ×!Ñ! "Ñ%Ð%r%   Nr  )r�  ztorch._ops.HigherOrderOperatorrr   zOptional[HopSubgraphCache])r:   r;   r<   rú   r�  r(   r%   r#   r‰  r‰  à  s   „ óFð&Ø0ð&à	#ô&r%   r‰  c                  óV   — e Zd Zedd„«       Zedd„«       Zd„ Zed„ «       Zed„ «       Zy)	ÚCompileContextc                 óF   — t         j                  €J ‚t         j                  S rY   )Ú_TLSÚcompile_contextr(   r%   r#   r€  zCompileContext.get  s    € ä×#Ñ#Ð/Ð/Ð/Ü×#Ñ#Ð#r%   c                 ó$   — t        t        dd «      S ©Nr•  ©Úgetattrr”  r(   r%   r#   Útry_getzCompileContext.try_get
  ó   € ä”tÐ.°Ó5Ð5r%   c                óV   — |�t        |t        «      sJ ‚|| _        d| _        g | _        y r^   )r…   r   r2   rA   Úshape_env_guards)r!   r2   s     r#   rú   zCompileContext.__init__  s-   € ØÐ!¤Z°
¼IÔ%FÐFÐFØ/9ˆŒØˆŒà+-ˆÕr%   c                 óH   — t         j                  «       } | €y | j                  S rY   )r’  rš  r2   rE   s    r#   Úcurrent_compile_idz!CompileContext.current_compile_id  s"   € ä×%Ñ%Ó'ˆØˆ<ØØ�‰Ðr%   c                 óŠ   — t         j                  «       } | €y | j                  €y t        | j                  | j                  «      S rY   )r’  rš  r2   r@   rA   rE   s    r#   Úcurrent_trace_idzCompileContext.current_trace_id  s:   € ä×%Ñ%Ó'ˆØˆ<ØØ�?‰?Ð"ØÜ�t—‘¨¯©Ó5Ð5r%   N)rr   r’  )rr   úOptional[CompileContext])	r:   r;   r<   rß   r€  rš  rú   rŸ  r¡  r(   r%   r#   r’  r’    sU   „ Øò$ó ð$ð ò6ó ð6ò.ð ñó ðð ñ6ó ñ6r%   r’  c                  ó  — 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d„ Zeej                  d	„ «       «       Zeej                  d
„ «       «       Zeej                  d„ «       «       Zed„ «       Zed„ «       Zy)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.
    c                 ó$   — t        t        dd «      S )NÚtracing_contextr˜  r(   r%   r#   rš  zTracingContext.try_get.  r›  r%   c                 óH   — t         j                  «       x} r| S t        d«      ‚)Nz<TracingContext.get() must be called within an ongoing trace.)r@  rš  ÚRuntimeError)Úctxs    r#   r€  zTracingContext.get2  s+   € ä ×(Ñ(Ó*Ð*ˆ3Ð*ØˆJÜØJó
ð 	
r%   c                ó~  — t        «       | _        t        «       | _        t	        «       | _        t        «       | _        t        «       | _        || _	        g | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        t'        «       | _        d| _        t-        «       | _        g | _        y ©NF)rN  Úguards_contextr  Úmodule_contextr   Úglobal_contextr  Úpreviously_inlined_functionsÚpreviously_cleaned_instructionsÚ	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_callr‰  Úhop_dispatch_set_cacheÚtraced_code)r!   r°  s     r#   rú   zTracingContext.__init__:  s³   € Ü+›oˆÔÜ+›oˆÔÜ+›oˆÔÜ,0«FˆÔ)Ü/3«vˆÔ,Ø"ˆŒØ#%ˆÔ ð !ˆÔàˆÔà"ˆÔØˆÔØ-1ˆÔ*Ø.2ˆÔ+ð JNˆÔð 49ˆÔ0ä!8Ó!:ˆÔð
 "'ˆÔÜ&9Ó&;ˆÔ#à+-ˆÕr%   c                óŽ   — i | j                   _        | j                  j                  «        | j                  j                  «        y rY   )r­  r  r®  Úclearr¯  rE   s    r#   r¿  zTracingContext.cleark  s6   € ð ,.ˆ×ÑÔ(Ø×)Ñ)×/Ñ/Ô1Ø×,Ñ,×2Ñ2Õ4r%   c               +  ór  K  — i }t         j                  «       }| j                  «       D ]  }t        ||«      ||<   Œ | j	                  «       D ]  \  }}t        |||«       Œ 	 d –— |j	                  «       D ]  \  }}t        |||«       Œ y # |j	                  «       D ]  \  }}t        |||«       Œ w xY w­wrY   )r@  r€  r  r™  r-   Úsetattr)ÚkwargsÚpriorr¨  r`  Úvals        r#   ÚpatchzTracingContext.patchr  s¹   è ø€ ð ˆÜ× Ñ Ó"ˆà—;‘;“=ò 	+ˆCä   cÓ*ˆE�#ŠJð	+ð Ÿ™›ò 	#‰HˆC�Ü�C˜˜cÕ"ð	#ð	'Ûà!ŸK™K›Mò '‘��SÜ˜˜S #Õ&ñ'ø˜EŸK™K›Mò '‘��SÜ˜˜S #Õ&ñ'üs   ‚A B7Á#B Á'&B7Â'B4Â4B7c                 óì   — t         j                  «       } | €t        j                  «       S | j                  }| j
                  �|| j                  «       gz   }t        j                  j                  |«      S rY   )r@  rš  Ú	tracebackÚStackSummaryr±  r²  Ú_populate_loc_in_frame_summaryÚ	from_list)r!   r–   s     r#   rA  zTracingContext.extract_stackƒ  sh   € ä×%Ñ%Ó'ˆØˆ<Ü×)Ñ)Ó+Ð+Ø×(Ñ(ˆØ×ÑÐ(Ø˜T×@Ñ@ÓBÐCÑCˆEÜ×%Ñ%×/Ñ/°Ó6Ð6r%   c                óp   — | j                   €J ‚| j                   \  }}}t        j                  |||d¬«      S )NF)Úlookup_line)r²  rÇ  ÚFrameSummary)r!   ÚfilenameÚlinenoÚ
frame_names       r#   rÉ  z-TracingContext._populate_loc_in_frame_summary�  s>   € Ø× Ñ Ð,Ð,Ð,Ø'+×'8Ñ'8Ñ$ˆ�&˜*Ü×%Ñ% h°¸
ÐPUÔVÐVr%   c               #  óŠ  K  — t         j                  «       } t        j                  j                  j                  | dg «      5  t        j                  j                  j                  | dd «      5  	 d –— 	 d d d «       d d d «       y # t        $ r}t        |d«      sd |_        ‚ d }~ww xY w# 1 sw Y   Œ7xY w# 1 sw Y   y xY w­w)Nr±  r²  Ú
real_stack)	r@  r€  ÚunittestÚmockrÅ  Úobjectr0   ÚhasattrrÒ  )Útcr7   s     r#   Úclear_framezTracingContext.clear_frame”  s­   è ø€ ô ×ÑÓ!ˆä�M‰M×Ñ×&Ñ& rÐ+@À"ÓEñ	ä�M‰M×Ñ×&Ñ& r¨>¸4Ó@ñ	ðÜ÷	÷ 	ð 	øô ò ô$ ˜q ,Ô/Ø#'�A”LØûð)ú÷	ð 	ú÷ 	ð 	üsT   ‚A CÁ,B7Á.B+Á0BÁ5B7Á=	CÂ	B(ÂB#Â#B(Â(B+Â+B4	Â0B7Â7C Â<Cc              #  óœ  K  — t         j                  «       }| �|j                  j                  | «       |j                  }d |_        	 d –— 	 | �|j                  j                  «        ||_        y # t
        $ r'}t        |d«      s|j                  «       |_        ‚ d }~ww xY w# | �|j                  j                  «        ||_        w xY w­w)NrÒ  )
r@  r€  r±  rÖ   r²  r0   rÖ  rA  rÒ  Úpop)Úframe_summaryr×  Úoldr7   s       r#   Úcurrent_framezTracingContext.current_frame´  s¹   è ø€ ô
 ×ÑÓ!ˆØÐ$Ø×"Ñ"×)Ñ)¨-Ô8Ø�o‰oˆØˆŒð		"Üð Ð(Ø×&Ñ&×*Ñ*Ô,Ø!ˆB�Oøô ò 	Ü˜1˜lÔ+Ø!×/Ñ/Ó1�”Øûð	ûð
 Ð(Ø×&Ñ&×*Ñ*Ô,Ø!ˆB�Oüs6   ‚ACÁA1 Á$CÁ1	B!Á:"BÂB!Â!B$ Â$%C	Ã	Cc               #  ó¬   K  — t         j                  «       } | €d –— y | j                  }g | _        	 | j                  –— || _        y # || _        w xY w­wrY   )r@  rš  r¸  )r×  Úold_output_stridess     r#   Úreport_output_stridesz$TracingContext.report_output_stridesÉ  sY   è ø€ ô ×#Ñ#Ó%ˆØˆ:ØŠJØØ×.Ñ.ÐØˆÔð	3Ø×#Ñ#Ò#à 2ˆBÕøÐ 2ˆBÕüs   ‚/A²A Á AÁ	AÁAc                ó<   — | ||ft         j                  «       _        y rY   )r@  r€  r²  )rÎ  rÏ  rÐ  s      r#   Úset_current_loczTracingContext.set_current_loc×  s   € ð .6°v¸zÐ,JŒ×ÑÓÕ)r%   c                 óH   — t         j                  «       } | €y | j                  S rY   )r@  rš  r½  )r×  s    r#   Úget_traced_codezTracingContext.get_traced_codeÝ  s"   € ä×#Ñ#Ó%ˆØˆ:ØØ�~‰~Ðr%   N)rr   úOptional[TracingContext])rr   r@  )r:   r;   r<   r  rß   rš  r€  rú   r¿  r   rÅ  rA  rÉ  Ú
contextlibrØ  rÝ  rà  râ  rä  r(   r%   r#   r@  r@  &  s   „ ñð ò6ó ð6ð ò
ó ð
ò/.òb5ð Øñ'ó ó ð'ð ñ7ó ð7òWð Ø×Ññó ó ðð< Ø×Ññ"ó ó ð"ð& Ø×Ññ
3ó ó ð
3ð ñKó ðKð
 ñó ñr%   r@  c              #  ó„   K  — t        t        dd «      }| t        _        	 | –— |t        _        y # |t        _        w xY w­wr—  )r™  r”  r•  )ÚcontextÚold_contexts     r#   r•  r•  å  s7   è ø€ äœ$Ð 1°4Ó8€KØ"„DÔð+ØŠà*ŒÕø˜{ŒÕüs   ‚A  0 ¤A °=½A c              #  ó  K  — t        t        dd«      }| t        _        	 | –— 	 | �F| j                  �:| j                  j                  �$| j                  j                  j                  «        |t        _        y# t        $ r)}t	        |d«      s| �| j                  «       |_        ‚ d}~ww xY w# | �F| j                  �:| j                  j                  �$| j                  j                  j                  «        |t        _        w xY w­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Ò  )
r™  r”  r¥  r0   rÖ  rA  rÒ  r°  Ú	shape_envÚcleanup)rè  ré  r7   s      r#   Útracingrí  ï  sé   è ø€ ô œ$Ð 1°4Ó8€KØ"„DÔð+Ø‹ð ÐØ×!Ñ!Ð-Ø×!Ñ!×+Ñ+Ð7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕøô ò Ü�q˜,Ô'¨GÐ,?Ø"×0Ñ0Ó2ˆAŒLØûðûð ÐØ×!Ñ!Ð-Ø×!Ñ!×+Ñ+Ð7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕüs5   ‚D A9 ¥ADÁ9	B+Â$B&Â&B+Â+B. Â.ADÄDc                  óD   — e Zd Zd„ Zd„ Zd„ Zd
d„Zdd„Zdd„Zdd„Z	d„ Z
y	)r�   c                 ó   — yrª  r(   rE   s    r#   Úis_dict_keyzSource.is_dict_key  ó   € Ør%   c                 ó   — yrª  r(   rE   s    r#   Úis_ephemeralzSource.is_ephemeral  rñ  r%   c                ó   — t         ‚rY   ©ÚNotImplementedError)r!   Úcodegens     r#   ÚreconstructzSource.reconstruct  ó   € Ü!Ð!r%   c                ó   — t         ‚rY   rõ  rE   s    r#   r¶   zSource.guard_source  rù  r%   c                ó   — t         ‚rY   rõ  rE   s    r#   r›   zSource.name  rù  r%   c                óf   — | j                  «       t        j                  u rt        ‚t	        | |«      S rY   )r¶   rH   ru   rö  rŽ   )r!   Úfns     r#   Ú
make_guardzSource.make_guard  s+   € Ø×ÑÓ¤+×"6Ñ"6Ñ6Ü%Ð%Ü�T˜2‹Ðr%   c                ó>   — | j                  «       j                  «       S rY   )r¶   re   rE   s    r#   re   zSource.is_specialized_nn_module"  s   € Ø× Ñ Ó"×;Ñ;Ó=Ð=r%   c                óD   — | j                  «       t        j                  k7  S )z+True if you can guard on attributes of this)r¶   rH   rz   rE   s    r#   Úsubguards_allowedzSource.subguards_allowed%  s   € à× Ñ Ó"¤k×&AÑ&AÑAÐAr%   NrÝ   rÜ   )rr   rŽ   rq   )r:   r;   r<   rð  ró  rø  r¶   r›   rþ  re   r  r(   r%   r#   r�   r�     s+   „ òòò"ó"ó"óó
>óBr%   r�   c                  ó,   — e Zd ZU ded<   d„ Zd„ Zdd„Zy)ÚChainedSourcer�   Úbasec                ó6   — | j                   j                  «       S rY   )r  rð  rE   s    r#   rð  zChainedSource.is_dict_key/  s   € à�y‰y×$Ñ$Ó&Ð&r%   c                ó6   — | j                   j                  «       S rY   )r  ró  rE   s    r#   ró  zChainedSource.is_ephemeral3  s   € Ø�y‰y×%Ñ%Ó'Ð'r%   c                ód   — | }t        |t        «      r|j                  }t        |t        «      rŒ|S rY   )r…   r  r  )r!   Úcurrents     r#   Úget_basezChainedSource.get_base6  s+   € ØˆÜ˜¤-Ô0Ø—l‘lˆGô ˜¤-Õ0àˆr%   N)rr   r�   )r:   r;   r<   r=   rð  ró  r	  r(   r%   r#   r  r  +  s   … à
ƒLò'ò(ôr%   r  c                óz  — ddl m}m} g }t        j	                  «       x}r"|j
                  }|�|j                  |ddf«       ddlm} t        t         |«       «      «      D ]&  \  }}t        ||«      sŒ|j                  |d|f«       Œ( t        j                  | «      }	t        |	«      D ]0  \  }}
t        |
|«      sŒ|j                  |
j
                  d|f«       Œ2 |r\|d   \  }}}|dd D ]I  \  }}}||u rŒJ d	|› d
|› d|› d|› d
|› d|› d|› d|› d|j                  › d|› d|› d|j                  › �«       ‚ |S y)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 inputrI   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@  rš  r°  rÖ   Útorch.utils._python_dispatchr  Ú	enumerateÚreversedr…   ÚpytreeÚtree_leavesr–   )Úinputsr  r  Ú
fake_modesrè  r°  r  ÚiÚmÚflat_inputsÚ
flat_inputÚdesc1Úi1Údesc2Úi2s                  r#   Údetect_fake_moder  =  s™  € ÷ Ià€Jä ×(Ñ(Ó*Ð*€wÐ*Ø×%Ñ%ˆ	ØÐ Ø×Ñ˜yÐ*;¸QÐ?Ô@åMäœ(Ñ#CÓ#EÓFÓGò :‰ˆˆ1Ü�a˜Õ(Ø×Ñ˜qÐ"4°aÐ8Õ9ð:ô ×$Ñ$ VÓ,€KÜ" ;Ó/ò N‰ˆˆ:Ü�j *Õ-Ø×Ñ˜z×3Ñ3Ð5HÈ!ÐLÕMðNñ Ø)¨!™}Ñˆ	�5˜"Ø& q r˜Nò 	‰LˆAˆu�bØ ’>ð Ø˜i˜[¨°¨w°a¸°tÐ;PÐQRÐPSÐSZÐ[`ÐZaÐabÐceÐbfð g"Ø"' ¨¨"¨Ð-=¸i¿o¹oÐ=Nð O"Ø"' ¨¨"¨Ð-=¸a¿g¹g¸YðHó�>ð	ð Ðàr%   c                 ó~   — ddl m}  ddlm} t	        t         |«       «      «      D ]  \  }}t        || «      sŒ|c S  y)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  r…   )r  r  rC   r  s       r#   Úactive_fake_moder!  i  s?   € õ
 =ÝMäœ(Ñ#CÓ#EÓFÓGò ‰ˆˆ1Ü�a˜Õ(ØŠHðð r%   )rè  r¢  )rè  rå  rY   )r  r   )QÚ
__future__r   ræ  ÚdataclassesÚenumr¡   ÚloggingÚreÚ	threadingrÇ  Úunittest.mockrÓ  r¹   Úabcr   Úcollectionsr   r   r   Útypingr   r	   r
   r   r   r   r   r   r¤   Útorch.utilsr   r  Útorch.utils._backport_slotsr   Útorch.utils._tracebackr   r   Útorch.utils.weakr   Ú	getLoggerr:   rÊ   Útypesr   ÚsympyÚcompiler)   r*   r   r@   ÚEnumrH   r|   r   rˆ   rŽ   rà   râ   rä   rê   rî   rö   r  r  r  r   r.  rN  rT  rw  r‰  Úlocalr”  r’  r@  r•  rí  r�   r  r  r!  r(   r%   r#   ú<module>r6     s)  ðå "ã Û Û Û Û Û 	Û Û Û Û Ý Ý #Ý %Ý !÷	÷ 	ó 	ó Ý )Ý 7ß BÝ 4ð €g×Ñ˜Ó!€ñ Ýãðð  �R—Z‘ZÐ PÓQÐ Ø"˜Ÿ
™
ØXóÐ ñ$ �$Ô÷/Jð /Jó ð/Jôd7ˆjô 7ô;
�$—)‘)ô ;
ð|÷	ñ 	ð €×Ñ˜dÔ#÷ð ó $ðô �ô ð Ø×Ñ÷a'ð a'ó ó ða'ñH ˆCƒL€ðð €×Ñ˜dÔ#÷	ð 	ó $ð	ðð €×Ñ˜dÔ#ô:�ló :ó $ð:ðð €×Ñ˜dÔ#ô*�\ó *ó $ð*ð

ô0�W˜Q‘Zô 0÷(ñ (÷4(ñ (ô,	+�NÐ#?Ñ@ô 	+÷(ñ (ô,�NÐ#?Ñ@ô ÷D)
ñ )
ðXô<�NÐ#8Ñ9ô <÷ñ ôB*SÐ*ô *S÷Z&ñ &ð €y‡�Ó€ð÷&6ñ 6÷D|ñ |ð~ ò+ó ð+ð ò+ó ð+ð8 €×Ñ˜dÔ#÷Bð Bó $ðBð< €×Ñ˜dÔ#ô�Fó ó $ðô")óXr%   