Ë
    ÃÓ^jšå  ã                  óœ  — 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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 d dlm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&m'Z' d dl(m)Z)  ejT                  e+«      Z,erBd dl-Z-d dl.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4Z4d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB 	  ej†                  d«      ZD ej†                  d«      ZE eddd¬«       G d„ d«      «       ZF G d„ de«      ZG G d„ d ej�                  «      ZI	  G d!„ d"«      ZJ ej&                  d¬#«       G d$„ d%«      «       ZK G d&„ d'e«      ZL ej&                  d¬(«       G d)„ d*«      «       ZM ed+«      ZN	  ej&                  d¬#«       G d,„ d-«      «       ZO	  ej&                  d¬#«       G d.„ d/eO«      «       ZP	  ej&                  d¬#«       G d0„ d1eO«      «       ZQ	  G d2„ d3eeN   «      ZR G d4„ d5«      ZS G d6„ d7«      ZT G d8„ d9eReT   «      ZU G d:„ d;«      ZV G d<„ d=eReV   «      ZW G d>„ d?«      ZX	  G d@„ dAeReS   «      ZY G dB„ dC«      ZZe G dD„ dE«      «       Z[e G dF„ dG«      «       Z\ G dH„ dIeZ«      Z] G dJ„ dK«      Z^ e	j¾                  «       Z`	  G dL„ dM«      Zae G dN„ dO«      «       Zb G dP„ dQ«      Zce	 	 	 	 d]dR„«       Zde	 	 	 	 d^dS„«       Zeed_dT„«       Zfe	 d`	 	 	 	 	 dadU„«       Zf e«       	 d`	 	 	 	 	 dbdV„«       Zf efd¬#«       G dW„ dX«      «       Zg efd¬#«       G dY„ dZeg«      «       Zhd`dcd[„Ziddd\„Zjy)eé    )ÚannotationsN)Úabstractmethod)Údefaultdict)Úcontextmanager)Ú	dataclass)ÚAnyÚGenericÚ
NamedTupleÚoverloadÚTYPE_CHECKINGÚTypeVar)Údataclass_transform)Ú_pytree)Ú
OrderedSet)Úis_traceable_wrapper_subclass)ÚCapturedTracebackÚformat_frame)ÚWeakTensorKeyDictionary)ÚCallableÚ	GeneratorÚIterator)ÚCodeType)ÚDDPOptimizerContext)Ú	PyCodegen)ÚGuardCheckSpec)ÚCodeOptions)ÚViewAndMutationMeta)ÚNestedCompileRegionOptions©Ú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                  óJ   — e Zd ZU ded<   ded<   dZded<   dd„Zed	d„«       Zy)
Ú	CompileIdú
int | NoneÚframe_idÚframe_compile_idNÚcompiled_autograd_idc                óÄ  — | j                   �}| j                  d u | j                  d u k7  r%t        d| j                  › d| j                  › �«      ‚d}| j                  �d| j                  › d| j                  › �}d| j                   › |› �S | j                  �| j                  €%t        d| j                  › d| j                  › �«      ‚| j                  › d| j                  › �S )NzMframe_id and frame_compile_id must both be None or both be set, got frame_id=z, frame_compile_id=Ú ú/ú!z=frame_id and frame_compile_id must not be None, got frame_id=)r)   r'   r(   ÚAssertionError)ÚselfÚ	frame_strs     úX/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_guards.pyÚ__str__zCompileId.__str__X   s  € à×$Ñ$Ð0Ø—‘ Ð%¨4×+@Ñ+@ÀDÐ+HÒIÜ$ð$Ø$(§M¡M ?Ð2EÀd×F[ÑF[ÐE\ð^óð ð ˆIØ�}‰}Ð(Ø §¡˜¨a°×0EÑ0EÐ/FÐG�	à�t×0Ñ0Ð1°)°Ð=Ð=à�}‰}Ð$¨×(=Ñ(=Ð(EÜ$ð$Ø$(§M¡M ?Ð2EÀd×F[ÑF[ÐE\ð^óð ð —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Úpatternr9   ÚgroupsÚkÚvÚes           r1   Úfrom_stringzCompileId.from_stringm   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©ÚreturnÚstr)r@   ú
str | NonerH   úCompileId | None)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r)   r2   ÚclassmethodrF   r6   r3   r1   r%   r%   I   s8   … àÓð
 !Ó ð (,Ð˜*Ó+ó
>ð* òJó ñJr3   r%   c                  ó*   — e Zd ZU ded<   ded<   dd„Zy)ÚTraceIdr%   r@   r<   Úattemptc                ó€   — | j                   dk(  rt        | j                  «      S | j                  › d| j                   › �S )Nr   Ú_)rS   rI   r@   ©r/   s    r1   r2   zTraceId.__str__Š   s7   € à�<‰<˜1ÒÜ�t—‘Ó'Ð'à—o‘oÐ& a¨¯© ~Ð6Ð6r3   NrG   ©rL   rM   rN   rO   r2   r6   r3   r1   rR   rR   „   s   … ØÓð ƒLô7r3   rR   c                  óx   — 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Zdd„Zdd„Zdd„Zdd„Zdd„Zy)ÚGuardSourcer   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   c                óF   — | t         j                  t         j                  fv S ©N)rY   ÚGLOBAL_FSDP_MODULEÚLOCAL_FSDP_MODULErV   s    r1   Úis_fsdp_modulezGuardSource.is_fsdp_module¥   s   € Øœ×6Ñ6¼×8UÑ8UÐVÐVÐVr3   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_guardsrY   ÚGLOBAL_SPECIALIZED_NN_MODULEÚLOCAL_SPECIALIZED_NN_MODULErn   )r/   rs   s     r1   Úis_specialized_nn_modulez$GuardSource.is_specialized_nn_module¨   sn   € ß-Ð-à×1Ò1àä×<Ñ<Ü×;Ñ;ððò )ð
 ×&Ñ&Ó(ðð Ü×4Ñ4Ü×3Ñ3ð
ð 
ð 	
r3   c                ó‚   — | t         j                  t         j                  t         j                  t         j                  fv S rk   )rY   ÚGLOBAL_UNSPECIALIZED_NN_MODULEÚLOCAL_UNSPECIALIZED_NN_MODULEÚ&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEÚ%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULErV   s    r1   Úis_unspecialized_nn_modulez&GuardSource.is_unspecialized_nn_module¹   s8   € ØÜ×6Ñ6Ü×5Ñ5Ü×>Ñ>Ü×=Ñ=ð	
ð 
ð 	
r3   c                óF   — | t         j                  t         j                  fv S rk   )rY   r{   r|   rV   s    r1   Ú"is_unspecialized_builtin_nn_modulez.GuardSource.is_unspecialized_builtin_nn_moduleÁ   s&   € ØÜ×>Ñ>Ü×=Ñ=ð
ð 
ð 	
r3   c                ó    — | t         j                  t         j                  t         j                  t         j                  t         j
                  fv S rk   )rY   ÚLOCALrv   rm   rz   r|   rV   s    r1   Úis_localzGuardSource.is_localÇ   sA   € ØÜ×ÑÜ×3Ñ3Ü×)Ñ)Ü×5Ñ5Ü×=Ñ=ð
ð 
ð 	
r3   N©rH   Úbool)rL   rM   rN   r�   ÚGLOBALrv   ru   ÚCONSTANTÚRANDOM_VALUEÚ	SHAPE_ENVrm   rl   ÚBACKWARD_STATEÚ	EPHEMERALÚSYNTHETIC_LOCALrz   ry   r|   r{   Ú
TEMP_LOCALrn   rw   r}   r   r‚   r6   r3   r1   rY   rY   ’   sy   „ Ø€EØ€FØ"#ÐØ#$Ð Ø€HØ€LØ€IØÐØÐØ€NØ€IØ€OØ$&Ð!Ø%'Ð"Ø,.Ð)Ø-/Ð*Ø€JóWó
ó"
ó
ô
r3   rY   c                  ó   — e Zd Zy)ÚGuardBuilderBaseN©rL   rM   rN   r6   r3   r1   rŽ   rŽ   ß   s   „ Ør3   rŽ   )r!   c                  ó*   — e Zd ZU ded<   ded<   dd„Zy)ÚSLocz#traceback.FrameSummary | str | NoneÚframework_locrJ   Úmaybe_user_locc                óÜ   — t        | j                  t        «      r| j                  n"| j                  €dnt        | j                  «      }| j                  �| j                  › d|› d�S d|› d�S )Nr+   z (ú)ú()Ú
isinstancer’   rI   r   r“   )r/   Úflocs     r1   r2   zSLoc.__str__è   s{   € ô ˜$×,Ñ,¬cÔ2ð ×Òð ×!Ñ!Ð)ñ ä˜d×0Ñ0Ó1ð 	ð ×ÑÐ*Ø×)Ñ)Ð*¨"¨T¨F°!Ð4Ð4à�t�f˜A�;Ðr3   NrG   rW   r6   r3   r1   r‘   r‘   ã   s   … à6Ó6ØÓôr3   r‘   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú
ShapeGuardzsympy.logic.boolalg.BooleanÚexprr‘   Úslocr„   Úsize_obliviousN©rL   rM   rN   rO   r6   r3   r1   rš   rš   ö   s   … Ø
%Ó%Ø
ƒJØÔr3   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ed<   d%d„Zd&d„Zd'd„Zd(d„Zed)d„«       Zed*d„«       Ze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)/Ú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_stackr&   Ú_hashFr„   Ú_unserializablec                ó¦   — | j                   €:t        | j                  | j                  t	        | j
                  «      f«      | _         | j                   S rk   )r«   ÚhashÚnameÚsourceÚidr£   rV   s    r1   Ú__hash__zGuard.__hash__  s:   € Ø�:‰:ÐÜ˜tŸy™y¨$¯+©+´r¸$¿.¹.Ó7IÐJÓKˆDŒJØ�z‰zÐr3   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Útorchrr   ÚguardsÚGuardBuilderÚDUPLICATE_INPUTr°   ÚvalueÚlenr¯   Úinner_create_fnÚ__code__Úco_firstlineno)r/   Úis_duplicate_inputs     r1   Úsort_keyzGuard.sort_key"  s™   € ô
 �t—~‘~¤y×'8Ñ'8Ó9ò YØ—‘×#Ñ#¤u§}¡}×';Ñ';×'HÑ'H×'XÑ'XÐXð 	ð
 Ø!%§¢ˆD�K‰K×Ò°"Ü�—	‘	‹NØ�I‰IØ× Ñ Ó"×+Ñ+×:Ñ:ð
