ó
    -Vði"½  ã                  ó0  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  \R8                  S:¼  a  S S	KJr  OS
 rS SKrS SKJ r!  S SK"J#r#  S SK$J%r%  S SK&J'r'J(r(  S SK)J*r*  \RV                  " \,5      r-\(       a,  S SK.J/r/J0r0J1r1  S SK2J3r3  S SK4r4S SK5J6r6  S SK7J8r8  S SK9J:r:  S SK;J<r<   \Rz                  " S5      r>\Rz                  " S5      r?\" SSSS9 " S S5      5       r@ " S S\5      rA " S S\R„                  5      rC  " S  S!5      rD\R&                  " SS"9 " S# S$5      5       rE " S% S&\5      rF\R&                  " SS'9 " S( S)5      5       rG\" S*5      rH \R&                  " SS"9 " S+ S,5      5       rI \R&                  " SS"9 " S- S.\I5      5       rJ \R&                  " SS"9 " S/ S0\I5      5       rK  " S1 S2\\H   5      rL " S3 S45      rM " S5 S65      rN " S7 S8\L\N   5      rO " S9 S:5      rP " S; S<\L\P   5      rQ " S= S>5      rR  " S? S@\L\M   5      rS " SA SB5      rT " SC SD\T5      rU " SE SF5      rV\	R®                  " 5       rX  " SG SH5      rY " SI SJ5      rZ\    SVSK j5       r[\    SWSL j5       r\\SXSM j5       r]\ SY     SZSN jj5       r]\" 5        SY     S[SO jj5       r]\]" SS"9 " SP SQ5      5       r^\]" SS"9 " SR SS\^5      5       r_SYS\ST jjr`S]SU jrag)^é    )ÚannotationsN)Úabstractmethod)Údefaultdict)Úcontextmanager)Ú	dataclass)ÚAnyÚGenericÚ
NamedTupleÚOptionalÚoverloadÚTYPE_CHECKINGÚTypeVar)é   é   )Údataclass_transformc                 ó   • S n U $ )Nc                ó   • U $ ©N© )Úfns    ÚRD:\a\ltx-desktop-ci\ltx-desktop-ci\python-embed\Lib\site-packages\torch\_guards.pyÚ	decoratorÚ&dataclass_transform.<locals>.decorator   s   € ØˆIó    r   )r   s    r   r   r      s   € ò	ð Ðr   )Ú_pytree)Ú
OrderedSet)Úis_traceable_wrapper_subclass)ÚCapturedTracebackÚformat_frame)ÚWeakTensorKeyDictionary)ÚCallableÚ	GeneratorÚIterator)ÚCodeType)ÚDDPOptimizerContext)Ú	PyCodegen)ÚViewAndMutationMeta©ÚFakeTensorModez-^(?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)ÚfrozenÚkw_onlyÚslotsc                  óV   • \ rS rSr% S\S'   S\S'   SrS\S'   S
S jr\SS j5       rS	r	g)Ú	CompileIdéP   ú
int | NoneÚframe_idÚframe_compile_idNÚcompiled_autograd_idc                óB  • U R                   b\  U R                  S L U R                  S L :X  d   eSnU R                  b  SU R                   SU R                   3nSU R                    U 3$ U R                  b  U R                  c   eU R                   SU R                   3$ )NÚ Ú/Ú!)r3   r1   r2   )ÚselfÚ	frame_strs     r   Ú__str__ÚCompileId.__str___   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×&;Ñ&;Ð%<Ð=Ð=r   c                ó<  • Uc  g [         [        4 H`  nUR                  U5      =n(       d  M  UR                  5       nUR	                  5        H  u  pVUc  M
  [        U5      XE'   M     U " S0 UD6s  $    [        e! [         a  n[        SU S35      UeSnAff = f)zt
Factory method that creates a CompileId from its string representation.
Keep this in sync with the __str__ method.
NzInvalid compile_id 'Ú'r   )ÚCOMPILE_ID_PATTERNÚCA_COMPILE_ID_PATTERNÚmatchÚ	groupdictÚitemsÚintÚ
ValueErrorÚ	Exception)ÚclsÚ
compile_idÚpatternr@   ÚgroupsÚkÚvÚes           r   Úfrom_stringÚCompileId.from_stringl   s¥   € ð ÑØð	JÜ.Ô0EÓF�Ø#ŸM™M¨*Ó5Ð5�5×5Ø"Ÿ_™_Ó.�FØ &§¡¦™˜Ø›=Ü(+¨A«˜F›Iñ !/ñ ™= ™=Ò(ñ Gô !Ð øäó 	JÜÐ3°J°<¸qÐAÓBÈÐIûð	Jús(   †%A< ¯&A< ÁA< Á4A< Á<
BÂBÂBr   ©ÚreturnÚstr)rG   ú
str | NonerP   úCompileId | None)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r3   r:   ÚclassmethodrM   Ú__static_attributes__r   r   r   r.   r.   P   s8   ‡ àÓð
 !Ó ð (,Ð˜*Ó+ô
>ð óJó óJr   r.   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚTraceIdéƒ   r.   rG   rC   Úattemptc                ó‚   • U R                   S:X  a  [        U R                  5      $ U R                   SU R                    3$ )Nr   Ú_)r^   rQ   rG   ©r8   s    r   r:   ÚTraceId.__str__‰   s7   € à�<‰<˜1ÓÜ�t—‘Ó'Ð'à—o‘oÐ& a¨¯© ~Ð6Ð6r   r   NrO   ©rT   rU   rV   rW   rX   r:   rZ   r   r   r   r\   r\   ƒ   s   ‡ ØÓð ƒL÷7r   r\   c                  óŠ   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSS jrSS jrSS jrSS jrSS jrSrg)ÚGuardSourceé‘   r   é   é   r   é   é   é   é   é   é	   é
   r   é   é   é   é   é   c                óH   • U [         R                  [         R                  4;   $ r   )re   ÚGLOBAL_FSDP_MODULEÚLOCAL_FSDP_MODULEra   s    r   Úis_fsdp_moduleÚGuardSource.is_fsdp_module¤   s   € Øœ×6Ñ6¼×8UÑ8UÐVÑVÐVr   c                óð   • SS K Js  Jn  UR                  (       a:  U [        R
                  [        R                  4;   =(       d    U R                  5       $ U [        R
                  [        R                  4;   $ ©Nr   )Útorch._dynamo.configÚ_dynamoÚconfigÚ_unsafe_skip_fsdp_module_guardsre   ÚGLOBAL_SPECIALIZED_NN_MODULEÚLOCAL_SPECIALIZED_NN_MODULErx   )r8   r~   s     r   Úis_specialized_nn_moduleÚ$GuardSource.is_specialized_nn_module§   sn   € ß-Ð-à×1×1àä×<Ñ<Ü×;Ñ;ðñ÷ )ð
 ×&Ñ&Ó(ðð Ü×4Ñ4Ü×3Ñ3ð
ñ 
ð 	
r   c                ó„   • U [         R                  [         R                  [         R                  [         R                  4;   $ r   )re   ÚGLOBAL_UNSPECIALIZED_NN_MODULEÚLOCAL_UNSPECIALIZED_NN_MODULEÚ&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEÚ%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULEra   s    r   Úis_unspecialized_nn_moduleÚ&GuardSource.is_unspecialized_nn_module¸   s8   € ØÜ×6Ñ6Ü×5Ñ5Ü×>Ñ>Ü×=Ñ=ð	
ñ 
ð 	
r   c                óH   • U [         R                  [         R                  4;   $ r   )re   r‡   rˆ   ra   s    r   Ú"is_unspecialized_builtin_nn_moduleÚ.GuardSource.is_unspecialized_builtin_nn_moduleÀ   s&   € ØÜ×>Ñ>Ü×=Ñ=ð
ñ 
ð 	
r   c                ó¢   • U [         R                  [         R                  [         R                  [         R                  [         R
                  4;   $ r   )re   ÚLOCALr�   rw   r†   rˆ   ra   s    r   Úis_localÚGuardSource.is_localÆ   sA   € ØÜ×ÑÜ×3Ñ3Ü×)Ñ)Ü×5Ñ5Ü×=Ñ=ð
ñ 
ð 	
r   r   N©rP   Úbool)rT   rU   rV   rW   r�   ÚGLOBALr�   r€   ÚCONSTANTÚRANDOM_VALUEÚ	SHAPE_ENVrw   rv   ÚBACKWARD_STATEÚ	EPHEMERALÚSYNTHETIC_LOCALr†   r…   rˆ   r‡   Ú
TEMP_LOCALrx   r‚   r‰   rŒ   r�   rZ   r   r   r   re   re   ‘   sy   † Ø€EØ€FØ"#ÐØ#$Ð Ø€HØ€LØ€IØÐØÐØ€NØ€IØ€OØ$&Ð!Ø%'Ð"Ø,.Ð)Ø-/Ð*Ø€JôWô
ô"
ô
÷
r   re   c                  ó   • \ rS rSrSrg)ÚGuardBuilderBaseéÞ   r   N©rT   rU   rV   rW   rZ   r   r   r   r�   r�   Þ   s   † Úr   r�   )r*   c                  ó4   • \ rS rSr% S\S'   S\S'   S	S jrSrg)
ÚSLocéâ   z#traceback.FrameSummary | str | NoneÚframework_locrR   Úmaybe_user_locc                óÌ   • [        U R                  [        5      (       a  U R                  O[        U R                  5      nU R                  b  U R                   SU S3$ SU S3$ )Nz (Ú)Ú()Ú
isinstancer£   rQ   r   r¤   )r8   Úflocs     r   r:   ÚSLoc.__str__ç   sk   € ô ˜$×,Ñ,¬c×2Ñ2ð ×Òä˜d×0Ñ0Ó1ð 	ð
 ×ÑÑ*Ø×)Ñ)Ð*¨"¨T¨F°!Ð4Ð4à�t�f˜A�;Ðr   r   NrO   rc   r   r   r   r¡   r¡   â   s   ‡ à6Ó6ØÓ÷	r   r¡   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú
ShapeGuardéó   zsympy.logic.boolalg.BooleanÚexprr¡   Úslocr“   Úsize_obliviousr   N©rT   rU   rV   rW   rX   rZ   r   r   r   r¬   r¬   ó   s   ‡ Ø
%Ó%Ø
ƒJØÖr   r¬   )r,   c                  ób  • \ rS rSr% S\S'   S\S'   SrS\S'   SrS\S	'   SrS
\S'   SrS\S'   Sr	S\S'   Sr
S\S'   SrS\S'   SrS\S'   S'S jrS(S jrS)S jrS*S jr\S+S j5       r\S,S j5       r\S-S j5       rS+S jrS+S jrS.S  jrS/S! jrS/S" jrS/S# jrS+S$ jr          S0S% jrS&rg)1ÚGuardéù   ÚSourceÚoriginating_sourcez)Callable[[GuardBuilderBase, Guard], None]Ú	create_fnNzlist[str] | NoneÚguard_typesÚ	code_listzobject | NoneÚobj_weakrefú!weakref.ReferenceType[Any] | NoneÚguarded_class_weakrefzCapturedTraceback | NoneÚstackztraceback.StackSummary | NoneÚ
user_stackr0   Ú_hashFr“   Ú_unserializablec                ó¨   • U R                   c:  [        U R                  U R                  [	        U R
                  5      45      U l         U R                   $ r   )r¿   ÚhashÚnameÚsourceÚidr·   ra   s    r   Ú__hash__ÚGuard.__hash__  s:   € Ø�:‰:ÑÜ˜tŸy™y¨$¯+©+´r¸$¿.¹.Ó7IÐJÓKˆDŒJØ�z‰zÐr   c                óº  • [        U R                  [        R                  5      =(       aD    U R                  R                  [
        R                  R                  R                  R                  L nUU R                  (       a  U R                  R                  OS[        U R                  5      U R                  U R                  5       R                  R                   4$ )Néÿÿÿÿ)r¨   r·   Ú	functoolsÚpartialÚfuncÚtorchr}   ÚguardsÚGuardBuilderÚDUPLICATE_INPUTrÄ   ÚvalueÚlenrÃ   Úinner_create_fnÚ__code__Úco_firstlineno)r8   Úis_duplicate_inputs     r   Úsort_keyÚ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   • U R                  5       UR                  5       :  $ r   )r×   ©r8   Úothers     r   Ú__lt__ÚGuard.__lt__/  s   € Ø�}‰}‹ §¡Ó!1Ñ1Ð1r   c                ó˜   • [        U R                  [        R                  5      (       a  U R                  R                  $ U R                  $ r   )r¨   r·   rÊ   rË   rÌ   ra   s    r   rÓ   ÚGuard.inner_create_fn2  s3   € Ü�d—n‘n¤i×&7Ñ&7×8Ñ8Ø—>‘>×&Ñ&Ð&à—>‘>Ð!r   c                ó.   • U R                   R                  $ r   )r¶   rÃ   ra   s    r   rÃ   Ú
Guard.name8  s   € à×&Ñ&×+Ñ+Ð+r   c                ó.   • U R                   R                  $ r   )r¶   Úguard_sourcera   s    r   rÄ   ÚGuard.source<  s   € à×&Ñ&×3Ñ3Ð3r   c           
     ó"  • [        U [        R                  5      (       af  U " 5       nUbD  S[        [	        U 5      5       SUR
                  R                   S[        [	        U5      5       S3$ S[        [	        U 5      5       S3$ [        U 5      $ )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__rT   rQ   )rº   Úobjs     r   Úweakref_to_strÚGuard.weakref_to_str@  s‡   € ô  �k¤7×#8Ñ#8×9Ñ9Ù“-ˆCØ‰Ø%¤c¬"¨[«/Ó&:Ð%;¸6À#Ç-Á-×BXÑBXÐAYÐY^Ô_bÔceÐfiÓcjÓ_kÐ^lÐlmÐnÐnà%¤c¬"¨[«/Ó&:Ð%;¸7ÐCÐCä�{Ó#Ð#r   c                ód  • SU R                   (       a$  U R                   R                  R                  5       OS S[        U R                  5       SU R	                  5       R
                   SU R                   SU R                   SU R                  U R                  5       SU R                   S3nU$ )	Nz	
        r5   Ú z&
        {
            'guard_types': z,
            'code': z,
            'obj_weakref': z
            'guarded_class': z
        }
        )rÄ   rÃ   ÚlowerÚreprrÓ   rT   r¸   r¹   rì   rº   r¼   )r8   Úss     r   Ú__repr__ÚGuard.__repr__Y  s¯   € ð	Ø%)§[§[ˆ�‰×	Ñ	×	Ñ	Ô	!°bÐ9¸¼4ÀÇ	Á	»?Ð:KÈ1ÈT×MaÑMaÓMc×MlÑMlÐLmð nà ×,Ñ,Ð-ð .Ø—^‘^Ð$ð %Ø ×/Ñ/°×0@Ñ0@ÓAÐBð CØ"×8Ñ8Ð9ð :	ðˆð ˆr   c                ó°  • S[        U R                  5       S3nU R                  (       a$  U R                  R                  R                  5       OSnUSU S3-  nUSU R	                  5       R
                   S3-  nUSU R                   S3-  nUSU R                   S3-  nUSU R                  U R                  5       S3-  nUS	U R                   S3-  nU$ )
NzName: Ú
r5   z    Source: z    Create Function: z    Guard Types: z    Code List: z    Object Weakref: z    Guarded Class Weakref: )rñ   rÃ   rÄ   rð   rÓ   rT   r¸   r¹   rì   rº   r¼   )r8   ÚoutputrÄ   s      r   r:   ÚGuard.__str__e  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           	     ó\  •  U R                  X5      $ ! [         aŽ    [        R                  S[	        U 5      R                  5       5        U R                  (       aN  [        R                  SSR                  U R                  R                  5       SS  5      R                  5       5        e f = f)NzError while creating guard:
%szCreated at:
%sr5   éüÿÿÿ)
r·   rE   ÚlogÚ	exceptionrQ   Úrstripr½   ÚerrorÚjoinÚformat)r8   Úbuilders     r   ÚcreateÚGuard.createp  s€   € ð	Ø—>‘> 'Ó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   • U R                   R                  5       $ r   )rÄ   r‚   ra   s    r   r‚   ÚGuard.is_specialized_nn_moduley  s   € Ø�{‰{×3Ñ3Ó5Ð5r   c                ó6   • U R                   R                  5       $ r   )rÄ   rx   ra   s    r   rx   ÚGuard.is_fsdp_module|  s   € Ø�{‰{×)Ñ)Ó+Ð+r   c                ó6   • U R                   R                  5       $ r   )rÄ   r�   ra   s    r   r�   ÚGuard.is_local  s   € Ø�{‰{×#Ñ#Ó%Ð%r   c                óÈ   • [        U R                  [        R                  5      (       a"  U R                  R                  nUR
                  $ U R                  nUR
                  $ r   )r¨   r·   rÊ   rË   rÌ   rT   )r8   r·   s     r   Úcreate_fn_nameÚGuard.create_fn_name‚  sM   € Ü�d—n‘n¤i×&7Ñ&7×8Ñ8ØŸ™×+Ñ+ˆIð ×!Ñ!Ð!ð Ÿ™ˆIØ×!Ñ!Ð!r   c                ó¢  • U R                   (       d  / U l         U R                   R                  U5        U R                  US 4;   d   S5       eX l        U R                  (       d  X0l        OU R                  R	                  U5        U R
                  US 4;   d2  [        U R
                  5      (       a  U R                  5       b   S5       eX@l        g )Nz+Guarded class id must be identical, or NonezBGuarded object must be identical, None or ephemeral (dead weakref))r¸   Úappendr¼   r¹   Úextendrº   Úcallable)r8   Ú
guard_typeÚguarded_classr¹   rº   s        r   Úset_export_infoÚGuard.set_export_info‰  sÐ   € ð ××Ø!ˆDÔà×Ñ×Ñ 
Ô+à×)Ñ)ØØð.
ó 
ð 	9ð 9ó	9ð 
ð &3Ô"à�~�~Ø&�Nà�N‰N×!Ñ! )Ô,ð ×Ñ ¨dÐ 3Ó3Ü˜×(Ñ(×)Ñ)Ø× Ñ Ó"Ñ*ð	Pð Pó		Pð+ð 'Õr   )r¿   r¹   r¸   r¼   rº   ©rP   rC   )rP   ztuple[bool, int, int, str, int])rÛ   r³   rP   r“   )rP   z(Callable[[GuardBuilderBase, Guard], Any]rO   ©rP   re   )rº   ÚobjectrP   rQ   )r  r�   rP   r   r’   )
r  rQ   r  r»   r¹   ú	list[str]rº   r  rP   ÚNone)rT   rU   rV   rW   rX   r¸   r¹   rº   r¼   r½   r¾   r¿   rÀ   rÆ   r×   rÜ   rÓ   ÚpropertyrÃ   rÄ   Ústaticmethodrì   ró   r:   r  r‚   rx   r�   r  r  rZ   r   r   r   r³   r³   ù   s  ‡ ð& ÓØ8Ó8ð %)€KÐ!Ó(Ø"&€IÐÓ&Ø!%€K�Ó%Ø?CÐÐ<ÓCà&*€EÐ#Ó*Ø04€JÐ-Ó4Ø€Eˆ:ÓØ!€O�TÓ!ôô

ô 2ô"ð ó,ó ð,ð ó4ó ð4ð ó$ó ð$ô0
ô	ôô6ô,ô&ô"ð 'àð 'ð 9ð 'ð ð	 'ð
 ð 'ð 
÷ 'r   r³   ÚTc                  ó   • \ rS rSrSrg)ÚGuardEnvExpri¶  r   NrŸ   r   r   r   r  r  ¶  s   † âr   r  c                  ó4   • \ rS rSr% S\S'   S\S'   SS jrSrg)	ÚDuplicateInputsiÁ  rµ   Úinput_source_aÚinput_source_bc                ó<   • U R                   U R                  :w  d   eg r   )r!  r"  ra   s    r   Ú__post_init__ÚDuplicateInputs.__post_init__Æ  s   € Ø×"Ñ" d×&9Ñ&9Ó9Ð9Ñ9r   r   N©rP   r  )rT   rU   rV   rW   rX   r$  rZ   r   r   r   r   r   Á  s   ‡ àÓØÓ÷:r   r   c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚStorageOverlapiØ  zlist[Source]Úoverlapping_sourcesÚnon_overlapping_sourcesr   Nr±   r   r   r   r(  r(  Ø  s   ‡ à%Ó%Ø)Ö)r   r(  c                  ó<   • \ rS rSr\SS j5       r\SS j5       rSrg)ÚCheckpointableië  c                ó   • g r   r   ra   s    r   Úcopy_graphstateÚCheckpointable.copy_graphstateì  s   € Ø$'r   c                ó   • g r   r   ©r8   Ústates     r   Úrestore_graphstateÚ!Checkpointable.restore_graphstateï  s   € Ø47r   r   N)rP   r  )r2  r  rP   r  )rT   rU   rV   rW   r   r.  r3  rZ   r   r   r   r,  r,  ë  s   † ØÛ'ó Ø'àÛ7ó Û7r   r,  c                  óB   • \ rS rSr% SrS\S'   S
S jrSS jrSS jrSr	g	)ÚGuardsCheckpointStateió  zO
The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
úOrderedSet[Guard]Údynamo_guardsc                ó   • Xl         g r   ©r8  )r8   r8  s     r   Ú__init__ÚGuardsCheckpointState.__init__ú  s   € Ø*Õr   c                óp   • U R                   R                  UR                   5      n[        U5      S:X  a  gU$ )z¡
Produces a delta against another GuardsCheckpointState.

Returns None if no delta is found, otherwise, return an OrderedSet() of mismatched
Guard type objects.
r   N)r8  Ú
differencerÒ   ©r8   rÛ   Úrs      r   ÚdiffÚGuardsCheckpointState.diffý  s3   € ð ×Ñ×)Ñ)¨%×*=Ñ*=Ó>ˆÜˆq‹6�Q‹;ØØˆr   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ ©NF)r¨   r6  rA  rÚ   s     r   Ú__eq__ÚGuardsCheckpointState.__eq__	  s'   € Ü˜%Ô!6×7Ñ7ØØ�y‰y˜Ó 4Ð'Ð'r   r:  N)r8  r7  rP   r  )rÛ   r6  rP   úOptional[OrderedSet[Guard]]©rÛ   r  rP   r“   )
rT   rU   rV   rW   Ú__doc__rX   r;  rA  rE  rZ   r   r   r   r6  r6  ó  s   ‡ ñð %Ó$ô+ô
÷(r   r6  c                  óB   • \ rS rSr% 0 rS\S'   S	S jrS
S jrSS jrSr	g)ÚModuleContextCheckpointStatei  údict[str, torch.nn.Module]Ú
nn_modulesc                ó   • Xl         g r   ©rM  )r8   rM  s     r   r;  Ú%ModuleContextCheckpointState.__init__  s   € Ø$�r   c                óÌ   • [        U R                  R                  5       5      R                  [        UR                  R                  5       5      5      n[	        U5      S:X  a  gU$ )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)ÚsetrM  Úkeysr>  rÒ   r?  s      r   rA  Ú!ModuleContextCheckpointState.diff  sM   € ô �—‘×$Ñ$Ó&Ó'×2Ñ2´3°u×7GÑ7G×7LÑ7LÓ7NÓ3OÓPˆÜˆq‹6�Q‹;ØØˆr   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ rD  )r¨   rK  rA  rÚ   s     r   rE  Ú#ModuleContextCheckpointState.__eq__!  ó'   € Ü˜%Ô!=×>Ñ>ØØ�y‰y˜Ó 4Ð'Ð'r   rO  N)rM  rL  rP   r  )rÛ   rK  rP   úset[str] | NonerH  )
rT   rU   rV   rW   rM  rX   r;  rA  rE  rZ   r   r   r   rK  rK    s   ‡ Ø-/€JÐ*Ó/ô%ô
÷(r   rK  c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚModuleContexti'  c                ó   • 0 U l         g r   rO  ra   s    r   r;  ÚModuleContext.__init__(  s	   € Ø*,ˆ�r   c                ó>   • [        [        U R                  5      5      $ r   )rK  ÚdictrM  ra   s    r   r.  ÚModuleContext.copy_graphstate+  s   € Ü+¬D°·±Ó,AÓBÐBr   c                óT   • [        U[        5      (       d   eUR                  U l        g r   )r¨   rK  rM  r1  s     r   r3  Ú ModuleContext.restore_graphstate.  s#   € Ü˜%Ô!=×>Ñ>Ð>Ð>Ø×*Ñ*ˆ�r   rO  Nr&  )rP   rK  )r2  rK  rP   r  ©rT   rU   rV   rW   r;  r.  r3  rZ   r   r   r   rZ  rZ  '  s   † ô-ôC÷+r   rZ  c                  óB   • \ rS rSr% 0 rS\S'   S	S jrS
S jrSS jrSr	g)ÚGlobalContextCheckpointStatei3  údict[str, tuple[Callable, Any]]Úglobal_statec                ó   • Xl         g r   ©rf  )r8   Úglobal_statess     r   r;  Ú%GlobalContextCheckpointState.__init__6  s   € Ø)Õr   c                óÌ   • [        U R                  R                  5       5      R                  [        UR                  R                  5       5      5      n[	        U5      S:X  a  gU$ )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)rR  rf  rS  r>  rÒ   r?  s      r   rA  Ú!GlobalContextCheckpointState.diff9  sO   € ô �×!Ñ!×&Ñ&Ó(Ó)×4Ñ4´S¸×9KÑ9K×9PÑ9PÓ9RÓ5SÓTˆÜˆq‹6�Q‹;ØØˆr   c                óT   • [        U[        5      (       d  gU R                  U5      S L $ rD  )r¨   rd  rA  rÚ   s     r   rE  Ú#GlobalContextCheckpointState.__eq__E  rW  r   rh  N)ri  re  rP   r  )rÛ   rd  rP   rX  rH  )
rT   rU   rV   rW   rf  rX   r;  rA  rE  rZ   r   r   r   rd  rd  3  s   ‡ Ø46€LÐ1Ó6ô*ô
÷(r   rd  c                  ó>   • \ rS rSrSr1 SkrS	S jrS
S jrSS jrSr	g)ÚGlobalContextiK  zn
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                ó   • 0 U l         g r   rh  ra   s    r   r;  ÚGlobalContext.__init__Z  s
   € Ø=?ˆÕr   c                ó,   • [        U R                  5      $ r   )rd  rf  ra   s    r   r.  ÚGlobalContext.copy_graphstate]  s   € Ü+¨D×,=Ñ,=Ó>Ð>r   c                ór  • [        U[        5      (       d   eUR                  U l        [        U R                  5      [        U R                  5      :X  a1  [        U R                  R                  5       5      U R                  :X  d   S5       eU R                  R                  5        H  u  p#U" U5        M     g )NzGlobal state mismatch)r¨   rd  rf  rÒ   Ú_supported_global_statesrR  rS  Úvalues)r8   r2  rÌ   Úargss       r   r3  Ú GlobalContext.restore_graphstate`  s�   € Ü˜%Ô!=×>Ñ>Ð>Ð>Ø!×.Ñ.ˆÔä�×!Ñ!Ó"¤c¨$×*GÑ*GÓ&HÓHÜ�D×%Ñ%×*Ñ*Ó,Ó-°×1NÑ1NÓNð	#ð #ó	#ðOð ×+Ñ+×2Ñ2Ö4‰JˆDÙ�ŽJò 5r   rh  Nr&  )rP   rd  )r2  rd  rP   r  )
rT   rU   rV   rW   rI  r|  r;  r.  r3  rZ   r   r   r   rp  rp  K  s   † ñò
 Ðô@ô?÷r   rp  c                  ó€   • \ rS rSrSSS jjrSS jrSS jrSS jrSS jrSS	S
.       SS jjr	SS jr
SS jrSrg)Ú	GuardsSetim  Nc                ó6   • Uc  [        5       U l        g Xl        g r   )r   Úinner)r8   rƒ  s     r   r;  ÚGuardsSet.__init__n  s   € Ø‰=Ü,6«LˆD�Jà�Jr   c                ó,   • [        U R                  5      $ r   )Úiterrƒ  ra   s    r   Ú__iter__ÚGuardsSet.__iter__t  ó   € Ü�D—J‘JÓÐr   c                ó,   • [        U R                  5      $ r   )rÒ   rƒ  ra   s    r   Ú__len__ÚGuardsSet.__len__w  s   € Ü�4—:‘:‹Ðr   c                óF   • [        U R                  UR                  -
  5      $ r   )r�  rƒ  rÚ   s     r   Ú__sub__ÚGuardsSet.__sub__|  s   € Ü˜Ÿ™ e§k¡kÑ1Ó2Ð2r   c                ó,   • [        U R                  5      $ r   )r“   rƒ  ra   s    r   Ú__bool__ÚGuardsSet.__bool__  r‰  r   Tr   )Úcollect_debug_stackÚskipc               ó  • XR                   ;   a  g U(       a)  UR                  c  [        R                  " SU-   S9Ul        UR                  c  [
        R                  5       Ul        U R                   R                  U5        g ©Nrg   )r”  )rƒ  r½   r   Úextractr¾   ÚTracingContextÚextract_stackÚadd)r8   Úguardr“  r”  s       r   rš  ÚGuardsSet.add‚  sa   € ð —J‘JÓØÞØ�{‰{Ñ"Ü/×7Ò7¸QÀ¹XÑF�”Ø×ÑÑ#Ü-×;Ñ;Ó=ˆEÔØ�
‰
�‰�uÕr   c                óH   • U H  nU H  nU R                  USS9  M     M     g r–  )rš  )r8   ÚothersÚoÚgs       r   ÚupdateÚGuardsSet.updateŽ  s&   € ÛˆAÛ�Ø—‘˜ �Ó#ó ò r   c                ó^   ^^• SSK Jm  [        UU4S jU R                   5       5      U l        g)z.Delete all guards that contains a given sourcerg   )Úis_from_sourcec              3  ó\   >#   • U  H!  nT" UR                   T5      (       a  M  Uv •  M#     g 7fr   )r¶   )Ú.0r   r¤  rÄ   s     €€r   Ú	<genexpr>Ú6GuardsSet.remove_guards_with_source.<locals>.<genexpr>—  s%   øé € ð  
Ú!�!©¸×8LÑ8LÈf×)U�A‰A’zùs   ƒ,£	,N)Ú_dynamo.sourcer¤  r   rƒ  )r8   rÄ   r¤  s    `@r   Úremove_guards_with_sourceÚ#GuardsSet.remove_guards_with_source“  s#   ù€ å2äõ  
Ø—z’zó 
ó 
ˆ�
r   )rƒ  r   )rƒ  rG  rP   r  )rP   zIterator[Guard]r  )rÛ   r�  rP   r�  r’   )r›  r³   r“  r“   r”  rC   rP   r  )rž  z
set[Guard]rP   r  )rÄ   rµ   rP   r  )rT   rU   rV   rW   r;  r‡  r‹  rŽ  r‘  rš  r¡  rª  rZ   r   r   r   r�  r�  m  sR   † öô ôô
3ô ð <@ÈQñ
Øð
Ø48ð
ØGJð
à	õ
ô$÷

r   r�  c                  ó2   • \ rS rSrSS jrSS jrS	S jrSrg)
ÚGuardsContexti¤  c                ó0   • [        5       U l        / U l        g r   )r�  r8  Úaotautograd_guardsra   s    r   r;  ÚGuardsContext.__init__¥  s   € Ü(1«ˆÔØ68ˆÕr   c                óR   • [        [        U R                  R                  5      5      $ r   )r6  r   r8  rƒ  ra   s    r   r.  ÚGuardsContext.copy_graphstate©  s   € Ü$¤Z°×0BÑ0B×0HÑ0HÓ%IÓJÐJr   c                óf   • [        U[        5      (       d   e[        UR                  5      U l        g r   )r¨   r6  r�  r8  r1  s     r   r3  Ú GuardsContext.restore_graphstate¬  s)   € ä˜%Ô!6×7Ñ7Ð7Ð7Ü& u×':Ñ':Ó;ˆÕr   )r¯  r8  Nr&  )rP   r6  )r2  r6  rP   r  rb  r   r   r   r­  r­  ¤  s   † ô9ôK÷<r   r­  c                  óÐ   • \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\        SS j5       r\      SS	 j5       rS
rg)ÚHopSubgraphCachei²  c                ó   • g r   r   ©r8   Úfn_idÚ
identifiers      r   Úadd_dynamo_installed_submoduleÚ/HopSubgraphCache.add_dynamo_installed_submodule³  s   € ØSVr   c                ó   • g r   r   ©r8   r¹  s     r   Úget_dynamo_installed_submodulesÚ0HopSubgraphCache.get_dynamo_installed_submodules¶  ó   € ØHKr   c                ó   • g r   r   ©r8   rº  Úkeys      r   Úadd_autograd_key_entryÚ'HopSubgraphCache.add_autograd_key_entry¹  s   € ØNQr   c                ó   • g r   r   ©r8   rº  s     r   Úget_autograd_key_entryÚ'HopSubgraphCache.get_autograd_key_entry¼  s   € ØJMr   c                ó   • g r   r   rÃ  s      r   Úadd_proxy_dispatch_entryÚ)HopSubgraphCache.add_proxy_dispatch_entry¿  s   € ØPSr   c                ó   • g r   r   rÈ  s     r   Úget_proxy_dispatch_entryÚ)HopSubgraphCache.get_proxy_dispatch_entryÂ  s   € ØLOr   c                ó   • g r   r   )r8   rº  Útangent_metadataÚgmods       r   Úadd_lazy_bwd_entryÚ#HopSubgraphCache.add_lazy_bwd_entryÅ  s   € ð r   c                ó   • g r   r   ©r8   rº  rÒ  s      r   Úget_lazy_bwd_entryÚ#HopSubgraphCache.get_lazy_bwd_entryÍ  s   € ð :=r   r   N©r¹  rC   rº  rQ   rP   r  ©r¹  rC   rP   r  ©rº  rQ   rÄ  r!   rP   r  ©rº  rQ   rP   zCallable | None©rº  rQ   rÒ  útuple[object]rÓ  ztorch.fx.GraphModulerP   rC   ©rº  rQ   rÒ  rß  rP   z.tuple[torch.fx.GraphModule | None, int | None])rT   rU   rV   rW   r   r»  r¿  rÅ  rÉ  rÌ  rÏ  rÔ  rØ  rZ   r   r   r   r¶  r¶  ²  sº   † ØÛVó ØVàÛKó ØKàÛQó ØQàÛMó ØMàÛSó ØSàÛOó ØOàðàðð (ðð #ð	ð
 
óó ðð ð=Øð=Ø1>ð=à	7ó=ó ó=r   r¶  c                  óž   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
        SS	 jr      SS
 jrSS jrSS jrSrg)ÚInvokeSubgraphCacheiÓ  c                ó~   • 0 U l         0 U l        [        [        5      U l        [        [
        5      U l        0 U l        g r   )Úautograd_cacheÚproxy_dispatch_cacher   ÚlistÚdynamo_installed_submodulesr^  Úlazy_bwd_cacheÚeffects_cachera   s    r   r;  ÚInvokeSubgraphCache.__init__Ô  s>   € Ø35ˆÔØ9;ˆÔ!ÜALÌTÓARˆÔ(ô œÓð 	Ôð
 ð 	Õr   c                ó@   • U R                   U   R                  U5        g r   )rç  r  r¸  s      r   r»  Ú2InvokeSubgraphCache.add_dynamo_installed_submoduleß  s   € Ø×(Ñ(¨Ñ/×6Ñ6°zÕBr   c                ó:   • U R                   R                  U/ 5      $ r   )rç  Úgetr¾  s     r   r¿  Ú3InvokeSubgraphCache.get_dynamo_installed_submodulesâ  s   € Ø×/Ñ/×3Ñ3°E¸2Ó>Ð>r   c                ó    • X R                   U'   g r   )rä  rÃ  s      r   rÅ  Ú*InvokeSubgraphCache.add_autograd_key_entryå  s   € Ø*-×Ñ˜JÒ'r   c                ó:   • U R                   R                  US 5      $ r   )rä  rî  rÈ  s     r   rÉ  Ú*InvokeSubgraphCache.get_autograd_key_entryè  s   € Ø×"Ñ"×&Ñ& z°4Ó8Ð8r   c                ó    • X R                   U'   g r   )rå  rÃ  s      r   rÌ  Ú,InvokeSubgraphCache.add_proxy_dispatch_entryë  s   € Ø03×!Ñ! *Ò-r   c                ó:   • U R                   R                  US 5      $ r   )rå  rî  rÈ  s     r   rÏ  Ú,InvokeSubgraphCache.get_proxy_dispatch_entryî  s   € Ø×(Ñ(×,Ñ,¨Z¸Ó>Ð>r   c                ó\   • [        U R                  U   5      nX44U R                  U   U'   U$ r   )rÒ   rè  )r8   rº  rÒ  rÓ  Ú	num_gmodss        r   rÔ  Ú&InvokeSubgraphCache.add_lazy_bwd_entryñ  s8   € ô ˜×+Ñ+¨JÑ7Ó8ˆ	Ø=AÐ<Mˆ×Ñ˜JÑ'Ð(8Ñ9ØÐr   c                ó`   • XR                   ;  a  gU R                   U   R                  US5      $ )N)NN)rè  rî  r×  s      r   rØ  Ú&InvokeSubgraphCache.get_lazy_bwd_entryü  s2   € ð ×0Ñ0Ó0Øà×"Ñ" :Ñ.×2Ñ2Ð3CÀ\ÓRÐRr   c                ó’   • U R                   R                  US5      =n(       a  X#:X  d   SU SU SU S35       eX R                   U'   g)z>Store the effect types for a given invoke_subgraph identifier.NzPDifferent number of effects were found for invoke_subgraph call with identifier z,. 
Previously we had the following effects: z.
But now we have: Ú.©ré  rî  )r8   rº  ÚeffectsÚprev_effectss       r   Úadd_effectsÚInvokeSubgraphCache.add_effects  si   € à×-Ñ-×1Ñ1°*¸dÓCÐCˆ<ÕCØÓ*ð ð(Ø(2 |ð 4<Ø<H¸>ð J$Ø$+ 9¨Að/óÐ*ð *1×Ñ˜:Ò&r   c                ó:   • U R                   R                  US5      $ )zARetrieve the effect types for a given invoke_subgraph identifier.Nrÿ  rÈ  s     r   Úget_effectsÚInvokeSubgraphCache.get_effects  s   € à×!Ñ!×%Ñ% j°$Ó7Ð7r   )rä  rç  ré  rè  rå  Nr&  rÚ  rÛ  rÜ  rÝ  rÞ  rà  )rº  rQ   r   rR  rP   r  )rº  rQ   rP   z
set | None)rT   rU   rV   rW   r;  r»  r¿  rÅ  rÉ  rÌ  rÏ  rÔ  rØ  r  r  rZ   r   r   r   râ  râ  Ó  s|   † ô	ôCô?ô.ô9ô4ô?ð	àð	ð (ð	ð #ð		ð
 
ô	ðSØðSØ1>ðSà	7ôSô	1÷8r   râ  c                  ó(   • \ rS rSrSS jrSS jrSrg)ÚHopDispatchSetCachei  c                ó2   • SSK Jn  U[        5       0U l        g )Nr   )Úinvoke_subgraph)Ú'torch._higher_order_ops.invoke_subgraphr
  râ  Úhop_cache_map)r8   r
  s     r   r;  ÚHopDispatchSetCache.__init__  s   € åKà-Ô/BÓ/DÐEˆÕr   c                ó@   • XR                   ;  a  g U R                   U   $ r   ©r  )r8   Úops     r   Ú	get_cacheÚHopDispatchSetCache.get_cache  s"   € Ø×'Ñ'Ó'ØØ×!Ñ! "Ñ%Ð%r   r  Nr&  )r  ztorch._ops.HigherOrderOperatorrP   zHopSubgraphCache | None)rT   rU   rV   rW   r;  r  rZ   r   r   r   r  r    s   † ôF÷&r   r  c                  ón   • \ rS rSr\S	S j5       r\S
