Ë
    P/æjÄš  ã                   ó$  — d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlZd dlmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZmZ dd	lmZmZ dd
lmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) e	rd dl*m+Z+ e jX                   G d„ d«      «       Z- G d„ de!«      Z. G d„ de)«      Z/ G d„ de.«      Z0 G d„ de.«      Z1 G d„ de.«      Z2 G d„ de.«      Z3 G d„ de.«      Z4 G d „ d!e.«      Z5 G d"„ d#e.«      Z6 G d$„ d%e.«      Z7 G d&„ d'e.«      Z8 G d(„ d)e.«      Z9 G d*„ d+e.«      Z: G d,„ d-e.«      Z; G d.„ d/e.«      Z< G d0„ d1e.«      Z= G d2„ d3e.«      Z> G d4„ d5e.«      Z? G d6„ d7e.«      Z@ G d8„ d9e.«      ZA G d:„ d;e!«      ZB G d<„ d=e!«      ZC G d>„ d?e!«      ZDy)@é    N)ÚCallableÚDictÚListÚOptionalÚTYPE_CHECKINGÚUnion)ÚGuardé   )Ú	variables)Úcreate_call_functionÚcreate_instructionÚcreate_setup_with)Úget_interface_for_device)ÚunimplementedÚUnsupported)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚGlobalStateSourceé   )ÚVariableTracker)ÚNestedUserFunctionVariableÚUserFunctionVariableÚUserMethodVariableÚWrappedUserFunctionVariableÚWrappedUserMethodVariable)ÚUserDefinedObjectVariable)ÚInstructionTranslatorc                   ón   — e Zd ZU dZdZee   ed<   dZee	j                  j                     ed<   d„ Zd„ Zy)ÚContextMangerStatezÅ
    Mutating `self` in VariableTracker is not allowed because we copy
    them.  This is a mutable container pointed to by context managers
    that won't get copied, so it is safe to mutate.
    NÚ
cleanup_fnÚproxyc                 óL   — | j                   �| j                  «        d | _         y y ©N)r!   ©Úselfs    úf/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/ctx_manager.pyÚcleanupzContextMangerState.cleanup/   s"   € Ø�?‰?Ð&Ø�O‰OÔØ"ˆD�Oð 'ó    c                 óJ   — | j                   sJ d«       ‚| j                  «        y )Nzmultiple exits?)r!   r(   r%   s    r'   Úcleanup_assertz!ContextMangerState.cleanup_assert4   s   € Ø�ŠÐ1Ð 1Ó1ˆØ�‰�r)   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r   r   Ú__annotations__r"   ÚtorchÚfxÚProxyr(   r+   © r)   r'   r    r    $   s9   … ñð &*€J�˜Ñ"Ó)Ø&*€Eˆ8�E—H‘H—N‘NÑ#Ó*ò#ó
r)   r    c                   ó˜   ‡ — e Zd Zddddhej                  £Z	 dddœ	 dˆ fd„Zd„ Zddd	„Zdd
„Zd„ Z	d„ Z
d„ Zd„ Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚContextWrappingVariableÚcm_objÚtarget_valuesÚinitial_valuesÚstateN)r:   c                ór   •— t        ‰| �  di |¤Ž || _        || _        |€t	        «       | _        y || _        y ©Nr4   )ÚsuperÚ__init__r8   r9   r    r:   )r&   r8   r9   r:   ÚkwargsÚ	__class__s        €r'   r>   z ContextWrappingVariable.__init__B   s:   ø€ ô 	‰ÑÑ"˜6Ò"Ø*ˆÔØ,ˆÔØ-2¨]Ô'Ó)ˆ�
Àˆ�
r)   c                 óš   — | j                  || j                  «       | j                  |«       t        j                  j                  d «      S r$   )Ú
_call_funcr8   Úset_cleanup_hookr   ÚConstantVariableÚcreate©r&   Útxs     r'   ÚenterzContextWrappingVariable.enterJ   s;   € Ø�‰˜˜D×.Ñ.Ô/Ø×Ñ˜bÔ!Ü×)Ñ)×0Ñ0°Ó6Ð6r)   c                 ó˜   ‡ ‡— |€ˆ ˆfd„}|‰ j                   _        ‰j                  j                  ‰ j                   j                  «       y )Nc                  ó>   •— ‰ j                  ‰‰ j                  «       y r$   )rB   r9   rF   s   €€r'   Úfnz4ContextWrappingVariable.set_cleanup_hook.<locals>.fnR   s   ø€ Ø—‘  D×$7Ñ$7Õ8r)   )r:   r!   ÚoutputÚadd_cleanup_hookr(   )r&   rG   rK   s   `` r'   rC   z(ContextWrappingVariable.set_cleanup_hookO   s7   ù€ Øˆ:õ9ð !#ˆ�
‰
ÔØ
�	‰	×"Ñ" 4§:¡:×#5Ñ#5Õ6r)   c                 ót   — | j                   j                  «        t        j                  j	                  d «      S r$   )r:   r+   r   rD   rE   ©r&   rG   Úargss      r'   ÚexitzContextWrappingVariable.exitX   s)   € Ø�
‰
×!Ñ!Ô#Ü×)Ñ)×0Ñ0°Ó6Ð6r)   c                 ó’   —  |t        |j                  j                  | j                  «       «      | j	                  «       «      «       y r$   )r   rG   Úimport_sourceÚmodule_nameÚfn_name©r&   Úcodegens     r'   Úreconstruct_typez(ContextWrappingVariable.reconstruct_type\   s2   € ÙÜ�w—z‘z×/Ñ/°×0@Ñ0@Ó0BÓCÀTÇ\Á\Ã^ÓTõ	
r)   c                 ó   ‡ ‡— ‰j                  ˆˆ fd„«       ‰ j                  }|sd}‰j                  |D �cg c]  }‰j                  |«      ‘Œ c}«       ‰j                  t	        t        |«      d«      «       y c c}w )Nc                  ó&   •— ‰j                  ‰ «      S r$   )rX   )rW   r&   s   €€r'   ú<lambda>z5ContextWrappingVariable.reconstruct.<locals>.<lambda>b   s   ø€  d×&;Ñ&;¸GÓ&D€ r)   r4   F)Úadd_push_nullr8   Úextend_outputÚcreate_load_constr   Úlen)r&   rW   r8   Úvals   ``  r'   Úreconstructz#ContextWrappingVariable.reconstructa   sj   ù€ Ø×ÑÔDÔEØ×*Ñ*ˆÙØˆMØ×ÑÈÖWÀ#˜w×8Ñ8¸Õ=ÒWÔXØ×ÑÔ2´3°}Ó3EÀuÓMÕNùò Xs   ·A;c                 ó   — t        d«      ‚)Nzmodule_name called on base©ÚNotImplementedErrorr%   s    r'   rT   z#ContextWrappingVariable.module_namei   s   € Ü!Ð">Ó?Ð?r)   c                 ó   — t        d«      ‚)Nzfn_name called on baserc   r%   s    r'   rU   zContextWrappingVariable.fn_namel   s   € Ü!Ð":Ó;Ð;r)   c                 óF  — t        |«      dk(  sJ ‚t        |d   t        «      rt        |d   j	                  «       «      |d<   t        |d   t
        t        f«      sJ ‚t        |d   t
        «      rt        |d   | «      S t        |d   t        «      rt        |d   | «      S y ©Nr   r   )r_   Ú
isinstancer   r   Úget_functionr   r   r   ©r&   rG   rP   r?   s       r'   Úcall_functionz%ContextWrappingVariable.call_functiono   sž   € ô �4‹y˜AŠ~Ðˆ~Ü�d˜1‘gÔ9Ô:Ü*¨4°©7×+?Ñ+?Ó+AÓBˆD�‰GÜ˜$˜q™'Ô$6Ô8LÐ#MÔNÐNÐNä�d˜1‘gÔ1Ô2Ü,¨T°!©W°dÓ;Ð;ä�d˜1‘gÔ3Ô4Ü.¨t°A©w¸Ó=Ð=ð 5r)   r$   ©ÚreturnN©rG   r   ©rG   r   rP   úList[VariableTracker]r?   úDict[str, VariableTracker]rm   r   )r,   r-   r.   r   Ú_nonvar_fieldsr>   rH   rC   rQ   rX   ra   rT   rU   rk   Ú__classcell__©r@   s   @r'   r6   r6   9   s“   ø„ àØØØð	ð
 
×	'Ñ	'ð€Nð -1ðFØ;?ñFà	õFò7ô
7ó7ò
ò
Oò@ò<ð>à#ð>ð &ð>ð -ð	>ð
 