ð 	
r3   c                óD   — | j                  «       |j                  «       k  S rk   )rÂ   ©r/   Úothers     r1   Ú__lt__zGuard.__lt__2  s   € Ø�}‰}‹ §¡Ó!1Ñ1Ð1r3   c                óŽ   — t        | j                  t        j                  «      r| j                  j                  S | j                  S rk   )r—   r£   rµ   r¶   r·   rV   s    r1   r¾   zGuard.inner_create_fn5  s0   € Ü�d—n‘n¤i×&7Ñ&7Ô8Ø—>‘>×&Ñ&Ð&à—>‘>Ð!r3   c                ó.   — | j                   j                  S rk   )r¢   r¯   rV   s    r1   r¯   z
Guard.name;  s   € à×&Ñ&×+Ñ+Ð+r3   c                ó.   — | j                   j                  S rk   )r¢   Úguard_sourcerV   s    r1   r°   zGuard.source?  s   € à×&Ñ&×3Ñ3Ð3r3   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__rL   rI   )r¦   Úobjs     r1   Úweakref_to_strzGuard.weakref_to_strC  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ä�{Ó#Ð#r3   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¾   rL   r¤   r¥   rÒ   r¦   r¨   )r/   Úss     r1   Ú__repr__zGuard.__repr__\  s¯   € ð	Ø%)§[¢[ˆ�‰×	Ñ	×	Ñ	Ô	!°bÐ9¸¼4ÀÇ	Á	»?Ð:KÈ1ÈT×MaÑMaÓMc×MlÑMlÐLmð nà ×,Ñ,Ð-ð .Ø—^‘^Ð$ð %Ø ×/Ñ/°×0@Ñ0@ÓAÐBð CØ"×8Ñ8Ð9ð :	ðˆð ˆr3   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¾   rL   r¤   r¥   rÒ   r¦   r¨   )r/   Úoutputr°   s      r1   r2   zGuard.__str__h  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ˆØˆr3   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£   r>   ÚlogÚ	exceptionrI   Úrstripr©   ÚerrorÚjoinÚformat)r/   Úbuilders     r1   ÚcreatezGuard.creates  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 rk   )r°   rw   rV   s    r1   rw   zGuard.is_specialized_nn_module|  s   € Ø�{‰{×3Ñ3Ó5Ð5r3   c                ó6   — | j                   j                  «       S rk   )r°   rn   rV   s    r1   rn   zGuard.is_fsdp_module  s   € Ø�{‰{×)Ñ)Ó+Ð+r3   c                ó6   — | j                   j                  «       S rk   )r°   r‚   rV   s    r1   r‚   zGuard.is_local‚  s   € Ø�{‰{×#Ñ#Ó%Ð%r3   c                ó¾   — t        | j                  t        j                  «      r"| j                  j                  }|j
                  S | j                  }|j
                  S rk   )r—   r£   rµ   r¶   r·   rL   )r/   r£   s     r1   Úcreate_fn_namezGuard.create_fn_name…  sJ   € Ü�d—n‘n¤i×&7Ñ&7Ô8ØŸ™×+Ñ+ˆIð ×!Ñ!Ð!ð Ÿ™ˆIØ×!Ñ!Ð!r3   c                óà  — | j                   sg | _         | j                   j                  |«       | j                  |d fvrt        d| j                  › d|› �«      ‚|| _        | j                  s|| _        n| j                  j                  |«       | j                  |d fv xs) t        | j                  «      xr | j                  «       d u }|st        d| j                  › d|› �«      ‚|| _        y )Nz1Guarded class id must be identical, or None, got z vs zHGuarded object must be identical, None or ephemeral (dead weakref), got )r¤   Úappendr¨   r.   r¥   Úextendr¦   Úcallable)r/   Ú
guard_typeÚguarded_classr¥   r¦   Úis_valids         r1   Úset_export_infozGuard.set_export_infoŒ  s  € ð ×ÒØ!ˆDÔà×Ñ×Ñ 
Ô+à×%Ñ%¨m¸TÐ-BÑBÜ ðØ×1Ñ1Ð2°$°}°oðGóð ð &3ˆÔ"à�~Š~Ø&ˆD�Nà�N‰N×!Ñ! )Ô,ð ×Ñ ¨dÐ 3Ð3ò +Ü˜×(Ñ(Ó)ò +Ø× Ñ Ó" dÐ*ð 	ñ
 Ü ðØ×'Ñ'Ð(¨¨[¨Mð;óð ð 'ˆÕr3   ©rH   r<   )rH   ztuple[bool, int, int, str, int])rÅ   r    rH   r„   )rH   z(Callable[[GuardBuilderBase, Guard], Any]rG   ©rH   rY   )r¦   ÚobjectrH   rI   )rä   rŽ   rH   r   rƒ   )
rï   rI   rð   r§   r¥   ú	list[str]r¦   rõ   rH   ÚNone)rL   rM   rN   rO   r¤   r¥   r¦   r¨   r©   rª   r«   r¬   r²   rÂ   rÆ   r¾   Úpropertyr¯   r°   ÚstaticmethodrÒ   rØ   r2   rå   rw   rn   r‚   rê   rò   r6   r3   r1   r    r    ü   s  … ð& ÓØ8Ó8ð %)€KÐ!Ó(Ø"&€IÐÓ&Ø!%€K�Ó%Ø?CÐÐ<ÓCà&*€EÐ#Ó*Ø04€JÐ-Ó4Ø€Eˆ:ÓØ!€O�TÓ!óó

ó 2ó"ð ò,ó ð,ð ò4ó ð4ð ò$ó ð$ó0
ó	óó6ó,ó&ó"ð&'àð&'ð 9ð&'ð ð	&'ð
 ð&'ð 
ô&'r3   r    ÚTc                  ó   — e Zd Zy)ÚGuardEnvExprNr�   r6   r3   r1   rü   rü   ¿  s   „ àr3   rü   c                  ó*   — e Zd ZU ded<   ded<   dd„Zy)ÚDuplicateInputsr¡   Úinput_source_aÚinput_source_bc                óf   — | j                   | j                  k(  rt        d| j                   › �«      ‚y )Nz9input_source_a and input_source_b must be different, got )rÿ   r   r.   rV   s    r1   Ú__post_init__zDuplicateInputs.__post_init__Ï  s>   € Ø×Ñ $×"5Ñ"5Ò5Ü ðØ×*Ñ*Ð+ð-óð ð 6r3   N©rH   r÷   )rL   rM   rN   rO   r  r6   r3   r1   rþ   rþ   Ê  s   … àÓØÓôr3   rþ   c                  ó"   — e Zd ZU ded<   ded<   y)ÚStorageOverlapzlist[Source]Úoverlapping_sourcesÚnon_overlapping_sourcesNrž   r6   r3   r1   r  r  å  s   … à%Ó%Ø)Ô)r3   r  c                  ó0   — e Zd Zedd„«       Zedd„«       Zy)ÚCheckpointablec                 ó   — y rk   r6   rV   s    r1   Úcopy_graphstatezCheckpointable.copy_graphstateù  s   € Ø$'r3   c                 ó   — y rk   r6   ©r/   Ústates     r1   Úrestore_graphstatez!Checkpointable.restore_graphstateü  s   € Ø47r3   N)rH   rú   )r  rú   rH   r÷   )rL   rM   rN   r   r  r  r6   r3   r1   r	  r	  ø  s   „ ØÚ'ó Ø'àÚ7ó Ù7r3   r	  c                  ó4   — e Zd ZU dZded<   dd„Zd	d„Zd
d„Zy)ÚGuardsCheckpointStatezW
    The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
    úOrderedSet[Guard]Údynamo_guardsc                ó   — || _         y rk   )r  )r/   r  s     r1   Ú__init__zGuardsCheckpointState.__init__  s
   € Ø*ˆÕr3   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 an OrderedSet() of mismatched
        Guard type objects.
        r   N)r  Ú