S j5       rSS jr\SS j5       r\SS j5       r	Sr
g)ÚCompileContexti6  c                 óH   • [         R                  c   e[         R                  $ r   )Ú_TLSÚcompile_contextr   r   r   rî  ÚCompileContext.get7  s    € ä×#Ñ#Ñ/Ð/Ð/Ü×#Ñ#Ð#r   c                 ó$   • [        [        SS 5      $ ©Nr  ©Úgetattrr  r   r   r   Útry_getÚCompileContext.try_get<  ó   € ä”tÐ.°Ó5Ð5r   c                ó`   • Ub  [        U[        5      (       d   eXl        SU l        / U l        g r{   )r¨   r.   rG   r^   Úshape_env_guards)r8   rG   s     r   r;  ÚCompileContext.__init__@  s.   € ØÑ!¤Z°
¼I×%FÑ%FÐFÐFØ,6ŒØˆŒà+-ˆÕr   c                 óJ   • [         R                  5       n U c  g U R                  $ r   )r  r  rG   ra   s    r   Úcurrent_compile_idÚ!CompileContext.current_compile_idG  s"   € ä×%Ñ%Ó'ˆØ‰<ØØ�‰Ðr   c                 óŽ   • [         R                  5       n U c  g U R                  c  g [        U R                  U R                  5      $ r   )r  r  rG   r\   r^   ra   s    r   Úcurrent_trace_idÚCompileContext.current_trace_idN  s:   € ä×%Ñ%Ó'ˆØ‰<ØØ�?‰?Ñ"ØÜ�t—‘¨¯©Ó5Ð5r   )r^   rG   r!  N)rP   r  )rP   úCompileContext | None)rG   rS   rP   r  )rP   rS   )rP   zTraceId | None)rT   rU   rV   rW   r  rî  r  r;  r$  r'  rZ   r   r   r   r  r  6  sU   † Øó$ó ð$ð ó6ó ð6ô.ð óó ðð ó6ó ó6r   r  c                  óV  • \ rS rSrSr\SS j5       r\SS j5       rSS jrSS jr	\\
SS j5       5       r\SS j5       rSS	 jr\\R                  SS
 j5       5       r\\R                      SS j5       5       r\\R                  SS j5       5       r\SS j5       r\SS j5       rSrg)r˜  iX  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                 ó$   • [        [        SS 5      $ )NÚtracing_contextr  r   r   r   r  ÚTracingContext.try_get`  r  r   c                 óR   • [         R                  5       =n (       a  U $ [        S5      e)Nz<TracingContext.get() must be called within an ongoing trace.)r˜  r  ÚRuntimeError)Úctxs    r   rî  ÚTracingContext.getd  s+   € ä ×(Ñ(Ó*Ð*ˆ3Õ*ØˆJÜØJó
ð 	
r   c                óŠ  • [        5       U l        [        5       U l        [	        5       U l        [        5       U l        [        5       U l        Xl	        / U l
        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        SU l        [)        5       U l        SU l        [/        5       U l        / U l        g rD  )r­  Úguards_contextrZ  Úmodule_contextrp  Úglobal_contextr^  Úpreviously_inlined_functionsÚpreviously_cleaned_instructionsÚ	fake_modeÚframe_summary_stackÚloc_in_frameÚfw_metadataÚddp_optimizer_ctxÚ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)r8   r8  s     r   r;  ÚTracingContext.__init__l  s¹   € Ü+›oˆÔÜ+›oˆÔÜ+›oˆÔÜ<@»FˆÔ)Ü?C»vˆÔ,Ø09ŒØACˆÔ ð :>ˆÔà7;ˆÔà=AˆÔà04ˆÔØ-1ˆÔØ?CˆÔ*Ø@DˆÔ+ð DHˆÔð 49ˆÔ0ä!8Ó!:ˆÔð
 "'ˆÔÜ&9Ó&;ˆÔ#à+-ˆÕr   c                óŽ   • 0 U R                   l        U R                  R                  5         U R                  R                  5         g r   )r5  rf  r6  Úclearr7  ra   s    r   rI  ÚTracingContext.clearŸ  s6   € ð ,.ˆ×ÑÔ(Ø×)Ñ)×/Ñ/Ô1Ø×,Ñ,×2Ñ2Õ4r   c               +  óV  #   • 0 n[         R                  5       nU  H  n[        X#5      X'   M     U R                  5        H  u  p4[	        X#U5        M      S v •  UR                  5        H  u  p4[	        X#U5        M     g ! UR                  5        H  u  p4[	        X#U5        M     f = f7fr   )r˜  rî  r  rB   Úsetattr)ÚkwargsÚpriorr0  rÄ  Úvals        r   ÚpatchÚTracingContext.patch¦  sŽ   é € ð ˆÜ× Ñ Ó"ˆãˆCä  Ó*ˆE‹Jñ ð Ÿ™ž‰HˆCÜ�C˜cÖ"ñ 'ð	'Ûà!ŸK™KžM‘�Ü˜ #Ö&ò *ø˜EŸK™KžM‘�Ü˜ #Ö&ò *üs   ‚AB)ÁA? Á&B)Á?'B&Â&B)c                 óð   • [         R                  5       n U c  [        R                  " 5       $ U R                  nU R
                  b  XR                  5       /-   n[        R                  R                  U5      $ r   )r˜  r  Ú	tracebackÚStackSummaryr9  r:  Ú_populate_loc_in_frame_summaryÚ	from_list)r8   r½   s     r   r™  ÚTracingContext.extract_stack·  sf   € ä×%Ñ%Ó'ˆØ‰<Ü×)Ò)Ó+Ð+Ø×(Ñ(ˆØ×ÑÑ(Ø×@Ñ@ÓBÐCÑCˆEÜ×%Ñ%×/Ñ/°Ó6Ð6r   c                ój   • U R                   c   eU R                   u  pn[        R                  " XUSS9$ )NF)Úlookup_line)r:  rS  ÚFrameSummary)r8   ÚfilenameÚlinenoÚ
frame_names       r   rU  Ú-TracingContext._populate_loc_in_frame_summaryÁ  s:   € Ø× Ñ Ñ,Ð,Ð,Ø'+×'8Ñ'8Ñ$ˆ˜*Ü×%Ò% h¸
ÐPUÑVÐVr   c               #  óª  #   • [         R                  5       n [        R                  R                  R                  U S/ 5         [        R                  R                  R                  U SS 5          S v •   S S S 5        S S S 5        g ! [         a  n[        US5      (       d  S Ul        e S nAff = f! , (       d  f       NB= f! , (       d  f       g = f7f)Nr9  r:  Ú
real_stack)	r˜  rî  ÚunittestÚmockrP  r  rE   Úhasattrr`  )ÚtcrL   s     r   Úclear_frameÚTracingContext.clear_frameÈ  s£   é € ô ×ÑÓ!ˆä�M‰M×Ñ×&Ñ& rÐ+@À"ÕEÜ�M‰M×Ñ×&Ñ& r¨>¸4Õ@ðÜ÷ A÷ FÐEøô
 ó ô$ ˜q ,×/Ñ/Ø#'�A”LØûð)ú÷	 AÕ@ú÷ FÕEüsT   ‚A CÁ,CÁ.B1Á0BÁ5CÁ=	CÂ