÷>r)   r6   c                   ó:   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Zd„ Zdd„Zˆ xZS )ÚGenericContextWrappingVariablec                 óT   •— |€J ‚t        ‰| �  d||j                  dœ|¤Ž || _        y )N)ÚvalueÚ
value_typer4   )r=   r>   r@   r7   )r&   r7   r?   r@   s      €r'   r>   z'GenericContextWrappingVariable.__init__„   s@   ø€ ØÐ!Ð!Ð!Ü‰Ñð 	
ØØ×'Ñ'ñ	
ð ò	
ð
 ˆ�r)   c                 ó.   — | j                   j                  S r$   )r7   r-   r%   s    r'   rT   z*GenericContextWrappingVariable.module_name�   s   € Ø�{‰{×%Ñ%Ð%r)   c                 ó@   — t        | j                  «      j                  S r$   )Útyper7   r,   r%   s    r'   rU   z&GenericContextWrappingVariable.fn_name�   s   € Ü�D—K‘KÓ ×)Ñ)Ð)r)   c                 ó<  — | j                   €d nt        | j                   d«      }	 t        j                  | j                  j
                  j                  | |¬«      j                  |g i «      S # t        $ r%}t        d| j                  › d�|¬«       Y d }~y d }~ww xY w)NÚ	__enter__©ÚsourceúUnsupported context manager z's __enter__ function©Úfrom_exc)
r€   r   r   r   r7   r~   Ú__func__rk   r   r   )r&   rG   r€   Úes       r'   rH   z$GenericContextWrappingVariable.enter“   s‘   € ØŸ™Ð,‘´*¸T¿[¹[È+Ó2Vˆð
	Ü×/Ñ/Ø—‘×%Ñ%×.Ñ.ØØô÷ ‰m˜B  BÓ'ð	(øô
 ò 	ÜØ.¨t¯{©{¨mÐ;PÐQØ÷ò ûð	ús   ¦AA- Á-	BÁ6BÂBc                 ó  — | j                   €d nt        | j                   d«      }	 t        j                  | j                  j
                  j                  | |¬«      j                  |t        j                  j                  d «      t        j                  j                  d «      t        j                  j                  d «      gi «      }|xj                  dz  c_        S # t        $ r%}t        d| j                  › d�|¬«       Y d }~Œ@d }~ww xY w)NÚ__exit__r   r�   z's __exit__ functionr‚   r   )r€   r   r   r   r7   r‡   r„   rk   rD   rE   r   r   Úgeneric_context_manager_depth)r&   rG   rP   r€   Úxr…   s         r'   rQ   z#GenericContextWrappingVariable.exit¡   sî   € ØŸ™Ð,‘´*¸T¿[¹[È*Ó2Uˆð	Ü×,Ñ,Ø—‘×$Ñ$×-Ñ-ØØô÷ ‰mØä×.Ñ.×5Ñ5°dÓ;Ü×.Ñ.×5Ñ5°dÓ;Ü×.Ñ.×5Ñ5°dÓ;ðð
 óð	 ð& 	×(Ò(¨AÑ-Õ(Øˆøô ò 	ÜØ.¨t¯{©{¨mÐ;OÐPØ÷ò ûð	ús   ¦B!C Ã	DÃ'DÄDrl   rn   )	r,   r-   r.   r>   rT   rU   rH   rQ   rs   rt   s   @r'   rv   rv   �   s   ø„ õò&ò*ò÷r)   rv   c                   ó0   — e Zd ZdZedd„«       Zd„ Zdd„Zy)Ú)GradInplaceRequiresGradCtxManagerVariablez#represents torch grad requries gradc                 ó   — t        d|d dœ|¤ŽS ©N©r8   r9   r4   )r‹   ©rG   r8   r?   s      r'   rE   z0GradInplaceRequiresGradCtxManagerVariable.create¾   s$   € ä8ð 
Ø'Øñ
ð ñ
ð 	
r)   c                 óÔ  ‡ — ‰ j                   \  }t        j                  j                  j	                  «       ‰ _        t        j                  j                  j                  |«       ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j                  j                  |fi «      ‰ j                  _        t        j                  j                  d «      S )Nc                  ój   •— t         j                  j                  j                  ‰ j                  «      S r$   )r1   Ú_CÚ
_functorchÚ!set_inplace_requires_grad_allowedÚ
prev_stater%   s   €r'   r[   zAGradInplaceRequiresGradCtxManagerVariable.enter.<locals>.<lambda>Ì   s#   ø€ ”E—H‘H×'Ñ'×IÑIØ—‘ó€ r)   rk   )r8   r1   r’   r“   Ú!get_inplace_requires_grad_allowedr•   r”   rC   rL   Úcreate_noder:   r"   r   rD   rE   )r&   rG   Úenableds   `  r'   rH   z/GradInplaceRequiresGradCtxManagerVariable.enterÆ   s¬   ø€ Ø×&Ñ&‰	ˆÜŸ(™(×-Ñ-×OÑOÓQˆŒÜ�‰×Ñ×=Ñ=¸gÔFØ×ÑØóô	
ð Ÿ9™9×0Ñ0ØÜ�H‰H×Ñ×AÑAØˆJØó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°Ó6Ð6r)   c                 ó
  — | j                   j                  «        |j                  j                  dt        j
                  j                  j                  | j                  fi «       t        j                  j                  d «      S ©Nrk   )r:   r(   rL   r—   r1   r’   r“   r”   r•   r   rD   rE   rO   s      r'   rQ   z.GradInplaceRequiresGradCtxManagerVariable.exitØ   s`   € Ø�
‰
×ÑÔØ
�	‰	×ÑØÜ�H‰H×Ñ×AÑAØ�_‰_ÐØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r)   Nrn   ©r,   r-   r.   r/   ÚstaticmethodrE   rH   rQ   r4   r)   r'   r‹   r‹   »   s!   „ Ù-àò
ó ð
ò7ô$7r)   r‹   c                   ó`   — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
d„ Zdd„Zy)Ú%JvpIncrementNestingCtxManagerVariablez5represents torch.func.jvp increment/decrement nestingc                 ó"   — t        dd d dœ|¤Ž}|S r�   )rž   ©rG   r?   Úvars      r'   rE   z,JvpIncrementNestingCtxManagerVariable.createí   s(   € ä3ð 
ØØñ
ð ñ
ˆð
 ˆ
r)   c                 ó~  — t        | j                  «       t        j                  j                  j                  «       }| j                  |d„ «       |j                  j                  dt        j                  j                  j                  di «      | j                  _        t        j                  j                  |«      S )Nc                  óR   — t         j                  j                  j                  «       S r$   )r1   r“   Úeager_transformsÚexit_jvp_nestingr4   r)   r'   r[   z=JvpIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>ú   s   € œ×(Ñ(×9Ñ9×JÑJÓL€ r)   rk   r4   )r   Ú_guards_singletonr1   r“   r¤   Úenter_jvp_nestingrC   rL   r—   r’   Ú_jvp_increment_nestingr:   r"   r   rD   rE   )r&   rG   Ú	jvp_levels      r'   rH   z+JvpIncrementNestingCtxManagerVariable.enterö   s�   € Ü�d×,Ñ,Ô-Ü×$Ñ$×5Ñ5×GÑGÓIˆ	Ø×ÑØÑLô	
ð Ÿ9™9×0Ñ0ØÜ�H‰H×Ñ×6Ñ6ØØó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°Ó;Ð;r)   c                 óô   — | j                   j                  «        |j                  j                  dt        j
                  j                  j                  di «       t        j                  j                  d «      S ©Nrk   r4   )r:   r(   rL   r—   r1   r’   r“   Ú_jvp_decrement_nestingr   rD   rE   rO   s      r'   rQ   z*JvpIncrementNestingCtxManagerVariable.exit  sV   € Ø�
‰
×ÑÔØ
�	‰	×ÑØœUŸX™X×0Ñ0×GÑGÈÈRô	
ô ×)Ñ)×0Ñ0°Ó6Ð6r)   Nrn   ©r,   r-   r.   r/   r	   r   r   ÚFUNCTORCH_STACK_MATCHr¦   rœ   rE   rH   rQ   r4   r)   r'   rž   rž   ã   s:   „ Ù?ñ Ñ/Ó1°<×3UÑ3UÓVÐàòó ðò<ô7r)   rž   c                   ó0   — e Zd ZdZedd„«       Zd„ Zdd„Zy)ÚSetFwdGradEnabledContextManagerzWrepresents torch.autograd.forward_ad._set_fwd_grad_enabled() to enable/disable fwd gradc                 ó   — t        d|d dœ|¤ŽS r�   )r°   r�   s      r'   rE   z&SetFwdGradEnabledContextManager.create  s$   € ä.ð 
Ø'Øñ
ð ñ
ð 	
r)   c                 ó˜  ‡ — ‰ j                   \  }t        j                  j                  «       ‰ _        t        j                  j                  |«       ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j
                  |fi «      ‰ j                  _
        t        j                  j                  d «      S )Nc                  óV   •— t         j                  j                  ‰ j                  «      S r$   )r1   r’   Ú_set_fwd_grad_enabledr•   r%   s   €r'   r[   z7SetFwdGradEnabledContextManager.enter.<locals>.<lambda>  s   ø€ ”E—H‘H×2Ñ2°4·?±?ÓC€ r)   rk   )r8   r1   r’   Ú_is_fwd_grad_enabledr•   r´   rC   rL   r—   r:   r"   r   rD   rE   )r&   rG   Úmodes   `  r'   rH   z%SetFwdGradEnabledContextManager.enter  s˜   ø€ Ø×#Ñ#‰ˆÜŸ(™(×7Ñ7Ó9ˆŒÜ�‰×&Ñ& tÔ,Ø×ÑØÛCô	