differencer½   ©r/   rÅ   Úrs      r1   ÚdiffzGuardsCheckpointState.diff
  s3   € ð ×Ñ×)Ñ)¨%×*=Ñ*=Ó>ˆÜˆq‹6�QŠ;ØØˆr3   c                óJ   — t        |t        «      sy| j                  |«      d u S ©NF)r—   r  r  rÄ   s     r1   Ú__eq__zGuardsCheckpointState.__eq__  s$   € Ü˜%Ô!6Ô7ØØ�y‰y˜Ó 4Ð'Ð'r3   N)r  r  rH   r÷   )rÅ   r  rH   úOrderedSet[Guard] | None©rÅ   rõ   rH   r„   )rL   rM   rN   Ú__doc__rO   r  r  r  r6   r3   r1   r  r     s   … ñð %Ó$ó+ó
ô(r3   r  c                  ó4   — e Zd ZU i Zded<   dd„Zdd„Zd	d„Zy)
ÚModuleContextCheckpointStateúdict[str, torch.nn.Module]Ú
nn_modulesc                ó   — || _         y rk   ©r$  )r/   r$  s     r1   r  z%ModuleContextCheckpointState.__init__  s	   € Ø$ˆ�r3   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)Úsetr$  Úkeysr  r½   r  s      r1   r  z!ModuleContextCheckpointState.diff"  sM   € ô �—‘×$Ñ$Ó&Ó'×2Ñ2´3°u×7GÑ7G×7LÑ7LÓ7NÓ3OÓPˆÜˆq‹6�QŠ;ØØˆr3   c                óJ   — t        |t        «      sy| j                  |«      d u S r  )r—   r"  r  rÄ   s     r1   r  z#ModuleContextCheckpointState.__eq__.  ó$   € Ü˜%Ô!=Ô>ØØ�y‰y˜Ó 4Ð'Ð'r3   N)r$  r#  rH   r÷   )rÅ   r"  rH   úset[str] | Noner  )rL   rM   rN   r$  rO   r  r  r  r6   r3   r1   r"  r"    s   … Ø-/€JÐ*Ó/ó%ó
ô(r3   r"  c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚModuleContextc                ó   — i | _         y rk   r&  rV   s    r1   r  zModuleContext.__init__5  s	   € Ø*,ˆ�r3   c                ó>   — t        t        | j                  «      «      S rk   )r"  Údictr$  rV   s    r1   r  zModuleContext.copy_graphstate8  s   € Ü+¬D°·±Ó,AÓBÐBr3   c                ót   — t        |t        «      st        dt        |«      › �«      ‚|j                  | _        y )Nz+expected ModuleContextCheckpointState, got )r—   r"  r.   Útyper$  r  s     r1   r  z ModuleContext.restore_graphstate;  s7   € Ü˜%Ô!=Ô>Ü Ø=¼dÀ5»k¸]ÐKóð ð  ×*Ñ*ˆ�r3   Nr  )rH   r"  )r  r"  rH   r÷   )rL   rM   rN   r  r  r  r6   r3   r1   r.  r.  4  s   „ ó-óCô+r3   r.  c                  ó4   — e Zd ZU i Zded<   dd„Zdd„Zd	d„Zy)
ÚGlobalContextCheckpointStateúdict[str, tuple[Callable, Any]]Úglobal_statec                ó   — || _         y rk   ©r7  )r/   Úglobal_statess     r1   r  z%GlobalContextCheckpointState.__init__F  s
   € Ø)ˆÕr3   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(  r7  r)  r  r½   r  s      r1   r  z!GlobalContextCheckpointState.diffI  sO   € ô �×!Ñ!×&Ñ&Ó(Ó)×4Ñ4´S¸×9KÑ9K×9PÑ9PÓ9RÓ5SÓTˆÜˆq‹6�QŠ;ØØˆr3   c                óJ   — t        |t        «      sy| j                  |«      d u S r  )r—   r5  r  rÄ   s     r1   r  z#GlobalContextCheckpointState.__eq__U  r+  r3   N)r:  r6  rH   r÷   )rÅ   r5  rH   r,  r  )rL   rM   rN   r7  rO   r  r  r  r6   r3   r1   r5  r5  C  s   … Ø46€LÐ1Ó6ó*ó
ô(r3   r5  c                  ó0   — e Zd ZdZh d£Zdd„Zdd„Zd	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 rk   r9  rV   s    r1   r  zGlobalContext.__init__j  s
   € Ø=?ˆÕr3   c                ó,   — t        | j                  «      S rk   )r5  r7  rV   s    r1   r  zGlobalContext.copy_graphstatem  s   € Ü+¨D×,=Ñ,=Ó>Ð>r3   c                óö  — t        |t        «      st        dt        |«      › �«      ‚|j                  | _        t        | j                  «      t        | j                  «      k(  r0t        | j                  j                  «       «      | j                  k(  s<t        dt        | j                  j                  «       «      › d| j                  › �«      ‚| j                  j                  «       D ]  \  }} ||«       Œ y )Nz+expected GlobalContextCheckpointState, got z Global state mismatch: got keys z, expected )
r—   r5  r.   r3  r7  r½   Ú_supported_global_statesr(  r)  Úvalues)r/   r  r·   Úargss       r1   r  z GlobalContext.restore_graphstatep  sã   € Ü˜%Ô!=Ô>Ü Ø=¼dÀ5»k¸]ÐKóð ð "×.Ñ.ˆÔä�×!Ñ!Ó"¤c¨$×*GÑ*GÓ&HÒHÜ�D×%Ñ%×*Ñ*Ó,Ó-°×1NÑ1NÒNä Ø2´3°t×7HÑ7H×7MÑ7MÓ7OÓ3PÐ2Qð RØ ×9Ñ9Ð:ð<óð ð ×+Ñ+×2Ñ2Ó4ò 	‰JˆD�$Ù��Jñ	r3   Nr  )rH   r5  )r  r5  rH   r÷   )rL   rM   rN   r   rH  r  r  r  r6   r3   r1   r>  r>  [  s   „ ñò
 Ðó@ó?ôr3   r>  c                  ó|   — e Zd Zddd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	d	d
dœ	 	 	 	 	 	 	 dd„Z
dd„Zdd„Zdd„Zy)Ú	GuardsSetNc                ó¢   — |€t        «       | _        n|| _        t        t        «      | _        | j                  D ]  }| j                  |«       Œ y rk   )r   Úinnerr   ÚlistÚsource_to_guardsÚtrack_guard_by_source)r/   rN  Úguards      r1   r  zGuardsSet.__init__…  sI   € Øˆ=Ü,6«LˆD�JàˆDŒJô CNÌdÓBSˆÔØ—Z‘Zò 	.ˆEØ×&Ñ& uÕ-ñ	.r3   c                óX   — |j                   }| j                  |   j                  |«       y rk   )r¢   rP  rì   )r/   rR  r°   s      r1   rQ  zGuardsSet.track_guard_by_source�  s&   € Ø×)Ñ)ˆØ×Ñ˜fÑ%×,Ñ,¨UÕ3r3   c                ó,   — t        | j                  «      S rk   )ÚiterrN  rV   s    r1   Ú__iter__zGuardsSet.__iter__”  ó   € Ü�D—J‘JÓÐr3   c                ó,   — t        | j                  «      S rk   )r½   rN  rV   s    r1   Ú__len__zGuardsSet.__len__—  s   € Ü�4—:‘:‹Ðr3   c                óF   — t        | j                  |j                  z
  «      S rk   )rL  rN  rÄ   s     r1   Ú__sub__zGuardsSet.__sub__œ  s   € Ü˜Ÿ™ e§k¡kÑ1Ó2Ð2r3   c                ó,   — t        | j                  «      S rk   )r„   rN  rV   s    r1   Ú__bool__zGuardsSet.__bool__Ÿ  rW  r3   c                óJ   — t        «       | _        t        t        «      | _        y rk   )r   rN  r   rO  rP  rV   s    r1   ÚclearzGuardsSet.clear¢  s   € Ü“\ˆŒ