B.ÂB)Â)B.Â.B1Â1
B?	Â;CÃ
CÃCc              #  óª  #   • [         R                  5       nU b  UR                  R                  U 5        UR                  nS Ul         S v •   U b  UR                  R                  5         X!l        g ! [
         a,  n[        US5      (       d  UR                  5       Ul        e S nAff = f! U b  UR                  R                  5         X!l        f = f7f)Nr`  )
r˜  rî  r9  r  r:  rE   rc  r™  r`  Úpop)Úframe_summaryrd  ÚoldrL   s       r   Úcurrent_frameÚTracingContext.current_frameè  s·   é € ô ×ÑÓ!ˆØÑ$Ø×"Ñ"×)Ñ)¨-Ô8Ø�o‰oˆØˆŒð		"Üð Ñ(Ø×&Ñ&×*Ñ*Ô,Ø!�Oøô ó 	Ü˜1˜l×+Ñ+Ø!×/Ñ/Ó1�”Øûð	ûð
 Ñ(Ø×&Ñ&×*Ñ*Ô,Ø!�Oüs6   ‚ACÁ	A2 Á$CÁ2
B(Á<'B#Â#B(Â(B+ Â+%CÃCc               #  óª   #   • [         R                  5       n U c  S v •  g U R                  n/ U l         U R                  v •  Xl        g ! Xl        f = f7fr   )r˜  r  rA  )rd  Úold_output_stridess     r   Úreport_output_stridesÚ$TracingContext.report_output_stridesÿ  sT   é € ô
 ×#Ñ#Ó%ˆØ‰:ØŠJØØ×.Ñ.ÐØˆÔð	3Ø×#Ñ#Ò#à 2ÕøÐ 2Õüs   ‚0A³A ÁAÁAÁAc                ó:   • XU4[         R                  5       l        g r   )r˜  rî  r:  )r[  r\  r]  s      r   Úset_current_locÚTracingContext.set_current_loc  s   € ð .6¸zÐ,JŒ×ÑÓÕ)r   c                 óJ   • [         R                  5       n U c  g U R                  $ r   )r˜  r  rF  )rd  s    r   Úget_traced_codeÚTracingContext.get_traced_code  s"   € ä×#Ñ#Ó%ˆØ‰:ØØ�~‰~Ðr   )r=  r<  r8  rD  rB  r9  r;  r5  r3  rE  r:  r4  rA  r>  r?  r@  r7  r6  rC  rF  N)rP   úTracingContext | None)rP   r˜  )r8  úFakeTensorMode | NonerP   r  r&  )rM  r   rP   úGenerator[None, None, None])rP   ztraceback.StackSummary)rP   ztraceback.FrameSummary)rP   ry  )ri  ztraceback.FrameSummary | NonerP   ry  )rP   z:Generator[list[tuple[int, ...] | None] | None, None, None])r[  rQ   r\  rC   r]  rQ   rP   r  )rP   zlist[CodeType] | None)rT   rU   rV   rW   rI  r  r  rî  r;  rI  r   rP  r™  rU  Ú
contextlibre  rk  ro  rr  ru  rZ   r   r   r   r˜  r˜  X  s  † ñð ó6ó ð6ð ó
ó ð
ô1.ôf5ð Øó'ó ó ð'ð ó7ó ð7ôWð Ø×Ñóó ó ðð< Ø×Ñð"Ø4ð"à	$ó"ó ó ð"ð* Ø×Ñó3ó ó ð3ð óKó ðKð
 óó ór   r˜  c              #  ó„   #   • [        [        SS 5      nU [        l         U v •  U[        l        g ! U[        l        f = f7fr  )r  r  r  )ÚcontextÚold_contexts     r   r  r    s8   é € ô œ$Ð 1°4Ó8€KØ"„DÔð+ØŠà*ŒÕø˜{ŒÕüs   ‚A  0 ¤A °=½A c              #  ó*  #   • [        [        SS5      nU [        l         U v •   U bH  U R                  b;  U R                  R                  b$  U R                  R                  R                  5         U[        l        g! [         a/  n[	        US5      (       d  U b  U R                  5       Ul        e SnAff = f! U bH  U R                  b;  U R                  R                  b$  U R                  R                  R                  5         U[        l        f = f7f)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,  rE   rc  r™  r`  r8  Ú	shape_envÚcleanup)r|  r}  rL   s      r   Útracingr�  )  së   é € ô œ$Ð 1°4Ó8€KØ"„DÔð+Ø‹ð ÑØ×!Ñ!Ñ-Ø×!Ñ!×+Ñ+Ñ7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕøô ó Ü�q˜,×'Ñ'¨GÑ,?Ø"×0Ñ0Ó2ˆAŒLØûðûð ÑØ×!Ñ!Ñ-Ø×!Ñ!×+Ñ+Ñ7à×Ñ×'Ñ'×/Ñ/Ô1Ø*ŒÕüs5   ‚D A< ¥ADÁ<
B5Â*B0Â0B5Â5B8 Â8ADÄDc                ó   • g r   r   ©rF   rM  s     r   Údataclass_with_cached_hashr„  F  rÁ  r   c                ó   • g r   r   rƒ  s     r   r„  r„  J  s   € ð $'r   c                ó.   ^• SU4S jjnU c  U$ U" U 5      $ )Nc                ó~   >^• [         R                  " U 40 TD6nU R                  mSU4S jjnS nX!l        X1l        U$ )Nc                óx   >• [        U S5      (       d  [        R                  U ST" U 5      5        U R                  $ )Nr¿   )rc  r  Ú__setattr__r¿   )r8   Úold_hashs    €r   rÆ   Ú:dataclass_with_cached_hash.<locals>.wrap.<locals>.__hash__X  s0   ø€ Ü˜4 ×)Ñ)Ü×"Ñ" 4¨±(¸4³.ÔAØ—:‘:Ðr   c                óv   ^ • [         R                  " T 5      n[        U 4S jU 5       5      nT R                  U4$ )Nc              3  óP   >#   • U  H  n[        TUR                  5      v •  M     g 7fr   )r  rÃ   )r¦  Úfr8   s     €r   r§  ÚOdataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__.<locals>.<genexpr>b  s   øé € Ð GÂ¸1¤¨¨q¯v©v×!6Ð!6Âùs   ƒ#&)ÚdataclassesÚfieldsÚtuplerê   )r8   r‘  Úfield_valuess   `  r   Ú
__reduce__Ú<dataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__]  s4   ø€ ô !×'Ò'¨Ó-ˆFÜ Ô GÁÓ GÓGˆLØ—N‘N LÐ1Ð1r   r  )r�  r   rÆ   r”  )Ú	cls_innerÚnew_clsrÆ   r”  rŠ  rM  s       @€r   ÚwrapÚ(dataclass_with_cached_hash.<locals>.wrapT  s@   ù€ Ü×'Ò'¨	Ñ<°VÑ<ˆØ×%Ñ%ˆ÷	ò
	2ð $ÔØ'ÔØˆr   )r–  útype[T]rP   rš  r   )rF   rM  r˜  s    ` r   r„  r„  P  s   ø€ ÷ð* �{Øˆá�‹9Ðr   c                  óÎ   • \ rS rSrSS jrSS jrSS jr\R                  SS j5       r	\
SS j5       r\R                  SS j5       r        SS jrSS	 jrSS
 jrSS jrSrg)rµ   iq  c                ó   • grD  r   ra   s    r   Úis_dict_keyÚSource.is_dict_keys  ó   € Ør   c                ó   • grD  r   ra   s    r   Úis_ephemeralÚSource.is_ephemeralv  rŸ  r   c                ó   • [         er   ©ÚNotImplementedError)r8   Úcodegens     r   ÚreconstructÚSource.reconstructy  s   € Ü!Ð!r   c                ó   • [         er   r¤  ra   s    r   rã   ÚSource.guard_source|  s   € ä!Ð!r   c                ó   • [         e)a‚  
A template for the name of the source. Used to prevent code duplication between
`name` and `get_value`.

For non-ChainedSources, `name` and `get_value` use the returned string directly.

For ChainedSources, `name` and `get_value` expect the return to be a format string
with `{0}` present - `name` and `get_value` will apply different values to this function's
returned format string.
r¤  ra   s    r   Ú_name_templateÚSource._name_template€  s
   € ô "Ð!r   c                ó   • U R                   $ r   )r¬  ra   s    r   rÃ   ÚSource.nameŽ  s   € à×"Ñ"Ð"r   c                óL   • X;   a  X0   $ [        U R                  X5      nXCU '   U$ r   )Úevalr¬  )r8   ÚglobalsÚlocalsÚcacherÑ   s        r   Ú	get_valueÚSource.get_value’  s/   € ð ‹=Ø‘;ÐÜ�T×(Ñ(¨'Ó:ˆØˆd‰Øˆr   c                ó^   • U R                   [        R                  L a  [        e[	        X5      $ r   )rã   re   r•   r¥  r³   )r8   r   s     r   Ú
make_guardÚSource.make_guardž  s&   € Ø×Ñ¤× 4Ñ 4Ò4Ü%Ð%Ü�T‹Ðr   c                ó6   • U R                   R                  5       $ r   )rã   r‚   ra   s    r   r‚   ÚSource.is_specialized_nn_module£  s   € Ø× Ñ ×9Ñ9Ó;Ð;r   c                ó<   • U R                   [        R                  :g  $ )z+True if you can guard on attributes of this)rã   re   rš   ra   s    r   Úsubguards_allowedÚSource.subguards_allowed¦  s   € à× Ñ ¤K×$?Ñ$?Ñ?Ð?r   r   Nr’   )r¦  r&   rP   r  r  rO   ©r²  údict[str, Any]r³  rÀ  r´  z&weakref.WeakKeyDictionary[Source, Any]rP   r   )r   zCallable[..., Any]rP   r³   )rT   rU   rV   rW   r�  r¡  r§  rÊ   Úcached_propertyrã   r  r¬  rÃ   rµ  r¸  r‚   r½  rZ   r   r   r   rµ   rµ   q  s”   † ôôô"ð ×Ñó"ó ð"ð ó"ó ð"ð ×Ñó#ó ð#ð
àð
ð ð
ð 6ð	
ð
 