ð Ÿ9™9×0Ñ0ØÜ�H‰H×*Ñ*ØˆGØó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°Ó6Ð6r)   c                 óö   — | j                   j                  «        |j                  j                  dt        j
                  j                  | j                  fi «       t        j                  j                  d «      S rš   )r:   r(   rL   r—   r1   r’   r´   r•   r   rD   rE   rO   s      r'   rQ   z$SetFwdGradEnabledContextManager.exit'  sZ   € Ø�
‰
×ÑÔØ
�	‰	×ÑØÜ�H‰H×*Ñ*Ø�_‰_ÐØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r)   Nrn   r›   r4   r)   r'   r°   r°     s!   „ Ùaàò
ó ð
ò7ô 7r)   r°   c                   ó`   — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
d„ Zdd„Zy)ÚDualLevelContextManagerz;Represents torch.autograd.forward_ad.dual_level ctx managerc                 ó   — t        dd d dœ|¤ŽS r�   )r¹   )rG   r?   s     r'   rE   zDualLevelContextManager.create7  s$   € ä&ð 
ØØñ
ð ñ
ð 	
r)   c                 óŽ  ‡ — t        ‰ j                  «       t        j                  j                  j                  «       ‰ _        ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j                  di «      ‰ j                  _        t        j                  j!                  ‰ j                  «      S )Nc                  ól   •— t         j                  j                  j                  ‰ j                  ¬«      S )N)Úlevel)r1   ÚautogradÚ
forward_adÚexit_dual_levelÚ	new_levelr%   s   €r'   r[   z/DualLevelContextManager.enter.<locals>.<lambda>C  s#   ø€ œŸ™×1Ñ1×AÑAÈÏÉÐAÓW€ r)   rk   r4   )r   r¦   r1   r¾   r¿   Úenter_dual_levelrÁ   rC   rL   r—   r’   Ú_enter_dual_levelr:   r"   r   rD   rE   rF   s   ` r'   rH   zDualLevelContextManager.enter?  s�   ø€ Ü�d×,Ñ,Ô-ÜŸ™×2Ñ2×CÑCÓEˆŒØ×ÑØÓWô	
ð Ÿ9™9×0Ñ0ØÜ�H‰H×&Ñ&ØØó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°·±Ó@Ð@r)   c                 óö   — | j                   j                  «        |j                  j                  dt        j
                  j                  | j                  fi «       t        j                  j                  d «      S rš   )r:   r(   rL   r—   r1   r’   Ú_exit_dual_levelrÁ   r   rD   rE   rO   s      r'   rQ   zDualLevelContextManager.exitM  sZ   € Ø�
‰
×ÑÔØ
�	‰	×ÑØÜ�H‰H×%Ñ%Ø�^‰^ÐØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r)   Nrn   )r,   r-   r.   r/   r	   r   r   Ú
DUAL_LEVELr¦   rœ   rE   rH   rQ   r4   r)   r'   r¹   r¹   2  s9   „ ÙEáÑ/Ó1°<×3JÑ3JÓKÐàò
ó ð
òAô7r)   r¹   c                   ó`   — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
d„ Zdd„Zy)Ú&GradIncrementNestingCtxManagerVariablez6represents torch.func.grad increment/decrement nestingc                 ó"   — t        dd d dœ|¤Ž}|S r�   )rÈ   r    s      r'   rE   z-GradIncrementNestingCtxManagerVariable.createb  s(   € ä4ð 
ØØñ
ð ñ
ˆð
 ˆ
r)   c                 ó~  — t        | j                  «       t        j                  j                  j                  «       }| j                  |d„ «       |j                  j                  dt        j                  j                  j
                  di «      | j                  _
        t        j                  j                  |«      S )Nc                  óR   — t         j                  j                  j                  «       S r$   )r1   r’   r“   Ú_grad_decrement_nestingr4   r)   r'   r[   z>GradIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>n  ó   € ¬%¯(©(×*=Ñ*=×*UÑ*UÓ*W€ r)   rk   r4   )r   r¦   r1   r’   r“   Ú_grad_increment_nestingrC   rL   r—   r:   r"   r   rD   rE   )r&   rG   Ú
grad_levels      r'   rH   z,GradIncrementNestingCtxManagerVariable.enterk  s‰   € Ü�d×,Ñ,Ô-Ü—X‘X×(Ñ(×@Ñ@ÓBˆ
Ø×Ñ˜bÑ"WÔXØŸ9™9×0Ñ0ØÜ�H‰H×Ñ×7Ñ7ØØó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°Ó<Ð<r)   c                 óô   — | j                   j                  «        |j                  j                  dt        j
                  j                  j                  di «       t        j                  j                  d «      S r«   )r:   r(   rL   r—   r1   r’   r“   rÌ   r   rD   rE   rO   s      r'   rQ   z+GradIncrementNestingCtxManagerVariable.exitw  óV   € Ø�
‰
×ÑÔØ
�	‰	×ÑØœUŸX™X×0Ñ0×HÑHÈ"Èbô	
ô ×)Ñ)×0Ñ0°Ó6Ð6r)   Nrn   r­   r4   r)   r'   rÈ   rÈ   X  s:   „ Ù@ñ Ñ/Ó1°<×3UÑ3UÓVÐàòó ðò
=ô7r)   rÈ   c                   óB   ‡ — e Zd ZdZedd„«       Zdˆ fd„Zd„ Zd„ Zˆ xZ	S )ÚCatchWarningsCtxManagerVariablez'Delay a call to warnings.catch_warningsc                 ó   — t        |d d ¬«      S )N)Úcatch_warnings_argsr8   r9   )rÓ   )rG   rÕ   s     r'   rE   z&CatchWarningsCtxManagerVariable.create‚  s   € ä.Ø 3ØØô
ð 	
r)   c                 ó`   •— t        |t        «      sJ |«       ‚t        ‰| �  di |¤Ž || _        y r<   )rh   Údictr=   r>   rÕ   )r&   rÕ   r?   r@   s      €r'   r>   z(CatchWarningsCtxManagerVariable.__init__Š  s2   ø€ ÜÐ-¬tÔ4ÐIÐ6IÓIÐ4Ü‰ÑÑ"˜6Ò"Ø#6ˆÕ r)   c                 ó4  ‡— | j                   j                  «       D ��ci c]  \  }}||j                  «       “Œ }}}t        j                  di |¤ŽŠ| j                  |ˆfd„«       t        j                  j                  ‰j                  «       «      S c c}}w )Nc                  ó*   •— ‰ j                  d d d «      S r$   )r‡   )Úctx_vals   €r'   r[   z7CatchWarningsCtxManagerVariable.enter.<locals>.<lambda>”  s   ø€ ¨'×*:Ñ*:¸4ÀÀtÓ*L€ r)   r4   )
rÕ   ÚitemsÚas_python_constantÚwarningsÚcatch_warningsrC   r   rD   rE   r~   )r&   rG   ÚkÚvr?   rÚ   s        @r'   rH   z%CatchWarningsCtxManagerVariable.enter�  s‰   ø€ à26×2JÑ2J×2PÑ2PÓ2R÷
Ù*.¨!¨QˆAˆq×#Ñ#Ó%Ñ%ð
ˆñ 
ô ×)Ñ)Ñ3¨FÑ3ˆØ×Ñ˜bÓ"LÔMÜ×)Ñ)×0Ñ0°×1BÑ1BÓ1DÓEÐEùó
s   ŸBc                 ó  ‡— ‰j                  ˆfd„«       ‰j                  | j                  j                  «       «       t	        | j                  j                  «       «      }‰j                  ‰j                  t        |«      |d«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )NrÝ   rÞ   )Úload_import_from)Úcgs   €r'   r[   z=CatchWarningsCtxManagerVariable.reconstruct.<locals>.<lambda>˜  s   ø€  ×!4Ñ!4°ZÐAQÓ!R€ r)   F)	r\   ÚforeachrÕ   ÚvaluesÚtupleÚkeysr]   Úcreate_call_function_kwr_   )r&   rä   rè   s    ` r'   ra   z+CatchWarningsCtxManagerVariable.reconstruct—  sg   ø€ Ø
×ÑÓRÔSØ
�
‰
�4×+Ñ+×2Ñ2Ó4Ô5Ü�T×-Ñ-×2Ñ2Ó4Ó5ˆØ
×Ñ˜×3Ñ3´C¸³I¸tÀUÓKÕLr)   rn   rl   )
r,   r-   r.   r/   rœ   rE   r>   rH   ra   rs   rt   s   @r'   rÓ   rÓ     s)   ø„ Ù1àò
ó ð
õ7ò
FöMr)   rÓ   c                   ó`   — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
d„ Zdd„Zy)Ú&VmapIncrementNestingCtxManagerVariablez1represents torch VMap increment/decrement nestingc                 ó"   — t        d|d dœ|¤Ž}|S r�   )rë   )rG   r8   r?   r¡   s       r'   rE   z-VmapIncrementNestingCtxManagerVariable.create¨  s(   € ä4ð 
Ø'Øñ
ð ñ
ˆð
 ˆ
r)   c                 ó¤  — t        | j                  «       | j                  \  }}t        j                  j
                  j                  ||«      }| j                  |d„ «       |j                  j                  dt        j                  j
                  j                  ||fi «      | j                  _        t        j                  j                  |«      S )Nc                  óR   — t         j                  j                  j                  «       S r$   )r1   r’   r“   Ú_vmap_decrement_nestingr4   r)   r'   r[   z>VmapIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>µ  rÍ   r)   rk   )r   r¦   r8   r1   r’   r“   Ú_vmap_increment_nestingrC   rL   r—   r:   r"   r   rD   rE   )r&   rG   Ú
batch_sizeÚ
randomnessÚ
vmap_levels        r'   rH   z,VmapIncrementNestingCtxManagerVariable.enter±  s¢   € Ü�d×,Ñ,Ô-Ø!%×!3Ñ!3Ñˆ
�JÜ—X‘X×(Ñ(×@Ñ@ÀÈZÓXˆ
Ø×Ñ˜bÑ"WÔXØŸ9™9×0Ñ0ØÜ�H‰H×Ñ×7Ñ7Ø˜Ð$Øó	
ˆ�
‰
Ôô ×)Ñ)×0Ñ0°Ó<Ð<r)   c                 óô   — | j                   j                  «        |j                  j                  dt        j
                  j                  j                  di «       t        j                  j                  d «      S r«   )r:   r(   rL   r—   r1   r’   r“   rï   r   rD   rE   rO   s      r'   rQ   z+VmapIncrementNestingCtxManagerVariable.exit¾  rÑ   r)   Nrn   r­   r4   r)   r'   rë   rë   ž  s:   „ Ù;ñ Ñ/Ó1°<×3UÑ3UÓVÐàòó ðò=ô7r)   rë   c                   ó¨   ‡ — e Zd ZdZ e e«       ej                  «      Ze	d
dd„«       Z
	 d	 dˆ fd„Zd„ Zdd„Z	 	 	 	 	 	 dˆ fd„Zdd„Zd„ Zd	„ Zˆ xZS )ÚGradModeVariablez6represents torch.{no_grad,enable_grad,set_grad_mode}()c                 ó†   — t        d|gt        j                  «       gdœ|¤Ž}|r|j                  | |j                  «       |S r�   )rö   r1   Úis_grad_enabledrB   r8   )rG   Útarget_valueÚinitializedr?   r¡   s        r'   rE   zGradModeVariable.createË  sM   € äð 
Ø'˜.Ü!×1Ñ1Ó3Ð4ñ
ð ñ
ˆñ
 Ø�N‰N˜2˜s×0Ñ0Ô1Øˆ
r)   c                 óT   •— t        ‰| �  d||dœ|¤Ž t        | j                  «       y r�   ©r=   r>   r   r¦   )r&   r8   r9   rú   r?   r@   s        €r'   r>   zGradModeVariable.__init__Ö  s4   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ô 	�d×,Ñ,Õ-r)   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S r$   ©rB   r8   r   rD   rE   rF   s     r'   rH   zGradModeVariable.enterÞ  ó-   € Ø�‰˜˜D×.Ñ.Ô/Ü×)Ñ)×0Ñ0°Ó6Ð6r)   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S r$   ©rB   r9   r   rD   rE   rO   s      r'   rQ   zGradModeVariable.exitâ  ó-   € Ø�‰˜˜D×/Ñ/Ô0Ü×)Ñ)×0Ñ0°Ó6Ð6r)   c                 ó^   •— | j                  || j                  «       t        ‰| �  |||«      S r$   ©rB   r9   r=   rk   ©r&   rG   rP   r?   r@   s       €r'   rk   zGradModeVariable.call_functionæ  ó-   ø€ ð 	�‰˜˜D×/Ñ/Ô0Ü‰wÑ$ R¨¨vÓ6Ð6r)   c                 ó
  — t        |«      dk(  sJ ‚|d   }t        j                  «       |k7  rW|j                  j	                  dt        j
                  j                  |fi «       t        j
                  j                  |«       y y ©Nr   r   rk   )r_   r1   rø   rL   r—   r’   Ú_set_grad_enabled©r&   rG   ræ   rx   s       r'   rB   zGradModeVariable._call_funcï  sn   € Ü�6‹{˜aÒÐÐØ�q‘	ˆä× Ñ Ó" eÒ+Ø�I‰I×!Ñ!Ø¤§¡×!;Ñ!;¸e¸XÀrôô �H‰H×&Ñ& uÕ-ð	 ,r)   c                  ó   — y©Nr1   r4   r%   s    r'   rT   zGradModeVariable.module_nameù  ó   € Ør)   c                  ó   — y)NÚset_grad_enabledr4   r%   s    r'   rU   zGradModeVariable.fn_nameü  s   € Ø!r)   )Frn   )NTrl   ©rG   r   rP   rp   r?   rq   )r,   r-   r.   r/   r	   r   r   Ú	GRAD_MODEr¦   rœ   rE   r>   rH   rQ   rk   rB   rT   rU   rs   rt   s   @r'   rö   rö   Æ  s|   ø„ Ù@áÑ/Ó1°<×3IÑ3IÓJÐàóó ðð ?Cð.à	õ.ò7ó7ð7à#ð7ð &ð7ð -õ	7ó.òö"r)   rö   c                   óR   ‡ — e Zd Zedd„«       Z	 d	 d	ˆ fd„Zdd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )
ÚInferenceModeVariablec                 óH   — t        |gfdt        j                  «       i|¤Ž}|S )Nr9   )r  r1   Úis_inference_mode_enabled©rG   rù   r?   r¡   s       r'   rE   zInferenceModeVariable.create  s1   € ä#ØˆNñ
Ü+0×+JÑ+JÓ+Lð
ØPVñ
ˆð ˆ
r)   c                 ód   •— |€t        j                  «       }t        ‰| �  d||dœ|¤Ž || _        y r�   )r1   r  r=   r>   r8   ©r&   r8   r9   r?   r@   s       €r'   r>   zInferenceModeVariable.__init__  sB   ø€ ð Ð!ä"×<Ñ<Ó>ˆNÜ‰Ñð 	
Ø'¸ñ	
ØJPò	
ð +ˆÕr)   c                 óâ   — | j                   j                  «        |j                  j                  dt        j
                  j                  j                  | j                   j                  fi «       y rš   )	r:   r+   rL   r—   r1   r¾   Ú	grad_modeÚ_exit_inference_moder"   rO   s      r'   rQ   zInferenceModeVariable.exit  sM   € Ø�
‰
×!Ñ!Ô#Ø
�	‰	×ÑØÜ�N‰N×$Ñ$×9Ñ9Ø�Z‰Z×ÑÐØõ		
r)   c                 óH  ‡— t        j                  j                  j                  | j                  Ž Š| j                  |ˆfd„«       |j                  j                  dt         j                  j                  j                  g | j                  ¢­i «      | j                  _	        y )Nc                  óV   •— t         j                  j                  j                  ‰ «      S r$   )r1   r¾   r  r  ©Úctxs   €r'   r[   z-InferenceModeVariable.enter.<locals>.<lambda>"  s   ø€ œŸ™×0Ñ0×EÑEÀcÓJ€ r)   rk   )
r1   r¾   r  Ú_enter_inference_moder8   rC   rL   r—   r:   r"   ©r&   rG   r  s     @r'   rH   zInferenceModeVariable.enter  s{   ø€ Ü�n‰n×&Ñ&×<Ñ<¸d×>PÑ>PÐQˆØ×ÑØÓJô	
ð Ÿ9™9×0Ñ0ØÜ�N‰N×$Ñ$×:Ñ:Ø"ˆd× Ñ Ñ"Øó	
ˆ�
‰
Õr)   c                  ó   — yr  r4   r%   s    r'   rT   z!InferenceModeVariable.module_name+  r  r)   c                  ó   — y)NÚinference_moder4   r%   s    r'   rU   zInferenceModeVariable.fn_name.  s   € Ør)   rn   r$   rl   ©r,   r-   r.   rœ   rE   r>   rQ   rH   rT   rU   rs   rt   s   @r'   r  r     s=   ø„ Øòó ðð ð+ð
 
õ+ó
ò

òö r)   r  c                   óV   ‡ — e Zd ZdZedd„«       Z	 d		 d
ˆ fd„Zdd„Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚCUDADeviceVariablezrepresents torch.cuda.devicec                 ób   — t        dt        j                  j                  |d¬«      gd dœ|¤Ž}|S )NT)ÚoptionalrŽ   r4   )r'  r1   ÚcudaÚ_get_device_index)rG   Údevicer?   r¡   s       r'   rE   zCUDADeviceVariable.create5  s?   € ä ð 
Ü Ÿ:™:×7Ñ7¸ÈÐ7ÓNÐOØñ
ð ñ
ˆð
 ˆ
r)   c                 ó8   •— t        ‰| �  d||dœ|¤Ž || _        y r�   ©r=   r>   r8   r  s       €r'   r>   zCUDADeviceVariable.__init__>  s.   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ð +ˆÕr)   c                 ó
  — | j                   j                  «        |j                  j                  dt        j
                  j                  | j                   j                  fi «       t        j                  j                  d«      S )Nrk   F)r:   r+   rL   r—   r1   r*  Ú_maybe_exchange_devicer"   r   rD   rE   rO   s      r'   rQ   zCUDADeviceVariable.exitI  s`   € Ø�
‰
×!Ñ!Ô#Ø
�	‰	×ÑØÜ�J‰J×-Ñ-Ø�Z‰Z×ÑÐØô		
ô ×)Ñ)×0Ñ0°Ó7Ð7r)   c                 ó   ‡— t        j                  j                  | j                  Ž Š| j	                  |ˆfd„«       |j
                  j                  dt         j                  j                  g | j                  ¢­i «      | j                  _        y )Nc                  óB   •— t         j                  j                  ‰ «      S r$   )r1   r*  r0  )Úprev_idxs   €r'   r[   z*CUDADeviceVariable.enter.<locals>.<lambda>U  s   ø€ ¬%¯*©*×*KÑ*KÈHÓ*U€ r)   rk   )	r1   r*  Ú_exchange_devicer8   rC   rL   r—   r:   r"   )r&   rG   r3  s     @r'   rH   zCUDADeviceVariable.enterS  sj   ø€ Ü—:‘:×.Ñ.°×0BÑ0BÐCˆØ×Ñ˜bÓ"UÔVØŸ9™9×0Ñ0ØÜ�J‰J×'Ñ'Ø"ˆd× Ñ Ñ"Øó	
ˆ�
‰
Õr)   c                  ó   — y)Nz
torch.cudar4   r%   s    r'   rT   zCUDADeviceVariable.module_name]  ó   € Ør)   c                  ó   — y)Nr,  r4   r%   s    r'   rU   zCUDADeviceVariable.fn_name`  s   € Ør)   rn   r$   rl   )r,   r-   r.   r/   rœ   rE   r>   rQ   rH   rT   rU   rs   rt   s   @r'   r'  r'  2  s@   ø„ Ù&àòó ðð ð	+ð
 
õ	+ó8ò
òör)   r'  c                   óv   ‡ — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
ddˆ fd„Zd„ Zdd„Zˆ xZS )	ÚTorchFunctionDisableVariablez>represents whether torch function overrides are enabled or notc                 ó–   — t        ddg| j                  j                  gdœ|¤Ž}|j                  | dg«       |j	                  | «       |S )NFrŽ   r4   )r9  rL   Útorch_function_enabledrB   rC   r    s      r'   rE   z#TorchFunctionDisableVariable.createi  sU   € ä*ð 
Ø ˜'ØŸI™I×<Ñ<Ð=ñ
ð ñ
ˆð 	�‰�r˜E˜7Ô#Ø×Ñ˜RÔ Øˆ
r)   c                 óT   •— t        ‰| �  d||dœ|¤Ž t        | j                  «       y r�   rü   r  s       €r'   r>   z%TorchFunctionDisableVariable.__init__u  ó2   ø€ Ü‰Ñð 	
Ø'¸ñ	
ØJPò	
ô 	�d×,Ñ,Õ-r)   c                 ó@   — t         j                  j                  d «      S r$   ©r   rD   rE   rF   s     r'   rH   z"TorchFunctionDisableVariable.enter{  ó   € Ü×)Ñ)×0Ñ0°Ó6Ð6r)   c                 ó`   — t        |«      dk(  sJ ‚|j                  j                  |d   «       y rg   )r_   rL   Úset_torch_function_state)r&   rG   ræ   s      r'   rB   z'TorchFunctionDisableVariable._call_func~  s*   € Ü�6‹{˜aÒÐÐØ
�	‰	×*Ñ*¨6°!©9Õ5r)   rn   r$   rl   )r,   r-   r.   r/   r	   r   r   ÚTORCH_FUNCTION_STATEr¦   rœ   rE   r>   rH   rB   rs   rt   s   @r'   r9  r9  d  s>   ø„ ÙHáÑ/Ó1°<×3TÑ3TÓUÐàò	ó ð	ö.ò7÷6r)   r9  c                   ó‚   ‡ — e Zd ZdZ e e«       ej                  «      Ze	dd„«       Z
d	d
ˆ fd„Zd„ Zdd„Zd„ Zd„ Zˆ xZS )ÚDeterministicAlgorithmsVariablezVrepresents torch.{are_deterministic_algorithms_enabled,use_deterministic_algorithms}()c                 ó’   — t        d|gt        j                  «       gdœ|¤Ž}|j                  | |g«       |j	                  | «       |S r�   )rE  r1   Ú$are_deterministic_algorithms_enabledrB   rC   r  s       r'   rE   z&DeterministicAlgorithmsVariable.createŠ  sT   € ä-ð 
Ø'˜.Ü!×FÑFÓHÐIñ
ð ñ
ˆð
 	�‰�r˜L˜>Ô*Ø×Ñ˜RÔ Øˆ