Ü +¬DÓ 1ˆÕr3   Tr   )Úcollect_debug_stackÚskipc               ó  — || j                   v ry |r*|j                  €t        j                  d|z   ¬«      |_        |j                  €t
        j                  «       |_        | j                   j                  |«       | j                  |«       y ©NrZ   )ra  )	rN  r©   r   Úextractrª   ÚTracingContextÚextract_stackÚaddrQ  )r/   rR  r`  ra  s       r1   rg  zGuardsSet.add¦  sq   € ð �D—J‘JÑØÙØ�{‰{Ð"Ü/×7Ñ7¸QÀ¹XÔF�”Ø×ÑÐ#Ü-×;Ñ;Ó=ˆEÔØ�
‰
�‰�uÔØ×"Ñ" 5Õ)r3   c                óF   — |D ]  }|D ]  }| j                  |d¬«       Œ Œ y rc  )rg  )r/   ÚothersÚoÚgs       r1   ÚupdatezGuardsSet.update³  s0   € Øò 	$ˆAØò $�Ø—‘˜ �Õ#ñ$ñ	$r3   c                ó2   — t        | j                  |   «      S )z4Return all guards with the given originating_source.)rO  rP  )r/   r°   s     r1   Úget_guards_for_sourcezGuardsSet.get_guards_for_source¸  s   € ä�D×)Ñ)¨&Ñ1Ó2Ð2r3   c                óÈ   ‡‡— ddl mŠ t        ˆˆfd„| j                  D «       «      | _        t	        t
        «      | _        | j                  D ]  }| j                  |«       Œ y)z.Delete all guards that contains a given sourcerZ   )Úis_from_sourcec              3  óJ   •K  — | ]  } ‰|j                   ‰«      rŒ|–— Œ y ­wrk   )r¢   )Ú.0rk  rp  r°   s     €€r1   ú	<genexpr>z6GuardsSet.remove_guards_with_source.<locals>.<genexpr>À  s%   øè ø€ ò  
Ø©¸×8LÑ8LÈfÕ)UŒAñ 
ùs   ƒ#œ#N)Ú_dynamo.sourcerp  r   rN  r   rO  rP  rQ  )r/   r°   rR  rp  s    ` @r1   Úremove_guards_with_sourcez#GuardsSet.remove_guards_with_source¼  sS   ù€ å2äô  
Ø—z‘zô 
ó 
ˆŒ
ô
 !,¬DÓ 1ˆÔØ—Z‘Zò 	.ˆEØ×&Ñ& uÕ-ñ	.r3   rk   )rN  r  rH   r÷   )rR  r    rH   r÷   )rH   zIterator[Guard]ró   )rÅ   rL  rH   rL  rƒ   r  )rR  r    r`  r„   ra  r<   rH   r÷   )ri  z
set[Guard]rH   r÷   )r°   r¡   rH   zlist[Guard])r°   r¡   rH   r÷   )rL   rM   rN   r  rQ  rV  rY  r[  r]  r_  rg  rl  rn  ru  r6   r3   r1   rL  rL  „  sa   „ ô	.ó4ó óó
3ó ó2ð
 <@ÈQñ*Øð*Ø48ð*ØGJð*à	ó*ó$ó
3ô.r3   rL  c                  óJ   — e Zd Zdd„Zej
                  dd„«       Zdd„Zd	d„Zy)
ÚGuardsContextc                ó>   — t        «       | _        g | _        d| _        y r  )rL  r  Úaotautograd_guardsÚskip_installrV   s    r1   r  zGuardsContext.__init__Ó  s   € Ü(1«ˆÔØ68ˆÔØ"'ˆÕr3   c              #  ób   K  — | j                   }d| _         	 d –— || _         y # || _         w xY w­w)NT)rz  )r/   Úolds     r1   Úskip_guard_installz GuardsContext.skip_guard_installØ  s1   è ø€ à×ÑˆØ ˆÔð	$Ûà #ˆDÕø ˆDÕüs   ‚/—# ›/£	,¬/c                óR   — t        t        | j                  j                  «      «      S rk   )r  r   r  rN  rV   s    r1   r  zGuardsContext.copy_graphstateá  s   € Ü$¤Z°×0BÑ0B×0HÑ0HÓ%IÓJÐJr3   c                ó†   — t        |t        «      st        dt        |«      › �«      ‚t	        |j
                  «      | _        y )Nz$expected GuardsCheckpointState, got )r—   r  r.   r3  rL  r  r  s     r1   r  z GuardsContext.restore_graphstateä  s7   € ä˜%Ô!6Ô7Ü Ð#GÌÈUËÀ}Ð!UÓVÐVÜ& u×':Ñ':Ó;ˆÕr3   Nr  ©rH   úGenerator[None, None, None])rH   r  )r  r  rH   r÷   )	rL   rM   rN   r  Ú
contextlibr   r}  r  r  r6   r3   r1   rw  rw  Ò  s,   „ ó(ð
 ×Ñò$ó ð$óKô<r3   rw  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e	 	 	 	 	 	 	 	 dd	„«       Ze	 	 	 	 	 	 dd
„«       Zy)ÚHopSubgraphCachec                 ó   — y rk   r6   ©r/   Úfn_codeÚ
identifiers      r1   Úadd_dynamo_installed_submodulez/HopSubgraphCache.add_dynamo_installed_submoduleì  ó   € ð r3   c                 ó   — y rk   r6   ©r/   r‡  s     r1   Úget_dynamo_installed_submodulesz0HopSubgraphCache.get_dynamo_installed_submodulesñ  s   € ØORr3   c                 ó   — y rk   r6   ©r/   rˆ  Úkeys      r1   Úadd_autograd_key_entryz'HopSubgraphCache.add_autograd_key_entryô  s   € ØNQr3   c                 ó   — y rk   r6   ©r/   rˆ  s     r1   Úget_autograd_key_entryz'HopSubgraphCache.get_autograd_key_entry÷  s   € ØJMr3   c                 ó   — y rk   r6   r�  s      r1   Úadd_proxy_dispatch_entryz)HopSubgraphCache.add_proxy_dispatch_entryú  s   € ØPSr3   c                 ó   — y rk   r6   r“  s     r1   Úget_proxy_dispatch_entryz)HopSubgraphCache.get_proxy_dispatch_entryý  s   € ØLOr3   c                 ó   — y rk   r6   ©r/   r�  Úschemas      r1   Úadd_functionalize_schema_entryz/HopSubgraphCache.add_functionalize_schema_entry   rŠ  r3   c                 ó   — y rk   r6   ©r/   r�  s     r1   Úget_functionalize_schema_entryz/HopSubgraphCache.get_functionalize_schema_entry  s   € ð *-r3   c                 ó   — y rk   r6   )r/   rˆ  Útangent_metadataÚgmods       r1   Úadd_lazy_bwd_entryz#HopSubgraphCache.add_lazy_bwd_entry
  s   € ð r3   c                 ó   — y rk   r6   ©r/   rˆ  r¡  s      r1   Úget_lazy_bwd_entryz#HopSubgraphCache.get_lazy_bwd_entry  s   € ð :=r3   N©r‡  r   rˆ  rI   rH   r÷   ©r‡  r   rH   rö   ©rˆ  rI   r�  r   rH   r÷   ©rˆ  rI   rH   zCallable | None©r�  rõ   r›  ztorch._C.FunctionSchemarH   r÷   ©r�  rõ   rH   ztorch._C.FunctionSchema | None©rˆ  rI   r¡  útuple[object]r¢  útorch.fx.GraphModulerH   r<   ©rˆ  rI   r¡  r®  rH   z.tuple[torch.fx.GraphModule | None, int | None])rL   rM   rN   r   r‰  r�  r‘  r”  r–  r˜  rœ  rŸ  r£  r¦  r6   r3   r1   r„  r„  ë  s(  „ ØðØðØ-0ðà	òó ðð ÚRó ØRàÚQó ØQàÚMó ØMàÚSó ØSàÚOó ØOàðØðØ#:ðà	òó ðð ð-Øð-à	'ò-ó ð-ð ðàðð (ðð #ð	ð
 
òó ðð ð=Øð=Ø1>ð=à	7ò=ó ñ=r3   r„  c                  ób   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   dZded<   y)ÚInvokeSubgraphReuseEntryrI   Ú	body_namer¯  Ú	body_gmodz!NestedCompileRegionOptions | Noners   ú	list[Any]Úsubgraph_input_mappingr„   Úsingle_tensor_outputzIlist[tuple[torch.Size, tuple[int, ...], torch.dtype, torch.device, bool]]Úoutput_metadatazlist[Source | None]Úarg_sourcesr   r<   Únum_user_outputsN)rL   rM   rN   rO   rº  r6   r3   r1   r²  r²    sD   … àƒNØ#Ó#Ø-Ó-ðó ð Óðó ð %Ó$ð Ð�cÔr3   r²  c                  ó`   — e Zd ZU ded<   ded<   dZded<    ej                  e¬«      Zd	ed
<   y)ÚInvokeSubgraphReuseConditionzlist[tuple[Any, object]]Úinput_checksz2list[tuple[Source, GuardCheckSpec, object, Guard]]r¹   Nzpytree.TreeSpec | NoneÚtreespec)Údefault_factoryzOrderedSet[Source]Útraced_sources)	rL   rM   rN   rO   r¾  ÚdataclassesÚfieldr   rÀ  r6   r3   r1   r¼  r¼  2  s9   … ð +Ó*ð
 ?Ó>ð (,€HÐ$Ó+ð
 *;¨×):Ñ):È:Ô)V€NÐ&ÔVr3   r¼  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	 	 	 	 	 	 	 	 dd