ô
ôô
<÷@r   rµ   c                  ó¨   • \ rS rSr% S\S'   SS jrSS jr\R                  SS j5       r	SS jr
\R                  SS j5       r        SS	 jrS
rg)ÚChainedSourcei¬  rµ   Úbasec                ó6   • U R                   R                  5       $ r   )rÄ  r�  ra   s    r   r�  ÚChainedSource.is_dict_key°  s   € à�y‰y×$Ñ$Ó&Ð&r   c                ó6   • U R                   R                  5       $ r   )rÄ  r¡  ra   s    r   r¡  ÚChainedSource.is_ephemeral´  s   € Ø�y‰y×%Ñ%Ó'Ð'r   c                ó.   • U R                   R                  $ r   )rÄ  rã   ra   s    r   rã   ÚChainedSource.guard_source·  s   € à�y‰y×%Ñ%Ð%r   c                óz   • U n[        U[        5      (       a#  UR                  n[        U[        5      (       a  M#  U$ r   )r¨   rÃ  rÄ  )r8   Úcurrents     r   Úget_baseÚChainedSource.get_base»  s1   € ØˆÜ˜¤-×0Ñ0Ø—l‘lˆGô ˜¤-×0Ó0àˆr   c                ó`   • U R                   R                  U R                  R                  5      $ r   )r¬  r   rÄ  rÃ   ra   s    r   rÃ   ÚChainedSource.nameÁ  s!   € à×"Ñ"×)Ñ)¨$¯)©)¯.©.Ó9Ð9r   c                óÞ   • X;   a  X0   $ SnSnXB;   a  SU 3nUS-  nXB;   a  M  U R                   R                  XU5      X$'   [        U R                  R	                  U5      X5      nX$	 XcU '   U$ )NÚtmpr   rg   )rÄ  rµ  r±  r¬  r   )r8   r²  r³  r´  ÚtmpvarÚcounterrÑ   s          r   rµ  ÚChainedSource.get_valueÅ  s…   € ð ‹=Ø‘;ÐØˆØˆØÓØ˜7˜)�_ˆFØ�q‰LˆGð Õð Ÿ™×,Ñ,¨W¸eÓDˆ‰Ü�T×(Ñ(×/Ñ/°Ó7¸ÓIˆØˆNØˆd‰Øˆr   r   Nr’   r  )rP   rµ   rO   r¿  )rT   rU   rV   rW   rX   r�  r¡  rÊ   rÁ  rã   rÍ  rÃ   rµ  rZ   r   r   r   rÃ  rÃ  ¬  su   ‡ à
ƒLô'ô(ð ×Ñó&ó ð&ôð ×Ñó:ó ð:ðàðð ðð 6ð	ð
 
÷r   rÃ  c                óÀ  • SSK JnJnJn  / n[        R                  5       =n(       a#  UR                  nUb  UR                  USS45        SSKJ	n  [        [        U" 5       5      5       H+  u  p‰[        X’5      (       d  M  UR                  U	SU45        M-     [        R                  " U 5      n
[        U
5       H±  u  p‹[        X±5      (       a  UR                  UR                  SU45        [        U5      (       d  ME  / nU" X¼S9  U Vs/ s H  n[        XÑ5      (       d  M  UPM     nnUR!                  [        U5       VVs/ s H  u  nnUR                  S	U 3U4PM     snn5        M³     U(       a^  US   u  nnnUS
S  HJ  u  n	nnXiL a  M   SU SU SU SU	 SU SU SU SU SUR"                   SU SU SU	R"                   35       e   U$ gs  snf s  snnf )ax  
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   )Ú
FakeTensorr)   Úget_plain_tensorsNztracing context©Ú _get_current_dispatch_mode_stackzactive fake modezfake tensor input)Úoutzsubclass input rg   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  r8  r  Útorch.utils._python_dispatchrÚ  Ú	enumerateÚreversedr¨   ÚpytreeÚtree_leavesr   r  r½   )Úinputsr×  r)   rØ  Ú
fake_modesr|  r8  rÚ  ÚiÚmÚflat_inputsÚ
flat_inputrÛ  ÚxÚfake_tensorsÚixÚtensorÚdesc1Úi1Údesc2Úi2s                        r   Údetect_fake_moderð  Ù  s  € ÷ñ ð €Jä ×(Ñ(Ó*Ð*€wÕ*Ø×%Ñ%ˆ	ØÑ Ø×Ñ˜yÐ*;¸QÐ?Ô@åMäœ(Ñ#CÓ#EÓFÖG‰ˆÜ�a×(Ó(à×Ñ˜qÐ"4°aÐ8Ö9ñ Hô
 ×$Ò$ VÓ,€KÜ" ;Ö/‰ˆÜ�j×-Ñ-à×Ñ˜z×3Ñ3Ð5HÈ!ÐLÔMÜ(¨×4Ó4Ø;=ˆCÙ˜jÒ2áó.Ú�a¤*¨Q×";—™3ð ð .ð ×Ñô '0°Ô&=ôâ&=™
˜˜Fð ×%Ñ%¨¸¸Ð'<¸bÓAÙ&=òöñ 0ö$ Ø)¨!™}Ñˆ	�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ó�>ñ +ð Ðàùò1.ùó
s   ÄGÄ#GÅGc                 óˆ   • SSK Jn   SSKJn  [	        [        U" 5       5      5       H  u  p#[        X05      (       d  M  Us  $    g)zr
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Ú  r`   rå  s       r   Úactive_fake_moderò    s:   € õ
 =ÝMäœ(Ñ#CÓ#EÓFÖG‰ˆÜ�a×(Ó(ØŠHñ Hð r   )r|  r)  rP   z,Generator[CompileContext | None, None, None])r|  rw  rP   z,Generator[TracingContext | None, None, None])rF   rš  rM  r   rP   rš  r   )rF   r  rM  r   rP   zCallable[[type[T]], type[T]])rF   ztype[T] | NonerM  r   rP   z&type[T] | Callable[[type[T]], type[T]])râ  r   rP   rx  )rP   rx  )bÚ
__future__r   rz  r�  ÚenumrÊ   ÚloggingÚreÚsysÚ	threadingrS  Úunittest.mockra  rç   Úabcr   Úcollectionsr   r   r   Útypingr   r	   r
   r   r   r   r   Úversion_infor   rÍ   Útorch.utilsr   rà  Útorch.utils._ordered_setr   rÝ  r   Útorch.utils._tracebackr   r   Útorch.utils.weakr    Ú	getLoggerrT   rû   Úcollections.abcr!   r"   r#   Útypesr$   ÚsympyÚ"torch._dynamo.backends.distributedr%   Útorch._dynamo.codegenr&   Ú&torch._functorch._aot_autograd.schemasr'   rÜ  r)   Úcompiler>   r?   r.   r\   ÚEnumre   r�   r¡   r¬   r³   r  r  r   r(  r,  r6  rK  rZ  rd  rp  r�  r­  r¶  râ  r  Úlocalr  r  r˜  r  r�  r„  rµ   rÃ  rð  rò  r   r   r   Ú<module>r     sÆ  ðÝ "ã Û Û Û Û Û 	Û 
Û Û Û Û Ý Ý #Ý %Ý !ß W× WÑ Wð ×Ñ�wÓÞ*òó Ý )Ý /Ý Fß BÝ 4ð ×Ò˜Ó!€ö ß=Ñ=ÝãåFÝ/ÝJÝ<ðð —Z’ZÐ PÓQÐ ØŸ
š
ØXóÐ ñ" �$ ¨DÑ1÷/Jð /Jó 2ð/Jôd7ˆjô 7ô<
�$—)‘)ô <
ð~÷	ñ 	ð ×Ò˜dÑ#÷ð ó $ðô �ô ð ×Ò˜TÑ"÷o'ð o'ó #ðo'ñd ˆCƒL€ðð ×Ò˜dÑ#÷	ð 	ó $ð	ðð ×Ò˜dÑ#ô:�ló :ó $ð:ðð ×Ò˜dÑ#ô*�\ó *ó $ð*ð

ô8�W˜Q‘Zô 8÷(ñ (÷8(ñ (ô0	+�NÐ#?Ñ@ô 	+÷(ñ (ô0�NÐ#?Ñ@ô ÷D,
ñ ,
ð^ô<�NÐ#8Ñ9ô <÷=ñ =ôB>8Ð*ô >8÷B
&ñ 
&ð ‡‚Ó€ð÷&6ñ 6÷DBñ BðJ ð+Ø"ð+à1ó+ó ð+ð ð+Ø"ð+à1ó+ó ð+ð8 
Û Kó 
Ø Kð 
àð'Ø	ð'Ø #ð'à!ô'ó 
ð'ñ
 ÓàðØ	ðØ*-ðà+ôó ðñ@  4Ñ(÷6@ð 6@ó )ð6@ñt  4Ñ(ô)�Fó )ó )ð)öX?õDr   