r)   c                 óT   •— t        ‰| �  d||dœ|¤Ž t        | j                  «       y r�   rü   r  s       €r'   r>   z(DeterministicAlgorithmsVariable.__init__•  r=  r)   c                 ó@   — t         j                  j                  d «      S r$   r?  rF   s     r'   rH   z%DeterministicAlgorithmsVariable.enter›  r@  r)   c                 óÜ   — t        |«      dk(  sJ ‚|d   }|j                  j                  dt        j                  j
                  |fi «      f t        j                  j                  |«       y r  )r_   rL   r—   r1   r’   Ú_set_deterministic_algorithmsr
  s       r'   rB   z*DeterministicAlgorithmsVariable._call_funcž  s]   € Ü�6‹{˜aÒÐÐØ�q‘	ˆØ
�	‰	×ÑØœUŸX™X×CÑCÀeÀXÈró	
ñ 	ô 	�‰×.Ñ.¨uÕ5r)   c                  ó   — yr  r4   r%   s    r'   rT   z+DeterministicAlgorithmsVariable.module_name¦  r  r)   c                  ó   — y)NÚuse_deterministic_algorithmsr4   r%   s    r'   rU   z'DeterministicAlgorithmsVariable.fn_name©  s   € Ø-r)   rn   r$   rl   )r,   r-   r.   r/   r	   r   r   ÚDETERMINISTIC_ALGORITHMSr¦   rœ   rE   r>   rH   rB   rT   rU   rs   rt   s   @r'   rE  rE  ƒ  sL   ø„ Ù`áÙÓ˜\×BÑBóÐð òó ðö.ò7ó6òö.r)   rE  c                   óR   ‡ — e Zd ZdZedd„«       Zd	d
ˆ fd„Zd„ Zdd„Zd„ Z	d„ Z
ˆ xZS )Ú!DisabledSavedTensorsHooksVariablez;represents torch.autograd.graph.disable_saved_tensors_hook.c                 óº   — t        d|gt        j                  j                  j	                  «       gdœ|¤Ž}|j                  | |g«       |j                  | «       |S r�   )rQ  r1   r’   Ú	_autogradÚ/_saved_tensors_hooks_get_disabled_error_messagerB   rC   r  s       r'   rE   z(DisabledSavedTensorsHooksVariable.create°  s`   € ä/ð 
Ø'˜.ä—‘×"Ñ"×RÑRÓTðñ
ð
 ñ
ˆð 	�‰�r˜L˜>Ô*Ø×Ñ˜RÔ Øˆ
r)   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y r�   ©r=   r>   r  s       €r'   r>   z*DisabledSavedTensorsHooksVariable.__init__½  s"   ø€ Ü‰Ñð 	
Ø'¸ñ	
ØJPó	
r)   c                 ó@   — t         j                  j                  d «      S r$   r?  rF   s     r'   rH   z'DisabledSavedTensorsHooksVariable.enterÂ  r@  r)   c                 óØ  — t        |«      dk(  sJ ‚|d   }|�k|j                  j                  dt        j                  j
                  j                  |fi «       t        j                  j
                  j                  |«       y |j                  j                  dt        j                  j
                  j                  di «       t        j                  j
                  j                  «        y )Nr   r   rk   r4   )r_   rL   r—   r1   r’   rS  Ú_saved_tensors_hooks_disableÚ_saved_tensors_hooks_enabler
  s       r'   rB   z,DisabledSavedTensorsHooksVariable._call_funcÅ  s¶   € Ü�6‹{˜aÒÐÐØ�q‘	ˆØÐð �I‰I×!Ñ!ØÜ—‘×"Ñ"×?Ñ?Ø�Øô	ô �H‰H×Ñ×;Ñ;¸EÕBð �I‰I×!Ñ!Ø¤§¡×!3Ñ!3×!OÑ!OÐQSÐUWôô �H‰H×Ñ×:Ñ:Õ<r)   c                  ó   — y)Nztorch.autograd.graphr4   r%   s    r'   rT   z-DisabledSavedTensorsHooksVariable.module_nameÚ  s   € Ø%r)   c                  ó   — y)NÚdisable_saved_tensors_hooksr4   r%   s    r'   rU   z)DisabledSavedTensorsHooksVariable.fn_nameÝ  s   € Ø,r)   rn   r$   rl   )r,   r-   r.   r/   rœ   rE   r>   rH   rB   rT   rU   rs   rt   s   @r'   rQ  rQ  ­  s1   ø„ ÙEàò