„Z	 	 	 	 	 	 dd„Zdd„Zdd„Z	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 d d„Z	 	 	 	 	 	 d!d„Z	 d	 	 	 	 	 	 	 	 	 d"d„Zy)#ÚInvokeSubgraphCachec                óÜ   — i | _         i | _        i | _        t        t        «      | _        t        t        «      | _        i | _        t        t        «      | _	        t        t        «      | _
        y rk   )Úautograd_cacheÚproxy_dispatch_cacheÚfunctionalize_schema_cacher   rO  Údynamo_installed_submodulesr1  Úlazy_bwd_cacheÚeffects_cacheÚsubgraph_reuse_cacheÚsubgraph_reuse_key_cacherV   s    r1   r  zInvokeSubgraphCache.__init__N  sk   € Ø35ˆÔØ9;ˆÔ!ØQSˆÔ'ÜFQÔRVÓFWˆÔ(ô œÓð 	Ôð
 ð 	Ôô œÓð 	Ô!ô œÓð 	Õ%r3   c                ó@   — | j                   |   j                  |«       y rk   )rÉ  rì   r†  s      r1   r‰  z2InvokeSubgraphCache.add_dynamo_installed_submodulee  s   € ð 	×(Ñ(¨Ñ1×8Ñ8¸ÕDr3   c                ó:   — | j                   j                  |g «      S rk   )rÉ  ÚgetrŒ  s     r1   r�  z3InvokeSubgraphCache.get_dynamo_installed_submodulesj  s   € Ø×/Ñ/×3Ñ3°G¸RÓ@Ð@r3   c                ó"   — || j                   |<   y rk   )rÆ  r�  s      r1   r‘  z*InvokeSubgraphCache.add_autograd_key_entrym  s   € Ø*-ˆ×Ñ˜JÒ'r3   c                ó:   — | j                   j                  |d «      S rk   )rÆ  rÐ  r“  s     r1   r”  z*InvokeSubgraphCache.get_autograd_key_entryp  s   € Ø×"Ñ"×&Ñ& z°4Ó8Ð8r3   c                ó"   — || j                   |<   y rk   )rÇ  r�  s      r1   r–  z,InvokeSubgraphCache.add_proxy_dispatch_entrys  s   € Ø03ˆ×!Ñ! *Ò-r3   c                ó:   — | j                   j                  |d «      S rk   )rÇ  rÐ  r“  s     r1   r˜  z,InvokeSubgraphCache.get_proxy_dispatch_entryv  s   € Ø×(Ñ(×,Ñ,¨Z¸Ó>Ð>r3   c                ó"   — || j                   |<   y rk   )rÈ  rš  s      r1   rœ  z2InvokeSubgraphCache.add_functionalize_schema_entryy  s   € ð 06ˆ×'Ñ'¨Ò,r3   c                ó:   — | j                   j                  |d «      S rk   )rÈ  rÐ  rž  s     r1   rŸ  z2InvokeSubgraphCache.get_functionalize_schema_entry~  s   € ð ×.Ñ.×2Ñ2°3¸Ó=Ð=r3   c                ó^   — t        | j                  |   «      }||f| j                  |   |<   |S rk   )r½   rÊ  )r/   rˆ  r¡  r¢  Ú	num_gmodss        r1   r£  z&InvokeSubgraphCache.add_lazy_bwd_entryƒ  s:   € ô ˜×+Ñ+¨JÑ7Ó8ˆ	Ø=AÀ9Ð<Mˆ×Ñ˜JÑ'Ð(8Ñ9ØÐr3   c                ó^   — || j                   vry| j                   |   j                  |d«      S )N)NN)rÊ  rÐ  r¥  s      r1   r¦  z&InvokeSubgraphCache.get_lazy_bwd_entryŽ  s4   € ð ˜T×0Ñ0Ñ0Øà×"Ñ" :Ñ.×2Ñ2Ð3CÀ\ÓRÐRr3   c           	     ó’   — | j                   j                  |d«      x}r||k7  rt        d|› d|› d|› d�«      ‚|| j                   |<   y)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Ð  r.   )r/   rˆ  ÚeffectsÚprev_effectss       r1   Úadd_effectszInvokeSubgraphCache.add_effects–  sn   € à×-Ñ-×1Ñ1°*¸dÓCÐCˆ<ÐCØ˜,Ò&Ü$ð,Ø,6¨<ð 8@Ø@L¸~ð N(Ø(/ y°ð3óð ð *1ˆ×Ñ˜:Ò&r3   c                ó:   — | j                   j                  |d«      S )zARetrieve the effect types for a given invoke_subgraph identifier.N)rË  rÐ  r“  s     r1   Úget_effectszInvokeSubgraphCache.get_effects¢  s   € à×!Ñ!×%Ñ% j°$Ó7Ð7r3   c                óˆ   — | j                   |   }t        |«      |k\  rt        d|› d|› d�«      ‚|j                  ||f«       y )Nú1invoke_subgraph: exceeded maximum reuse entries (ú) for function code a?  . This most likely means a guard keeps failing on every invocation, preventing subgraph reuse. Set TORCH_LOGS='+hierarchical_compile' to identify which guard is failing. If reuse is genuinely not possible and you need more cache entries, increase the limit via the max_reuse_entries argument to nested_compile_region().)rÌ  r½   ÚRuntimeErrorrì   )r/   r‡  Ú	conditionÚentryÚmax_reuse_entriesÚentriess         r1   Úadd_reuse_entryz#InvokeSubgraphCache.add_reuse_entry¦  s`   € ð ×+Ñ+¨GÑ4ˆÜˆw‹<Ð,Ò,ÜðØ%Ð&Ð&:¸7¸)ð DIðJó	ð 	ð 	�‰˜	 5Ð)Õ*r3   c                óÎ   — | j                   j                  |g «      }t        |«      D ];  \  }\  }} |||«      sŒ|dkD  r!|j                  d|j	                  |«      «       |c S  y rp   )rÌ  rÐ  Ú	enumerateÚinsertÚpop)r/   r‡  Ú	evaluatorrè  Úirå  ræ  s          r1   Úfind_reuse_entryz$InvokeSubgraphCache.find_reuse_entry»  sk   € ð ×+Ñ+×/Ñ/°¸Ó<ˆÜ%.¨wÓ%7ò 	Ñ!ˆAÑ!�	˜5Ù˜ EÕ*à�q’5Ø—N‘N 1 g§k¡k°!£nÔ5Ø’ð	ð r3   c                óX   — | j                   j                  |i «      j                  |«      S rk   )rÍ  rÐ  )r/   r‡  Úhash_keys      r1   Úfind_reuse_entry_by_keyz+InvokeSubgraphCache.find_reuse_entry_by_keyË  s(   € ð ×,Ñ,×0Ñ0°¸"Ó=×AÑAÀ(ÓKÐKr3   c                ót   — | j                   |   }t        |«      |k\  r||vrt        d|› d|› d�«      ‚|||<   y )Nrâ  rã  zc (hash-key path). Increase the limit via the max_reuse_entries argument to nested_compile_region().)rÍ  r½   rä  )r/   r‡  rò  ræ  rç  Ú	key_caches         r1   Úadd_reuse_entry_by_keyz*InvokeSubgraphCache.add_reuse_entry_by_keyÐ  s^   € ð ×1Ñ1°'Ñ:ˆ	Üˆy‹>Ð.Ò.°8À9Ñ3LÜðØ%Ð&Ð&:¸7¸)ð D+ð,óð ð $ˆ	�(Òr3   Nr  r§  r¨  r©  rª  r«  r¬  r­  r°  )rˆ  rI   rÜ  r(  rH   r÷   )rˆ  rI   rH   z
set | None)ra   )
r‡  r   rå  r¼  ræ  r²  rç  r<   rH   r÷   )r‡  r   rî  zHCallable[[InvokeSubgraphReuseCondition, InvokeSubgraphReuseEntry], bool]rH   úInvokeSubgraphReuseEntry | None)r‡  r   rò  r<   rH   r÷  )
r‡  r   rò  r<   ræ  r²  rç  r<   rH   r÷   )rL   rM   rN   r  r‰  r�  r‘  r”  r–  r˜  rœ  rŸ  r£  r¦  rÞ  rà  ré  rð  ró  rö  r6   r3   r1   rÄ  rÄ  M  s€  „ óð.EØðEØ-0ðEà	óEó
Aó.ó9ó4ó?ð6Øð6Ø#:ð6à	ó6ð
>Øð>à	'ó>ð
	àð	ð (ð	ð #ð		ð
 
ó	ðSØðSØ1>ðSà	7óSó
1ó8ð "#ð+àð+ð 0ð+ð (ð	+ð
 ð+ð 
ó+ð*àðð
ðð 
)óð LØðLØ+.ðLà	(óLð "#ð$àð$ð ð$ð (ð	$ð
 ð$ð 
ô$r3   rÄ  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û  rÄ  Úhop_cache_map)r/   rû  s     r1   r  zHopDispatchSetCache.__init__ã  s   € åKà-Ô/BÓ/DÐEˆÕr3   c                ó>   — || j                   vry | j                   |   S rk   )rý  )r/   Úops     r1   Ú	get_cachezHopDispatchSetCache.get_cacheé  s$   € Ø�T×'Ñ'Ñ'ØØ×!Ñ! "Ñ%Ð%r3   Nr  )rÿ  ztorch._ops.HigherOrderOperatorrH   zHopSubgraphCache | None)rL   rM   rN   r  r   r6   r3   r1   rù  rù  â  s   „ óFô&r3   rù  c                  ó\   — e Zd Zedd„«       Zedd„«       Zd	d„Zed
d„«       Zedd„«       Zy)ÚCompileContextc                 óX   — t         j                  €t        d«      ‚t         j                  S )Nzcompile_context is not set)Ú_TLSÚcompile_contextr.   r6   r3   r1   rÐ  zCompileContext.get  s&   € ä×ÑÐ'Ü Ð!=Ó>Ð>Ü×#Ñ#Ð#r3   c                 ó$   — t        t        dd «      S ©Nr  ©Úgetattrr  r6   r3   r1   Útry_getzCompileContext.try_get  ó   € ä”tÐ.°Ó5Ð5r3   c                ó€   — |�'t        |t        «      st        dt        |«      › �«      ‚|| _        d| _        g | _        y )Nz*compile_id must be None or CompileId, got r   )r—   r%   r.   r3  r@   rS   Úshape_env_guards)r/   r@   s     r1   r  zCompileContext.__init__  sF   € ØÐ!¬*°ZÄÔ*KÜ Ø<¼TÀ*Ó=MÐ<NÐOóð ð -7ˆŒØˆŒà+-ˆÕr3   c                 óH   — t         j                  «       } | €y | j                  S rk   )r  r
  r@   rV   s    r1   Úcurrent_compile_idz!CompileContext.current_compile_id  s"   € ä×%Ñ%Ó'ˆØˆ<ØØ�‰Ðr3   c                 óŠ   — t         j                  «       } | €y | j                  €y t        | j                  | j                  «      S rk   )r  r
  r@   rR   rS   rV   s    r1   Úcurrent_trace_idzCompileContext.current_trace_id   s:   € ä×%Ñ%Ó'ˆØˆ<ØØ�?‰?Ð"ØÜ�t—‘¨¯©Ó5Ð5r3   N)rH   r  )rH   úCompileContext | None)r@   rK   rH   r÷   )rH   rK   )rH   zTraceId | None)	rL   rM   rN   rù   rÐ  r
  r  r  r  r6   r3   r1   r  r    sU   „ Øò$ó ð$ð
 ò6ó ð6ó.ð òó ðð ò6ó ñ6r3   r  c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚInlinedCodeCachez8Cache for code-object-derived data used during inlining.rµ  Úinstructionszdict[Any, int]Úindexofr   Úcode_optionsN)rL   rM   rN   r   rO   r6   r3   r1   r  r  *  s   … áBàÓØÓØÔr3   r  c                  óL  — e Zd ZdZedd„«       Zedd„«       Zdd„Zdd„Zee	dd„«       «       Z
edd„«       Zdd„Zeej                  dd	„«       «       Zeej                  	 	 	 	 dd
„«       «       Zeej                  dd„«       «       Ze	 d	 	 	 	 	 	 	 	 	 dd„«       Zedd„«       Zy)re  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  r6   r3   r1   r
  zTracingContext.try_get;  r  r3   c                 óH   — t         j                  «       x} r| S t        d«      ‚)Nz<TracingContext.get() must be called within an ongoing trace.)re  r
  rä  )Úctxs    r1   rÐ  zTracingContext.get?  s+   € ä ×(Ñ(Ó*Ð*ˆ3Ð*ØˆJÜØJó
ð 	
r3   c                óÆ  — t        «       | _        t        «       | _        t	        «       | _        t        «       | _        t        «       | _        t        «       | _	        || _
        g | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        t-        «       | _        d| _        t3        «       | _        g | _        d | _        y r  )rw  Úguards_contextr.  Úmodule_contextr>  Úglobal_contextr1  Úpreviously_inlined_functionsÚpreviously_cleaned_instructionsÚinlined_code_cacheÚ	fake_modeÚframe_summary_stackÚloc_in_frameÚloc_in_frame_positionsÚ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Úcudagraph_annotation)r/   r$  s     r1   r  zTracingContext.__init__G  sÕ   € Ü+›oˆÔÜ+›oˆÔÜ+›oˆÔÜ<@»FˆÔ)Ü?C»vˆÔ,ä?C»vˆÔØ09ˆŒØACˆÔ ð :>ˆÔØ<@ˆÔ#à7;ˆÔà=AˆÔà04ˆÔØ-1ˆÔØ?CˆÔ*Ø@DˆÔ+ð DHˆÔð 49ˆÔ0ä!8Ó!:ˆÔð
 "'ˆÔÜ&9Ó&;ˆÔ#à+-ˆÔØ)-ˆÕ!r3   c                óÂ   — i | j                   _        | j                  j                  «        | j                  j                  «        | j
                  j                  «        y rk   )r   r7  r!  r_  r"  r#  rV   s    r1   r_  zTracingContext.clear~  sH   € ð ,.ˆ×ÑÔ(Ø×)Ñ)×/Ñ/Ô1Ø×,Ñ,×2Ñ2Ô4Ø×Ñ×%Ñ%Õ'r3   c               +  óV  K  — i }t         j                  «       }| D ]  }t        ||«      ||<   Œ | j                  «       D ]  \  }}t	        |||«       Œ 	 d –— |j                  «       D ]  \  }}t	        |||«       Œ y # |j                  «       D ]  \  }}t	        |||«       Œ w xY w­wrk   )re  rÐ  r	  r;   Úsetattr)ÚkwargsÚpriorr  r�  Úvals        r1   ÚpatchzTracingContext.patch†  s³   è ø€ ð ˆÜ× Ñ Ó"ˆàò 	+ˆCä   cÓ*ˆE�#ŠJð	+ð Ÿ™›ò 	#‰HˆC�Ü�C˜˜cÕ"ð	#ð	'Ûà!ŸK™K›Mò '‘��SÜ˜˜S #Õ&ñ'ø˜EŸK™K›Mò '‘��SÜ˜˜S #Õ&ñ'üs   ‚AB)ÁA? Á&B)Á?'B&Â&B)c                 óì   — t         j                  «       } | €t        j                  «       S | j                  }| j
                  �|| j                  «       gz   }t        j                  j                  |«      S rk   )re  r
  Ú	tracebackÚStackSummaryr%  r&  Ú_populate_loc_in_frame_summaryÚ	from_list)r/   r©   s     r1   rf  zTracingContext.extract_stack—  sh   € ä×%Ñ%Ó'ˆØˆ<Ü×)Ñ)Ó+Ð+Ø×(Ñ(ˆØ×ÑÐ(Ø˜T×@Ñ@ÓBÐCÑCˆEÜ×%Ñ%×/Ñ/°Ó6Ð6r3   c                ó*  — | j                   €t        d«      ‚| j                   \  }}}i }t        j                  dk\  r>| j                  �2| j                  j
                  |d<   | j                  j                  |d<   t        j                  |||fddi|¤ŽS )Nzloc_in_frame must not be None)r\   rd   ÚcolnoÚ	end_colnoÚlookup_lineF)	r&  r.   ÚsysÚversion_infor'  Ú
col_offsetÚend_col_offsetr=  ÚFrameSummary)r/   ÚfilenameÚlinenoÚ
frame_namer8  s        r1   r?  z-TracingContext._populate_loc_in_frame_summary¡  s¥   € Ø×ÑÐ$Ü Ð!@ÓAÐAØ'+×'8Ñ'8Ñ$ˆ�&˜*à!#ˆÜ×Ñ˜wÒ&¨4×+FÑ+FÐ+RØ"×9Ñ9×DÑDˆF�7‰OØ"&×"=Ñ"=×"LÑ"LˆF�;ÑÜ×%Ñ%ØØØñ
ð ð	
ð
 ñ
ð 	
r3   c               #  ó
  K  — t         j                  «       } t        j                  j                  j                  | dg «      5  t        j                  j                  j                  | dd «      5  t        j                  j                  j                  | dd «      5  	 d –— 	 d d d «       d d d «       d d d «       y # t        $ r}t        |d«      sd |_        ‚ d }~ww xY w# 1 sw Y   Œ?xY w# 1 sw Y   ŒCxY w# 1 sw Y   y xY w­w)Nr%  r&  r'  Ú
real_stack)	re  rÐ  ÚunittestÚmockr;  rõ   r>   ÚhasattrrN  )ÚtcrE   s     r1   Úclear_framezTracingContext.clear_frame´  sá   è ø€ ô ×ÑÓ!ˆä�M‰M×Ñ×&Ñ& rÐ+@À"ÓEñ	ä�M‰M×Ñ×&Ñ& r¨>¸4Ó@ñ	ô �M‰M×Ñ×&Ñ& rÐ+CÀTÓJñ	ð
Ü÷	÷ 	÷ 	ð 	øô ò ô$ ˜q ,Ô/Ø#'�A”LØûð)ú÷	ð 	ú÷ 	ð 	ú÷ 	ð 	üsl   ‚A DÁ,C7Á.,C+ÂCÂB:Â!C+Â)C7Â1	DÂ:	C	ÃC	ÃC	ÃCÃC(Ã$C+Ã+C4	Ã0C7Ã7D Ã<Dc              #  óÞ  K  — t         j                  «       }| �|j                  j                  | «       |j                  }|j
                  }d |_        d |_        	 d –— 	 | �|j                  j                  «        ||_        ||_        y # t        $ r'}t        |d«      s|j                  «       |_	        ‚ d }~ww xY w# | �|j                  j                  «        ||_        ||_        w xY w­w)NrN  )re  rÐ  r%  rì   r&  r'  r>   rQ  rf  rN  rí  )Úframe_summaryrR  r|  Úold_positionsrE   s        r1   Úcurrent_framezTracingContext.current_frameÕ  sÜ   è ø€ ô ×ÑÓ!ˆØÐ$Ø×"Ñ"×)Ñ)¨-Ô8Ø�o‰oˆØ×1Ñ1ˆØˆŒØ$(ˆÔ!ð
	6Üð Ð(Ø×&Ñ&×*Ñ*Ô,Ø!ˆBŒOØ(5ˆBÕ%øô ò 	Ü˜1˜lÔ+Ø!×/Ñ/Ó1�”Øûð	ûð
 Ð(Ø×&Ñ&×*Ñ*Ô,Ø!ˆBŒOØ(5ˆBÕ%üs6   ‚AC-ÁB Á +C-Â	B;Â"B6Â6B;Â;B> Â>,C*Ã*C-c               #  ó¬   K  — t         j                  «       } | €d –— y | j                  }g | _        	 | j                  –— || _        y # || _        w xY w­wrk   )re  r
  r.  )rR  Úold_output_stridess     r1   Úreport_output_stridesz$TracingContext.report_output_stridesï  sY   è ø€ ô
 ×#Ñ#Ó%ˆØˆ:ØŠJØØ×.Ñ.ÐØˆÔð	3Ø×#Ñ#Ò#à 2ˆBÕøÐ 2ˆBÕüs   ‚/A²A Á AÁ	AÁANc                óN   — t         j                  «       }| ||f|_        ||_        y rk   )re  rÐ  r&  r'  )rJ  rK  rL  Ú	positionsrR  s        r1   Úset_current_loczTracingContext.set_current_locÿ  s(   € ô ×ÑÓ!ˆØ# V¨ZÐ8ˆŒØ$-ˆÕ!r3   c                 óH   — t         j                  «       } | €y | j                  S rk   )re  r
  r3  )rR  s    r1   Úget_traced_codezTracingContext.get_traced_code  s"   € ä×#Ñ#Ó%ˆØˆ:ØØ�~‰~Ðr3   )rH   úTracingContext | None)rH   re  )r$  úFakeTensorMode | NonerH   r÷   r  )r8  r   rH   r�  )rH   ztraceback.StackSummary)rH   ztraceback.FrameSummaryr€  )rU  ztraceback.FrameSummary | NonerH   r�  )rH   z:Generator[list[tuple[int, ...] | None] | None, None, None]rk   )
rJ  rI   rK  r<   rL  rI   r\  zdis.Positions | NonerH   r÷   )rH   zlist[CodeType] | None)rL   rM   rN   r   rù   r
  rÐ  r  r_  r   r;  rf  r?  r‚  rS  rW  rZ  r]  r_  r6   r3   r1   re  re  3  s@  „ ñð ò6ó ð6ð ò