ó ð
ö
ò
7ó=ò*&ö-r)   rQ  c                   óL   ‡ — e Zd Zed„ «       Zddˆ fd„Zd	d„Zd„ Zd„ Zd„ Z	ˆ xZ
S )
ÚAutocastModeVariablec                 ó0  — | t         j                  j                  j                  t         j                  j                  j                  t         j
                  j                  j                  fv sJ ‚ t        j                  | «      j                  |i |¤Ž}|j                  «        g }|j                  «        dD ]Ì  }|dk(  ru| t         j                  j                  j                  t         j
                  j                  j                  fv r+| t         j                  j                  j                  u rdnd}n|j                  |   }t        |t        «      r |j                  |j                  «       «       Œ¼|j                  |«       ŒÎ t!        |fdd i|¤Ž}|S )N)Údevice_typeÚdtyper˜   Úcache_enabledra  r*  Úcpur9   )r1   ÚampÚautocast_modeÚautocastr*  rd  ÚinspectÚ	signatureÚbindÚapply_defaultsÚclearÚ	argumentsrh   r   ÚappendrÜ   r_  )ÚfuncrP   r?   Ú
bound_argsr8   ÚkeyÚargr¡   s           r'   rE   zAutocastModeVariable.createâ  sI  € àÜ�I‰I×#Ñ#×,Ñ,Ü�J‰J�N‰N×#Ñ#Ü�I‰I�M‰M×"Ñ"ð
ñ 
ð 	
ð 
ð 2”W×&Ñ& tÓ,×1Ñ1°4ÐB¸6ÑBˆ
Ø×!Ñ!Ô#ØˆØ�‰ŒàGò 	*ˆCØ�mÒ#¨Ü—
‘
—‘×'Ñ'Ü—	‘	—‘×&Ñ&ð1ñ )ð !%¬¯
©
¯©×(?Ñ(?Ñ ?‘fÀU‘à ×*Ñ*¨3Ñ/�Ü˜#œÔ/Ø×$Ñ$ S×%;Ñ%;Ó%=Õ>à×$Ñ$ SÕ)ð	*ô # =ÑPÀÐPÈÑPˆØˆ
r)   c                 ó8   •— t        ‰| �  d||dœ|¤Ž || _        y r�   r.  r  s       €r'   r>   zAutocastModeVariable.__init__  s,   ø€ Ü‰Ñð 	
Ø'¸ñ	
ØJPò	
ð +ˆÕr)   c                 óÎ   — | j                   j                  «        |j                  j                  dt        j
                  j                  | j                   j                  fi «       y rš   )r:   r+   rL   r—   r1   re  Ú_exit_autocastr"   rO   s      r'   rQ   zAutocastModeVariable.exit  sD   € Ø�
‰
×!Ñ!Ô#Ø
�	‰	×ÑØœUŸY™Y×5Ñ5¸¿
¹
×8HÑ8HÐ7JÈBõ	
r)   c                 ó   ‡— t        j                  j                  | j                  Ž Š| j	                  |ˆfd„«       |j
                  j                  dt         j                  j                  g | j                  ¢­i «      | j                  _        y )Nc                  óB   •— t         j                  j                  ‰ «      S r$   )r1   re  ru  r  s   €r'   r[   z,AutocastModeVariable.enter.<locals>.<lambda>  s   ø€ ¬%¯)©)×*BÑ*BÀ3Ó*G€ r)   rk   )	r1   re  Ú_enter_autocastr8   rC   rL   r—   r:   r"   r!  s     @r'   rH   zAutocastModeVariable.enter  si   ø€ Ü�i‰i×'Ñ'¨×);Ñ);Ð<ˆØ×Ñ˜bÓ"GÔHØŸ9™9×0Ñ0ØœUŸY™Y×6Ñ6Ð8N¸$×:LÑ:LÑ8NÐPRó
ˆ�
‰
Õr)   c                  ó   — y)Nztorch.amp.autocast_moder4   r%   s    r'   rT   z AutocastModeVariable.module_name  s   € Ø(r)   c                  ó   — y)Nrg  r4   r%   s    r'   rU   zAutocastModeVariable.fn_name  s   € Ør)   r$   rl   rn   r%  rt   s   @r'   r_  r_  á  s.   ø„ Øñó ðö>+ó
ò
ò)ör)   r_  c                   ó@   ‡ — e Zd ZdZddˆ fd„Zd„ Zd	d„Zd„ Zd„ Zˆ xZ	S )
ÚNullContextVariablezË
    This class represents Python contextlib.nullcontext.
    It's used as a placeholder for other context managers that Dynamo doesn't
    support yet, e.g, torch.autograd.profiler.record_function.
    c                 ó(   •— t        ‰| �  dd|i|¤Ž y ©Nr8   r4   rV  )r&   r8   r?   r@   s      €r'   r>   zNullContextVariable.__init__#  s   ø€ Ü‰ÑÑ? }Ð?¸Ó?r)   c                 ó@   — t         j                  j                  d «      S r$   r?  rF   s     r'   rH   zNullContextVariable.enter&  r@  r)   c                 ó@   — t         j                  j                  d «      S r$   r?  rO   s      r'   rQ   zNullContextVariable.exit)  r@  r)   c                  ó   — y)NÚ
contextlibr4   r%   s    r'   rT   zNullContextVariable.module_name,  r6  r)   c                  ó   — y)NÚnullcontextr4   r%   s    r'   rU   zNullContextVariable.fn_name/  s   € Ør)   r$   rl   rn   )
r,   r-   r.   r/   r>   rH   rQ   rT   rU   rs   rt   s   @r'   r|  r|    s"   ø„ ñö@ò7ó7òör)   r|  c                   óB   ‡ — e Zd Zedd„«       Zddˆ fd„Zd„ Zdd„Zˆ xZS )ÚStreamContextVariablec           
      óÖ   — ddl m} t        |j                  «      j                  } |t
        | | j                  j                  d|di «      «      }t        d|g|g|j                  dœ|¤ŽS )Nr   ©Úwrap_fx_proxy_clsrk   r$   )r8   r9   r,  r4   )	Úbuilderr‰  r   r,  Úcurrent_streamÚStreamVariablerL   Úcreate_proxyr†  )rG   rù   r?   r‰  Úcurrent_stream_methodr‹  s         r'   rE   zStreamContextVariable.create4  s‚   € å.ä 8Ø×Ñó!
ç
‰.ð 	ñ +ÜØØ�I‰I×"Ñ"ØØ%ØØó	ó	
ˆô %ð 
Ø'˜.Ø*Ð+Ø×&Ñ&ñ
ð ñ	
ð 	
r)   c                 óÈ   •— t        ‰| �  d||dœ|¤Ž || _        t        | j                  «      j                  | _        t        | j                  «      j
                  | _        y r�   )r=   r>   r,  r   Ú
set_streamÚ_set_stream_by_idÚset_stream_id)r&   r8   r,  r9   r?   r@   s        €r'   r>   zStreamContextVariable.__init__L  sX   ø€ Ü‰Ñð 	
Ø'¸ñ	
ØJPò	
ð ˆŒÜ2°4·;±;Ó?×JÑJˆŒÜ5°d·k±kÓB×TÑTˆÕr)   c                 ó  ‡ — ‰ j                   d   j                  «       �E|j                  j                  d‰ j                  ‰ j                   d   j                  «       fi «       nb‰ j                   d   j
                  }|j                  j                  d‰ j                  |j                  |j                  |j                  fi «       ‰ j	                  ‰ j                   d   j
                  «       ‰ j                  |ˆ fd„«       y )Nr   rk   c                  óT   •— ‰ j                  ‰ j                  d   j                  «      S )Nr   )r�  r9   rx   r%   s   €r'   r[   z-StreamContextVariable.enter.<locals>.<lambda>g  s!   ø€ ¨$¯/©/¸$×:MÑ:MÈaÑ:P×:VÑ:VÓ*W€ r)   )r8   Úas_proxyrL   r�  r�  rx   r’  Ú	stream_idÚdevice_indexra  rC   )r&   rG   Ústreams   `  r'   rH   zStreamContextVariable.enterT  sÛ   ø€ à×Ñ˜aÑ ×)Ñ)Ó+Ð7Ø�I‰I×"Ñ"ØØ—‘Ø×#Ñ# AÑ&×/Ñ/Ó1Ð3Øõ	ð ×'Ñ'¨Ñ*×0Ñ0ˆFØ�I‰I×"Ñ"ØØ×"Ñ"Ø×!Ñ! 6×#6Ñ#6¸×8JÑ8JÐKØô	ð 	�‰˜×*Ñ*¨1Ñ-×3Ñ3Ô4Ø×Ñ˜bÓ"WÕXr)   c                 óÀ   — |j                   j                  d| j                  | j                  d   j	                  «       fi «       | j
                  j                  «        y )Nrk   r   )rL   r�  r�  r9   r•  r:   r+   rO   s      r'   rQ   zStreamContextVariable.exiti  sM   € Ø