ó ð
ó5.ón(ð Øò'ó ó ð'ð ò7ó ð7ó
ð& Ø×Ñòó ó ðð> Ø×Ñð6Ø4ð6à	$ò6ó ó ð6ð0 Ø×Ñò3ó ó ð3ð ð
 +/ð	
.Øð
.àð
.ð ð
.ð (ð	
.ð
 
ò
.ó ð
.ð òó ñr3   re  c              #  ó„   K  — t        t        dd «      }| t        _        	 | –— |t        _        y # |t        _        w xY w­wr  )r	  r  r  )ÚcontextÚold_contexts     r1   r  r    s9   è ø€ ô œ$Ð 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  NrN  )
r	  r  r  r>   rQ  rf  rN  r$  Ú	shape_envÚcleanup)rc  rd  rE   s      r1   Útracingrh     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                 ó   — y rk   r6   ©r?   r8  s     r1   Údataclass_with_cached_hashrk  =  s   € ØHKr3   c                 ó   — y rk   r6   rj  s     r1   rk  rk  A  s   € ð $'r3   c                ó(   ‡— dˆfd„}| €|S  || «      S )Nc                ó|   •‡— t        j                  | fi ‰¤Ž}| j                  Šdˆfd„}d„ }||_        ||_        |S )Nc                ón   •— t        | d«      st        j                  | d ‰| «      «       | j                  S )Nr«   )rQ  rõ   Ú__setattr__r«   )r/   Úold_hashs    €r1   r²   z:dataclass_with_cached_hash.<locals>.wrap.<locals>.__hash__O  s-   ø€ Ü˜4 Ô)Ü×"Ñ" 4¨±(¸4³.ÔAØ—:‘:Ðr3   c                ór   ‡ — t        j                  ‰ «      }t        ˆ fd„|D «       «      }‰ j                  |fS )Nc              3  ód   •K  — | ]'  }|j                   sŒt        ‰|j                  «      –— Œ) y ­wrk   )Úinitr	  r¯   )rr  Úfr/   s     €r1   rs  zOdataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__.<locals>.<genexpr>Y  s"   øè ø€ Ò Q¸1È!Ï&Ë&¤¨¨q¯v©v×!6Ñ Qùs   ƒ0•0)rÁ  ÚfieldsÚtuplerÐ   )r/   rv  Úfield_valuess   `  r1   Ú
__reduce__z<dataclass_with_cached_hash.<locals>.wrap.<locals>.__reduce__T  s4   ø€ ô !×'Ñ'¨Ó-ˆFÜ Ó QÀÔ QÓQˆLØ—N‘N LÐ1Ð1r3   ró   )rÁ  r   r²   ry  )Ú	cls_innerÚnew_clsr²   ry  rq  r8  s       @€r1   Úwrapz(dataclass_with_cached_hash.<locals>.wrapK  sD   ù€ Ü×'Ñ'¨	Ñ<°VÑ<ˆØ×%Ñ%ˆõ	ò
	2ð $ˆÔØ'ˆÔØˆr3   )rz  útype[T]rH   r}  r6   )r?   r8  r|  s    ` r1   rk  rk  G  s   ø€ õð* €{Øˆá�‹9Ðr3   c                  óÄ   — e Zd Zdd„Zdd„Zdd„Zdd„Zej                  dd„«       Z	e
dd„«       Zej                  dd„«       Z	 	 	 	 	 	 	 	 dd„Zdd	„Zdd
„Zdd„Zddd„Zy)r¡   c                 ó   — yr  r6   rV   s    r1   Úis_dict_keyzSource.is_dict_keyj  ó   € Ør3   c                 ó   — yr  r6   rV   s    r1   Úis_ephemeralzSource.is_ephemeralm  r�  r3   c                ó   — t         ‚rk   ©ÚNotImplementedError©r/   Úcodegens     r1   ÚreconstructzSource.reconstructp  s   € Ü!Ð!r3   c                ó   — t         ‚)zÝ
        Reconstructs the source into a string of Python code. This method should
        be eventually implemented for all subclasses of Source to achieve full
        coverage of python wrapper code generation.
        r…  r‡  s     r1   Úreconstruct_pycodezSource.reconstruct_pycodes  s
   € ô "Ð!r3   c                ó   — t         ‚rk   r…  rV   s    r1   rÊ   zSource.guard_source{  s   € ä!Ð!r3   c                ó   — t         ‚)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…  rV   s    r1   Ú_name_templatezSource._name_template  s
   € ô "Ð!r3   c                ó   — | j                   S rk   )rŽ  rV   s    r1   r¯   zSource.name�  s   € à×"Ñ"Ð"r3   c                óP   — | |v r||    S t        | j                  ||«      }||| <   |S rk   )ÚevalrŽ  )r/   ÚglobalsÚlocalsÚcacher¼   s        r1   Ú	get_valuezSource.get_value‘  s7   € ð �5‰=Ø˜‘;ÐÜ�T×(Ñ(¨'°6Ó:ˆØˆˆd‰Øˆr3   c                ó^   — | j                   t        j                  u rt        ‚t	        | |«      S rk   )rÊ   rY   r†   r†  r    )r/   Úfns     r1   Ú
make_guardzSource.make_guard�  s(   € Ø×Ñ¤× 4Ñ 4Ñ4Ü%Ð%Ü�T˜2‹Ðr3   c                ó6   — | j                   j                  «       S rk   )rÊ   rw   rV   s    r1   rw   zSource.is_specialized_nn_module¢  s   € Ø× Ñ ×9Ñ9Ó;Ð;r3   c                ó<   — | j                   t        j                  k7  S )z+True if you can guard on attributes of this)rÊ   rY   r‹   rV   s    r1   Úsubguards_allowedzSource.subguards_allowed¥  s   € à× Ñ ¤K×$?Ñ$?Ñ?Ð?r3   Nc                ó   — |� || «      S | S rk   r6   )r/   Útransform_fns     r1   ÚclonezSource.clone©  s   € ð Ð#Ù Ó%Ð%Øˆr3   rƒ   )rˆ  r   rH   r÷   )rˆ  r   rH   rI   rô   rG   ©r’  údict[str, Any]r“  r   r”  zdict[Source, Any]rH   r   )r—  zCallable[..., Any]rH   r    rk   ©r�  z!Callable[[Source], Source] | NonerH   r¡   )rL   rM   rN   r€  rƒ  r‰  r‹  rµ   Úcached_propertyrÊ   rø   rŽ  r¯   r•  r˜  rw   r›  rž  r6   r3   r1   r¡   r¡   h  sž   „ óóó"ó"ð ×Ñò"ó ð"ð ò"ó ð"ð ×Ñò#ó ð#ð
àð
ð ð
ð !ð	
ð
 
ó
óó
<ó@õr3   r¡   c                  óž   — e Zd ZU ded<   dd„Zdd„Zej                  dd„«       Zdd„Z	ej                  dd„«       Z
	 	 	 	 	 	 	 	 dd„Zddd
„Zy	)ÚChainedSourcer¡   Úbasec                ó6   — | j                   j                  «       S rk   )r¥  r€  rV   s    r1   r€  zChainedSource.is_dict_key¶  s   € à�y‰y×$Ñ$Ó&Ð&r3   c                ó6   — | j                   j                  «       S rk   )r¥  rƒ  rV   s    r1   rƒ  zChainedSource.is_ephemeralº  s   € Ø�y‰y×%Ñ%Ó'Ð'r3   c                ó.   — | j                   j                  S rk   )r¥  rÊ   rV   s    r1   rÊ   zChainedSource.guard_source½  s   € à�y‰y×%Ñ%Ð%r3   c                ód   — | }t        |t        «      r|j                  }t        |t        «      rŒ|S rk   )r—   r¤  r¥  )r/   Úcurrents     r1   Úget_basezChainedSource.get_baseÁ  s+   € ØˆÜ˜¤-Ô0Ø—l‘lˆGô ˜¤-Õ0àˆr3   c                ó`   — | j                   j                  | j                  j                  «      S rk   )rŽ  rã   r¥  r¯   rV   s    r1   r¯   zChainedSource.nameÇ  s!   € à×"Ñ"×)Ñ)¨$¯)©)¯.©.Ó9Ð9r3   c                óâ   — | |v r||    S d}d}||v rd|› �}|dz  }||v rŒ| j                   j                  |||«      ||<   t        | j                  j	                  |«      ||«      }||= ||| <   |S )NÚtmpr   rZ   )r¥  r•  r‘  rŽ  rã   )r/   r’  r“  r”  ÚtmpvarÚcounterr¼   s          r1   r•  zChainedSource.get_valueË  s—   € ð �5‰=Ø˜‘;ÐØˆØˆØ˜ÑØ˜7˜)�_ˆFØ�q‰LˆGð ˜Òð Ÿ™×,Ñ,¨W°f¸eÓDˆˆv‰Ü�T×(Ñ(×/Ñ/°Ó7¸À&ÓIˆØ�6ˆNØˆˆd‰Øˆr3   Nc                ó^  — d| j                   j                  |«      i}t        j                  | «      D ]W  }|j                  dk(  rŒt        | |j                  «      }t        |t        «      sŒ:|j                  |«      ||j                  <   ŒY t        j                  | fi |¤Ž}|� ||«      }|S )Nr¥  )	r¥  rž  rÁ  rv  r¯   r	  r—   r¡   Úreplace)r/   r�  Úcloned_fieldsru  r:  Úresults         r1   rž  zChainedSource.cloneÞ  s¡   € Ø)/°·±·±ÀÓ1NÐ(OˆÜ×#Ñ# DÓ)ò 	@ˆAØ�v‰v˜ÒØÜ˜$ §¡Ó'ˆCÜ˜#œvÕ&Ø(+¯	©	°,Ó(?�˜aŸf™fÒ%ð	@ô ×$Ñ$ TÑ;¨]Ñ;ˆØÐ#Ù! &Ó)ˆFØˆr3   rƒ   rô   )rH   r¡   rG   rŸ  rk   r¡  )rL   rM   rN   rO   r€  rƒ  rµ   r¢  rÊ   r«  r¯   r•  rž  r6   r3   r1   r¤  r¤  ²  sz   … à
ƒLó'ó(ð ×Ñò&ó ð&óð ×Ñò:ó ð:ðàðð ðð !ð	ð
 
óõ&r3   r¤  c                óX  — ddl m}m}m} t        j                  «       x}r|j                  }|�|S g }ddlm} t        t         |«       «      «      D ]&  \  }}	t        |	|«      sŒ|j                  |	d|f«       Œ( t        j                  | «      }
t        |
«      D ]   \  }}t        ||«      r|j                  |j                  d|f«       t        |«      sŒ<g } |||¬«       |D �cg c]  }t        ||«      sŒ|‘Œ }}|j!                  t        |«      D ��cg c]  \  }}|j                  d|› �|f‘Œ c}}«       Œ¢ |r`|d   \  }}}|d	d D ]M  \  }	}}||	usŒt#        d
|› d|› d|› d|	› d|› d|› d|› d|› d|j$                  › d|› d|› d|	j$                  › �«      ‚ |S yc c}w c c}}w )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   )Ú
FakeTensorr    Úget_plain_tensorsN©Ú _get_current_dispatch_mode_stackzactive fake modezfake tensor input)Úoutzsubclass input rZ   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·  re  r
  r$  Útorch.utils._python_dispatchr¹  rë  Úreversedr—   rì   ÚpytreeÚtree_leavesr   rí   r.   r©   )Úinputsr¶  r    r·  rc  r$  Ú
fake_modesr¹  rï  ÚmÚflat_inputsÚ
flat_inputrº  ÚxÚfake_tensorsÚixÚtensorÚdesc1Úi1Údesc2Úi2s                        r1   Údetect_fake_moderÍ  ì  s  € ÷ñ ô !×(Ñ(Ó*Ð*€wÐ*Ø×%Ñ%ˆ	ØÐ ØÐà€JåMäœ(Ñ#CÓ#EÓFÓGò :‰ˆˆ1Ü�a˜Õ(Ø×Ñ˜qÐ"4°aÐ8Õ9ð:ô ×$Ñ$ VÓ,€KÜ" ;Ó/ò ‰ˆˆ:Ü�j *Ô-Ø×Ñ˜z×3Ñ3Ð5HÈ!ÐLÔMÜ(¨Õ4Ø;=ˆCÙ˜j¨cÕ2àö.Ø¤*¨Q°
Õ";’ð.ˆLð .ð ×Ñô '0°Ó&=÷á"˜˜Fð ×%Ñ%¨¸¸Ð'<¸bÒAóõðñ  Ø)¨!™}Ñˆ	�5˜"Ø& q r˜Nò 	‰LˆAˆu�bØ Ò!Ü$Ø! ) ¨G°E°7¸!¸B¸4Ð?TÐUVÐTWÐW^Ð_dÐ^eÐefÐgiÐfjð k&Ø&+ W¨A¨b¨TÐ1AÀ)Ç/Á/ÐARð S&Ø&+ W¨A¨b¨TÐ1AÀ!Ç'Á'ÀðLóð ð	ð Ðàùò-.ùós   Ã'F!Ã9F!ÄF&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¹  rU   rÂ  s       r1   Úactive_fake_moderÏ  -  s?   € õ
 =ÝMäœ(Ñ#CÓ#EÓFÓGò ‰ˆˆ1Ü�a˜Õ(ØŠHðð r3   )rc  r  rH   z,Generator[CompileContext | None, None, None])rc  r`  rH   z,Generator[TracingContext | None, None, None])r?   r}  r8  r   rH   r}  rk   )r?   r÷   r8  r   rH   zCallable[[type[T]], type[T]])r?   ztype[T] | Noner8  r   rH   z&type[T] | Callable[[type[T]], type[T]])rÀ  r   rH   ra  )rH   ra  )kÚ
__future__r   r‚  rÁ  Úenumrµ   ÚloggingÚrerE  Ú	threadingr=  Úunittest.mockrO  rÍ   Úabcr   Úcollectionsr   r   r   Útypingr   r	   r
   r   r   r   Útyping_extensionsr   r¸   Útorch.utilsr   r¾  Útorch.utils._ordered_setr   r¼  r   Útorch.utils._tracebackr   r   Útorch.utils.weakr   Ú	getLoggerrL   rÞ   ÚdisÚcollections.abcr   r   r   Útypesr   ÚsympyÚ"torch._dynamo.backends.distributedr   Útorch._dynamo.codegenr   Útorch._dynamo.guardsr   Útorch._dynamo.output_graphr   Ú&torch._functorch._aot_autograd.schemasr   rü  r   r»  r    Úcompiler7   r8   r%   rR   ÚEnumrY   rŽ   r‘   rš   r    rú   rü   rþ   r  r	  r  r"  r.  r5  r>  rL  rw  r„  r²  r¼  rÄ  rù  Úlocalr  r  r  re  r  rh  rk  r¡   r¤  rÍ  rÏ  r6   r3   r1   ú<module>rë     s  ðÝ "ã Û Û Û Û Û 	Û 
Û Û Û Û Ý Ý #Ý %Ý !ß M× MÝ 1ã Ý )Ý /Ý Fß BÝ 4ð €g×Ñ˜Ó!€ñ Ûß=Ñ=ÝãåFÝ/Ý3Ý6ÝJÝRÝ<ðð  �R—Z‘ZÐ PÓQÐ Ø"˜Ÿ
™
ØXóÐ ñ" �$ ¨DÔ1÷7Jð 7Jó 2ð7Jôt7ˆjô 7ô<
�$—)‘)ô <
ð~÷	ñ 	ð €×Ñ˜dÔ#÷ð ó $ðô$�ô ð €×Ñ˜TÔ"÷u'ð u'ó #ðu'ñp ˆCƒL€ðð €×Ñ˜dÔ#÷	ð 	ó $ð	ðð €×Ñ˜dÔ#ô	�ló 	ó $ð	ðð €×Ñ˜dÔ#ô*�\ó *ó $ð*ð

ô8�W˜Q‘Zô 8÷(ñ (÷8(ñ (ô0+�NÐ#?Ñ@ô +÷(ñ (ô0$�NÐ#?Ñ@ô $÷RC.ñ C.ðLô<�NÐ#8Ñ9ô <÷2*=ñ *=ðZ ÷ð ó ðð2 ÷Wð Wó ðWô4R$Ð*ô R$÷j
&ñ 
&ð €y‡�Ó€ð÷&#6ñ #6ðL ÷ð ó ð÷^ñ ^ðB ð+Ø"ð+à1ò+ó ð+ð ð+Ø"ð+à1ò+ó ð+ð8 
Ú Kó 
Ø Kð 
àð'Ø	ð'Ø #ð'à!ò'ó 
ð'ñ
 ÓàðØ	ðØ*-ðà+òó ðñ@  4Ô(÷Eð Eó )ðEñR  4Ô(ô6�Fó 6ó )ð6ôr>ôBr3   