�	‰	×ÑØØ�O‰OØ× Ñ  Ñ#×,Ñ,Ó.Ð0Øô		
ð 	�
‰
×!Ñ!Õ#r)   rn   r$   rl   )	r,   r-   r.   rœ   rE   r>   rH   rQ   rs   rt   s   @r'   r†  r†  3  s&   ø„ Øò
ó ð
ö.UòY÷*$r)   r†  c                   óH   ‡ — e Zd ZdZed„ «       Zdˆ fd„Zd„ Zdd„Zd„ Z	ˆ xZ
S )	ÚPreserveVersionContextVariablez?
    Wraps torch.autograd._unsafe_preserve_version_counter
    c                 ó4   ‡ — t        j                  ˆ fd„«      S )Nc                 ó<   •— t        | | j                  ‰d«      «      S )NÚ_version)r›  Úvar_getattr)ÚtensorrG   s    €r'   r[   z<PreserveVersionContextVariable.constructor.<locals>.<lambda>{  s    ø€ Ô9ØØ×"Ñ" 2 zÓ2ó€ r)   )r   ÚLambdaVariable)rG   s   `r'   Úconstructorz*PreserveVersionContextVariable.constructorx  s   ø€ ä×'Ñ'óó
ð 	
r)   c                 ód   •— |j                  dd «       t        ‰| �  di |¤Ž || _        || _        y r~  )Ú
setdefaultr=   r>   r   Úprev_version)r&   r   r¥  r?   r@   s       €r'   r>   z'PreserveVersionContextVariable.__init__�  s2   ø€ Ø×Ñ˜/¨4Ô0Ü‰ÑÑ"˜6Ò"ØˆŒØ(ˆÕr)   c                  ó   — y r$   r4   rF   s     r'   rH   z$PreserveVersionContextVariable.enter‡  s   € Ør)   c                 ó†   — ddl m} t        j                  |«      j	                  || j
                  | j                  gi «      S )Nr
   )Ú_unsafe_set_version_counter)Útensor_version_opr¨  r   ÚTorchInGraphFunctionVariablerk   r   r¥  )r&   rG   rP   r¨  s       r'   rQ   z#PreserveVersionContextVariable.exitŠ  s9   € ÝCä×5Ñ5Ø'ó
ç
‰-˜˜TŸ[™[¨$×*;Ñ*;Ð<¸bÓ
Að	Br)   c                 ó   — t        d«       y )Nz@torch.autograd._unsafe_preserve_version_counter with graph break)r   rV   s     r'   ra   z*PreserveVersionContextVariable.reconstruct‘  s   € ÜØNõ	
r)   rl   rn   )r,   r-   r.   r/   rœ   r¢  r>   rH   rQ   ra   rs   rt   s   @r'   r›  r›  s  s1   ø„ ñð ñ
ó ð
õ)òóBö
r)   r›  c                   ó¢   ‡ — e Zd Z e e«       ej                  «      Zed	d„«       Z		 d
	 dˆ fd„Z
d„ Zd	d„Z	 	 	 	 	 	 dˆ fd„Zd	d„Zd„ Zd„ Zˆ xZS )Ú&FSDPParamGroupUseTrainingStateVariablec                 óP   — t        d||g|j                  j                  gdœ|¤Ž}|S )N)Úparam_group_varr8   r9   r4   )r­  rx   Ú_training_state)rG   r¯  rù   r?   r¡   s        r'   rE   z-FSDPParamGroupUseTrainingStateVariable.createš  s<   € ä4ð 
Ø+Ø'˜.Ø+×1Ñ1×AÑAÐBñ
ð ñ	
ˆð ˆ
r)   c                 ób   •— t        ‰| �  d||dœ|¤Ž || _        t        | j                  «       y r�   )r=   r>   r¯  r   r¦   )r&   r¯  r8   r9   r?   r@   s        €r'   r>   z/FSDPParamGroupUseTrainingStateVariable.__init__¤  s<   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ð  /ˆÔÜ�d×,Ñ,Õ-r)   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S r$   rþ   rF   s     r'   rH   z,FSDPParamGroupUseTrainingStateVariable.enter­  rÿ   r)   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S r$   r  rO   s      r'   rQ   z+FSDPParamGroupUseTrainingStateVariable.exit±  r  r)   c                 ó^   •— | j                  || j                  «       t        ‰| �  |||«      S r$   r  r  s       €r'   rk   z4FSDPParamGroupUseTrainingStateVariable.call_functionµ  r  r)   c                 óL  — t        |«      dk(  sJ ‚|d   }| j                  j                  j                  |k7  rl| j                  j	                  |dt
        j                  j                  d«      t        j                  |«      fi «       || j                  j                  _        y y )Nr   r   Ú__setattr__r°  )	r_   r¯  rx   r°  Úcall_methodr   rD   rE   ÚEnumVariabler
  s       r'   rB   z1FSDPParamGroupUseTrainingStateVariable._call_func¾  s™   € Ü�6‹{˜aÒÐÐØ�q‘	ˆØ×Ñ×%Ñ%×5Ñ5¸Ò>Ø× Ñ ×,Ñ,ØØä×.Ñ.×5Ñ5Ð6GÓHÜ×*Ñ*¨5Ó1ðð ôð :?ˆD× Ñ ×&Ñ&Õ6ð ?r)   c                  ó   — y)NzCtorch.distributed._composable.fsdp._fsdp_param_group.FSDPParamGroupr4   r%   s    r'   rT   z2FSDPParamGroupUseTrainingStateVariable.module_nameÍ  s   € ØTr)   c                  ó   — y)NÚuse_training_stater4   r%   s    r'   rU   z.FSDPParamGroupUseTrainingStateVariable.fn_nameÐ  s   € Ø#r)   rn   r$   rl   r  )r,   r-   r.   r	   r   r   ÚFSDP_TRAINING_STATEr¦   rœ   rE   r>   rH   rQ   rk   rB   rT   rU   rs   rt   s   @r'   r­  r­  —  sz   ø„ ÙÑ/Ó1°<×3SÑ3SÓTÐàòó ðð >Bð.à	õ.ò7ó7ð7à#ð7ð &ð7ð -õ	7ó?òUö$r)   r­  c                   ó@   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 dd„Zd„ Zd„ Zˆ xZS )rŒ  c                 ó  •— |�6d|j                   j                  v r|j                   j                  d   |k(  sJ ‚|j                  j                  |j                  k(  sJ d«       ‚t	        ‰| �  di |¤Ž || _        || _        || _        y )NÚexample_valuez.stream value is not equal to the passed devicer4   )ÚnodeÚmetar,  r|   r=   r>   r"   rx   )r&   r"   rx   r,  r?   r@   s        €r'   r>   zStreamVariable.__init__Õ  s~   ø€ ØÐ °E·J±J·O±OÑ!CØ—:‘:—?‘? ?Ñ3°uÒ<Ð<Ð<à�L‰L×Ñ §¡Ò,ð	<à;ó	<Ø,ä‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
Øˆ�r)   c                 ó8  — t        | j                  |«      s
J d|› �«       ‚|dv s
J d|› �«       ‚ddlm} ddlm} |dv r> |j                  j                  d	|g || g|z   |«      ¢­Ž  t        j                  d «      S |d
k(  r@ |t        j                  | |j                  j                  d	|g || g|z   |«      ¢­Ž ¬«      S |dk(  r6 |t        | |j                  j                  d	|g || g|z   |«      ¢­Ž ¬«      S t        | j                  dz   |z   dz   «       y )Nzno stream method found named )Úwait_streamÚsynchronizeÚqueryÚrecord_eventÚ
wait_eventz unsupported stream method r
   ©Úproxy_args_kwargsr   rˆ  )rÃ  rÄ  rÇ  r·  rÅ  ©Ú
target_clsrG   r"   rÆ  z stream method ú unsupported)Úhasattrrx   ÚutilsrÉ  rŠ  r‰  rL   r�  r   rD   ÚEventVariabler   r,  ©r&   rG   ÚnamerP   r?   rÉ  r‰  s          r'   r·  zStreamVariable.call_methodà  sV  € ô �t—z‘z 4Ô(ÐPÐ,IÈ$ÈÐ*PÓPÐ(Øð 
ñ 
ð 	0ð )¨¨Ð/ó	0ð 
õ 	.Ý.àÐ?Ñ?Ø"ˆB�I‰I×"Ñ"Ø˜tðÙ&7¸¸À¹ÀvÓ&Nóô ×-Ñ-¨dÓ3Ð3Ø�WŠ_Ù$Ü$×5Ñ5ØØ,�b—i‘i×,Ñ,Ø! 4ðÙ*;¸T¸FÀT¹MÈ6Ó*Ròôð ð �^Ò#Ù$Ü(ØØ,�b—i‘i×,Ñ,Ø! 4ðÙ*;¸T¸FÀT¹MÈ6Ó*Ròôð ô ˜$Ÿ+™+Ð(9Ñ9¸DÑ@À>ÑQÕRr)   c                 ó   — | j                   S r$   ©r"   r%   s    r'   r•  zStreamVariable.as_proxy  ó   € Ø�z‰zÐr)   c                 óâ   — | j                   rJ ‚d| j                  › �}|j                  j                  j	                  || j
                  «      }|j                  |j                  |d¬«      «       y )NÚ_stream_T©Úadd)r€   r,  rG   rL   Úinstall_global_by_idrx   Úappend_outputÚcreate_load_global©r&   rW   ÚprefixrÑ  s       r'   ra   zStreamVariable.reconstruct  s`   € ð —;’;Ðˆð ˜DŸK™K˜=Ð)ˆØ�z‰z× Ñ ×5Ñ5°f¸d¿j¹jÓIˆØ×Ñ˜g×8Ñ8¸À4Ð8ÓHÕIr)   rl   ©rP   rp   r?   rq   rm   r   ©r,   r-   r.   r>   r·  r•  ra   rs   rt   s   @r'   rŒ  rŒ  Ô  s;   ø„ õ	ð)Sð &ð	)Sð
 -ð)Sð 
ó)SòVöJr)   rŒ  c                   ó@   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 dd„Zd„ Zd„ Zˆ xZS )rÏ  c                 ó°   •— |�6d|j                   j                  v r|j                   j                  d   |k(  sJ ‚t        ‰| �  di |¤Ž || _        || _        y )Nr¿  r4   )rÀ  rÁ  r=   r>   r"   rx   )r&   r"   rx   r?   r@   s       €r'   r>   zEventVariable.__init__  sQ   ø€ ØÐ °E·J±J·O±OÑ!CØ—:‘:—?‘? ?Ñ3°uÒ<Ð<Ð<Ü‰ÑÑ"˜6Ò"ØˆŒ
Øˆ�
r)   c                 óH  — ddl m} ddlm} |dv r> |j                  j
                  d|g || g|z   |«      ¢­Ž  t        j                  d «      S |dk(  r@ |t        j                  | |j                  j
                  d|g || g|z   |«      ¢­Ž ¬«      S t        d	|› d
�«       y )Nr
   rÈ  r   rˆ  )ÚwaitÚrecordrÄ  r·  rÅ  rÊ  zevent method rÌ  )	rÎ  rÉ  rŠ  r‰  rL   r�  r   rD   r   rÐ  s          r'   r·  zEventVariable.call_method%  sµ   € õ 	.Ý.àÐ4Ñ4Ø"ˆB�I‰I×"Ñ"Ø˜tðÙ&7¸¸À¹ÀvÓ&Nóô ×-Ñ-¨dÓ3Ð3Ø�WŠ_Ù$Ü$×5Ñ5ØØ,�b—i‘i×,Ñ,Ø! 4ðÙ*;¸T¸FÀT¹MÈ6Ó*Ròôð ô ˜M¨$¨¨|Ð<Õ=r)   c                 ó   — | j                   S r$   rÓ  r%   s    r'   r•  zEventVariable.as_proxy?  rÔ  r)   c                 óÈ   — | j                   rJ ‚d}|j                  j                  j                  || j                  «      }|j                  |j                  |d¬«      «       y )NÚ_eventTr×  )r€   rG   rL   rÙ  rx   rÚ  rÛ  rÜ  s       r'   ra   zEventVariable.reconstructB  sS   € ð —;’;ÐˆàˆØ�z‰z× Ñ ×5Ñ5°f¸d¿j¹jÓIˆØ×Ñ˜g×8Ñ8¸À4Ð8ÓHÕIr)   rl   rÞ  rß  rt   s   @r'   rÏ  rÏ    s6   ø„ õð>ð &ð	>ð
 -ð>ð 
ó>ò4öJr)   rÏ  c                   ón   ‡ — e Zd Zdhej                  £Zdeeef   ddfˆ fd„Z	 	 	 	 	 	 	 	 dd„Z	d„ Z
ˆ xZS )	ÚWithExitFunctionVariableÚtargetr  rm   Nc                 óp   •— t        ‰| �  di |¤Ž t        |t        t        f«      sJ ‚|| _        || _        y r<   )r=   r>   rh   r6   rv   r  rê  )r&   r  rê  r?   r@   s       €r'   r>   z!WithExitFunctionVariable.__init__R  sC   ø€ ô 	‰ÑÑ"˜6Ò"ÜØÔ)Ô+IÐJô
ð 	
ð 
ð ˆŒØˆ�r)   c                 óD   — |rJ ‚ | j                   j                  |g|¢­Ž S r$   )r  rQ   rj   s       r'   rk   z&WithExitFunctionVariable.call_function_  s&   € ñ ÐˆzØˆt�x‰x�}‰}˜RÐ' $Ò'Ð'r)   c                 ó°  — | j                   j                  |«       |j                  j                  j                  �rt
        j                  dk\  rI|j                  t        d«      «       t
        j                  dk  r|j                  t        dd¬«      «       |j                  | j                   j                  D �cg c]  }|j                  |«      ‘Œ c}«       |j                  t        t        | j                   j                  «      d«      «       |j                  t        | j                  «      «       |j                  t        d«      «       y y c c}w )	N)é   é   Ú	PUSH_NULL)rî  é   ÚSWAPr
   )rr  FÚPOP_TOP)r  rX   rG   rL   Úpartial_convertÚsysÚversion_inforÚ  r   r]   r8   r^   r   r_   r   rê  )r&   rW   r`   s      r'   ra   z$WithExitFunctionVariable.reconstructh  s  € ð 	�‰×!Ñ! 'Ô*Ø�:‰:×Ñ×,Ó,Ü×Ñ 7Ò*Ø×%Ñ%Ô&8¸Ó&EÔFÜ×#Ñ# gÒ-Ø×)Ñ)Ô*<¸VÈÔ*KÔLØ×!Ñ!Ø;?¿8¹8×;QÑ;QÖR°C�×*Ñ*¨3Õ/ÒRôð ×!Ñ!Ü$¤S¨¯©×)?Ñ)?Ó%@À%ÓHôð ×!Ñ!Ô"3°D·K±KÓ"@ÔAØ×!Ñ!Ô"4°YÓ"?Õ@ð -ùò Ss   Â<Ero   )r,   r-   r.   r   rr   r   r6   rv   r>   rk   ra   rs   rt   s   @r'   ré  ré  L  so   ø„ àðà	×	'Ñ	'ð€Nð
àÐ*Ð,JÐJÑKðð
 
õð(à#ð(ð &ð(ð -ð	(ð
 
ó(öAr)   ré  )EÚdataclassesrh  rõ  rÝ   Útypingr   r   r   r   r   r   Útorch._Cr1   Útorch._guardsr	   Ú r   Úbytecode_transformationr   r   r   Údevice_interfacer   Úexcr   r   Úguardsr   r   r€   r   r   Úbaser   Ú	functionsr   r   r   r   r   Úuser_definedr   Útorch._dynamo.symbolic_convertr   Ú	dataclassr    r6   rv   r‹   rž   r°   r¹   rÈ   rÓ   rë   rö   r  r'  r9  rE  rQ  r_  r|  r†  r›  r­  rŒ  rÏ  ré  r4   r)   r'   ú<module>r     s·  ðã Û Û 
Û ß G× Gã Ý å ÷ñ õ
 8ß ,ß 0ß 2Ý !÷õ õ 4ñ ÝDð ×Ñ÷ð ó ðô(E>˜oô E>ôP7Ð%>ô 7ôt%7Ð0Gô %7ôP&7Ð,Cô &7ôR#7Ð&=ô #7ôL#7Ð5ô #7ôL$7Ð-Dô $7ôNMÐ&=ô Mô>%7Ð-Dô %7ôP7"Ð.ô 7"ôt/ Ð3ô / ôd/Ð0ô /ôd6Ð#:ô 6ô>'.Ð&=ô '.ôT1-Ð(?ô 1-ôh8Ð2ô 8ôvÐ1ô ô.=$Ð3ô =$ô@!
Ð%<ô !
ôH:$Ð-Dô :$ôzFJ�_ô FJôR,J�Oô ,Jô^-A˜õ -Ar)   