ó
    Eñi–æ ã                   óF  • % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSKJrJr  SSK	JrJr  SSKJrJrJrJrJrJr  SSKJr  SSKJr  SSKrSS	KJr  SS
KJ r   SSK!J"r"  SSK#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  SSK8J9r9J:r:  SSK;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrD  SSKEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrM  SSKNJOrOJPrPJQrQJRrRJSrS  SSKTJUrUJVrV   SSKWJXrX  \(       a.  SSKZJ[r[  SSK\J]r]J^r^J_r_J`r`  SSKaJbrb  SSKcJdrdJere  SSKfJgrgJhrh  SSKiJjrj  \" S\S\4   S9rkS rlS!rm\n" 1 S"k5      ro\n" S#15      rpS$rq\" 5       rr\\\4   \sS%'    " S& S'\t5      ru\Rì                  S(\<4S) j5       rw " S* S+5      rxS,\S(\x4S- jryS,\S.S/S0\ S-  S1\\   S2\z\{\4   S(\z\{\S4   4S3 jr| SŽS.S/S4\S5\ S-  S(\S4S6 jjr}S.S/S7\z\{\4   S(S4S8 jr~S9S/S7\z\{\S4   S:\	Rþ                  S(S4S; jr€S:\	Rþ                  S<\z\{\4   S=\{S>\�\‚S4   S-  S?\�\   S-  S@\z\{\4   S-  SA\z\{\4   S-  S(\	R                   4SB jrƒ1 SCkr„S.S/SD\‚S5\ S-  S=\{S(\S4
SE jr… " SF SG\S5      r† " SH SI\†5      r‡ " SJ SK\‡5      rˆ " SL SM\†5      r‰ " SN SO\†5      rŠ " SP SQ\S5      r‹ " SR SS\‹5      rŒ " ST SU\†5      r� " SV SW\�5      rŽ " SX SY\‡5      r� " SZ S[\�5      r� " S\ S]\‡5      r‘S.S/SD\S\4   S=\{S1\\S   S2\z\{\S4   S(\S4S^ jr’ " S_ S`\†5      r“ " Sa Sb\“5      r” " Sc Sd\S5      r• " Se Sf\•5      r– " Sg Sh\S5      r— " Si Sj\—5      r˜S(\z\\4   4Sk jr™S.S/SD\S\4   S(\<4Sl jrš " Sm Sn\‡5      r› " So Sp\‡5      rœ " Sq Sr\‡5      r� " Ss St\S5      rž " Su Sv\S5      rŸ " Sw Sx\S5      r SSyKcJ¡r¡J¢r¢J£r£J¤r¤   " Sz S{\¤5      r¥\¥" 5       r¦ " S| S}\S5      r§ " S~ S\S5      r¨ " S€ S�\S5      r© " S‚ Sƒ\S5      rª " S„ S…\S5      r« " S† S‡\‡5      r¬ " Sˆ S‰\‡5      r­ " SŠ S‹\•5      r® " SŒ S�\•5      r¯g! \Y a    SrX GN0f = f)�aŽ  
Function-related variable tracking classes for Dynamo's symbolic execution.

This module contains classes that track different types of functions during graph
compilation, including:
- User-defined functions and methods
- Built-in functions and methods
- Wrapped functions (e.g. from decorators)
- Special function types (e.g. functools.partial)
- Triton kernels and related function types

These classes are responsible for:
- Tracking function calls and their arguments
- Managing function closures and cell variables
- Handling function attributes and special methods
- Maintaining guards for function identity and closure contents
- Supporting function inlining and specialization
- Enabling proper symbolic execution of different function types

The variable trackers here work together with the rest of Dynamo to enable
accurate graph capture while handling Python's various function-related behaviors.
é    N)Ú
namedtuple)ÚCallableÚSequence)ÚCellTypeÚFunctionType)ÚAnyÚcastÚLiteralÚOptionalÚTYPE_CHECKINGÚTypeVar)ÚNever)ÚWeakKeyDictionary)Úget_stack_above_dynamo)ÚSource)Úis_namedtuple_classé   )ÚconfigÚgraph_break_hintsÚ	polyfillsÚ	variables)Úcreate_call_functionÚcreate_rot_nÚis_generator)Úformat_frame_infoÚget_dynamo_observed_exceptionÚhandle_observed_exceptionÚInfiniteGeneratorErrorÚObservedExceptionÚObservedGeneratorExitÚObservedUserStopIterationÚraise_observed_exceptionÚStepUnsupportedÚunimplementedÚUnsupported)ÚGuardBuilderÚinstall_guard)	Ú
AttrSourceÚCellContentsSourceÚClosureSourceÚConstantSourceÚDefaultsSourceÚGetItemSourceÚImportSourceÚSkipGuardSourceÚ
TypeSource)Úcheck_constant_argsÚcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚis_functionÚis_wrapper_or_member_descriptorÚistypeÚ	make_cellé   )Ú#AsPythonConstantNotImplementedErrorÚAttributeMutationNewÚraise_type_error_excÚValueMutationNewÚVariableTracker)ÚCONSTANT_VARIABLE_NONEÚConstantVariable)Ú_fsdp_param_group)Ú	PyCodegen)Ú&InliningGeneratorInstructionTranslatorÚInliningInstructionTranslatorÚInstructionTranslatorÚInstructionTranslatorBase)ÚContextWrappingVariable)ÚTritonGridTypeÚTritonKernelType)ÚBaseListVariableÚListVariable)ÚTensorVariableÚ_F.)Úboundé   é   >   Úis_leafÚ	namespaceÚnone_is_leafrQ   zihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlÚ_spec_cachec                   ó   • \ rS rSrSrg)ÚClosureConversionErroré�   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__rX   ó    Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/variables/functions.pyrV   rV   �   s   † Úr^   rV   Úreturnc            	      óT   • [        [        [        [        S5      S5      S5      S5      $ )NÚtorchÚutilsÚ_pytreeÚSUPPORTED_NODES)r(   r.   rX   r^   r_   Ú!get_pytree_SUPPORTED_NODES_sourcerf   …   s(   € äÜ”:œl¨7Ó3°WÓ=¸yÓIØóð r^   c                   ó8   • \ rS rSrS\SS4S jrS\SS4S jrSrg)ÚFunctionSpecé�   Úfuncr`   Nc                 ó„  • UR                   nUR                  nUR                  U l        UR                  U l        UR                  U l        US U R                   U l        X0R                  U R
                   U l	        U R                  U R                  -   U l
        X0R
                  U R
                  U R                  -    U l        U R
                  U R                  -   nUR                  [        -  (       a  X4   OS U l        X@R                  (       a  SOS-  nUR                  [        -  (       a
  X4   U l        g S U l        g ©Nr9   r   )Ú__code__Úco_varnamesÚco_posonlyargcountÚposonly_countÚco_argcountÚ	arg_countÚco_kwonlyargcountÚkwonly_countÚposonly_namesÚpos_or_kw_namesÚall_pos_namesÚkwonly_namesÚco_flagsÚ
CO_VARARGSÚvarargs_nameÚCO_VARKEYWORDSÚ
varkw_name)Úselfrj   ÚcodeÚvnÚoffs        r_   Ú__init__ÚFunctionSpec.__init__Ž   sü   € Ø�}‰}ˆØ×Ñˆà!×4Ñ4ˆÔØ×)Ñ)ˆŒØ ×2Ñ2ˆÔàÐ 4 $×"4Ñ"4Ð5ˆÔØ!×"4Ñ"4°t·~±~ÐFˆÔØ!×/Ñ/°$×2FÑ2FÑFˆÔØŸ~™~°·±À×ARÑARÑ0RÐSˆÔà�n‰n˜t×0Ñ0Ñ0ˆØ'+§}¡}´z×'A˜BšGÀtˆÔØ×%×%‰q¨1Ñ,ˆØ%)§]¡]´^×%C˜"™'ˆ�Èˆ�r^   c           
      ó  • UR                   =(       d    SU l        UR                  =(       d    0 U l        [	        [        U R                  [        U R                  5      * S  [        [        U R                  5      5      5      5      U l	        g ©NrX   )
Ú__defaults__ÚdefaultsÚ__kwdefaults__Ú
kwdefaultsÚdictÚziprw   ÚlenÚrangeÚpos_default_map)r~   rj   s     r_   Úupdate_defaultsÚFunctionSpec.update_defaults    si   € ð ×)Ñ)×/¨RˆŒØ×-Ñ-×3°ˆŒô  $Ü�×"Ñ"¤C¨¯©Ó$6Ð#6Ð#8Ð9¼5ÄÀTÇ]Á]ÓASÓ;TÓUó 
ˆÕr^   )rw   rr   r‡   r‰   rt   rx   rŽ   rv   rp   ru   r{   r}   )rY   rZ   r[   r\   r   r‚   r�   r]   rX   r^   r_   rh   rh   �   s+   † ðN˜\ð N¨dô Nð$	
 Lð 	
°T÷ 	
r^   rh   rj   c                 ó^   • [         R                  U 5      nUc  [        U 5      nU[         U '   U$ ©N)rT   Úgetrh   )rj   Úspecs     r_   Ú	_get_specr•   ¬   s.   € Ü�?‰?˜4Ó €DØ�|Ü˜DÓ!ˆØ Œ�DÑØ€Kr^   ÚtxrE   Ú	fn_sourceÚargsÚkwargsc           
      óP  • [        U 5      n[        U5      UR                  :X  a‚  U R                  (       dq  U(       dj  UR                  (       dY  UR
                  (       dH  UR                  (       d7  [        UR                  5       VVs0 s H  u  pgU[        XU   5      _M     snn$ UR                  U 5        0 n[        U5      n	UR                  R                  5        Hq  u  pzS nU(       aH  [        R                  " UR                   U
   5      (       a  ["        R$                  (       d  ['        X*5      n[        XR                   U
   U5      X‡'   Ms     [        UR                  5       Hk  u  pgU[        U5      :  a  [        XU   5      X‡'   M&  Xy;   a-  XuR(                  ;  a  [        XR+                  U5      5      X‡'   MX  Xx;  d  M_  [-        SU 35      e   U[        UR                  5      S  nUR                  (       a"  [        U[/        U5      5      X…R                  '   O4U(       a-  [-        S[        U5       S[        UR                  5       35      eUR                   Hq  nXy;   a  [        XR+                  U5      5      X‡'   M&  XuR0                  ;   a0  S nU(       a
  ['        X'SS9n[        XR0                  U   U5      X‡'   Me  [-        SU 35      e   UR
                  (       a  [        X5      X…R
                  '   U$ U	(       a  [-        S[3        U	5       35      eU$ s  snnf )Nz&missing required positional argument: z#Too many positional arguments: got z, expected T)Úis_kwz(Missing required keyword-only argument: zUnexpected keyword arguments: )r•   rŒ   rr   r†   r{   r}   rx   Ú	enumeraterw   Úwrap_bound_argr�   rŠ   rŽ   Úitemsr@   Ú
is_literalr‡   r   Ú%skip_guards_on_constant_func_defaultsr,   ru   ÚpopÚ	TypeErrorÚtupler‰   Úlist)rj   r–   r—   r˜   r™   r”   ÚiÚnameÚbaÚrem_kwÚidxÚdefault_sourceÚextraÚkwdefault_sources                 r_   Úbind_args_cachedr­   ´   s©  € ô �T‹?€Dô
 	ˆD‹	�T—^‘^Ó#Ø×!×!ÞØ×!×!Ø——Ø×!×!ô % T×%7Ñ%7Ô8ô
â8‘�ð ”. ¨!¡WÓ-Ò-Ù8ò
ð 	
ð 	×Ñ˜ÔØ	€BÜ�&‹\€Fð ×)Ñ)×/Ñ/Ö1‰	ˆØˆÞÜ×'Ò'¨¯©°cÑ(:×;Ñ;Ü×<×<ä+¨IÓ;ˆNÜ! "§m¡m°CÑ&8¸.ÓIˆ‹ñ 2ô ˜T×/Ñ/Ö0‰ˆØŒs�4‹y‹=ä% b¨q©'Ó2ˆB‹HØ‹^ð ×*Ñ*Ó*ô & b¯*©*°TÓ*:Ó;ˆB‹HØ�^ÜÐDÀTÀFÐKÓLÐLñ! 1ð& ”�T×'Ñ'Ó(Ð*Ð+€EØ××Ü .¨r´5¸³<Ó @ˆ×ÑÒÞ	ÜØ1´#°d³)°¸KÌÈD×L^ÑL^ÓH_ÐG`Ðaó
ð 	
ð
 ×!Ô!ˆØ‹>Ü% b¯*©*°TÓ*:Ó;ˆB‹HØ—_‘_Ó$Ø#ÐÞÜ#1°)ÈÑ#NÐ Ü% b¯/©/¸$Ñ*?ÐAQÓRˆB‹HäÐFÀtÀfÐMÓNÐNñ "ð ‡‡Ü,¨RÓ8ˆ�?‰?Ñð €Iö 
ÜÐ8¼¸f»¸ÐGÓHÐHà€IùóE
s   ÂL"ÚvalÚsourcec                 ó¨   • [        U[        5      (       a  U$ U(       d  [        R                  " X5      $ [        R                  R                  X5      $ r’   )Ú
isinstancer>   Úbuildr   ÚLazyVariableTrackerÚcreate)r–   r®   r¯   s      r_   r�   r�     sC   € ô �#”×'Ñ'Øˆ
ÞÜ×$Ò$ RÓ-Ð-ô ×,Ñ,×3Ñ3°CÓ@Ð@r^   Úresultc                 óœ   • [        UR                  5       5       H/  u  p#[        U[        [        45      (       d  M"  [        X5      X'   M1     g r’   )r¤   rž   r±   r£   rŠ   r�   )r–   rµ   ÚkÚvs       r_   Úwrap_args_kwargsr¹     s6   € Ü�V—\‘\“^Ö$‰ˆÜ�aœ%¤˜×'Ó'ä& rÓ-ˆF‹Iò %r^   Úparentr   c                 óÈ   • U R                   R                  nUR                   H<  nUR                  5       nXA;   a   UR	                  XQR                  U5      5        XQU'   M>     g)z·
Update `result` to add mapping from local name to new cells created
directly by `code`, or update SideEffects in `parent` if the a local cell is
already in `result` (cell argument).
N)ÚoutputÚside_effectsÚco_cellvarsÚtrack_cell_newÚ
store_cellr¡   )rº   rµ   r   r½   r¦   Únew_cells         r_   Úinit_cellvarsrÂ   !  sV   € ð —=‘=×-Ñ-€Là× Ô ˆØ×.Ñ.Ó0ˆØ‹>ð ×#Ñ# H¯j©j¸Ó.>Ô?Øˆt‹ò !r^   Ú	f_globalsr¦   r‡   Úclosurer‰   Úannotationsc                 óÊ   • SSK Jn  U" XX#U5      nXXl        [        U[        5      (       a  SSKJn	  [        U	" U5      5      nUb  [        U[        5      (       d   eXhl        U$ )Nr   ©r   ©Úpairwise)	Útypesr   rˆ   r±   r£   Ú	itertoolsrÉ   rŠ   Ú__annotations__)
r   rÃ   r¦   r‡   rÄ   r‰   rÅ   r   rj   rÉ   s
             r_   Ú_create_nested_fnrÍ   6  s_   € õ #á˜¨¸ÓA€DØ$Ôä�+œu×%Ñ%Ý&ä™8 KÓ0Ó1ˆð Ñ¤*¨[¼$×"?Ñ"?Ð?Ð?Ø&Ôà€Kr^   >   Ú__doc__rm   Ú__closure__Ú__globals__r†   rˆ   rÌ   Úfnc                 ón  • U=(       a    [        X#5      nU(       a  US:X  a  [        U5      nS n [        R                  " X5      nU[        ;   a  [        X5      nU(       a  [        R                  R                  XB5      $ [        R                  " X5      $ ! [         a    [        [        U 5         Nmf = f)NrÌ   )r(   r/   ÚinspectÚgetattr_staticÚAttributeErrorr"   Úfn_known_dunder_attrsÚgetattrr   r³   r´   r>   r²   )r–   rÑ   r¯   r¦   Úsubobjs        r_   Úfn_var_getattrrÙ   [  s¡   € ð ×0œ
 6Ó0€Fæ�$Ð+Ó+ô ! Ó(ˆà€Fð5Ü×'Ò'¨Ó1ˆð Ô$Ó$Ü˜Ó"ˆÞÜ×,Ñ,×3Ñ3°FÓCÐCÜ× Ò  Ó,Ð,øô ó 5ô 	!¤°Ö4ð5ús   °B ÂB4Â3B4c                   óâ   • \ rS rSrS\4S jrS\4S jrS\\\4   4S jr	S\
R                  4S jrS\4S jrSS	S
\\   S\\\4   S\4S jrSS	S\S\4S jrSS	S\\\4   4S jrS\4S jrSrg)ÚBaseUserFunctionVariableiv  r`   c                 ó6   • U R                  5       R                  $ r’   ©Úget_codeÚco_filename©r~   s    r_   Úget_filenameÚ%BaseUserFunctionVariable.get_filenamew  ó   € Ø�}‰}‹×*Ñ*Ð*r^   c                 ó6   • U R                  5       R                  $ r’   ©rÞ   Úco_namerà   s    r_   Úget_nameÚ!BaseUserFunctionVariable.get_namez  ó   € Ø�}‰}‹×&Ñ&Ð&r^   c                 ó   • [         er’   ©ÚNotImplementedErrorrà   s    r_   Úget_globalsÚ$BaseUserFunctionVariable.get_globals}  ó   € Ü!Ð!r^   c                 ó   • [         er’   rë   rà   s    r_   rÞ   Ú!BaseUserFunctionVariable.get_code€  rï   r^   c                 ó   • [         er’   rë   rà   s    r_   Úhas_selfÚ!BaseUserFunctionVariable.has_selfƒ  rï   r^   r–   rE   r˜   r™   c                 óÈ   • U R                  5       S:X  a*  U R                  5       R                  S5      (       a  [        $ UR	                  U / U R                  5       QUQU5      $ )NÚpatch_track_step_calledztorch/optim/lr_scheduler.py)rç   rá   Úendswithr?   Úinline_user_function_returnÚ	self_args©r~   r–   r˜   r™   s       r_   Úcall_functionÚ&BaseUserFunctionVariable.call_function†  s\   € ð �M‰M‹OÐ8Ó8Ø×!Ñ!Ó#×,Ñ,Ð-J×KÑKä)Ð)Ø×-Ñ-¨dÐ4N°d·n±nÓ6FÐ4NÈÐ4NÐPVÓWÐWr^   r¦   c                 óÔ   • Sn [        U R                  5       U5      n[
        R                  R                  U5      $ ! [         a     US:X  a  [        U [        5      (       a  Sn NHf = f)NFrY   T)ÚhasattrÚget_functionrì   r±   ÚNestedUserFunctionVariabler   r@   r´   ©r~   r–   r¦   rµ   s       r_   Úcall_obj_hasattrÚ)BaseUserFunctionVariable.call_obj_hasattr•  sh   € ð ˆð	Ü˜T×.Ñ.Ó0°$Ó7ˆFô ×)Ñ)×0Ñ0°Ó8Ð8øô #ó 	Ø�zÓ!¤j°Ô7Q×&RÑ&RØ�ùð	ús   „= ½'A'Á&A'c                 ó   • 0 $ r’   rX   ©r~   r–   s     r_   Úclosure_varsÚ%BaseUserFunctionVariable.closure_vars¡  ó   € Øˆ	r^   c                 ó   • g©NTrX   rà   s    r_   Ú should_allow_nested_graph_breaksÚ9BaseUserFunctionVariable.should_allow_nested_graph_breaks§  ó   € Ør^   rX   N)rY   rZ   r[   r\   Ústrrá   rç   rŠ   r   rí   rÊ   ÚCodeTyperÞ   Úboolró   r   r>   rû   r@   r  r  r  r]   rX   r^   r_   rÛ   rÛ   v  sÐ   † ð+˜cô +ð'˜#ô 'ð"˜T # s (™^ô "ð"˜%Ÿ.™.ô "ð"˜$ô "ðXà#ðXð �Ñ'ðXð �S˜/Ð)Ñ*ð	Xð
 
ôXð
9Ø)ð
9Ø14ð
9à	ô
9ðÐ6ð ¸4ÀÀ_Ð@TÑ;Uô ð°$÷ r^   rÛ   c                   óN  ^ • \ rS rSrSrSS1\R                  kr\" 1 Sk5      r\	S\
S\
SS 4S	 j5       r S-S\R                  \R                  R                   -  S\S
\
SS4U 4S jjjrS\
4U 4S jjrS\\   4S jrS\R                  4S jrS\R0                  4S jrS\4S jrS\4S jrS\\\
4   4S jrS\ 4S jr!SSS\"\   S
\\\4   S\\\4   4S jr#SSS\S\4S jr$SSS\S\%4S jr&SSS\"\   S
\\\4   S\4U 4S jjr'SSS\"\   S
\\\4   S\S-  4S jr(S\4S jr)S\4S  jr*SSS\"\   S
\\\4   S\+S \"\   \\\4   4   S-  4S! jr,S\R                  S-  4S" jr-S#\S\+\S$4   S-  4S% jr.S\
S\\   S-  4S& jr/S\0S'   4S( jr1S\24S) jr3S*\4S\4S+ jr5S,r6U =r7$ ).ÚUserFunctionVariablei«  z-Some unsupported user-defined global functionrÑ   Úis_constant>   Úoptreeú
optree.opsútorch.utils._pytreeútorch.utils._cxx_pytreeÚvaluer¯   r`   c                 ó^   • [        UR                  [        R                  5      5        U " XS9$ ©N©r¯   ©r'   Ú
make_guardr&   ÚCLOSURE_MATCH©Úclsr  r¯   s      r_   Úcreate_with_sourceÚ'UserFunctionVariable.create_with_source½  s&   € ä�f×'Ñ'¬×(BÑ(BÓCÔDÙ�5Ñ(Ð(r^   r™   Nc                 óR  >• [         TU ]  " S	0 UD6  [        USS5      (       a  SU l        OSU l        [	        U[
        R                  [        R                  R                  45      (       d  [        SU SS/[        R                  QS9  [        R                  " USU5      nXl        g )
NÚ_dynamo_marked_constantFTz1can't handle functions not implemented in python z2Dynamo can only handle functions defined in pythonz9Move usage of this function out of `torch.compile` region©Úgb_typeÚcontextÚexplanationÚhintsÚ_torchdynamo_inlinerX   )Úsuperr‚   r×   r  r±   rÊ   r   rb   ÚjitÚScriptFunctionr$   r   ÚINFERENCE_MODErÓ   rÔ   rÑ   ©r~   rÑ   r  r™   Ú	__class__s       €r_   r‚   ÚUserFunctionVariable.__init__Â  sž   ø€ ô 	‰ÒÑ"˜6Ò"Ü�2Ð0°%×8Ñ8à#ˆDÕà$ˆDÔô ˜"œu×1Ñ1´5·9±9×3KÑ3KÐL×MÑMÜØKØ˜$ØPàOðä&×5Ñ5ðò	ô ×#Ò# BÐ(=¸rÓBˆØ�r^   c                 ób   >• [        U [        5      (       a  U R                  $ [        TU ]  5       $ r’   )r7   r  rÑ   r+  Úas_python_constant)r~   r0  s    €r_   r3  Ú'UserFunctionVariable.as_python_constantá  s(   ø€ Ü�$Ô,×-Ñ-Ø—7‘7ˆNä‰wÑ)Ó+Ð+r^   c                 ó   • / $ r’   rX   rà   s    r_   rù   ÚUserFunctionVariable.self_argsç  r  r^   c                 ó   • U R                   $ r’   ©rÑ   rà   s    r_   rÿ   Ú!UserFunctionVariable.get_functionê  ó   € Ø�w‰wˆr^   c                 ó.   • U R                   R                  $ r’   )rÑ   rm   rà   s    r_   rÞ   ÚUserFunctionVariable.get_codeí  s   € Ø�w‰w×ÑÐr^   c                 ó"   • [         R                  $ r’   ©rÊ   r   rà   s    r_   Úpython_typeÚ UserFunctionVariable.python_typeð  ó   € Ü×!Ñ!Ð!r^   c                 ó4   • [        U R                  SS 5      S L$ )NÚ__self__)r×   rÑ   rà   s    r_   ró   ÚUserFunctionVariable.has_selfó  s   € Ü�t—w‘w 
¨DÓ1¸Ð=Ð=r^   c                 ó.   • U R                   R                  $ r’   )rÑ   rÐ   rà   s    r_   rí   Ú UserFunctionVariable.get_globalsö  s   € Ø�w‰w×"Ñ"Ð"r^   c                 ó‚   • U R                   nU(       a+  [        U [        R                  5      (       a  U R                  nU$ r’   )r¯   r±   r   ÚUserMethodVariableÚ	source_fn)r~   r¯   s     r_   Ú
get_sourceÚUserFunctionVariable.get_sourceù  s.   € Ø—‘ˆæ”j ¤y×'CÑ'C×DÑDØ—^‘^ˆFØˆr^   rº   rE   r˜   c                 óP  • U R                   (       a   eU R                  n[        U[        5      (       d  [	        S5      eUR
                  R                  nU R                  5       n[        XEXbU5      n[        XUR                  5        U R                  R                  =(       d    Sn[        U5      [        U R                  R                  R                  5      :X  d   e[        [        R                   " 5       U R                  R                  R                  U5       Hº  u  pšnUR
                  R"                  nX¼;   a  XË   nO�U(       aU  [%        ['        U5      U	5      n[)        USU
S9n [*        R,                  " XR.                  U5      nUR7                  XëU5      nO4 [*        R,                  " XR.                  5      nUR7                  SUU5      nX×U
'   M¼     U$ ! [0         a    [2        R4                  " 5       n Nrf = f! [0         a    [2        R4                  " 5       n Ncf = f)z
Assume `args` and `kwargs` are VariableTracker arguments for a call to
this function, create new bindings for initial locals.
z'Only supports regular Python functions.rX   Úcell_contents)Úfreevar_nameN)r  rÑ   r±   r   r¢   r¼   Úroot_txrJ  r­   rÂ   rm   rÏ   rŒ   Úco_freevarsr‹   rË   Úcountr½   r-   r*   r)   r>   r²   rM  Ú
ValueErrorr   ÚDeletedVariableÚtrack_cell_existing)r~   rº   r˜   r™   rÑ   rO  r¯   rµ   rÄ   r©   r¦   Úcellr½   Úcell_varÚclosure_cellÚclosure_cell_contentsÚcontents_vars                    r_   Ú	bind_argsÚUserFunctionVariable.bind_args   sÓ  € ð ×#×#Ð#Ð#à!%§¡ˆä˜"œl×+Ñ+ÜÐEÓFÐFØ—-‘-×'Ñ'ˆà—‘Ó"ˆÜ! "¨v¸VÓDˆä�f b§k¡kÔ2Ø—'‘'×%Ñ%×+¨ˆÜ�7‹|œs 4§7¡7×#3Ñ#3×#?Ñ#?Ó@Ó@Ð@Ð@Ü"Ü�OŠOÓ˜tŸw™w×/Ñ/×;Ñ;¸Wö 
‰OˆC�tð "Ÿ=™=×5Ñ5ˆLØÓ#Ø'Ñ-‘æÜ,¬]¸6Ó-BÀCÓH�Ü(:Ø  /Àñ)Ð%ð?Ü#2×#8Ò#8Ø× 2Ñ 2Ð4Ió$�Lð (×;Ñ;Ø ¨ó‘ð?Ü#2×#8Ò#8¸×ASÑASÓ#T�Lð (×;Ñ;¸DÀ$ÈÓU�à#�4‹LñE 
ðH ˆøô' "ó ?ä#,×#<Ò#<Ó#>’Lð?ûô "ó ?ä#,×#<Ò#<Ó#>’Lð?ús$   Å,!GÆ! HÇH Ç?H ÈH%È$H%r–   r¦   c                 óŽ   • U[         ;   a  [        R                  " X5      $ U R                  5       n[	        XR
                  X25      $ r’   )r3   r   ÚGetAttrVariablerJ  rÙ   rÑ   )r~   r–   r¦   r¯   s       r_   Úvar_getattrÚ UserFunctionVariable.var_getattr>  s9   € ØÔ)Ó)Ü×,Ò,¨TÓ8Ð8Ø—‘Ó"ˆÜ˜b§'¡'¨6Ó8Ð8r^   c                 ól   • [        U R                  U5      n[        R                  R	                  U5      $ r’   )rþ   rÑ   r   r@   r´   r  s       r_   r  Ú%UserFunctionVariable.call_obj_hasattrD  s+   € ô ˜Ÿ™ $Ó'ˆÜ×)Ñ)×0Ñ0°Ó8Ð8r^   c           
      óÌ	  >• U R                   [        R                  R                  L a’   U Vs/ s H  oDR	                  5       PM     nnUR                  5        VVs0 s H  u  pgXgR	                  5       _M     nnn[        R                  R                  " U0 UD6R                  n	[        R                  " U	5      $ U R                   [        R                  R                  L a{   [        R                  " U R                   5      R                  " U0 UD6nUR                  S   R	                  5       n[!        U["        5      (       d   e[        R$                  " U5      $ U R                   [        R                  R(                  L Ga%  [        R                  " U R                   5      R                  " U0 UD6nUR*                  S   n[!        U[,        5      (       dP  UR/                  5       nSUR0                   S3n[3        SS	U R4                   S
U S
U S3U/ [6        R8                  QS9  [!        U[:        5      (       d)  UR=                  5       nSU S3n[3        SU  USU S3S/S9  UR                   n[        R>                  " U[        R                  R@                  RB                  S9$ U RD                  (       a%  [G        XR                   U R=                  5       X#5      $ URH                  RJ                  RL                  (       dt  U R                   [        R                  RN                  RP                  L aC  [        R                  RR                  RU                  U5         [V        TU ]±  XU5      sS S S 5        $ [[        URH                  RJ                  SS 5      S:X  a˜  URH                  RJ                  R\                  (       ds   SSK/J0n  Ubi  U R                   URb                  URd                  4;   aC  [        R                  RR                  R]                  U5         [V        TU ]±  XU5      sS S S 5        $ U Rg                  XU5      nUb  U$ [V        TU ]±  XU5      $ s  snf s  snnf ! [         a  n
[        SU SU 35      U
eS n
A
ff = f! [&         a  n
[        SU SU 35      U
eS n
A
ff = f! , (       d  f       GNF= f! [&         a    S n GNf = f! , (       d  f       N­= f)NzˆCannot convert patch_dynamo_config args/kwargs to constants. Please fix your call to patch_dynamo_config by using simpler inputs. args: z
, kwargs: Úerror_on_graph_breakz\Improper error_on_graph_break() call. Please fix your call to error_on_graph_break(). args: r   z=`nonstrict_trace` expects a callable, but got value of type <Ú>zTypeError from user codezcall_function(ú, Ú)r%  z(Applying `nonstrict_trace` to function <zk>; however, `nonstrict_trace` currently requires the function to be defined outside `torch.compile` region.zLimitation of `nonstrict_tracezmake sure definition of z is outside z`torch.compile` region©ÚkindÚdescriptionz!torch.utils.checkpoint.checkpoint)Ú	FSDPState)4rÑ   rb   Ú_dynamoÚpatch_dynamo_configr3  rž   Úchangesr   ÚDynamoConfigPatchVariabler:   ÚRuntimeErrorrc  rÓ   Ú	signatureÚbindÚ	argumentsr±   r  ÚErrorOnGraphBreakVariableÚ	ExceptionÚnonstrict_tracer˜   rÛ   r?  rY   r$   r  r   Ú
USER_ERRORr  rç   ÚTorchInGraphFunctionVariableÚAllowInGraphKindÚNONSTRICT_TRACEr  Úinvoke_and_store_as_constantr¼   Úcurrent_tracerÚ,unsafe_allow_externally_visible_side_effectsrc   Ú8_disable_side_effect_safety_checks_for_current_subtracerr½   Ú2allow_externally_visible_side_effects_in_subtracerr+  rû   r×   Úallow_side_effects_in_hopÚ/torch.distributed.fsdp._fully_shard._fsdp_staterj  Ú_pre_forwardÚ_post_forwardÚ_maybe_call_tree_map_fastpath)r~   r–   r˜   r™   ÚargÚ
args_constÚkeyr®   Úkwargs_constrm  ÚerN   rc  Úfn_varÚtypÚmsgÚfn_namerÑ   rj  Útree_map_resultr0  s                       €r_   rû   Ú"UserFunctionVariable.call_functionJ  sy  ø€ ð �7‰7”e—m‘m×7Ñ7Ò7ðÙBFÓGÂ$¸3×4Ñ4Ö6Á$�
ÐGàBHÇ,Á,Ä.ô ÚBP±h°c�C×/Ñ/Ó1Ò1Á.ð ñ  ô  Ÿ-™-×;Ò;ØðØ#/ñç‘'ð ô !×:Ò:¸7ÓCÐCð �W‰WœŸ™×:Ñ:Ò:ðÜ×)Ò)¨$¯'©'Ó2×7Ò7¸ÐHÀÑH�Ø',§¡Ø*ñ(ç$Ñ$Ó&ð %ô "Ð"6¼×=Ñ=Ð=Ð=Ü ×:Ò:Ð;OÓPÐPð �W‰WœŸ™×5Ñ5Ó5Ü×%Ò% d§g¡gÓ.×3Ò3°TÐD¸VÑDˆEØ—Z‘Z ‘]ˆFÜ˜fÔ&>×?Ñ?Ø×(Ñ(Ó*�ØUÐVY×VbÑVbÐUcÐcdÐe�ÜØ6Ø,¨T¯Z©Z¨L¸¸4¸&ÀÀ6À(È!ÐLØ #ðÜ*×5Ñ5ðò	ô ˜fÔ&:×;Ñ;Ø Ÿ/™/Ó+�Ø@ÀÀ	ð  Juð  v�ÜØ<Ø#˜fØ #à2°7°)¸<ÐHØ0ðò	ð —‘ˆBÜ×9Ò9ØœŸ™×9Ñ9×IÑIñð ð ××Ü/Ø—G‘G˜TŸ]™]›_¨dóð ð
 —	‘	×(Ñ(×U×UØ—‘Ü�}‰}×"Ñ"×[Ñ[ò\ô —‘×+Ñ+×^Ñ^Øõô ‘wÑ,¨R°vÓ>÷ñ ô �B—I‘I×,Ñ,¨m¸TÓBØ2ó3à—I‘I×,Ñ,×F×Fð!ÝUð Ñ$¨¯©Ø×&Ñ&Ø×'Ñ'ð5ó *ô —]‘]×/Ñ/×IÑIÈ"ÕMÜ ™7Ñ0°¸6ÓB÷ NÑMð ×<Ñ<¸RÀvÓNˆØÑ&Ø"Ð"ä‰wÑ$ R¨vÓ6Ð6ùòA Hùó øô 7ó Ü"ðà!˜F *¨V¨Hð6óð ð	ûðûô ó Ü"ðØ!˜F *¨V¨Hð6óð ðûðú÷bö ûô ó !Ø “	ð!ú÷ NÕMúsx   ªQ( ®QÁQ( ÁQ"Á8AQ( Ã#A9R ÍR0ÏS ÐSÑQ( Ñ(
R	Ñ2RÒR	Ò
R-ÒR(Ò(R-Ò0
R?ÓSÓSÓ
S#c                 ó   • U R                  XU5      nUb  Uu  pVnOU nUnUn[        U[        5      (       a4  UR                  5       (       a  1 Uk[        -
  (       d  [        U5      S:¼  d  g US   nUS   n	USS  n
U	R                  UUUU
U5      $ )Nr   r   r9   )Ú_rewrite_tree_map_only_callr±   r  Ú_is_tree_map_functionÚ_SUPPORTED_TREE_MAP_KWARGSrŒ   Úcall_tree_map)r~   r–   r˜   r™   ÚrewriteÚtree_map_fnÚtree_map_argsÚtree_map_kwargsÚmap_fnÚ
first_treeÚrests              r_   rƒ  Ú2UserFunctionVariable._maybe_call_tree_map_fastpathµ  s´   € ð ×2Ñ2°2¸VÓDˆØÑØ:AÑ7ˆK©àˆKØ ˆMØ$ˆOô �{Ô$8×9Ñ9Ø×1Ñ1×3Ñ3Ø'�Ð'Ô*D×DÜ�MÓ" aÓ'àà˜qÑ!ˆØ" 1Ñ%ˆ
Ø˜Q˜RÐ ˆØ×'Ñ'ØØØØØó
ð 	
r^   c                 óŒ   • [        U R                  SS 5      S:H  =(       a$    [        U R                  SS 5      U R                  ;   $ )NrY   Útree_maprZ   ©r×   rÑ   Ú_TREE_MAP_MODULESrà   s    r_   r‘  Ú*UserFunctionVariable._is_tree_map_functionÖ  s=   € ä�D—G‘G˜Z¨Ó.°*Ñ<÷ OÜ˜Ÿ™ ¨tÓ4¸×8NÑ8NÑNð	
r^   c                 óŒ   • [        U R                  SS 5      S:H  =(       a$    [        U R                  SS 5      U R                  ;   $ )NrY   Útree_map_onlyrZ   rž  rà   s    r_   Ú_is_tree_map_only_functionÚ/UserFunctionVariable._is_tree_map_only_functionÜ  s=   € ä�D—G‘G˜Z¨Ó.°/ÑA÷ OÜ˜Ÿ™ ¨tÓ4¸×8NÑ8NÑNð	
r^   c           	      óB  • U R                  5       (       d  g [        U5      S:w  a  g 1 Uk[        -
  (       a  g Uu  pEnU R                  U5      nUc  g U R	                  5       nUc  g [        UU[        USS 5      S9n	[        R                  " U5      n
X©U/[        U5      4$ )Né   r¯   r  )
r£  rŒ   Ú_TREE_MAP_ONLY_SUPPORTED_KWARGSÚ_extract_tree_map_only_typesÚ_lookup_tree_map_functionÚTreeMapOnlyFunctionVariabler×   r   r  rŠ   )r~   r–   r˜   r™   Útype_selectorr˜  Útree_argÚallowed_typesÚtree_map_callableÚwrapped_map_fnÚtree_map_variables              r_   r�  Ú0UserFunctionVariable._rewrite_tree_map_only_callâ  s³   € ð ×.Ñ.×0Ñ0Øäˆt‹9˜‹>ØØˆVˆ9Ô6×6Øà*.Ñ'ˆ˜xØ×9Ñ9¸-ÓHˆØÑ Øà ×:Ñ:Ó<ÐØÑ$Øä4ØØÜ˜6 8¨TÓ2ñ
ˆô
 &×:Ò:Ð;LÓMÐØ °8Ð"<¼dÀ6»lÐJÐJr^   c                 óä   • [        U R                  SS 5      nU(       d  g [        R                  R	                  U5      nUc  g [        USS 5      n[        U[        R                  5      (       a  U$ g )NrZ   r�  )r×   rÑ   ÚsysÚmodulesr“   r±   rÊ   r   )r~   Úmodule_nameÚmoduler�  s       r_   r©  Ú.UserFunctionVariable._lookup_tree_map_function  s]   € Ü˜dŸg™g |°TÓ:ˆÞØÜ—‘—‘ Ó-ˆØ‰>ØÜ˜6 :¨tÓ4ˆÜ�h¤× 2Ñ 2×3Ñ3ØˆOØr^   Úselector.c                 ó  • UR                  5       (       d  g  UR                  5       nU R                  U5      nU(       d  g [	        S U 5       5      (       d  g [        [        R                  U5      5      $ ! [         a     g f = f)Nc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr’   )r±   Útype)Ú.0rŠ  s     r_   Ú	<genexpr>ÚDUserFunctionVariable._extract_tree_map_only_types.<locals>.<genexpr>!  s   é € Ð>²I¨S”:˜c¤4×(Ð(²Iùs   ‚)Úis_python_constantr3  rì   Ú_flatten_type_specÚallr£   rŠ   Úfromkeys)r~   r¸  Ú	raw_valueÚ	flatteneds       r_   r¨  Ú1UserFunctionVariable._extract_tree_map_only_types  s}   € ð ×*Ñ*×,Ñ,Øð	Ø ×3Ñ3Ó5ˆIð ×+Ñ+¨IÓ6ˆ	ÞØÜÑ>±IÓ>×>Ñ>ØÜ”T—]‘] 9Ó-Ó.Ð.øô #ó 	Ùð	ús   ˜A7 Á7
BÂBc                 óŠ  • [        U[        5      (       a  U/$ [        U[        5      (       a4  / nU H*  nU R                  U5      nUc    g UR	                  U5        M,     U$ [        [        SS 5      nUbN  [        X5      (       a>  / nUR                   H*  nU R                  U5      nUc    g UR	                  U5        M,     U$ g )NÚ	UnionType)r±   r»  r£   rÀ  Úextendr×   rÊ   Ú__args__)r~   r  Ú	collectedÚentryÚflatÚ
union_types         r_   rÀ  Ú'UserFunctionVariable._flatten_type_spec%  sÂ   € Ü�eœT×"Ñ"Ø�7ˆNÜ�eœU×#Ñ#Ø$&ˆIÛ�Ø×.Ñ.¨uÓ5�Ø‘<ÙØ× Ñ  Ö&ñ	 ð
 ÐÜœU K°Ó6ˆ
ØÑ!¤j°×&CÑ&CØˆIØŸœ�Ø×.Ñ.¨uÓ5�Ø‘<ÙØ× Ñ  Ö&ñ	 (ð
 ÐØr^   Tc                 ó   • gr
  rX   rà   s    r_   Úis_python_hashableÚ'UserFunctionVariable.is_python_hashable;  r  r^   c                 ó,   • [        U R                  5      $ r’   )ÚhashrÑ   rà   s    r_   Úget_python_hashÚ$UserFunctionVariable.get_python_hash>  s   € Ü�D—G‘G‹}Ðr^   Úotherc                 ót   • [        U[        R                  5      =(       a    U R                  UR                  L $ r’   )r±   r   r  rÑ   ©r~   rÖ  s     r_   Úis_python_equalÚ$UserFunctionVariable.is_python_equalA  s*   € Ü˜%¤×!?Ñ!?Ó@×XÀTÇWÁWÐPU×PXÑPXÐEXÐXr^   )rÑ   r  ©F)8rY   rZ   r[   r\   rÎ   rÛ   Ú_nonvar_fieldsÚ	frozensetrŸ  Úclassmethodr   r!  rÊ   r   rb   r,  r-  r  r‚   r3  r¤   r>   rù   rÿ   r  rÞ   r»  r?  ró   rŠ   r  rí   r   rJ  r   rZ  r^  r@   r  rû   rƒ  r‘  r£  r£   r�  r©  r¨  rÀ  r
   rÐ  ÚintrÔ  ÚobjectrÙ  r]   Ú__classcell__©r0  s   @r_   r  r  «  s1  ø† Ù7ð 	Øðð 
"×	0Ñ	0ð€Nñ "ò	
óÐð ð) sð )°Cð )Ð<Ró )ó ð)ð "ñà×Ñ §¡×!9Ñ!9Ñ9ðð ðð ð	ð
 
÷ð ð>, C÷ ,ð˜4 Ñ0ô ð˜e×0Ñ0ô ð ˜%Ÿ.™.ô  ð"˜Tô "ð>˜$ô >ð#˜T # s (™^ô #ð˜Fô ð<à'ð<ð �Ñ'ð<ð �S˜/Ð)Ñ*ð	<ð
 
ˆc�?Ð"Ñ	#ô<ð|9Ð5ð 9¸Sð 9À_ô 9ð9Ø)ð9Ø14ð9à	ô9ði7à#ði7ð �Ñ'ði7ð �S˜/Ð)Ñ*ð	i7ð
 
÷i7ðV
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
˜4Ñ	ô
ðB
 tô 
ð
¨Dô 
ð$Kà#ð$Kð �Ñ'ð$Kð �S˜/Ð)Ñ*ð	$Kð 	Ø"Ø�_Ñ%Ø��oÐ%Ñ&ð(ñ	
ð
 ñ	ô$KðL
¨5×+=Ñ+=ÀÑ+Dô 
ð/Ø'ð/à	ˆt�SˆyÑ	˜DÑ	 ô/ð"¨ð °°T±
¸TÑ0Aô ð, G¨D¡Mô ð ô ðY Vð Y°÷ Yò Yr^   r  c                   óP   ^ • \ rS rSrSrSSS\\   S\\\4   S\4U 4S jjr	S	r
U =r$ )
ÚInspectSignatureVariableiE  a£  
Variable tracker for inspect.signature with caching support.

inspect.Signature is expensive to trace. When inspect.signature is called
repeatedly on the same function during tracing, we cache the result to avoid
retracing the signature construction each time. Although this is different
from CPython behavior, it is safe to do so because inspect.signature does
not change across different calls to the same function.
r–   rE   r˜   r™   r`   c                 ór  >• [        U5      S:X  a˜  U(       d‘  US   nS n[        U[        [        45      (       a  UR	                  5       nUb\  XQR
                  R                  ;   a  UR
                  R                  U   $ [        TU ]!  XU5      nXaR
                  R                  U'   U$ [        TU ]!  XU5      $ rl   )	rŒ   r±   r  rH  rÿ   r¼   Úsignature_cacher+  rû   )r~   r–   r˜   r™   Ú
target_argÚ	cache_keyrµ   r0  s          €r_   rû   Ú&InspectSignatureVariable.call_functionP  s§   ø€ ô ˆt‹9˜‹>¦&Ø˜a™ˆJØˆIä˜*Ô';Ô=OÐ&P×QÑQØ&×3Ñ3Ó5�	àÑ$Ø§	¡	× 9Ñ 9Ó9ØŸ9™9×4Ñ4°YÑ?Ð?ä™Ñ.¨r¸Ó@�Ø7=—	‘	×)Ñ)¨)Ñ4Ø�ä‰wÑ$ R¨vÓ6Ð6r^   rX   ©rY   rZ   r[   r\   rÎ   r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   rä  rä  E  sG   ø† ñð7à#ð7ð �Ñ'ð7ð �S˜/Ð)Ñ*ð	7ð
 
÷7õ 7r^   rä  c                   ó®   ^ • \ rS rSrS1\R
                  krS\\S4   S\S\	SS4U 4S jjr
S\4S	 jrS
\S\4S jrSSS\\   S\\\4   S\4S jrSrU =r$ )rª  ii  r­  .r˜  r™   r`   Nc                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g r…   )r+  r‚   r­  r˜  )r~   r­  r˜  r™   r0  s       €r_   r‚   Ú$TreeMapOnlyFunctionVariable.__init__o  s    ø€ ô 	‰ÒÑ"˜6Ò"Ø*ÔØ�r^   c                 ó   • [         $ r’   rÇ   rà   s    r_   r?  Ú'TreeMapOnlyFunctionVariable.python_typey  s   € ÜÐr^   Únodec                 ó„   ^•  UR                  5       m[        U4S jU R                   5       5      $ ! [         a     gf = f)NFc              3   ó<   >#   • U  H  n[        TU5      v •  M     g 7fr’   )Ú
issubclass)r¼  ÚallowedÚ	node_types     €r_   r½  ÚDTreeMapOnlyFunctionVariable._matches_allowed_type.<locals>.<genexpr>�  s   øé € ÐTÒAS°g”:˜i¨×1Ð1ÒASùs   ƒ)r?  rì   Úanyr­  )r~   rð  rõ  s     @r_   Ú_matches_allowed_typeÚ1TreeMapOnlyFunctionVariable._matches_allowed_type|  sC   ø€ ð	Ø×(Ñ(Ó*ˆIô ÔTÀ×ASÒASÓTÓTÐTøô #ó 	Ùð	ús   ƒ2 ²
?¾?r–   rE   r˜   c                 ó  • U(       d  U R                   R                  XU5      $ US   nU R                  U5      (       a  U R                   R                  XU5      $ [        U5      S:w  d  U(       a  U R                   R                  XU5      $ U$ )Nr   r9   )r˜  rû   rø  rŒ   )r~   r–   r˜   r™   Úleafs        r_   rû   Ú)TreeMapOnlyFunctionVariable.call_functionƒ  sz   € ö Ø—;‘;×,Ñ,¨R°vÓ>Ð>Ø�A‰wˆØ×%Ñ% d×+Ñ+Ø—;‘;×,Ñ,¨R°vÓ>Ð>Üˆt‹9˜‹>žVð —;‘;×,Ñ,¨R°vÓ>Ð>Øˆr^   )r­  r˜  )rY   rZ   r[   r\   rÛ   rÜ  r£   r»  r>   r   r‚   r?  r  rø  r   rŠ   r  rû   r]   rá  râ  s   @r_   rª  rª  i  s°   ø† àðà	!×	0Ñ	0ð€Nð
à˜T 3˜YÑ'ðð  ðð ð	ð
 
÷ð˜Tô ðU¨/ð U¸dô Uðà#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
÷ò r^   rª  c            	       óœ   ^ • \ rS rSr SS\R
                  S\S\SS4U 4S jjjr\	S\S\4S	 j5       r
S
SS\\   S\\\4   S\4S jrSrU =r$ )ÚBuiltinMethodVariablei•  rÑ   r  r™   r`   Nc                 ót   >• [         TU ]  " S0 UD6  [        U[        R                  5      (       d   eXl        g r…   )r+  r‚   r±   rÊ   ÚBuiltinMethodTyperÑ   r/  s       €r_   r‚   ÚBuiltinMethodVariable.__init__–  s3   ø€ ô 	‰ÒÑ"˜6Ò"Ü˜"œe×5Ñ5×6Ñ6Ð6Ð6Ø�r^   Úobjc                 ó¢   • U R                   nU R                  nU[        L =(       a    US:H  =(       d    [        U5      [        L =(       a    US:H  $ )NÚ__new__Ú__contains__)rC  rY   r£   r»  rÝ  )r  Úmethod_selfÚmethod_names      r_   Úis_supported_builtin_methodÚ1BuiltinMethodVariable.is_supported_builtin_method�  sI   € à—l‘lˆØ—l‘lˆð œuÐ$×A¨¸	Ñ)A÷ 
Ü�Ó¤Ð*×L¨{¸nÑ/Lð	
r^   r–   rE   r˜   c                 óü   • U R                   R                  nU R                   R                  nU R                  =(       a    [	        U R                  S5      n[
        R                  " XUSS9nUR                  XX#5      $ )NrC  T)Úrealize)rÑ   rC  rY   r¯   r(   r>   r²   Úcall_method)r~   r–   r˜   r™   r  r¦   Ú
obj_sourceÚobj_vts           r_   rû   Ú#BuiltinMethodVariable.call_function¨  sb   € ð —g‘g×&Ñ&ˆØ�w‰w×ÑˆØ—[‘[×H¤Z°·±¸ZÓ%Hˆ
Ü ×&Ò& r¸
ÈDÑQˆØ×!Ñ! "¨DÓ9Ð9r^   r8  rÛ  )rY   rZ   r[   r\   rÊ   r   r  r   r‚   Ústaticmethodr  r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   rþ  rþ  •  s—   ø† à?DñØ×)Ñ)ðØ8<ðØPSðà	÷ð ð ð
¨ð 
°ó 
ó ð
ð
:à#ð
:ð �Ñ'ð
:ð �S˜/Ð)Ñ*ð	
:ð
 
÷
:ò 
:r^   rþ  c            
       ó  ^ • \ rS rSrS\R
                  S\\\4   SSS\SS4
U 4S	 jjr	S\R
                  4S
 jr
S\4S jrS\4S jrS\4S jrS\4S jrS\4S jr S\4S jr\rS(S jrS\\\4   4S jrS\4S jrSSS\4S jrSSS\S\4S jrSSS\4S jrSSS\4S jrSSS\\   4S jrSSS\\/\4   SS4S jr S\!S   4S  jr"SSS!\SS4S" jr#S\4S# jr$S\4S$ jr%SSS\S%\\   S\\\4   S\4
U 4S& jjr&S'r'U =r($ ))ÚLocalGeneratorObjectVariableiµ  r   rÃ   Úinline_tracerrC   r™   r`   Nc                 óJ   >• [         TU ]  " S0 UD6  Xl        X l        X0l        g r…   )r+  r‚   r   rÃ   r  )r~   r   rÃ   r  r™   r0  s        €r_   r‚   Ú%LocalGeneratorObjectVariable.__init__¶  s%   ø€ ô 	‰ÒÑ"˜6Ò"ØŒ	Ø"ŒØ*Õr^   c                 ó   • U R                   $ r’   )r   rà   s    r_   rÞ   Ú%LocalGeneratorObjectVariable.get_codeÂ  s   € Ø�y‰yÐr^   c                 ó6   • U R                  5       R                  $ r’   rÝ   rà   s    r_   rá   Ú)LocalGeneratorObjectVariable.get_filenameÅ  rã   r^   c                 ó6   • U R                  5       R                  $ r’   rå   rà   s    r_   rç   Ú%LocalGeneratorObjectVariable.get_nameÈ  ré   r^   c                 ó   • [        S5      e)Nrÿ   rë   rà   s    r_   rÿ   Ú)LocalGeneratorObjectVariable.get_functionË  s   € Ü! .Ó1Ð1r^   c                 ó   • g©NFrX   rà   s    r_   ró   Ú%LocalGeneratorObjectVariable.has_selfÎ  ó   € Ør^   c                 ó"   • U R                  5       $ r’   )rç   rà   s    r_   rY   Ú%LocalGeneratorObjectVariable.__name__Ñ  s   € Ø�}‰}‹Ðr^   c                 óV   • U R                   R                   SU R                  5        S3$ )NÚ(rf  )r0  rY   rç   rà   s    r_   Ú__str__Ú$LocalGeneratorObjectVariable.__str__Ô  s'   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M«OÐ+<¸AÐ>Ð>r^   c                 óÔ  • SSK Jn  SSKJnJn  UR
                  nU" U5      nU" U5      nU" U5      nU   U   U   U R                  n	U	R                  (       d  U R                  U5      U l	        [        R                  " U R                  5      R                  U5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   )Ú"disallow_side_effects_in_generator)Ú save_and_restart_speculation_logÚ(temporarely_allow_writes_to_output_graph)Útorch._dynamo.side_effectsr)  Útorch._dynamo.symbolic_convertr*  r+  r–   r  Úgenerator_exhaustedÚforce_unpack_var_sequenceÚremaining_itemsr   ÚListIteratorVariableÚreconstruct)
r~   Úcodegenr)  r*  r+  r–   ÚsaveÚdisallowÚtempÚtracers
             r_   r2  Ú(LocalGeneratorObjectVariable.reconstructÙ  sš   € ÝQ÷	
ð
 �Z‰ZˆÙ/°Ó3ˆÙ5°bÓ9ˆÙ7¸Ó;ˆâ’8šTØ×'Ñ'ˆFØ×-×-Ø'+×'EÑ'EÀbÓ'I�Ô$Ü×*Ò*¨4×+?Ñ+?Ó@×LÑLÈWÔU÷	 "—8�TˆTŸT�Tú—8•8ú�T�Tús:   µC¸C»A#B7ÂCÂ&CÂ7
CÃCÃ
C	ÃCÃ
C'c                 ó   • U R                   $ r’   ©rÃ   rà   s    r_   rí   Ú(LocalGeneratorObjectVariable.get_globalsë  ó   € Ø�~‰~Ðr^   c                 ó"   • [         R                  $ r’   )rÊ   ÚGeneratorTyperà   s    r_   r?  Ú(LocalGeneratorObjectVariable.python_typeî  s   € Ü×"Ñ"Ð"r^   r–   rF   c           	      ó"  • U R                   nU R                  5       (       a  [        [        U5         UR	                  5       $ ! [
         a  nSUl        UeS nAf[         a(    [        SSSS[         S3/[        R                  QS9   g [         a{  n[        R                  R                  R!                  U R#                  5       5        SUl        UR&                  (       d&  UR(                  (       d  U=R*                  S-  sl        e S nAff = f)	NTzinfinite generator detectedÚ z}Dynamo traced the YIELD_VALUE bytecode too many times. This could mean that we have attempted to trace an infinite generator.zLIf you are sure that your generator is not infinite, please report a bug at Ú.r%  zA

Skipping frame due to graph break in a generator's next() call.)r  Ú_is_generator_exhaustedr"   ÚStopIterationÚinline_call_r   r.  r   r$   ÚPT2_ISSUE_TRACKER_URLr   rv  r%   rb   rk  Ú
eval_frameÚ	skip_coderÞ   Ú
skip_frameÚ	one_graphrc  r‹  )r~   r–   r7  rˆ  s       r_   Únext_variableÚ*LocalGeneratorObjectVariable.next_variableñ  së   € Ø×#Ñ#ˆà×'Ñ'×)Ñ)Ü$¤]°BÔ7ð	ð ×&Ñ&Ó(Ð(øÜ ó 	Ø)-ˆFÔ&ØˆGûÜ%ó 	äØ5ØðIð cÔcxÐbyÐyzÐ{ðä&×1Ñ1ðô	ô ó 	Ü�M‰M×$Ñ$×.Ñ.¨t¯}©}«Ô?ØˆAŒLØ—<—<¨×(?×(?Ø—’Ð^Ñ^•Øûð	ús*   ³A Á
DÁ	AÁ2DÂ
	DÂA6D	Ä	DrE   r¦   c                 ó”   • X R                  5       R                  ;   a  [        R                  " S5      $ [        R                  " S5      $ ©NTF)r?  Ú__dict__r@   r´   ©r~   r–   r¦   s      r_   r  Ú-LocalGeneratorObjectVariable.call_obj_hasattr  s;   € ð ×#Ñ#Ó%×.Ñ.Ó.Ü#×*Ò*¨4Ó0Ð0Ü×&Ò& uÓ-Ð-r^   c                 ó   • gr  rX   r  s     r_   Úhas_unpack_var_sequenceÚ4LocalGeneratorObjectVariable.has_unpack_var_sequence  r!  r^   c                 ó   • gr
  rX   r  s     r_   Úhas_force_unpack_var_sequenceÚ:LocalGeneratorObjectVariable.has_force_unpack_var_sequence  r  r^   c                 ó@   • / nU R                  XR                  5        U$ r’   )Úforce_apply_to_var_sequenceÚappend)r~   r–   rµ   s      r_   r/  Ú6LocalGeneratorObjectVariable.force_unpack_var_sequence  s    € ð )+ˆØ×(Ñ(¨¯]©]Ô;Øˆr^   rÑ   c                 ón   •   U" U R                  U5      5        M  ! [         a    [        U5         g f = fr’   )rK  r!   r   )r~   r–   rÑ   s      r_   rY  Ú8LocalGeneratorObjectVariable.force_apply_to_var_sequence&  s@   € ð ðÙ�4×%Ñ% bÓ)Ô*ñ øô -ó Ü)¨"Ô-Ùðús   ƒ œ4³4Fc                 ó   • gr  rX   rà   s    r_   r  Ú=LocalGeneratorObjectVariable.should_allow_nested_graph_breaks1  r!  r^   Úexcc                 ó�   • U R                   n UR                  U5        g ! [         a  nUR                  U5         S nAg S nAff = fr’   )r  Ú_raise_exception_variabler   Úexception_handler)r~   r–   r`  r7  rˆ  s        r_   Ú_setup_exceptionÚ-LocalGeneratorObjectVariable._setup_exception4  sE   € ð ×#Ñ#ˆð	(Ø×,Ñ,¨SÕ1øÜ ó 	(ð ×$Ñ$ Q×'Ñ'ûð	(ús   Ž   
AªA Á Ac                 ó^   • U R                   S L =(       d    U R                   R                  S:H  $ )Nr   )r  Úinstruction_pointerrà   s    r_   Ú_is_generator_just_startedÚ7LocalGeneratorObjectVariable._is_generator_just_started?  s*   € Ø×!Ñ! TÐ)×X¨T×-?Ñ-?×-SÑ-SÐWXÑ-XÐXr^   c                 ó0   • [        U R                  SS5      $ )Nr.  F)r×   r  rà   s    r_   rC  Ú4LocalGeneratorObjectVariable._is_generator_exhaustedB  s   € Ü�t×)Ñ)Ð+@À%ÓHÐHr^   r˜   c                 óÀ  >• US:X  a  U R                  U5      $ US:X  a  U $ US:X  az  U R                  5       (       a7  [        U5      (       a'  [        S U 5       5      (       d  [	        [
        U5        U R                  nUR                  U5        U R                  U5      $ US:X  aæ  U R                  nU R                  5       (       d  U R                  5       (       a  SUl	        [        R                  $  U R                  U[        R                  " [        S5      5        [        R                   S:¼  a1  UR"                  R$                  S	:X  a  SUl	        [        R                  $  U R                  U5      (       a  [	        [(        U5        OªUS
:X  a¤  U R                  n U R                  U[        U5      S:X  a  US   OUS   5        U R                  U5      n[1        S[2        40 5      n U R                  U[        R                  " US5      5        U R                  U5        [	        [(        U5        U$ [6        TU ]q  XX45      $ ! [&         a    SUl	        [        R                  s $ f = f! [&         a    SUl	        [        R                  s $ [*         a    UR,                  c   eUR,                  s $ f = f! [.         a    e f = f! [5        U5       a     U$ f = f)NÚ__next__Ú__iter__Úsendc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   )Úis_constant_none©r¼  r„  s     r_   r½  Ú;LocalGeneratorObjectVariable.call_method.<locals>.<genexpr>X  s   é € ÐBºT°c×/Ñ/×1Ð1ºTùó   ‚ÚcloseTrX   )r¦  é   ÚCALL_INTRINSIC_1Úthrowr¦  r9   r   Ú__InternalThrowException)rK  rh  rŒ   rÁ  r"   r¢   r  Ú	push_manyrC  r.  r   r?   rd  ÚExceptionVariableÚGeneratorExitr³  Úversion_infoÚnext_instructionÚopnamer    ro  r!   Úsymbolic_resultr   r»  rt  r   r+  r  )	r~   r–   r¦   r˜   r™   r7  ÚretvalÚexc_typer0  s	           €r_   r  Ú(LocalGeneratorObjectVariable.call_methodE  s¶  ø€ ð �:ÓØ×%Ñ% bÓ)Ð)Ø�ZÓàˆKØ�V‹^ð ×.Ñ.×0Ñ0´S¸·Y±Yô ÑB¹TÓB×BÑBÜ,¬Y¸Ô;Ø×'Ñ'ˆFØ×Ñ˜TÔ"Ø×%Ñ% bÓ)Ð)Ø�W‹_ð ×'Ñ'ˆFØ×.Ñ.×0Ñ0°D×4PÑ4P×4RÑ4RØ-1�Ô*Ü ×7Ñ7Ð7ð8Ø×%Ñ%Øœ	×3Ò3´MÀ2ÓFôô( ×$Ñ$¨Ó/Ø×/Ñ/×6Ñ6Ð:LÓLà15�FÔ.Ü$×;Ñ;Ð;ð.à×%Ñ% b×)Ñ)Ü,¬\¸2Ô>øð �W‹_ð ×'Ñ'ˆFðð
 ×%Ñ% b´S¸³YÀ!³^¨$¨qª'ÈÈaÉÔQð
 ×'Ñ'¨Ó+ˆFô| Ð6¼¸ÀbÓIˆHð?Ø×%Ñ% b¬)×*EÒ*EÀhÐPRÓ*SÔTØ×"Ñ" 2Ô&ô
 )¬°vÔ>ØˆMä‰wÑ" 2¨TÓ:Ð:øôa )ó 8à-1�Ô*Ü ×7Ñ7Ò7ð8ûô )ó 8Ø-1�Ô*Ü ×7Ñ7Ò7Ü,ó .ð
 ×-Ñ-Ñ9Ð9Ð9Ø×-Ñ-Ò-ð.ûô, %ó àðûôN 1°Ó:ó àð ˆMðúsI   Ã5A/I Å&&I. Æ )J; Ç-8K
 É!I+É*I+É.!J8Ê$J8Ê7J8Ê;KË
KËK)r   rÃ   r  r0  ©r3  rB   r`   N))rY   rZ   r[   r\   rÊ   r  rŠ   r  r   r‚   rÞ   rá   rç   r   rÿ   r  ró   r&  Ú__repr__r2  rí   r»  r?  r>   rK  r@   r  rS  rV  r¤   r/  r   rY  r
   r  rd  rh  rC  r  r]   rá  râ  s   @r_   r  r  µ  s  ø† ð
+à�n‰nð
+ð ˜˜S˜‘>ð
+ð @ð	
+ð
 ð
+ð 
÷
+ð˜%Ÿ.™.ô ð+˜cô +ð'˜#ô 'ð2˜eô 2ð˜$ô ð˜#ô ð?˜ô ?ð €HôVð$˜T # s (™^ô ð#˜Tô #ðÐ ;ð Àô ðB.Ø)ð.Ø14ð.à	ô.ðÐ*Að Àdô ðÐ0Gð ÈDô ðØ-ðà	ˆoÑ	ôðØ-ðØ3;¸_Ð<MÈsÐ<RÑ3Sðà	ôð°'¸%±.ô ð	(Ø)ð	(Ø0?ð	(à	ô	(ðY¨Dô YðI¨ô Iðw;à#ðw;ð ðw;ð �?Ñ#ð	w;ð
 �S˜/Ð)Ñ*ðw;ð 
÷w;õ w;r^   r  c                   ó   • \ rS rSrSrSrg)Ú4ContextlibContextManagerLocalGeneratorObjectVariableiÿ  zâ
.. note::

    This is only used when the function is annotated with @contextlib.contextmanager

    It is a special case of a generator function as we do not allow return a context manager
    from a torch.compile function.
rX   N)rY   rZ   r[   r\   rÎ   r]   rX   r^   r_   r‡  r‡  ÿ  s   † ôr^   r‡  c            	       óö   ^ • \ rS rSrSr\S.S\S\S\SS4U 4S	 jjjr	S
\
S\4S jrS\R                  4S jrS\\
\4   4S jrS\4S jrSSS\\   S\\
\4   SS4S jrSSS\\   S\\
\4   S\4S jrSrU =r$ )ÚLocalGeneratorFunctionVariablei  zlfunctions that behaves like iterators

.. note::

    This is a wrapper around (Nested)UserFunctionVariable
)Úgenerator_clsÚvtrŠ  r™   r`   Nc                ó>   >• [         TU ]  " S0 UD6  Xl        X l        g r…   )r+  r‚   r‹  rŠ  )r~   r‹  rŠ  r™   r0  s       €r_   r‚   Ú'LocalGeneratorFunctionVariable.__init__  s    ø€ ô 	‰ÒÑ"˜6Ò"ØŒØ*Õr^   r¦   c                 óv   • XR                   R                  ;   a  [        X5      $ [        U R                  U5      $ r’   )r0  rO  r×   r‹  )r~   r¦   s     r_   Ú__getattr__Ú*LocalGeneratorFunctionVariable.__getattr__  s.   € Ø—>‘>×*Ñ*Ó*Ü˜4Ó&Ð&Ü�t—w‘w Ó%Ð%r^   c                 ó6   • U R                   R                  5       $ r’   )r‹  rÞ   rà   s    r_   rÞ   Ú'LocalGeneratorFunctionVariable.get_code%  ó   € Ø�w‰w×ÑÓ!Ð!r^   c                 ó6   • U R                   R                  5       $ r’   )r‹  rí   rà   s    r_   rí   Ú*LocalGeneratorFunctionVariable.get_globals(  s   € Ø�w‰w×"Ñ"Ó$Ð$r^   c                 ó6   • U R                   R                  5       $ r’   )r‹  ró   rà   s    r_   ró   Ú'LocalGeneratorFunctionVariable.has_self+  r“  r^   r–   rF   r˜   rD   c                 ó8   • SSK Jn  UR                  " UU UU5      $ )Nr   )rD   )r-  rD   Úbuild_inline_tracer)r~   r–   r˜   r™   rD   s        r_   Ú_build_inline_tracerÚ3LocalGeneratorFunctionVariable._build_inline_tracer.  s'   € õ 	Qà,×@Ò@ØØØØó	
ð 	
r^   rE   c                 óˆ  • [        U R                  R                  5       5      (       d/  [        S[	        U R                  R                  5       5      SSS/S9  U R                  U[        U5      U5      nU R                  R                  5       nU R                  R                  5       nU R                  UUUU R                  S9$ )Nz'non-generator contextlib.contextmanagerzvCannot compile function decorated with `@contextlib.contextmanager` that is not a generator, i.e. does not use `yield`z5Use `yield` in the function body instead of `return`.z2Remove the `@contextlib.contextmanager` decorator.r%  r  )
r   r‹  rÞ   r$   r  rš  r¤   rí   rŠ  r¯   )r~   r–   r˜   r™   r  r   rÃ   s          r_   rû   Ú,LocalGeneratorFunctionVariable.call_function=  s·   € ô ˜DŸG™G×,Ñ,Ó.×/Ñ/ÜØAÜ˜DŸG™G×,Ñ,Ó.Ó/ð.ð LØHðò	ð ×1Ñ1°"´d¸4³jÀ&ÓIˆØ�w‰w×ÑÓ!ˆØ—G‘G×'Ñ'Ó)ˆ	ð ×!Ñ!ØØØØ—;‘;ð	 "ð 
ð 	
r^   )rŠ  r‹  )rY   rZ   r[   r\   rÎ   r  rÛ   r»  r   r‚   r  r�  rÊ   r  rÞ   rŠ   rí   r  ró   r¤   r>   rš  r   rû   r]   rá  râ  s   @r_   r‰  r‰    sù   ø† ñð ;ò		+à$ð	+ð ð		+ð
 ð	+ð 
÷	+ð 	+ð& ð &¨ô &ð"˜%Ÿ.™.ô "ð%˜T # s (™^ô %ð"˜$ô "ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
)ô
ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
ò 
r^   r‰  c                   ól   ^ • \ rS rSrSrS\S\SS4U 4S jjrSS	S
\\	   S\
\\	4   SS4U 4S jjrSrU =r$ )Ú3FunctionDecoratedByContextlibContextManagerVariablei\  za
.. note::

    This is only used when the function is annotated with @contextlib.contextmanager
r‹  r™   r`   Nc                 ó4   >• [         TU ]  " U4S[        0UD6  g )NrŠ  )r+  r‚   r‡  )r~   r‹  r™   r0  s      €r_   r‚   Ú<FunctionDecoratedByContextlibContextManagerVariable.__init__e  s%   ø€ Ü‰ÒØñ	
äNð	
ð ó	
r^   r–   rF   r˜   rC   c                 ó    >• [         TU ]  XU5      n[        U[        R                  R
                  R                  5      (       d   eSUl        U$ r
  )r+  rš  r±   rb   rk  Úsymbolic_convertrC   Úis_generator_from_ctx_manager)r~   r–   r˜   r™   r7  r0  s        €r_   rš  ÚHFunctionDecoratedByContextlibContextManagerVariable._build_inline_tracerl  sR   ø€ ô ‘Ñ-¨b¸Ó?ˆÜØÜ�M‰M×*Ñ*×QÑQ÷
ñ 
ð 	
ð 
ð 04ˆÔ,Øˆr^   rX   )rY   rZ   r[   r\   rÎ   rÛ   r   r‚   r¤   r>   rŠ   r  rš  r]   rá  râ  s   @r_   rŸ  rŸ  \  sb   ø† ñð
Ð3ð 
¸sð 
Àt÷ 
ðà'ðð �?Ñ#ðð �S˜/Ð)Ñ*ð	ð
 
2÷õ r^   rŸ  c                   óð   ^ • \ rS rSrSr SS\S\4   S\S\S-  S\S	S4
U 4S
 jjjr	S	\
4S jrS	\\   4S jrS	\\R                      4S jrSSS\\   S\\
\4   S	\4U 4S jjrSSS\
S	\4U 4S jjrSrU =r$ )rH  i  z$Some unsupported user-defined methodNrÑ   .r  rI  r™   r`   c                 ó°   >• [         TU ]  " SSU0UD6  X l        X0l        Uc4  UR	                  S5      b!  [        UR	                  S5      S5      U l        g g g )NrÑ   r¯   Ú__func__rX   )r+  r‚   r  rI  r“   r(   )r~   rÑ   r  rI  r™   r0  s        €r_   r‚   ÚUserMethodVariable.__init__‚  sZ   ø€ ô 	‰ÒÑ)˜BÐ) &Ò)ØŒØ"Œð Ñ §¡¨HÓ!5Ñ!AÜ'¨¯
©
°8Ó(<¸jÓIˆD�Nð "BÐr^   c                 óh   • U R                   R                   SU R                   SU R                   S3$ )Nr%  re  rf  )r0  rY   rÑ   r  rà   s    r_   r…  ÚUserMethodVariable.__repr__›  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯G©G¨9°B°t·x±x°jÀÐBÐBr^   c                 ó   • U R                   /$ r’   ©r  rà   s    r_   rù   ÚUserMethodVariable.self_argsž  ó   € Ø—‘ˆzÐr^   c                 ó"   • [         R                  $ r’   )rÊ   Ú
MethodTyperà   s    r_   r?  ÚUserMethodVariable.python_type¡  s   € Ü×ÑÐr^   r–   rE   r˜   c                 óh  >• SSK JnJn  U" U R                  5      (       ag  / U R	                  5       QUQn[
        R                  " U R                  [
        R                  R                  R                  S9nUR                  XU5      $ U" U R                  5      (       ag  / U R	                  5       QUQn[
        R                  " U R                  [
        R                  R                  R                  S9nUR                  XU5      $ UR                  R                  5       (       a³  [        U R                  [
        R                   5      (       aŠ  [#        U R                  SS5      nUb  UR%                  S5      (       a  US:w  d  U R&                  (       aB  U R                  R)                  XR                  R*                  [-        U5      X0R&                  S9$ Ol[.        be  U R                  [.        R0                  R2                  L a>  [
        R4                  " U R                  5      R                  XR                  /UQ7U5      $ U R&                  (       aO  [#        U R                  R6                  U R                  R*                  5      n	[9        XU R;                  5       X#5      $ [<        T
U ])  XU5      $ )	Nr   )Úis_leaf_functionÚis_nonstrict_trace_callablerg  rZ   rA  z	torch.nn.ztorch.nn.utils.parametrize)Úconstant)Útrace_rulesr´  rµ  rÑ   rù   r   rw  rb   rx  ry  rû   ÚLEAF_FUNCTIONr¼   Úis_root_tracerr±   r  ÚNNModuleVariabler×   Ú
startswithr  r  rY   r¤   rA   ÚFSDPParamGroupÚuse_training_stateÚTorchCtxManagerClassVariabler  rz  rç   r+  )r~   r–   r˜   r™   r´  rµ  Ú	call_argsÚvarÚmodule_attrrÑ   r0  s             €r_   rû   Ú UserMethodVariable.call_function¤  s  ø€ ÷ 	Pá& t§w¡w×/Ñ/Ø2˜$Ÿ.™.Ó*Ð2¨TÐ2ˆIÜ×8Ò8Ø—‘œiŸo™o×>Ñ>×NÑNñˆCð ×$Ñ$ R°FÓ;Ð;á˜DŸG™G×$Ñ$Ø2˜$Ÿ.™.Ó*Ð2¨TÐ2ˆIÜ×8Ò8Ø—‘œiŸo™o×>Ñ>×LÑLñˆCð ×$Ñ$ R°FÓ;Ð;ð �9‰9×#Ñ#×%Ñ%¬*Ø�H‰H”i×0Ñ0÷+
ñ +
ô " $§'¡'¨<¸Ó<ˆKð Ñ'Ø×*Ñ*¨;×7Ñ7ØÐ#?Ó?Ø×#×#à—x‘x×+Ñ+ØŸ™×(Ñ(¬$¨t«*°f×GWÑGWð ,ð ð ð $ô Ñ)Ø—‘Ô,×;Ñ;×NÑNÒNä×9Ò9¸$¿'¹'ÓB×PÑPØ—X‘XÐ% Ñ% vóð ð ××Ü˜Ÿ™Ÿ™¨¯©×)9Ñ)9Ó:ˆBÜ/°¸¿¹»ÈÓVÐVÜ‰wÑ$ R¨vÓ6Ð6r^   r¦   c                 ó¨   >• US:X  a  U R                   $ US:X  a+  [        R                  " XR                  U R                  5      $ [
        TU ]  X5      $ )NrC  r¨  )r  r>   r²   rÑ   rI  r+  r^  ©r~   r–   r¦   r0  s      €r_   r^  ÚUserMethodVariable.var_getattrè  sI   ø€ Ø�:ÓØ—8‘8ˆOØ�:Óô #×(Ò(¨¯W©W°d·n±nÓEÐEÜ‰wÑ" 2Ó,Ð,r^   )r  rI  r’   )rY   rZ   r[   r\   rÎ   r   r   r>   r   r‚   r  r…  r¤   rù   r»  rÊ   r±  r?  r   rŠ   rû   r^  r]   rá  râ  s   @r_   rH  rH    sï   ø† Ù.ð $(ñ	Jà�S˜#�XÑðJð ðJð ˜D‘=ð	Jð
 ðJð 
÷Jð Jð2C˜#ô Cð˜4 Ñ0ô ð ˜T %×"2Ñ"2Ñ3ô  ðB7à#ðB7ð �Ñ'ðB7ð �S˜/Ð)Ñ*ð	B7ð
 
÷B7ðH-Ð5ð -¸Sð -À_÷ -õ -r^   rH  c                   óv   ^ • \ rS rSrS\SSS\SS4U 4S jjrS	S
S\\   S\	\
\4   S\4U 4S jjrSS jrSrU =r$ )ÚWrappedUserMethodVariableió  Úwrappedr'  rG   r™   r`   Nc                 ó²   >• UR                  SS 5        UR                  SS 5        [        TU ]  " UR                  UR                  40 UD6  Xl        X l        g )NrÑ   r  )r¡   r+  r‚   rÑ   r  rÈ  r'  ©r~   rÈ  r'  r™   r0  s       €r_   r‚   Ú"WrappedUserMethodVariable.__init__ô  sG   ø€ ð 	�
‰
�4˜ÔØ�
‰
�5˜$ÔÜ‰Ò˜Ÿ™ W§[¡[Ñ;°FÒ;ØŒØ�r^   r–   rE   r˜   c                 ó”   >• U R                   R                  U5        [        TU ]  XU5      nU R                   R	                  U5        U$ r’   ©r'  Úenterr+  rû   Úexit©r~   r–   r˜   r™   rµ   r0  s        €r_   rû   Ú'WrappedUserMethodVariable.call_function   ó?   ø€ ð 	�‰×Ñ˜2ÔÜ‘Ñ& r°Ó8ˆØ�‰×Ñ˜"ÔØˆr^   c                 óŽ   ^ ^• TR                  UU 4S j5        T" T R                  5        TR                  [        SS5      5        g )Nc                  ó(   >• T " TR                   5      $ r’   ©r'  ©r3  r~   s   €€r_   Ú<lambda>Ú7WrappedUserMethodVariable.reconstruct.<locals>.<lambda>  ó   ø€ ¡g¨d¯l©lÔ&;r^   r9   F©Úadd_push_nullrÈ  Úextend_outputr   ©r~   r3  s   ``r_   r2  Ú%WrappedUserMethodVariable.reconstruct  ó4   ù€ Ø×ÑÕ;Ô<Ù�—‘ÔØ×ÑÔ2°1°eÓ<Õ=r^   ©r'  rÈ  r„  )rY   rZ   r[   r\   rH  r   r‚   r   r>   rŠ   r  rû   r2  r]   rá  râ  s   @r_   rÇ  rÇ  ó  sr   ø† ð
à#ð
ð +ð
ð ð	
ð
 
÷
ð	à#ð	ð �Ñ'ð	ð �S˜/Ð)Ñ*ð		ð
 
÷	÷>ò >r^   rÇ  c                   óv   ^ • \ rS rSrS\SSS\SS4U 4S jjrS	S
S\\   S\	\
\4   S\4U 4S jjrSS jrSrU =r$ )ÚWrappedUserFunctionVariablei  rÈ  r'  rG   r™   r`   Nc                 óx   >• UR                  SS 5        [        TU ]  " UR                  40 UD6  Xl        X l        g )NrÑ   )r¡   r+  r‚   rÑ   rÈ  r'  rÊ  s       €r_   r‚   Ú$WrappedUserFunctionVariable.__init__  s3   ø€ ð 	�
‰
�4˜ÔÜ‰Ò˜Ÿ™Ñ. vÒ.ØŒØ�r^   r–   rE   r˜   c                 ó”   >• U R                   R                  U5        [        TU ]  XU5      nU R                   R	                  U5        U$ r’   rÍ  rÐ  s        €r_   rû   Ú)WrappedUserFunctionVariable.call_function  rÒ  r^   c                 óŽ   ^ ^• TR                  UU 4S j5        T" T R                  5        TR                  [        SS5      5        g )Nc                  ó(   >• T " TR                   5      $ r’   rÕ  rÖ  s   €€r_   r×  Ú9WrappedUserFunctionVariable.reconstruct.<locals>.<lambda>)  rÙ  r^   r9   FrÚ  rÝ  s   ``r_   r2  Ú'WrappedUserFunctionVariable.reconstruct(  rß  r^   rà  r„  )rY   rZ   r[   r\   r  r   r‚   r   r>   rŠ   r  rû   r2  r]   rá  râ  s   @r_   râ  râ    sr   ø† ð	à%ð	ð +ð	ð ð		ð
 
÷	ð	à#ð	ð �Ñ'ð	ð �S˜/Ð)Ñ*ð		ð
 
÷	÷>ò >r^   râ  c                 ó  • S[         S[        4S jnU Vs/ s H
  oe" U5      PM     nnUR                  5        VVs0 s H  u  pxXu" U5      _M     nnnU" U0 UD6n	U R                  R	                  U	U[        U5      S9$ s  snf s  snnf )NÚxr`   c                 ó€   • U R                  5       (       a  [        SU 5      R                  5       $ U R                  5       $ )NrL   )Ú	is_tensorr	   Úget_real_valuer3  )rì  s    r_   ÚconvertÚ-invoke_and_store_as_constant.<locals>.convert5  s3   € Ø�;‰;�=‰=ÜÐ(¨!Ó,×;Ñ;Ó=Ð=Ø×#Ñ#Ó%Ð%r^   r  )r>   r   rž   r¼   Úregister_attr_or_moduler+   )
r–   rÑ   r¦   r˜   r™   rð  rì  r·   r¸   Úress
             r_   rz  rz  .  s”   € ð&”?ð &¤sô &ñ
 !%Ó%¢˜1ˆG�AŽJ¡€DÐ%Ø(.¯©¬Ô7ª¡ ˆa�˜“Šm©€FÑ7Ù
ˆdÐ
�fÑ
€CØ�9‰9×,Ñ,ØØÜ˜dÓ#ð -ð ð ùò &ùÛ7s
   –A?¼Bc                   óˆ  ^ • \ rS rSrS1\R
                  kr S'S\S\S\\\	4   S\S-  S\S-  S\S-  S	\S-  S
\S-  S\	SS4U 4S jjjr
S\\   4S jrS\R                  4S jrS\R                   4S jrS\\R                     4S jrS'S\\   S-  S\R                  4S jjrS\4S jrS\\   S\R                  4S jrSSS\S\S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrS\4S jrSSS\S\	4U 4S jjrSSS\S\4U 4S  jjr S\4S! jr!S\\\	4   4S" jr"S#SS\\   S\\\4   S\\\4   4S$ jr#S(S% jr$S&r%U =r&$ ))r   iD  rÃ   NrŒ  r   r‡   r‰   rÅ   rÄ   Ú
wrapped_fnr™   r`   c	                 ó®  >• U	R                  S5      c  U	R                  [        5       S9  [        T
U ]  " S0 U	D6  [        UR                  5       [        5      (       d   e[        UR                  5       [        R                  5      (       d   e[        U[        5      (       d   eXl        X l        X0l        X@l        XPl        X`l        Xpl        X€l        g )NÚmutation_type©r÷  rX   )r“   Úupdater;   r+  r‚   r±   r3  r  rÊ   r  rŠ   rŒ  r   rÃ   r‡   r‰   rÅ   rÄ   rõ  )r~   rŒ  r   rÃ   r‡   r‰   rÅ   rÄ   rõ  r™   r0  s             €r_   r‚   Ú#NestedUserFunctionVariable.__init__J  s®   ø€ ð �:‰:�oÓ&Ñ.Ø�M‰MÔ(<Ó(>ˆMÑ?Ü‰ÒÑ"˜6Ò"Ü˜'×4Ñ4Ó6¼×<Ñ<Ð<Ð<Ü˜$×1Ñ1Ó3´U·^±^×DÑDÐDÐDÜ˜)¤T×*Ñ*Ð*Ð*ØŒØŒ	Ø"ŒØ ŒØ$ŒØ&ÔØŒØ2<�r^   c                 ó   • / $ r’   rX   rà   s    r_   rù   Ú$NestedUserFunctionVariable.self_argsg  r  r^   c                 ó"   • U R                  5       $ r’   )rÿ   rà   s    r_   r3  Ú-NestedUserFunctionVariable.as_python_constantj  s   € Ø× Ñ Ó"Ð"r^   c                 ó6   • U R                   R                  5       $ r’   )r   r3  rà   s    r_   rÞ   Ú#NestedUserFunctionVariable.get_codem  s   € Ø�y‰y×+Ñ+Ó-Ð-r^   c                 ó"   • [         R                  $ r’   r>  rà   s    r_   r?  Ú&NestedUserFunctionVariable.python_typep  rA  r^   Ú_convertingc                 ó&  • SSK Jn  [        U 5      nUc
  [        5       nX1;   a  [	        S5      eUR                  U5         U R                  U5      UR                  U5        $ ! U a  n[	        S5      UeS nAff = f! UR                  U5        f = f)Nr9   )r:   z-cycle detected in mutually recursive closuresz1failed to convert closure cell to Python constant)Úbaser:   ÚidÚsetrV   ÚaddÚ_get_function_implÚdiscard)r~   r  r:   Úself_idrˆ  s        r_   rÿ   Ú'NestedUserFunctionVariable.get_functions  sš   € õ 	>ä�T“(ˆØÑÜ›%ˆKØÓ!Ü(Ø?óð ð 	�‰˜Ô ð	)Ø×*Ñ*¨;Ó7ð ×Ñ Õ(øð 3ó 	Ü(ØCóàðûð	ûð
 ×Ñ Õ(ús$   ÁA# Á#A:Á)A5Á5A:Á:A= Á=Bc                 óR   •  U R                  5         g! [        [        4 a     gf = frN  )r3  rì   r%   rà   s    r_   r¿  Ú-NestedUserFunctionVariable.is_python_constant‰  s-   € ð	Ø×#Ñ#Ô%ØøÜ#¤[Ð1ó 	Ùð	ús   ‚ “&¥&c                 ó  • S nU R                   (       aÆ  SSKJn  UR                  " 5       n/ nU R                   R                   Hˆ  nUR
                  R                  R                  U5      nXpL a  [        S5      e[        U[        5      (       a  UR                  U5      nOUR                  5       nUR                  [        U5      5        MŠ     [        U5      n[         R"                  " U R$                  R                  5       U R&                  U R(                  R                  5       S US9n	U R*                  (       a  U R*                  R                  5       U	l        U R.                  (       a  U R.                  R                  5       U	l        U R2                  (       ac  U R2                  R                  5       n
[        U
[        5      (       a  SSKJn  [9        U" U
5      5      n
[        U
[8        5      (       d   eX©l        U	$ )Nr   )rE   z self-referential nested function)ÚargdefsrÄ   rÈ   )rÄ   r-  rE   Ú
current_txrž   r¼   r½   Ú	load_cellrV   r±   r   rÿ   r3  rZ  r8   r£   rÊ   r   r   rÃ   rŒ  r‡   r†   r‰   rˆ   rÅ   rË   rÉ   rŠ   rÌ   )r~   r  Úclosure_cellsrE   r–   ÚcellsrV  rM  r  rj   rÅ   rÉ   s               r_   r	  Ú-NestedUserFunctionVariable._get_function_impl�  s…  € ØˆØ�<�<ÝLà&×1Ò1Ó3ˆBØˆEà ŸL™L×.Ô.�ð !#§	¡	× 6Ñ 6× @Ñ @ÀÓ J�ð !Ò(Ü0Ð1SÓTÐTô ˜mÔ-G×HÑHØ)×6Ñ6°{ÓC‘Eà)×<Ñ<Ó>�EØ—‘œY uÓ-Ö.ñ- /ô. " %›LˆMä×!Ò!Ø�I‰I×(Ñ(Ó*Ø�N‰NØ�L‰L×+Ñ+Ó-ØØ!ñ
ˆð �=�=Ø $§¡× @Ñ @Ó BˆDÔØ�?�?Ø"&§/¡/×"DÑ"DÓ"FˆDÔØ××Ø×*Ñ*×=Ñ=Ó?ˆKÜ˜+¤u×-Ñ-Ý.ä"¡8¨KÓ#8Ó9�ô ˜k¬4×0Ñ0Ð0Ð0Ø#.Ô Øˆr^   r–   rE   Úname_varr®   c                 ón   • UR                   R                  R                  XR                  U5        [        $ r’   )r¼   r½   Ú
store_attrr  r?   )r~   r–   r  r®   s       r_   Úcall_setattrÚ'NestedUserFunctionVariable.call_setattrÈ  s(   € ð 	�	‰	×Ñ×)Ñ)¨$·±ÀÔDÜ%Ð%r^   r¦   r˜   c                 ój   >• US:X  a  U R                   " U/UQ76 $ [        TU ]	  X[        U5      U5      $ )NÚ__setattr__)r  r+  r  r¤   ©r~   r–   r¦   r˜   r™   r0  s        €r_   r  Ú&NestedUserFunctionVariable.call_methodÑ  s;   ø€ ð �=Ó Ø×$Ò$ RÐ/¨$Ò/Ð/Ü‰wÑ" 2¬T°$«Z¸Ó@Ð@r^   c                 ó   • U R                   S L$ r’   )rÄ   rà   s    r_   Úhas_closureÚ&NestedUserFunctionVariable.has_closureÜ  s   € Ø�|‰| 4Ð'Ð'r^   c                 óÒ   >• US:X  a  U R                  5       $ US:X  a  U R                  5       $ US:X  a&  [        U SS 5      nU(       a  UR                  5       $ S $ [        TU ]  X5      $ )NrY   rm   r†   r‡   )rç   rÞ   r×   r3  r+  Úconst_getattr)r~   r–   r¦   Údr0  s       €r_   r#  Ú(NestedUserFunctionVariable.const_getattrß  sg   ø€ Ø�:ÓØ—=‘=“?Ð"Ø�:ÓØ—=‘=“?Ð"Ø�>Ó!Ü˜˜j¨$Ó/ˆAÞ-.�1×'Ñ'Ó)Ð8°DÐ8Ü‰wÑ$ RÓ.Ð.r^   c                 óÞ   >• US:X  a)  [         R                  R                  [        U S5      5      $ US:X  a)  [         R                  R                  [        U S5      5      $ [        TU ]  X5      $ )Nrm   r   r†   r‡   )r   r@   r´   rþ   r+  r  rÄ  s      €r_   r  Ú+NestedUserFunctionVariable.call_obj_hasattré  sa   ø€ ð �:ÓÜ×-Ñ-×4Ñ4´W¸TÀ6Ó5JÓKÐKØ�>Ó!Ü×-Ñ-×4Ñ4´W¸TÀ:Ó5NÓOÐOÜ‰wÑ'¨Ó1Ð1r^   c                 ó   • gr  rX   rà   s    r_   ró   Ú#NestedUserFunctionVariable.has_selfò  r!  r^   c                 ó   • U R                   $ r’   r:  rà   s    r_   rí   Ú&NestedUserFunctionVariable.get_globalsõ  r<  r^   rº   c                 ó`  • U R                  5       n[        R                  " UU R                  U R                  R                  5       U R                  (       a  [        U R                  R                  5      OS [        S [        [        U R                  5       R                  5      5       5       5      5      nU R                  (       a  U R                  R                  5       Ul        [        R                   " U5      R"                  " U0 UD6nUR%                  5         ['        UR(                  R                  5       5      n[+        UR,                  R.                  U5        [1        XU5        [3        UR                  5       H)  u  p‰X—;  d   eU R4                  R                  U   n
X§U	'   M+     U$ )Nc              3   ó8   #   • U  H  n[        S 5      v •  M     g 7fr’   )r8   )r¼  Ú_s     r_   r½  Ú7NestedUserFunctionVariable.bind_args.<locals>.<genexpr>  s   é € ÐSÒ+R a”)˜D—/�/Ò+Rùs   ‚)rÞ   rÊ   r   rÃ   rŒ  r3  r‡   r£   rž   r�   rŒ   rP  r‰   Úkeys_as_python_constantrˆ   rÓ   rp  rq  Úapply_defaultsrŠ   rr  r¹   r¼   rO  rÂ   rœ   rÄ   )r~   rº   r˜   r™   r   rj   rN   rµ   r©   r¦   rU  s              r_   rZ  Ú$NestedUserFunctionVariable.bind_argsø  s;  € ð �}‰}‹ˆÜ×!Ò!ØØ�N‰NØ�L‰L×+Ñ+Ó-Ø*.¯-¯-ŒE�$—-‘-×%Ñ%Ô&¸TÜÑS¬5´°T·]±]³_×5PÑ5PÓ1QÔ+RÓSÓSó
ˆð �?�?Ø"&§/¡/×"IÑ"IÓ"KˆDÔÜ×!Ò! $Ó'×,Ò,¨dÐ=°fÑ=ˆØ×ÑÔÜ�e—o‘o×+Ñ+Ó-Ó.ˆÜ˜Ÿ™×.Ñ.°Ô7Ü�f dÔ+ä" 4×#3Ñ#3Ö4‰IˆCØÓ%Ð%Ð%Ø—<‘<×%Ñ% cÑ*ˆDØ�4‹Lñ 5ð
 ˆr^   c                 óŽ  ^• TR                  U4S j5        T" U R                  5        TR                  TR                  U R                  5      /5        T" [
        R                  " U R                  R                  R                  5      5        U R                  (       a  T" U R                  5        O!TR                  TR                  S 5      /5        U R                  (       a  T" U R                  5        O!TR                  TR                  S 5      /5        U R                  (       a  T" U R                  5        O!TR                  TR                  S 5      /5        U R                  (       a=   U R                  R                  5       nTR                  TR                  U5      /5        O!TR                  TR                  S 5      /5        TR                  [!        SS5      5        U R"                  (       aw  TR                  U4S j5        T" U R"                  5        TR                  [!        SS5      5        TR                  [%        S5      5        TR                  [!        SS5      5        TR&                  nUR(                  R*                  R-                  U 5      (       a~  UR(                  R*                  R.                  U    R1                  5        HH  u  pETR3                  5         T" U5        TR                  [%        S5      5        TR5                  U5        MJ     g g ! [         a    T" U R                  5         GNwf = f)Nc                  ó0   >• T R                  [        S5      $ )NrÍ   )Úload_import_fromrY   ©r3  s   €r_   r×  Ú8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>  s   ø€ �G×,Ñ,¬XÐ7JÔKr^   é   Fc                  ó(   >• T R                  SS5      $ )NÚ	functoolsÚwraps©r5  r6  s   €r_   r×  r7  ;  s   ø€ ˜×0Ñ0°¸gÔFr^   r9   r   T)rÛ  r   rÜ  Úcreate_load_const_uncheckedrÃ   r@   r´   r  ræ   r‡   Úcreate_load_constrÄ   r‰   rÅ   r3  rì   r   rõ  r   r–   r¼   r½   Úhas_pending_mutationÚstore_attr_mutationsrž   Údup_topr  )r~   r3  rÅ   r–   r¦   r  s    `    r_   r2  Ú&NestedUserFunctionVariable.reconstruct  sw  ø€ Ø×ÑÜKô	
ñ 	�—	‘	ÔØ×Ñ˜w×BÑBÀ4Ç>Á>ÓRÐSÔTÙÔ ×'Ò'¨¯	©	¯©×(?Ñ(?Ó@ÔAà�=�=Ù�D—M‘MÕ"à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�<�<Ù�D—L‘LÕ!à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�?�?Ù�D—O‘OÕ$à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà××ð*Ø"×.Ñ.×AÑAÓC�Ø×%Ñ%Ø×8Ñ8¸ÓEÐFõð ×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà×ÑÔ2°1°eÓ<Ô=à�?�?Ø×!Ñ!ÜFôñ �D—O‘OÔ$Ø×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!¤,¨q£/Ô2Ø×!Ñ!Ô"6°q¸$Ó"?Ô@ð �Z‰ZˆØ�9‰9×!Ñ!×6Ñ6°t×<Ñ<Ø!Ÿy™y×5Ñ5×JÑJØñ ç‰e‹gò ‘�ð —‘Ô!Ù˜”Ø×%Ñ%¤l°1£oÔ6Ø×"Ñ" 4Ö(ò ð =øô% 'ó *Ù˜×(Ñ(×)ð*ús   Å/;L$ Ì$MÍM)rÅ   rÄ   r   r‡   rÃ   rŒ  r‰   rõ  r’   r„  )'rY   rZ   r[   r\   rÛ   rÜ  r>   rŠ   r  r   r‚   r¤   rù   rÊ   r   r3  r  rÞ   r»  r?  r  rß  rÿ   r  r¿  r	  r  r   r  r   r#  r@   r  ró   rí   rZ  r2  r]   rá  râ  s   @r_   r   r   D  si  ø† àðà	!×	0Ñ	0ð€Nð  .2ñ=à ð=ð ð=ð ˜˜S˜‘>ð	=ð
 " DÑ(ð=ð $ dÑ*ð=ð % tÑ+ð=ð ! 4Ñ'ð=ð $ dÑ*ð=ð ð=ð 
÷=ð =ð:˜4 Ñ0ô ð# E×$6Ñ$6ô #ð.˜%Ÿ.™.ô .ð"˜T %×"4Ñ"4Ñ5ô "ñ)¨¨C©°4©ð )À5×CUÑCUõ )ð, Dô ð6¨c°#©hð 6¸5×;MÑ;Mô 6ðp&à#ð&ð "ð&ð ð	&ð
 
ô&ð	Aà#ð	Að ð	Að �Ñ'ð		Að
 �S˜/Ð)Ñ*ð	Að 
÷	Að(˜Tô (ð/Ð 7ð /¸sð /Às÷ /ð2Ø)ð2Ø14ð2à	÷2ð˜$ô ð˜T # s (™^ô ðà'ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 
ˆc�?Ð"Ñ	#ô÷:6)ò 6)r^   r   c                   óv   ^ • \ rS rSrS\SSS\SS4U 4S jjrS	S
S\\   S\	\
\4   S\4U 4S jjrSS jrSrU =r$ )Ú!WrappedNestedUserFunctionVariableiN  rÈ  r'  rG   r™   r`   Nc           
      ó
  >• UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        [        TU ]	  UR                  UR                  UR
                  UR                  UR                  UR                  UR                  UR                  5        Xl        X l        g )	NrŒ  r   rÃ   r‡   r‰   rÅ   rÄ   rõ  )r¡   r+  r‚   rŒ  r   rÃ   r‡   r‰   rÅ   rÄ   rõ  rÈ  r'  rÊ  s       €r_   r‚   Ú*WrappedNestedUserFunctionVariable.__init__O  sÐ   ø€ ð 	�
‰
�9˜dÔ#Ø�
‰
�6˜4Ô Ø�
‰
�; Ô%Ø�
‰
�:˜tÔ$Ø�
‰
�< Ô&Ø�
‰
�= $Ô'Ø�
‰
�9˜dÔ#Ø�
‰
�< Ô&Ü‰ÑØ�O‰OØ�L‰LØ×ÑØ×ÑØ×ÑØ×ÑØ�O‰OØ×Ñô		
ð ŒØ�r^   r–   rE   r˜   c                 ó”   >• U R                   R                  U5        [        TU ]  XU5      nU R                   R	                  U5        U$ r’   rÍ  rÐ  s        €r_   rû   Ú/WrappedNestedUserFunctionVariable.call_functionj  rÒ  r^   c                 óŽ   ^ ^• TR                  UU 4S j5        T" T R                  5        TR                  [        SS5      5        g )Nc                  ó(   >• T " TR                   5      $ r’   rÕ  rÖ  s   €€r_   r×  Ú?WrappedNestedUserFunctionVariable.reconstruct.<locals>.<lambda>v  rÙ  r^   r9   FrÚ  rÝ  s   ``r_   r2  Ú-WrappedNestedUserFunctionVariable.reconstructu  rß  r^   rà  r„  )rY   rZ   r[   r\   r   r   r‚   r   r>   rŠ   r  rû   r2  r]   rá  râ  s   @r_   rD  rD  N  sr   ø† ðà+ðð +ðð ð	ð
 
÷ð6	à#ð	ð �Ñ'ð	ð �S˜/Ð)Ñ*ð		ð
 
÷	÷>ò >r^   rD  c            	       ó  ^ • \ rS rSrSS1\R
                  krSS\S\S-  S\SS4U 4S jjjrS\4S jr	\
S\S	\SS 4S
 j5       rSSS\\   S\\\4   S\4S jrSSS\S\4S jrSSS\S\4S jrS\4S jrS\4S jrS\S\4S jrSrU =r$ )ÚSkipFunctionVariablei{  r  ÚreasonNr™   r`   c                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g r…   )r+  r‚   r  rO  )r~   r  rO  r™   r0  s       €r_   r‚   ÚSkipFunctionVariable.__init__‚  s   ø€ Ü‰ÒÑ"˜6Ò"ØŒ
Ø�r^   c                 ó   • U R                   $ r’   ©r  rà   s    r_   r3  Ú'SkipFunctionVariable.as_python_constant‡  s   € Ø�z‰zÐr^   r¯   c                 ó  • [         R                  " USS5      (       ab  UnUn[        USS5      (       a,  UR                  n[	        US5      n[        USS5      (       a  M,  UR                  [        R                  5        O|[         R                  " U5      (       a)  [        UR                  [        R                  5      5        O8[        U5      (       d(  [        UR                  [        R                  5      5        U " XS9$ )NÚ_torchdynamo_disableFÚ_torchdynamo_orig_callabler  )rÓ   rÔ   r×   rW  r(   r  r&   r  Ú	isbuiltinr'   ÚBUILTIN_MATCHr6   )r   r  r¯   Úguard_on_sourceÚguard_on_values        r_   r!  Ú'SkipFunctionVariable.create_with_sourceŠ  sÔ   € ô ×!Ò! %Ð)?À×GÑGð %ˆOØ"ˆNä˜.Ð*FÈ×NÑNØ!/×!JÑ!J�Ü",Ø#Ð%Aó#�ô ˜.Ð*FÈ×NÓNð ×&Ñ&¤|×'AÑ'AÕBÜ×Ò˜u×%Ñ%Ü˜&×+Ñ+¬L×,FÑ,FÓGÕHÜ0°×7Ñ7ô ˜&×+Ñ+¬L×,FÑ,FÓGÔHÙ�5Ñ(Ð(r^   r–   rE   r˜   c                 óp  • [         R                  " U R                  SS5      (       aT  [         R                  " U R                  SS 5      n[        S[	        U R                  5      SU R                   SU S3S/S	9  g U R                  [
        R                  R                  L a@  UR                  S
5      nU(       a  UR                  5       n[        SSU SU S3SU 3S/S	9  g U R                  [
        R                  R                  L aZ  UR                  S
5      nU(       a  UR                  5       nOSn[        SSU SU S[        UR                  5       S3SU 3S/SS9  g U R                  [
        R                  R                  L a   [        SSSS/S	9  g ["        R$                  (       aH  SSKJn  UR+                  XR                  5      n	[-        U	[.        5      (       d  U	R1                  XU5      $ [3        U R                  SS 5      n
[3        U R                  S!S 5      nUc  S"O
[	        U5      n [         R4                  " U R                  5      nS#U
 S$U S%3nS&U
 S'3/nS(U;  a  US)U
 S*3S+/-  nU
S9:X  a  S:n/ nU R@                  (       a  U R@                  OS;n[        S<S=U S>U
 S?U 3UUS	9  g ! [         a  n[        UR                   5      S eS nAff = f! [6         aÍ    S,S-1nUU;   a  S.U SU
 S'3nS/S0/n NŠUbb  UR9                  S15      (       aL  S2U SU
 S3nS3/n[
        R                  R:                  R=                  US4-   S4R?                  U5      -   5         NïS5U SU
 S63nS7S8/n[
        R                  R:                  R=                  US4-   S4R?                  U5      -   5         GN=f = f)@NrV  FÚ_torchdynamo_disable_msgz1Skip calling `torch.compiler.disable()`d functionzSkip calling function `z>` since it was wrapped with `torch.compiler.disable` (reason: rf  z(Remove the `torch.compiler.disable` callr%  r‹  z%Call to `torch._dynamo.graph_break()`z0Called `torch._dynamo.graph_break()` with args `z`, kwargs `Ú`z$User-inserted graph break. Message: z.Remove the `torch._dynamo.graph_break()` call.rA  z$Call to `torch._dynamo.skip_frame()`z/Called `torch._dynamo.skip_frame()` with args `z`. Skipping frame rB  z#User-inserted skip frame. Message: z-Remove the `torch._dynamo.skip_frame()` call.T)r&  r'  r(  r)  rI  z*Call to `torch._dynamo.step_unsupported()`zUser-inserted step_unsupported.z3Remove the `torch._dynamo.step_unsupported()` call.r9   ©ÚSourcelessBuilderr[   z<unknown qualname>rZ   z<unknown module>z?Dynamo developers have intentionally marked that the function `z` in file `z` should not be traced.zAvoid calling the function `z`.rk  z:Apply `@torch._dynamo.dont_skip_tracing` to the function `zw` to force tracing into the function. More graph breaks may occur as a result of attempting to trace into the function.z Please file an issue to PyTorch.Ú_abcÚ	_warningsz6Dynamo does not know how to trace the Python builtin `z˜If you are attempting to call a logging function (e.g. `_warnings.warn`), you can try adding it to `torch._dynamo.config.reorderable_logging_functions`.zKPlease file an issue on GitHub so the PyTorch team can add support for it. r  z*Dynamo cannot trace optree C/C++ function zi Consider using torch.utils._pytree - https://github.com/pytorch/pytorch/blob/main/torch/utils/_pytree.pyÚ
z/Dynamo does not know how to trace the builtin `zˆ.` This function is either a Python builtin (e.g. _warnings.warn) or a third-party C/C++ Python extension (perhaps created with pybind).zŒIf it is a Python builtin, please file an issue on GitHub so the PyTorch team can add support for it and see the next case for a workaround.a  If it is a third-party C/C++ Python extension, please either wrap it into a PyTorch-understood custom operator (see https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html for more details) or, if it is traceable, use `torch.compiler.allow_in_graph`.Úallow_in_graphz”Found an allow_in_graph decorator to a function which is created inside the parent function that is getting compiled. This is not supported for now.z<missing reason>z,Attempted to call function marked as skippedzmodule: z, qualname: z, skip reason: )!rÓ   rÔ   r  r$   r  rb   rk  Úgraph_breakr“   r3  rI  r   Úf_codeÚstep_unsupportedr%   r#   r‹  r   Údont_skip_tracingÚbuilderra  r´   r±   rN  rû   r×   Úgetfiler¢   r»  rc   Ú	warn_onceÚjoinrO  )r~   r–   r˜   r™   r‹  Úgraph_break_msgÚskip_frame_msgrˆ  ra  Ú
rebuilt_fnÚqualnameÚ	module_orrµ  Úpathr(  r)  Úknown_python_builtin_modulesrO  s                     r_   rû   Ú"SkipFunctionVariable.call_function¥  sB  € ô ×!Ò! $§*¡*Ð.DÀe×LÑLÜ×(Ò(¨¯©Ð5OÐQUÓVˆCÜØKÜ˜DŸJ™J›Ø5°d·j±j°\ð B:Ø:=¸¸aðAð ?ðóð �Z‰Zœ5Ÿ=™=×4Ñ4Ò4Ø$Ÿj™j¨Ó/ˆOÞØ"1×"DÑ"DÓ"F�ÜØ?ØJÈ4È&ÐP[Ð\bÐ[cÐcdÐeØBÀ?ÐBSÐTàDðó	ð �Z‰Zœ5Ÿ=™=×3Ñ3Ò3Ø#ŸZ™Z¨Ó.ˆNÞØ!/×!BÑ!BÓ!D‘à!#�ÜØ>ØIÈ$ÈÈ{Ð[aÐZbð c"Ü"3°B·I±IÓ">Ð!?¸qðBàAÀ.ÐAQÐRàCðð  ó	ð �Z‰Zœ5Ÿ=™=×9Ñ9Ò9ð
7ÜØHØØ AàMðó	ô ×'×'Ý6ð /×5Ñ5°b¿*¹*ÓE�
ä! *Ô.B×CÑCØ%×3Ñ3°B¸fÓEÐEÜ˜tŸz™z¨>Ð;OÓPˆHÜ §
¡
¨L¸$Ó?ˆIØ09Ñ0AÑ,ÄsÈ9Ã~ˆKð8YÜ—’ t§z¡zÓ2�àUÐV^ÐU_ð ` Ø $˜vÐ%<ð>ð ð
 3°8°*¸BÐ?ð�ð  DÓ(ØØTÐU]ÐT^ð _lð lð ;ð	ñ �EðX Ð+Ó+ð?ð ð �Ø$(§K§K�T—[’[Ð5GˆFÜØFØ" ; -¨|¸H¸:À_ÐU[ÐT\Ð]Ø'Øó	øôa ó 7Ü% a§e¡eÓ,°$Ð6ûð7ûôB ó %YØ06¸Ð/DÐ,ØÐ <Ó<ðØ'˜=¨¨(¨°2ð7ð  ð
iðGð’Eð Ñ*¨y×/CÑ/CÀH×/MÑ/MØ$NÈ{ÈmÐ[\Ð]eÐ\fÐfgÐ"h�Kð^ð�Eô
 —M‘M×'Ñ'×1Ñ1°+ÀÑ2DÀtÇyÁyÐQVÓGWÑ2WÖXð JÈ+ÈÐVWÐX`ÐWað bað bð  ðmð;ð�Eô —M‘M×'Ñ'×1Ñ1°+ÀÑ2DÀtÇyÁyÐQVÓGWÑ2W×XðK%Yús9   ÆJ6 È6AK Ê6
KË KËKË!N5ÌA#N5Í&AN5Î4N5r¦   c                 óh   • [         R                  R                  [        U R                  U5      5      $ r’   )r   r@   r´   rþ   r  rP  s      r_   r  Ú%SkipFunctionVariable.call_obj_hasattr3  s&   € ô ×)Ñ)×0Ñ0´¸¿¹ÀTÓ1JÓKÐKr^   c                 ó„   • U[         ;   a  [        R                  " X5      $ [        XR                  U R
                  U5      $ r’   )r3   r   r]  rÙ   r  r¯   rP  s      r_   r^  Ú SkipFunctionVariable.var_getattr8  s3   € ØÔ)Ó)Ü×,Ò,¨TÓ8Ð8ä˜b§*¡*¨d¯k©k¸4Ó@Ð@r^   c                 ó   • gr
  rX   rà   s    r_   rÐ  Ú'SkipFunctionVariable.is_python_hashable>  r  r^   c                 ó,   • [        U R                  5      $ r’   )rÓ  r  rà   s    r_   rÔ  Ú$SkipFunctionVariable.get_python_hashA  s   € Ü�D—J‘JÓÐr^   rÖ  c                 ór   • [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ r’   )r±   r>   r3  rØ  s     r_   rÙ  Ú$SkipFunctionVariable.is_python_equalD  s1   € ä�uœoÓ.÷ HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
r^   )rO  r  r’   )rY   rZ   r[   r\   r>   rÜ  r   r  r‚   r3  rÞ  r   r!  r   rŠ   rû   r@   r  r^  r  rÐ  rß  rÔ  rà  rÙ  r]   rá  râ  s   @r_   rN  rN  {  s1  ø† àØðð 
×	'Ñ	'ð€Nñ˜cð ¨3°©:ð Èð ÐPT÷ ð ð
 Cô ð ð) sð )°Fð )Ð?Uó )ó ð)ð4Là#ðLð �Ñ'ðLð �S˜/Ð)Ñ*ð	Lð
 
ôLð\LØ)ðLØ14ðLà	ôLð
AÐ5ð A¸Sð AÀ_ô Að Dô ð  ô  ð
 Vð 
°÷ 
ò 
r^   rN  c                   óv   ^ • \ rS rSrS\SSS\SS4U 4S jjrS	S
S\\   S\	\
\4   S\4U 4S jjrSS jrSrU =r$ )ÚWrappedSkipFunctionVariableiK  rÈ  r'  rG   r™   r`   Nc                 ó´   >• UR                  SS 5        UR                  SS 5        [        TU ]  " UR                  4SUR                  0UD6  Xl        X l        g )Nr  rO  )r¡   r+  r‚   r  rO  rÈ  r'  rÊ  s       €r_   r‚   Ú$WrappedSkipFunctionVariable.__init__L  sJ   ø€ ð 	�
‰
�7˜DÔ!Ø�
‰
�8˜TÔ"Ü‰Ò˜Ÿ™ÑH¨w¯~©~ÐHÀÒHØŒØ�r^   r–   rE   r˜   c                 ó”   >• U R                   R                  U5        [        TU ]  XU5      nU R                   R	                  U5        U$ r’   rÍ  rÐ  s        €r_   rû   Ú)WrappedSkipFunctionVariable.call_functionX  rÒ  r^   c                 óŽ   ^ ^• TR                  UU 4S j5        T" T R                  5        TR                  [        SS5      5        g )Nc                  ó(   >• T " TR                   5      $ r’   rÕ  rÖ  s   €€r_   r×  Ú9WrappedSkipFunctionVariable.reconstruct.<locals>.<lambda>d  rÙ  r^   r9   FrÚ  rÝ  s   ``r_   r2  Ú'WrappedSkipFunctionVariable.reconstructc  rß  r^   rà  r„  )rY   rZ   r[   r\   rN  r   r‚   r   r>   rŠ   r  rû   r2  r]   rá  râ  s   @r_   r�  r�  K  sr   ø† ð
à%ð
ð +ð
ð ð	
ð
 
÷
ð	à#ð	ð �Ñ'ð	ð �S˜/Ð)Ñ*ð		ð
 
÷	÷>ò >r^   r�  c                   óš   ^ • \ rS rSrSrS\S\S\SS4U 4S jjrS	S
S\S\4U 4S jjr	S\
\   4S jrS	S
S\\   S\\\4   S\4S jrSrU =r$ )ÚWrapperUserFunctionVariableii  a  
Used to represent a wrapper object that contains the actual callable as an
attribute. For example, torch.jit.script/trace have the original function at
their _torchdynamo_inline attribute. Similarly, functions with
__script_if_tracing_wrapper have the original attr at "__original_fn".
Úwrapper_objÚattr_to_tracer™   r`   Nc                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g r…   )r+  r‚   rŒ  r�  )r~   rŒ  r�  r™   r0  s       €r_   r‚   Ú$WrapperUserFunctionVariable.__init__q  s   ø€ Ü‰ÒÑ"˜6Ò"Ø&ÔØ*Õr^   r–   rE   r¦   c                 ó   >• X R                   :X  a`  [        U R                  U R                   5      nU R                  =(       a    [	        U R                  U5      n[
        R                  " XU5      $ [        TU ]!  X5      $ r’   )	r�  r×   rŒ  r¯   r(   r>   r²   r+  r^  )r~   r–   r¦   r®   r¯   r0  s        €r_   r^  Ú'WrapperUserFunctionVariable.var_getattrv  sc   ø€ Ø×%Ñ%Ó%Ü˜$×*Ñ*¨D×,>Ñ,>Ó?ˆCØ—[‘[×B¤Z°·±¸TÓ%BˆFÜ"×(Ò(¨°&Ó9Ð9ä‰wÑ" 2Ó,Ð,r^   c                 ó   • / $ r’   rX   rà   s    r_   rù   Ú%WrapperUserFunctionVariable.self_args~  r  r^   r˜   c           
      óò  • [        U R                  S5      (       Gaé  [        U R                  U R                  S 5      n[        USS5      =(       d    SnUR	                  SSS9S   S:w  Gaš  UR                  5       n[        R                  R                  UR                  5      nUR                  nS	U S
U SSR                  [        R                  " U/5      5       3n	[        R                  R                   R#                  U	5        [        R                  R                   R$                  R'                  S5      n
U
R)                  [$        R*                  5      (       a¦  [        R,                  R.                  R1                  5       n[3        5       U-   nUS   R                  US   R                  4nSR                  [        R                  " U5      5      nSUS    S
US    S3nU[5        U5      -  nU
R7                  U5        U R9                  5       [;        U5      -   n[<        R>                  " [@        RB                  5      RE                  UU [<        RF                  " U R                  5      /UQU5      $ )NÚ
cache_inforZ   rA  rB  r9   )Úmaxsplitr   rb   zGDynamo detected a call to a `functools.lru_cache`-wrapped function at 'Ú:zî'. Dynamo ignores the cache wrapper and directly traces the wrapped function. Silent incorrectness is only a *potential* risk, not something we have observed. Enable TORCH_LOGS=+dynamo for a DEBUG stack trace.

This call originates from:
ztorch._dynamoéÿÿÿÿz)call to a lru_cache wrapped function at: rd  )$rþ   rŒ  r×   r�  ÚsplitÚframe_summaryÚosrs  ÚbasenameÚfilenameÚlinenorm  Ú	tracebackÚformat_listrb   rk  rc   rl  ÚloggingÚ	getLoggerÚisEnabledForÚDEBUGÚ_guardsÚTracingContextÚextract_stackr   r  Údebugrù   r¤   r   r  r   Úgetattr_and_tracerû   r@   )r~   r–   r˜   r™   Ú	target_fnrµ  rš  r�  rž  r‹  Údynamo_loggerÚ
user_stackÚ	frame_locÚuser_stack_formattedÚuser_stack_traceÚall_argss                   r_   rû   Ú)WrapperUserFunctionVariable.call_function�  s$  € ô �4×#Ñ# \×2Ò2Ü × 0Ñ 0°$×2DÑ2DÀdÓKˆIÜ! )¨\¸2Ó>×DÀ"ˆKà× Ñ  ¨qÐ Ð1°!Ñ4¸Ô?Ø "× 0Ñ 0Ó 2�ÜŸ7™7×+Ñ+¨M×,BÑ,BÓC�Ø&×-Ñ-�ð$Ø$, :¨Q¨v¨hð 73ð —w‘wœy×4Ò4°m°_ÓEÓFÐGðIð ô —‘×#Ñ#×-Ñ-¨cÔ2ä %§¡× 3Ñ 3× ;Ñ ;× EÑ EÀoÓ V�Ø ×-Ñ-¬g¯m©m×<Ñ<Ü!&§¡×!=Ñ!=×!KÑ!KÓ!M�JÜ!7Ó!9¸JÑ!F�JØ!+¨B¡×!8Ñ!8¸*ÀR¹.×:OÑ:OÐ P�IØ+-¯7©7´9×3HÒ3HÈÓ3TÓ+UÐ(Ø)RÐS\Ð]^ÑS_ÐR`Ð`aÐbkÐlmÑbnÐaoÐoqÐ'rÐ$Ø$¬Ð,@Ó(AÑAÐ$Ø!×'Ñ'Ð(8Ô9à—>‘>Ó#¤d¨4£jÑ0ˆÜ×-Ò-Ü×'Ñ'ó
ç
‰-ØØ”9×-Ò-¨d×.@Ñ.@ÓAÐMÀHÐMØó
ð	
r^   )r�  rŒ  )rY   rZ   r[   r\   rÎ   r   r  r‚   r>   r^  r¤   rù   r   rŠ   rû   r]   rá  râ  s   @r_   r‹  r‹  i  s”   ø† ñð+ Cð +¸ð +Àsð +Èt÷ +ð
-Ð5ð -¸Sð -À_÷ -ð˜4 Ñ0ô ð,
à#ð,
ð �Ñ'ð,
ð �S˜/Ð)Ñ*ð	,
ð
 
÷,
ò ,
r^   r‹  c            
       óX   ^ • \ rS rSrSrS\S\S\S\SS4
U 4S	 jjrS\	\   4S
 jr
SrU =r$ )ÚWrapperUserMethodVariablei°  zÇ
Similar to WrapperUserFunctionVariable, but for methods. The only delta is
saving the vt for `self` object of the method which is then used by
WrapperUserFunctionVariable in `call_function` method.
rŒ  r�  Úself_objr™   r`   Nc                 ó4   >• [         TU ]  " X40 UD6  X0l        g r’   )r+  r‚   r  )r~   rŒ  r�  r´  r™   r0  s        €r_   r‚   Ú"WrapperUserMethodVariable.__init__·  s   ø€ ô 	‰Ò˜Ñ>°vÒ>Ø�r^   c                 ó   • U R                   /$ r’   r­  rà   s    r_   rù   Ú#WrapperUserMethodVariable.self_argsÁ  r¯  r^   r­  )rY   rZ   r[   r\   rÎ   r   r  r>   r‚   r¤   rù   r]   rá  râ  s   @r_   r³  r³  °  sS   ø† ñðàðð ðð "ð	ð
 ðð 
÷ð˜4 Ñ0÷ ò r^   r³  c                  ó\   • [         R                  R                  5       (       a  SSKJn   U $ 0 $ )Nr   ©Útraceable_collective_remaps)rb   ÚdistributedÚis_availableÚ)torch.distributed._functional_collectivesr»  rº  s    r_   Ú_traceable_collective_remapsr¿  Å  s)   € ä×Ñ×%Ñ%×'Ñ'õ	
ð +Ð*Ø€Ir^   c                 óâ   • [         R                  R                  5       (       d   S5       eU[        5       R	                  5       ;   d   eUR
                  nU R                  S5      n[        X25      $ )NzIllegal invocation.z)torch.distributed._functional_collectives)rb   r¼  r½  r¿  ÚvaluesrY   Úimport_sourcer(   )r–   rÑ   Ú
inner_nameÚpath_sources       r_   Ú_traceable_collectives_sourcerÅ  Ð  se   € ô ×Ñ×)Ñ)×+Ñ+ÐBÐ-BÓBÐ+ØÔ-Ó/×6Ñ6Ó8Ó8Ð8Ð8à—‘€JØ×"Ñ"Ð#NÓO€KÜ�kÓ.Ð.r^   c                   óö   ^ • \ rS rSrSrS\S\4   S\S\SS4U 4S	 jjr\	S
SS\S\4   S\
S\SS 4
S j5       r\	S\S\4S j5       r\	S
SS\S\4   S\\\4   4S j5       rS
SS\\   S\\\4   S\4S jrSrU =r$ )Ú!CollectiveFunctionRewriteVariableiÛ  aß  
Some of the torch.distributed.* collective APIs are possible to rewrite to 'traceable' collectives.

This class provides both a way to check if a function is remappable, and perform the remapping.

In the case that a function is 'remappable' but only for some combinations of call-time arguments,
we check the args at `call_function` time and fall back to graph-breaking if needed.  This is no worse
than status-quo as we currently graph-break on all distributed.* collectives.
rÑ   .Úreplacement_varr™   r`   Nc                ób   >• [         TU ]  " U40 UD6  [        U[        5      (       d   eX l        g r’   )r+  r‚   r±   r  rÈ  )r~   rÑ   rÈ  r™   r0  s       €r_   r‚   Ú*CollectiveFunctionRewriteVariable.__init__æ  s1   ø€ ô 	‰Ò˜Ñ&˜vÒ&Ü˜/Ô+?×@Ñ@Ð@Ð@Ø.Õr^   r–   rE   Úold_fnr¯   Úoptionsc                 óf   • [         R                  X5      u  pE[        U4[        U4SU0UD6US.UD6$ )Nr¯   )rÈ  r¯   )rÇ  r”  r  )r–   rË  r¯   rÌ  Únew_fnÚ
new_sources         r_   r´   Ú(CollectiveFunctionRewriteVariable.createñ  sK   € ô ?×FÑFÀrÓRÑˆÜ0Øð
ä0°ÑVÀ
ÐVÈgÑVØñ
ð ñ	
ð 	
r^   Úvariablec                 óV   • [         R                  " U 5      =(       a    U [        5       ;   $ r’   )rÓ   Ú
isfunctionr¿  )rÑ  s    r_   Úcan_rewriteÚ-CollectiveFunctionRewriteVariable.can_rewrite 	  s%   € ô ×Ò˜xÓ(×W¨XÔ9UÓ9WÑ-Wð	
r^   c                 ó6   • [        5       U   nU[        X5      4$ r’   )r¿  rÅ  )r–   rÑ   rÎ  s      r_   r”  Ú)CollectiveFunctionRewriteVariable.rewrite	  s"   € ô .Ó/°Ñ3ˆØÔ4°RÓ@Ð@Ð@r^   r˜   c                 óØ  • SS K Jn  SSKJn  [        R
                  " U R                  5      n[        UR                  " U0 UD6R                  5      nSnSU;   aU  US   R                  5       (       a=  [        SU R                   SU< SU< 3SU R                   3/ [        R                  QS	9  U R                  UR                  UR                  UR                   4;   ap  UR#                  S
5      nUb  UR$                  OUR&                  S
   R(                  nX…;  a  [+        SU 35      e[,        R.                  R1                  XX   5      US
'   U R2                  R5                  XU5      $ )Nr   )ÚREDUCE_OP_TO_STRrX   Úasync_opz)async_op=True for distributed collectivesz, args=ú	, kwargs=z3`torch.compile` doesn't support `async_op=True for r%  ÚopzUnsupported all_reduce op: )Útorch.distributedr¼  r¾  rÙ  rÓ   rp  rÑ   rŠ   rq  rr  r3  r$   r   ÚSUPPORTABLEÚ
all_reduceÚreduce_scatter_tensorÚ_reduce_scatter_baser“   r  Ú
parametersÚdefaultrR  r   r@   r´   rÈ  rû   )	r~   r–   r˜   r™   ÚdistrÙ  rp  Úreduce_op_varÚ	reduce_ops	            r_   rû   Ú/CollectiveFunctionRewriteVariable.call_function	  sd  € õ 	)ÝNô ×%Ò% d§g¡gÓ.ˆ	Ü�i—n’n dÐ5¨fÑ5×?Ñ?Ó@ˆØˆà˜Ó F¨:Ñ$6×$IÑ$I×$KÑ$KÜØCØŸ7™7˜) 8 d¡W¨J¨v©iÐ8ØQÐRV×RYÑRYÐQZÐ[ðÜ&×2Ñ2ðò	ð �7‰7Ø�O‰OØ×&Ñ&à×%Ñ%ð	
ó 
ð #ŸJ™J tÓ,ˆMð !Ñ,ð ×#Ò#à×)Ñ)¨$Ñ/×7Ñ7ð ð
 Ó0Ü Ð#>¸y¸kÐ!JÓKÐKÜ$×5Ñ5×<Ñ<Ø Ñ+óˆF�4‰Lð ×#Ñ#×1Ñ1°"¸FÓCÐCr^   )rÈ  )rY   rZ   r[   r\   rÎ   r   r   r  r‚   r  r   r´   r  rÔ  r£   r(   r”  r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   rÇ  rÇ  Û  s1  ø† ñð	/à�S˜#�XÑð	/ð .ð		/ð
 ð	/ð 
÷	/ð ð
Ø#ð
à˜˜c˜Ñ"ð
ð ð
ð ð	
ð
 
-ó
ó ð
ð ð
˜cð 
 dó 
ó ð
ð
 ðAØ#ðAØ)1°#°s°(Ñ);ðAà	ˆs�JˆÑ	óAó ðAð-Dà#ð-Dð �Ñ'ð-Dð �S˜/Ð)Ñ*ð	-Dð
 
÷-Dò -Dr^   rÇ  c                   óL   ^ • \ rS rSrSSS\\   S\\\4   S\4U 4S jjrSr	U =r
$ )	ÚFunctoolsWrapsVariablei=	  r–   rE   r˜   r™   r`   c                 ó¨   >^• U(       d9  [        T5      S:X  a*  S[        S[        4U4S jjn[        R                  " U5      $ [
        TU ]  UTU5      $ )Nr9   rÑ   r`   c                 ó¢   >• [        U [        R                  5      (       a  U R                  TS   S9$ [	        SU  S/ [
        R                  QS9  g )Nr   )rõ  zfunctools.wrapsz]`torch.compile` can't trace `functools.wraps` on functions defined outside the compile regionr%  )r±   r   r   Úcloner$   r   rÞ  )rÑ   r˜   s    €r_   r;  Ú3FunctoolsWrapsVariable.call_function.<locals>.wrapsF	  sQ   ø€ Ü˜b¤)×"FÑ"F×GÑGØŸ8™8¨t°A©w˜8Ð7Ð7ÜØ-Ø!˜dØ ðÜ*×6Ñ6ðó	r^   )rŒ   r   r>   r   ÚLambdaVariabler+  rû   )r~   r–   r˜   r™   r;  r0  s     `  €r_   rû   Ú$FunctoolsWrapsVariable.call_function>	  sL   ù€ ö œ#˜d›) q›.ð
œ#ð 
¤/÷ 
ô ×+Ò+¨EÓ2Ð2ä‰wÑ$ R¨¨vÓ6Ð6r^   rX   )rY   rZ   r[   r\   r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   ré  ré  =	  sB   ø† ð7à#ð7ð �Ñ'ð7ð �S˜/Ð)Ñ*ð	7ð
 
÷7õ 7r^   ré  c                   óL   • \ rS rSrS\4S jrSSS\\   S\\	\4   S\4S jr
S	rg
)ÚCollectionsNamedTupleFunctioniW	  r`   c                 ó   • U R                   $ r’   r8  rà   s    r_   r3  Ú0CollectionsNamedTupleFunction.as_python_constantX	  r:  r^   r–   rE   r˜   r™   c                 ó0  • [        X#5      nU(       a   U R                  " U Vs/ s H  oUR                  5       PM     sn0 UR                  5        VVs0 s H  u  pgXgR                  5       _M     snnD6n[        R                  " W[        5       S9$ [        SSU< SU< 3S/ [         R"                  QS9  g s  snf s  snnf ! [         aI  n	[        [        U	5      U[        [        [        R                  U	R                  5      5      S9   S n	A	N›S n	A	ff = f)N)r˜   rø  znamedtuple constructionzargs=rÛ  z?`torch.compile` only support certain input types for namedtupler%  )r1   rÑ   r3  rž   r¢   r"   r»  r¤   Úmapr@   r´   r˜   r   ÚUserDefinedClassVariabler=   r$   r   rÞ  )
r~   r–   r˜   r™   Úconstant_argsrì  r·   r¸   r  r`  s
             r_   rû   Ú+CollectionsNamedTupleFunction.call_function[	  sý   € ô ,¨DÓ9ˆÞð
ØŸšÙ6:Ó;²d°×*Ñ*Ö,±dÑ;ðà=C¿\¹\¼^ÔLº^±T°Q�q×.Ñ.Ó0Ò0¹^ÒLñ�ô ×5Ò5àÜ.Ó0ñð ô
 	Ø-Ø�t‘g˜Z ™yÐ)ØYðÜ"×.Ñ.ðó		
ùò <ùÛLøäó Ü(Ü˜“IØÜœcÔ"2×"9Ñ"9¸3¿8¹8ÓDÓE÷ûðús3   ”C ¤B7½C ÁB<Á/C Â7C Ã
DÃ?DÄDrX   N)rY   rZ   r[   r\   r   r3  r   r>   rŠ   r  rû   r]   rX   r^   r_   rñ  rñ  W	  sH   † ð Cô ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
r^   rñ  c                   ó>  ^ • \ rS rSrS1\R
                  kr SS\S\\   S\\\4   S\	S\	SS4U 4S	 jjjr
S\4S
 jrSS jrS\	4S jrSSS\\   S\\\4   S\4S jrSSS\S\4S jrSSS\S\4S jrS\	4S jrS\	4S jrS\4S jrS\4S jrS\S\4S jrSrU =r$ )ÚFunctoolsPartialVariablei}	  Úoriginal_cache_hashNrj   r˜   Úkeywordsr™   r`   c                 óð   >• [         TU ]  " S0 UD6  Xl        [        U[        5      (       d   eX l        [        U[        5      (       d   eX0l        [        R                  " [        5      U l        X@l        g r…   )r+  r‚   rj   r±   r¤   r˜   rŠ   rü  r:  Úpartialr4   Ú
fake_valuerû  )r~   rj   r˜   rü  rû  r™   r0  s         €r_   r‚   Ú!FunctoolsPartialVariable.__init__ƒ	  sd   ø€ ô 	‰ÒÑ"˜6Ò"ØŒ	Ü˜$¤×%Ñ%Ð%Ð%ØŒ	Ü˜(¤D×)Ñ)Ð)Ð)Ø Œô $×+Ò+¬HÓ5ˆŒà#6Õ r^   c                 ó"   • [         R                  $ r’   )r:  rþ  rà   s    r_   r?  Ú$FunctoolsPartialVariable.python_type—	  s   € Ü× Ñ Ð r^   c                 óR  ^• TR                  U4S j5        T" U R                  5        U R                  (       a  TR                  U R                  5        U R                  (       d2  TR                  [        [        U R                  5      S-   S5      5        g TR                  U R                  R                  5       5        [        U R                  R                  5       5      nTR                  TR                  [        U5      [        U R                  5      -   S-   US5      5        g )Nc                  ó(   >• T R                  SS5      $ )Nr:  rþ  r<  r6  s   €r_   r×  Ú6FunctoolsPartialVariable.reconstruct.<locals>.<lambda>›	  s   ø€  g×&>Ñ&>¸{ÈIÔ&Vr^   r9   F)rÛ  rj   r˜   Úforeachrü  rÜ  r   rŒ   rÁ  r£   ÚkeysÚcreate_call_function_kw)r~   r3  r  s    ` r_   r2  Ú$FunctoolsPartialVariable.reconstructš	  sÉ   ø€ Ø×ÑÔVÔWÙ�—	‘	ÔØ�9�9Ø�O‰O˜DŸI™IÔ&Ø�}�}Ø×!Ñ!Ô"6´s¸4¿9¹9³~ÈÑ7IÈ5Ó"QÔRØà�‰˜Ÿ™×,Ñ,Ó.Ô/Ü�T—]‘]×'Ñ'Ó)Ó*ˆØ×ÑØ×+Ñ+¬C°«I¼¸D¿I¹I»Ñ,FÈÑ,JÈDÐRWÓXõ	
r^   c                 ó"   • U R                  5       $ r’   ©r3  rà   s    r_   rÿ   Ú%FunctoolsPartialVariable.get_function©	  ó   € Ø×&Ñ&Ó(Ð(r^   r–   rE   c                 óŠ   • U R                   [        U5      -   n0 U R                  EUEnU R                  R	                  XU5      $ r’   )r˜   r¤   rü  rj   rû   )r~   r–   r˜   r™   Úmerged_argsÚmerged_kwargss         r_   rû   Ú&FunctoolsPartialVariable.call_function¬	  s@   € ð —i‘i¤$ t£*Ñ,ˆØ3˜4Ÿ=™=Ð3¨FÐ3ˆØ�y‰y×&Ñ& r¸ÓFÐFr^   r¦   c                 ó„   • [         R                  R                  [        [        R
                  " [        5      U5      5      $ r’   )r   r@   r´   rþ   r:  rþ  r4   rP  s      r_   r  Ú)FunctoolsPartialVariable.call_obj_hasattr¶	  s2   € ô ×)Ñ)×0Ñ0Ü”I×%Ò%¤hÓ/°Ó6ó
ð 	
r^   c                 óê  • U R                   =(       a    [        U R                   U5      nUS:X  a  U R                  $ US:X  a  [        R                  " U R
                  US9$ US:X  aW  U R                  R                  5        VVs0 s H  u  pE[        R                  " U5      U_M     nnn[        R                  " XcS9$ U[        ;   a  [        R                  " X5      $ [        [        U5        g s  snnf )Nrj   r˜   r  rü  )r¯   r(   rj   r   rK   r˜   rü  rž   r@   r´   ÚConstDictVariabler3   r]  r"   rÕ   )r~   r–   r¦   r¯   r·   r¸   rž   s          r_   r^  Ú$FunctoolsPartialVariable.var_getattr¾	  sÃ   € Ø—‘×>¤¨D¯K©K¸Ó!>ˆà�6‹>Ø—9‘9ÐØ�6‹>Ü×)Ò)¨$¯)©)¸FÑCÐCØ�:ÓØ?C¿}¹}×?RÑ?RÔ?TÔUÒ?T±t°qÔ%×,Ò,¨QÓ/°Ò2Ñ?TˆEÑUÜ×.Ò.¨uÑDÐDØÔ)Ó)Ü×,Ò,¨TÓ8Ð8Ü ¤°Õ4ùó	 Vs   Â#C/c                 óB  • [         R                  " U R                  R                  5       /U R                   Vs/ s H  oR                  5       PM     snQ70 U R
                  R                  5        VVs0 s H  u  p#X#R                  5       _M     snnD6$ s  snf s  snnf r’   )r:  rþ  rj   r3  r˜   rü  rž   )r~   r„  r·   r¸   s       r_   r3  Ú+FunctoolsPartialVariable.as_python_constantÌ	  sƒ   € Ü× Ò Ø�I‰I×(Ñ(Ó*ð
à26·)²)Ó<²)¨3×$Ñ$Ö&±)Ñ<ò
ð 6:·]±]×5HÑ5HÔ5JÔKÒ5J©T¨Qˆq×&Ñ&Ó(Ò(Ñ5JÒKñ
ð 	
ùâ<ùÛKs   ¹B
Á4Bc                 ó‚  • [         R                  " U R                  R                  5       /U R                   Vs/ s H  oR                  5       PM     snQ70 U R
                  R                  5        VVs0 s H  u  p!X!R                  5       _M     snnD6nU R                  b  U R                  Ul        U$ s  snf s  snnf )zcSimilar to as_python_constant(), but add ID_MATCH guards to try to force things to become constants)	r:  rþ  rj   Úguard_as_python_constantr˜   rü  rž   rû  Ú
cache_hash)r~   r¸   r·   rµ   s       r_   r  Ú1FunctoolsPartialVariable.guard_as_python_constantÓ	  s¤   € ä×"Ò"Ø�I‰I×.Ñ.Ó0ð
à48·I²IÓ>²I¨q×(Ñ(Ö*±IÑ>ò
ð <@¿=¹=×;NÑ;NÔ;PÔQÒ;P±4°1ˆq×,Ñ,Ó.Ò.Ñ;PÒQñ
ˆð ×#Ñ#Ñ/Ø $× 8Ñ 8ˆFÔØˆùò ?ùÛQs   ¹B6
Á4B;c                 óÞ   • U R                   R                  5       =(       aM    [        S U R                   5       5      =(       a*    [        S U R                  R                  5        5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   ©rÐ  rr  s     r_   r½  Ú>FunctoolsPartialVariable.is_python_hashable.<locals>.<genexpr>â	  s   é € ÐBº	°×*Ñ*×,Ð,º	ùrt  c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   r  ©r¼  r  s     r_   r½  r   ã	  s   é € ÐSÒ<R°5×,Ñ,×.Ð.Ò<Rùrt  )rj   rÐ  rÁ  r˜   rü  rÁ  rà   s    r_   rÐ  Ú+FunctoolsPartialVariable.is_python_hashableß	  sP   € à�I‰I×(Ñ(Ó*÷ TÜÑB¸¿	º	ÓBÓB÷TäÑS¸D¿M¹M×<PÑ<PÔ<RÓSÓSð	
r^   c                 óÀ   • U R                   R                  5       nS U R                   5       nS U R                  R	                  5        5       n[        U/UQUQ75      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   ©rÔ  rr  s     r_   r½  Ú;FunctoolsPartialVariable.get_python_hash.<locals>.<genexpr>è	  s   é € Ð@²i¨s×(Ñ(×*Ð*²iùrt  c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   r&  r"  s     r_   r½  r'  é	  s   é € ÐSÒ<R°5×,Ñ,×.Ð.Ò<Rùrt  )rj   rÔ  r˜   rü  rÁ  rÓ  )r~   Ú	func_hashÚ	args_hashÚvalues_hashs       r_   rÔ  Ú(FunctoolsPartialVariable.get_python_hashæ	  sQ   € Ø—I‘I×-Ñ-Ó/ˆ	Ù@°d·i²iÓ@ˆ	ÙS¸D¿M¹M×<PÑ<PÔ<RÓSˆÜ�YÐ9 Ð9¨[Ñ9Ó:Ð:r^   rÖ  c                 óŽ  • [        U[        5      =(       a¯    U R                  R                  UR                  5      =(       aƒ    [	        S [        U R                  UR                  5       5       5      =(       aL    [	        S [        U R                  R                  5       UR                  R                  5       5       5       5      $ )Nc              3   óH   #   • U  H  u  pUR                  U5      v •  M     g 7fr’   ©rÙ  )r¼  Úarg_aÚarg_bs      r_   r½  Ú;FunctoolsPartialVariable.is_python_equal.<locals>.<genexpr>ð	  s'   é € ð â&@‘N�Uð ×%Ñ% e×,Ð,Ú&@ùó   ‚ "c              3   óH   #   • U  H  u  pUR                  U5      v •  M     g 7fr’   r/  )r¼  Úvalue_aÚvalue_bs      r_   r½  r2  ô	  s,   é € ð ò+Ñ&�Wð ×'Ñ'¨×0Ð0ò+ùr3  )	r±   rú  rj   rÙ  rÁ  r‹   r˜   rü  rÁ  rØ  s     r_   rÙ  Ú(FunctoolsPartialVariable.is_python_equalì	  s–   € ä�uÔ6Ó7÷ Ø—	‘	×)Ñ)¨%¯*©*Ó5÷äñ ä&)¨$¯)©)°U·Z±ZÔ&@óó ÷ô ñ ä*-Ø—M‘M×(Ñ(Ó*¨E¯N©N×,AÑ,AÓ,Cô+óó ð	
r^   )r˜   rÿ  rj   rü  rû  r’   r„  )rY   rZ   r[   r\   r>   rÜ  r   rŠ   r  r   r‚   r»  r?  r2  rÿ   rû   r@   r  r^  r3  r  r  rÐ  rß  rÔ  rà  rÙ  r]   rá  râ  s   @r_   rú  rú  }	  sO  ø† àðà	×	'Ñ	'ð€Nð $(ñ7àð7ð �Ñ'ð7ð �s˜OÐ+Ñ,ð	7ð
 !ð7ð ð7ð 
÷7ð 7ð(!˜Tô !ô
ð)˜cô )ðGà#ðGð �Ñ'ðGð �S˜/Ð)Ñ*ð	Gð
 
ôGð
Ø)ð
Ø14ð
à	ô
ð5Ð5ð 5¸Sð 5À_ô 5ð
 Cô 
ð
¨#ô 
ð
 Dô 
ð; ô ;ð
 Vð 
°÷ 
ò 
r^   rú  c            
       ó|  ^ • \ rS rSrSSS1\R
                  kr\\R                  S\	\
S\4   \R                  4   4S j5       5       r\S\S	\SS 4S
 j5       rS\S\SS4U 4S jjr\S\
S\4   4S j5       rS\4S jrS\4S jrSSS\\   S\	\\4   S\4S jrSSS\S\\   S\	\\4   S\4
S jrS\4S jrSrU =r$ )ÚPolyfilledFunctionVariableiý	  rÑ   rõ  Útraceable_fnr`   .c                 ó   • 0 $ r’   rX   )r   s    r_   Ú_get_polyfill_handlersÚ1PolyfilledFunctionVariable._get_polyfill_handlers
  s	   € ð ˆ	r^   r  r¯   c                 ó^   • [        UR                  [        R                  5      5        U " XS9$ r  r  r  s      r_   r!  Ú-PolyfilledFunctionVariable.create_with_source

  s(   € ô 	�f×'Ñ'¬×(BÑ(BÓCÔDá�5Ñ(Ð(r^   r™   Nc                 óH  >• [         TU ]  " S0 UD6  Xl        U R                  5       R	                  X5      nS n[        U5      (       d   SU SU 35       eS H,  n[        X5S 5      nU(       d  M  [        U5      (       d   eUn  O   [        SU S35      eX0l        X@l	        g )NzPolyfill handler z is not callable for )Ú__torch_dynamo_polyfill__Ú__python_implementation__z# does not have a traceable functionrX   )
r+  r‚   rÑ   r<  r“   Úcallabler×   ro  rõ  r:  )r~   rÑ   r™   Úhandlerr:  Úcandidate_attrÚ	candidater0  s          €r_   r‚   Ú#PolyfilledFunctionVariable.__init__
  s¾   ø€ Ü‰ÒÑ"˜6Ò"àŒà×-Ñ-Ó/×3Ñ3°BÓ;ˆØˆÜ˜× Ñ ÐXÐ$5°g°YÐ>SÐTVÐSWÐ"XÓXÐ ó
ˆNô   ¸Ó>ˆIßˆyÜ 	×*Ñ*Ð*Ð*Ø(�Ùñ
ô Ø# G 9Ð,OÐPóð ð "Œà ,Õr^   c                 ó   • U R                   $ r’   )r:  rà   s    r_   Úpolyfill_fnÚ&PolyfilledFunctionVariable.polyfill_fn,
  s   € à× Ñ Ð r^   c                 ó0   • [        U R                  SS5      $ )NÚ*__torch_dynamo_can_constant_fold_through__F)r×   rõ  rà   s    r_   Úcan_constant_fold_throughÚ4PolyfilledFunctionVariable.can_constant_fold_through0
  s   € ÜØ�O‰OÐIÈ5ó
ð 	
r^   c                 ó"   • U R                  5       $ r’   r  rà   s    r_   rÿ   Ú'PolyfilledFunctionVariable.get_function5
  r  r^   r–   rE   r˜   c                 óf  • U R                  5       (       a‡  [        X#5      (       aw  U R                  " U Vs/ s H  oDR                  5       PM     sn0 UR	                  5        VVs0 s H  u  pVXVR                  5       _M     snnD6n[
        R                  " X5      $ U R                  [        R                  L Ga6  [        U5      S:X  Ga&  U(       Gd  [        US   [        R                  [        R                  45      (       aì  [        S US   R                   5       5      (       aÈ  [        R                  R!                  UUR"                  R%                  S[&        R(                  [+        S US   R                   5       5      40 5      [&        R(                  " US   R                   Vs/ s H4  nUR-                  5       (       a  UR                  5       OUR.                  PM6     sn5      S9$ [
        R                  " XR0                  5      nUR3                  XU5      $ s  snf s  snnf s  snf )Nr9   r   c              3   ó  #   • U  Hx  nUR                  5       =(       a    [        UR                  5       [        5      =(       d7    [        U[        R
                  5      =(       a    UR                  5       [        L v •  Mz     g 7fr’   )r¿  r±   r3  rß  r   ÚSymNodeVariabler?  )r¼  rì  s     r_   r½  Ú;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>O
  sd   é € ð ò '�Að ×%Ñ%Ó'×S¬J°q×7KÑ7KÓ7MÌsÓ,S÷ YÜ˜q¤)×";Ñ";Ó<×WÀÇÁÃÔTWÐAWôYâ&ùs   ‚B Brû   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr’   )Úas_proxy)r¼  Úas     r_   r½  rT  Z
  s   é € Ð?²¨AŸ:™:Ÿ<˜<²ùrt  )Úsym_num)rM  r2   rÑ   r3  rž   r>   r²   ÚbuiltinsÚsumrŒ   r±   r   rK   ÚTupleVariablerÁ  rS  r´   r¼   Úcreate_proxyrb   Úsym_sumr£   r¿  rX  r:  rû   )	r~   r–   r˜   r™   rì  r·   r¸   rµ   Útraceable_function_variables	            r_   rû   Ú(PolyfilledFunctionVariable.call_function8
  så  € ð ×)Ñ)×+Ñ+Ô0MØ÷1
ñ 1
ð —’Ù6:Ó;²d°×*Ñ*Ö,±dÑ;ðà=C¿\¹\¼^ÔLº^±T°Q�q×.Ñ.Ó0Ò0¹^ÒLñð ô #×(Ò(¨Ó4Ð4ð �G‰G”x—|‘|Ó#Ü�D“	˜Q”ßÜ˜4 ™7¤Y×%;Ñ%;¼Y×=TÑ=TÐ$U×VÑVÜñ ð ˜a™Ÿšó÷ ñ ô ×,Ñ,×3Ñ3ØØ—	‘	×&Ñ&Ø#Ü—M‘MÜÑ?°°a±·²Ó?Ó?ÐAØó	ô Ÿšð "& a¡§¢óò "/˜Að  !×3Ñ3×5Ñ5ð ×0Ñ0Ô2à!"§¡ò+ñ "/ñó	ð 4ð ð ô( '6×&;Ò&;¸B×@QÑ@QÓ&RÐ#Ø*×8Ñ8¸À6ÓJÐJùòO <ùÛLùò4s   ¶H#Á%H(Æ-;H.r¦   c                 óZ  • US:X  a  U R                  XU5      $ [        U R                  US 5      nU(       d,  [        U5      (       d  [	        USU SU R                   35        0 nU R
                  (       a  [        U R
                  U5      US'   [        U40 UD6nUR                  XU5      $ )NÚ__call__zCannot find callable z in r¯   )rû   r×   rÑ   r5   r<   r¯   r(   r9  )r~   r–   r¦   r˜   r™   ÚmethodrÌ  Úpolyfilled_method_variables           r_   r  Ú&PolyfilledFunctionVariable.call_methodl
  sž   € ð �:ÓØ×%Ñ% b°Ó7Ð7ä˜Ÿ™ $¨Ó-ˆÞœ+ f×-Ñ-Ü  Ð'<¸T¸FÀ$ÀtÇwÁwÀiÐ%PÔQØˆØ�;�;Ü *¨4¯;©;¸Ó =ˆG�HÑä%?ÀÑ%RÈ'Ñ%RÐ"Ø)×7Ñ7¸À&ÓIÐIr^   c                 ó   • U R                   $ r’   r8  rà   s    r_   r3  Ú-PolyfilledFunctionVariable.as_python_constant€
  r:  r^   )rÑ   r:  rõ  ) rY   rZ   r[   r\   r>   rÜ  rÞ  r:  ÚcacherŠ   r   r   rÊ   r   r<  r   r!  rM   r‚   ÚpropertyrI  r  rM  rÿ   r   r  rû   r¤   r  r3  r]   rá  râ  s   @r_   r9  r9  ý	  s€  ø† àØØðð 
×	'Ñ	'ð	€Nð Ø‡_�_ð t¨H°S¸#°XÑ,>À×@RÑ@RÐ,RÑ'Só ó ó ðð ð)Øð)Ø!'ð)à	%ó)ó ð)ð-˜2ð -¨ð -°÷ -ð4 ð!˜X c¨3 hÑ/ó !ó ð!ð
¨4ô 
ð
)˜cô )ð2Kà#ð2Kð �Ñ'ð2Kð �S˜/Ð)Ñ*ð	2Kð
 
ô2KðhJà#ðJð ðJð �?Ñ#ð	Jð
 �S˜/Ð)Ñ*ðJð 
ôJð( C÷ ò r^   r9  c                   ó~   ^ • \ rS rSrS\S\SS4U 4S jjrSS	 jrSSS\4S
 jrSSS\	\   S\
\\4   S\4S jrSrU =r$ )ÚSysFunctionVariablei„
  r  r™   r`   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g r…   )r+  r‚   r  )r~   r  r™   r0  s      €r_   r‚   ÚSysFunctionVariable.__init__…
  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�
r^   r–   rE   c                 óL  • [        UR                  5      (       aF  UR                  S   nUR                  nUR                  US5      n[        R
                  " X5      X$/nO/[        R                  [        R                  [        R                  /n[        R                  " U5      $ )Nr˜  Ú__traceback__)	rŒ   Úexn_vt_stackr‚  r^  r>   r²   r   r?   r[  )r~   r–   ÚexnrŠ  Útbrž   s         r_   Úexc_infoÚSysFunctionVariable.exc_info‰
  s„   € Üˆr�‰×ÑØ—/‘/ "Ñ%ˆCØ—,‘,ˆCØ—‘  _Ó5ˆBÜ$×*Ò*¨2Ó3°SÐ=‰Eô ×0Ñ0Ü×0Ñ0Ü×0Ñ0ðˆEô
 ×&Ò& uÓ-Ð-r^   c                 ó>   • U R                  U5      R                  S   $ )Nr9   )rr  rž   r  s     r_   Ú	exceptionÚSysFunctionVariable.exception—
  s   € Ø�}‰}˜RÓ ×&Ñ& qÑ)Ð)r^   r˜   c                 ó¾   • U R                   [        R                  L a  U R                  U5      $ U R                   [        R                  L d   eU R                  U5      $ r’   )r  r³  rr  ru  rú   s       r_   rû   Ú!SysFunctionVariable.call_functionš
  sH   € ð �:‰:œŸ™Ò%Ø—=‘= Ó$Ð$à�z‰zœSŸ]™]Ò*Ð*Ð*Ø�~‰~˜bÓ!Ð!r^   rS  )r–   rE   r`   zvariables.TupleVariable)rY   rZ   r[   r\   r   r‚   rr  r>   ru  r   rŠ   r  rû   r]   rá  râ  s   @r_   rj  rj  „
  su   ø† ð˜cð ¨Sð °T÷ ô.ð*Ð3ð *¸ô *ð
"à#ð
"ð �Ñ'ð
"ð �S˜/Ð)Ñ*ð	
"ð
 
÷
"ò 
"r^   rj  )Ú create_tma_experimental_metadataÚcreate_tma_stable_metadataÚTMADescriptorMetadataÚTritonHOPifierc                   ó¤  • \ rS rSrS\S\4S jrS\S\4S jr	S\S\
4S jrS	S
S\\R                  R                  R                   S4   4S jrS	\
S\\\
4   SSS\
4S jrS\S\
4   S\\   S\\\4   S\S   S\
S\4S jrS\
S\S   S\
S\S\4
S jrS\
S\S   S\\
   4S jrS\S\
4S jrSSS\\
   SS4S jrSSS\
S \\\
4   SSSS!4
S" jrS#rg$)%ÚDynamoTritonHOPifieri¯
  r‹  r`   c                 ó"   • [        SSSU 3/ S9  g )Nz!triton kernel unsupported featurerA  z/Encountered triton kernel unsupported feature: r%  ©r$   )r~   r‹  s     r_   Úraise_unsupportedÚ&DynamoTritonHOPifier.raise_unsupported°
  s   € ÜØ7ØØIÈ#ÈÐOØó		
r^   Úmaybe_callablec                 ó.   • [        U[        [        45      $ r’   )r±   r   r  )r~   rƒ  s     r_   Úis_callableÚ DynamoTritonHOPifier.is_callable¸
  s   € ÜØÔ7Ô9MÐNó
ð 	
r^   r®   c                 ó   • UR                   $ r’   rS  )r~   r®   s     r_   Ú	get_valueÚDynamoTritonHOPifier.get_value½
  s   € Ø�y‰yÐr^   ÚgridrJ   .c                 ó    • SSK Jn  [        X5      (       a  UR                  5       $ [	        SS[        U5       3S/ [        R                  QS9  g )Nr9   )rJ   z/unsupported grid type for triton hop check_gridzgrid type = z;`torch.compile` only supports list-like grid for check_gridr%  )ÚlistsrJ   r±   rV  r$   r»  r   rÞ  )r~   rŠ  rJ   s      r_   Ú
check_gridÚDynamoTritonHOPifier.check_gridÀ
  sK   € Ý+ä�d×-Ñ-Ø—=‘=“?Ð"äØIØ&¤t¨D£z lÐ3ØYðÜ&×2Ñ2ðó	r^   Úmetar–   rE   c                 ó¼   • UR                  5        VVs0 s H%  u  pE[        R                  R                  U5      U_M'     nnnUR	                  X6/0 5      nU$ s  snnf r’   )rž   r   r@   r´   rû   )r~   rŠ  r�  r–   r·   r¸   Úmeta_vars          r_   Ú	call_gridÚDynamoTritonHOPifier.call_gridÏ
  sW   € ð IMÏ
É
ÌÔUÊÁÀ”I×.Ñ.×5Ñ5°aÓ8¸!Ò;ÉˆÑUØ×!Ñ! " j°"Ó5ˆØˆùó Vs   ”,AÚuser_fnr˜   r™   rÑ  c                 óX   • SSK Jn  UR                  XA5      nUR                  XBU5      nU$ )Nr9   r`  )rj  ra  r´   rû   )	r~   r”  r˜   r™   r–   rÑ  ra  Úwrapped_user_functionrµ   s	            r_   Úcall_user_defined_fnÚ)DynamoTritonHOPifier.call_user_defined_fn×
  s/   € õ 	/à 1× 8Ñ 8¸Ó EÐØ&×4Ñ4°R¸vÓFˆØˆr^   Úuser_objr¦   c                 óv   • SSK Jn  Uc   eU" U[        UR                  U 5      5      R	                  U5      nU$ )Nr9   )ÚVariableBuilder)rj  r›  r(   Úkernel_sourceÚ_wrap)r~   r™  r–   rÑ  r¦   r›  Úwrapped_user_objs          r_   Úwrap_user_defined_objÚ*DynamoTritonHOPifier.wrap_user_defined_objå
  sC   € õ 	-à‰~Ðˆ~Ù*Ø”
˜8×1Ñ1°d°VÓ=ó
ç
‰%�‹/ð 	ð  Ðr^   Úconfigsc                 ór   • UR                  U5      nU Vs/ s H  o3R                  " 5       PM     nnU$ s  snf r’   )Úunpack_var_sequencer  )r~   r¡  r–   r   s       r_   Úmaybe_unpack_configsÚ)DynamoTritonHOPifier.maybe_unpack_configsô
  s>   € ð ×-Ñ-¨bÓ1ˆñ DKÓKÂ7¸×2Ò2Ö4Á7ˆÐKàˆùò Ls   –4rµ   c                 ón   • UR                  5       (       d  U R                  S5        UR                  5       $ )Nz`@triton.heuristics must return constant values because configs can only contain constant values.)r¿  r�  r  )r~   rµ   s     r_   Úmaybe_unpack_heuristic_resultÚ2DynamoTritonHOPifier.maybe_unpack_heuristic_resultÿ
  s3   € Ø×(Ñ(×*Ñ*Ø×"Ñ"Ørôð ×.Ñ.Ó0Ð0r^   ÚTritonKernelVariablec                 óÂ   • UR                   c  [        U5      S:w  a  U R                  S5        [        U5      " UR                  UR
                  US   UR                  S9$ )Nr9   z7Triton kernels should be called with only a single gridr   )ÚkernelÚ
kernel_idxrŠ  rœ  )rŠ  rŒ   r�  r»  r«  r¬  r¯   )r~   rÑ  r˜   s      r_   Úcall_getitemÚ!DynamoTritonHOPifier.call_getitem	  sZ   € ð �=‰=Ñ$¬¨D«	°Q«Ø×"Ñ"ØIôô �HŒ~Ø—?‘?Ø×*Ñ*Ø�a‘Ø"Ÿ/™/ñ	
ð 	
r^   ÚgridsÚcombined_argszvariables.ConstantVariablec                 óº  • SSK Jn  0 n[        UR                  5       5       HH  nX7   n[	        U[
        [        45      (       d  M$  UR                  5       Xg'   UR                  5       X7'   MJ     UR                  5        VVs0 s H%  u  px[        R                  R                  U5      U_M'     n	nnSSKJn
Jn  UR                  5        VVs0 s HC  u  px[	        U[         5      (       d  M  UR#                  5       (       d  M3  XxR%                  5       _ME     nnnU	R                  5        VVs0 s H3  u  px[	        U[         5      (       a  UR#                  5       (       a  M1  Xx_M5     nnnUR'                  5        H_  nUR)                  5       nUR+                  5       (       a  M*  UR-                  5       (       a  MA  U R/                  S[1        U5       S35        Ma     U
R3                  U5      nU" U[4        5      nUR6                  R9                  SUSUR:                  UUUUR=                  5       S	.5        [        R                  " S 5      $ s  snnf s  snnf s  snnf )
Nr9   )r  r   )Úkernel_side_tableÚtriton_kernel_wrapper_mutationz.Unexpected argument type for a Triton kernel: rB  rû   rX   )r¬  Úconstant_args_idxrŠ  Útma_descriptor_metadatar™   )Údictsr  r¤   r  r±   Ú!TMADescriptorExperimentalVariableÚTMADescriptorStableVariableÚto_metadataÚ
get_tensorrž   r   r@   r´   Ú*torch._higher_order_ops.triton_kernel_wrapr²  r³  r>   r¿  r3  rÁ  r  rî  Úis_symnode_liker�  ÚreprÚadd_constant_argsrŠ   r¼   r\  r¬  rV  )r~   rÑ  r¯  r°  r–   r  rµ  r·   r¸   Úcombined_args_vtr²  r³  r÷  Únon_constant_argsr´  r�  s                   r_   Úcall_HOPÚDynamoTritonHOPifier.call_HOP  s'  € õ 	-ð :<ÐÜ�m×(Ñ(Ó*Ö+ˆAØÑ ˆAÜØÔ5Ô7RÐS÷ó ð ./¯]©]«_Ð'Ñ*Ø#$§<¡<£>�Ó ñ ,ð AN×@SÑ@SÔ@Uô
Ú@U¹¸ŒI×&Ñ&×-Ñ-¨aÓ0°!Ò3Ñ@Uð 	ñ 
÷	
ð &×+Ñ+Ô-ô
â-‘�Ü˜!œ_×-ó &à23×2FÑ2F×2Hó &ˆA×#Ñ#Ó%Ò%Ù-ð 	ñ 
ð )×.Ñ.Ô0ô
â0‘�Ü˜q¤/×2Ñ2°q×7KÑ7K×7Mó ˆAŠDÙ0ð 	ñ 
ð #×)Ñ)Ö+ˆAØ—	‘	“ˆAØ—K‘K—M“M Q×%6Ñ%6×%8Ó%8Ø×&Ñ&ØDÄTÈ!ÃWÀIÈQÐOöñ ,ð .×?Ñ?ÀÓNÐÙ Ð!2´DÓ9ˆØ
�	‰	×ÑØØ*Øà&×1Ñ1Ø%6ØØ+BØŸ-™-›/ñô		
ô ×)Ò)Øó
ð 	
ùó[
ùó
ùó

s$   Â,IÃIÃ*IÄIÄ+0IÅIrX   N)rY   rZ   r[   r\   r  r   r�  r>   r  r…  r   rˆ  r£   rb   ÚfxÚproxyÚProxyr�  rŠ   r’  r   r   r   r—  rŸ  r¤   r¤  r§  r­  rÁ  r]   rX   r^   r_   r~  r~  ¯
  sÏ  † ð
 Sð 
¨Uô 
ð
¨/ð 
¸dô 
ð
˜_ð °ô ðÐ1ð °e¸E¿H¹H¿N¹N×<PÑ<PÐRUÐ<UÑ6Vô ðØðØ# C¨ H™~ðØ3Jðà	ôðà˜#˜s˜(Ñ#ðð �Ñ'ðð �S˜/Ð)Ñ*ð	ð
 Ð,Ñ-ðð ðð 
ôð àð ð Ð,Ñ-ð ð ð	 ð
 ð ð 
ô ð	Øð	Ø (Ð)@Ñ Að	à	ˆc‰ô	ð1°Oð 1Èô 1ð
à(ð
ð �s‰mð
ð 
 ô	
ð$G
à(ðG
ð ðG
ð ˜C ˜H‘~ð	G
ð
 $ðG
ð 
&÷G
r^   r~  c            
       óæ   ^ • \ rS rSr% S\S'   S\S'   \S-  \S'   S\S	'   S\S\S-  S\S
\SS4
U 4S jjrSSS\\	   S
\
\\	4   S\	4S jrSSS\S\\	   S
\
\\	4   S\	4
U 4S jjrS\S\4S jrSrU =r$ )r©  ih  rH   rŠ  rI   r«  Nr¬  r(   rœ  r™   r`   c                 ó€   >• UR                  SS 5      U l        [        TU ]  " S0 UD6  [        R                  XX#5        g )Nrœ  rX   )r¡   rœ  r+  r‚   Ú dynamo_triton_hopifier_singletonÚinit_variable)r~   r«  r¬  rŠ  r™   r0  s        €r_   r‚   ÚTritonKernelVariable.__init__n  s8   ø€ ð $ŸZ™Z¨¸Ó>ˆÔÜ‰ÒÑ"˜6Ò"Ü(×6Ñ6°tÀZÕVr^   r–   rE   r˜   c                 ó.   • [         R                  XX15      $ r’   )rÈ  Úcall_triton_kernelrú   s       r_   rû   Ú"TritonKernelVariable.call_functionu  s   € ô 0×BÑBØ˜ó
ð 	
r^   r¦   c                 ó’   >• US:X  a  [         R                  X5      $ US:X  a  [         R                  XXA5      $ [        TU ]  XX45      $ )NÚ__getitem__Úrun)rÈ  r­  Úcall_runr+  r  r  s        €r_   r  Ú TritonKernelVariable.call_method  sL   ø€ ð �=Ó Ü3×@Ñ@ÀÓLÐLØ�U‹]Ü3×<Ñ<¸TÈÓTÐTô ‰wÑ" 2¨TÓ:Ð:r^   r„  c                 ó~   • SSK Jn  SSKJn  [	        X5      (       a   UR
                  " UR                  5       5      $ U$ )Nr9   )r@   )rS  )r¶  r@   ÚtensorrS  r±   r´   Úevaluate_expr)r~   r„  r@   rS  s       r_   Úspecialize_symbolicÚ(TritonKernelVariable.specialize_symbolicŽ  s4   € Ý.Ý+ô �c×+Ñ+Ø#×*Ò*¨3×+<Ñ+<Ó+>Ó?Ð?Øˆ
r^   )rœ  )rY   rZ   r[   r\   rÌ   rß  r   r‚   r   r>   rŠ   r  rû   r¤   r  rÖ  r]   rá  râ  s   @r_   r©  r©  h  sì   ø‡ Ø
ÓØÓØ�d‘
ÓØÓðWØðWØ'*¨T¡zðWØ9<ðWØHKðWà	÷Wð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
ð;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;ð sð ¨s÷ ò r^   r©  c                   óv   ^ • \ rS rSrSSS\\   S\\   S\S\SS	4U 4S
 jjrS\4S jrSS jr	S\4S jr
SrU =r$ )r·  i˜  Údata_ptrzvariables.DataPtrVariableÚdimsÚ
block_dimsÚelement_sizer™   r`   Nc                 ó˜   >• [        U[        R                  5      (       d   e[        TU ]  " S0 UD6  Xl        X l        X0l        X@l        g r…   )	r±   r   ÚDataPtrVariabler+  r‚   rÙ  rÚ  rÛ  rÜ  )r~   rÙ  rÚ  rÛ  rÜ  r™   r0  s         €r_   r‚   Ú*TMADescriptorExperimentalVariable.__init__™  sC   ø€ ô ˜(¤I×$=Ñ$=×>Ñ>Ð>Ð>Ü‰ÒÑ"˜6Ò"Ø ŒØŒ	Ø$ŒØ(Õr^   c                 ó   • [        U R                   Vs/ s H  oR                  5       PM     snU R                   Vs/ s H  oR                  5       PM     snU R                  R                  5       5      $ s  snf s  snf r’   )ry  rÚ  rV  rÛ  rÜ  )r~   Údims     r_   r¹  Ú-TMADescriptorExperimentalVariable.to_metadata¨  s[   € Ü/Ø'+§y¢yÓ1¢y �\‰\Ž^¡yÑ1Ø'+§¢Ó7¢ �\‰\Ž^¡Ñ7Ø×Ñ×&Ñ&Ó(ó
ð 	
ùÚ1ùÚ7s
   ”A6½A;
c                 ó  ^ ^• TR                  UU 4S j5        T R                  R                  T5        / T R                  QT R                  QT R
                  PnTR                  U5        TR                  [        U5      S-   S5        g )Nc                  óV   >• T R                  SS[        TR                  5       S35      $ )Nz$triton.tools.experimental_descriptorÚcreate_Úd_tma_descriptor)r5  rŒ   rÚ  rÖ  s   €€r_   r×  Ú?TMADescriptorExperimentalVariable.reconstruct.<locals>.<lambda>±  s)   ø€ �G×,Ñ,Ø6Øœ#˜dŸi™i›.Ð)Ð)9Ð:ôr^   r9   F)	rÛ  rÙ  r2  rÚ  rÛ  rÜ  r  rû   rŒ   )r~   r3  r˜   s   `` r_   r2  Ú-TMADescriptorExperimentalVariable.reconstruct¯  sp   ù€ Ø×Ñõô	
ð 	�‰×!Ñ! 'Ô*Ø@�—‘Ð@˜TŸ_™_Ð@¨d×.?Ñ.?Ð@ˆØ�‰˜ÔØ×Ñœc $›i¨!™m¨UÕ3r^   c                 ó.   • U R                   R                  $ r’   )rÙ  Úfrom_tensorrà   s    r_   rº  Ú,TMADescriptorExperimentalVariable.get_tensor»  s   € Ø�}‰}×(Ñ(Ð(r^   )rÛ  rÙ  rÚ  rÜ  r„  )rY   rZ   r[   r\   r¤   r>   r   r‚   r¹  r2  rº  r]   rá  râ  s   @r_   r·  r·  ˜  sn   ø† ð)à-ð)ð �?Ñ#ð)ð ˜Ñ)ð	)ð
 &ð)ð ð)ð 
÷)ð
˜Sô 
ô
4ð)˜O÷ )ò )r^   r·  c                   ób   ^ • \ rS rSrSSSSS\SS4U 4S	 jjrS\4S
 jrSS jrS\4S jrSr	U =r
$ )r¸  i¿  rÔ  rL   Úblock_shaperK   r™   r`   Nc                 ól   >• UR                  5       (       d   e[        TU ]  " S0 UD6  Xl        X l        g r…   )rî  r+  r‚   rÔ  rí  )r~   rÔ  rí  r™   r0  s       €r_   r‚   Ú$TMADescriptorStableVariable.__init__À  s5   ø€ ð ×Ñ×!Ñ!Ð!Ð!Ü‰ÒÑ"˜6Ò"ØŒØ&Õr^   c                 óH   • [        U R                  R                  5       5      $ r’   )rz  rí  rV  rà   s    r_   r¹  Ú'TMADescriptorStableVariable.to_metadataË  s!   € Ü)Ø×Ñ×%Ñ%Ó'ó
ð 	
r^   c                 óÎ   ^• TR                  U4S j5        TR                  S5        U R                  R                  T5        T" U R                  5        TR                  S5        g )Nc                  ó(   >• T R                  SS5      $ )Nztriton.tools.tensor_descriptorÚTensorDescriptorr<  r6  s   €r_   r×  Ú9TMADescriptorStableVariable.reconstruct.<locals>.<lambda>Ò  s   ø€ �G×,Ñ,Ø0Ø"ôr^   rê  r   )rÛ  Úload_methodrÔ  r2  rí  r  rÝ  s    `r_   r2  Ú'TMADescriptorStableVariable.reconstructÐ  sT   ø€ Ø×Ñôô	
ð 	×Ñ˜MÔ*Ø�‰×Ñ Ô(Ù�× Ñ Ô!Ø×Ñ˜AÕr^   c                 ó   • U R                   $ r’   )rÔ  rà   s    r_   rº  Ú&TMADescriptorStableVariable.get_tensorÜ  s   € Ø�{‰{Ðr^   )rí  rÔ  r„  )rY   rZ   r[   r\   r   r‚   r¹  r2  rº  r]   rá  râ  s   @r_   r¸  r¸  ¿  sP   ø† ð	'à ð	'ð $ð	'ð ð		'ð
 
÷	'ð
˜Sô 
ô

ð˜C÷ ò r^   r¸  c                   ób   ^ • \ rS rSrS\S\SS4U 4S jjrSSS	\\   S\	\
\4   S\4S
 jrSrU =r$ )Ú'CreateTMADescriptorExperimentalVariableià  Úrankr™   r`   Nc                 óB   >• US;   d   e[         TU ]  " S0 UD6  Xl        g )N)r9   r   rX   )r+  r‚   rü  )r~   rü  r™   r0  s      €r_   r‚   Ú0CreateTMADescriptorExperimentalVariable.__init__á  s&   ø€ ð
 �v‹~Ðˆ~Ü‰ÒÑ"˜6Ò"Ø�	r^   r–   rE   r˜   c                 ó  • SU;   a  US   OUS   n[        U[        R                  5      (       d/  [        SSU SU 3SU R                   S3SU R                   S	3/S
9  U R                  S:X  ab  [        U5      [        U5      -   S:w  a$  [        US[        U5      [        U5      -    35        SU;   a  US   OUS   /nSU;   a  US   OUS   /nO[        U5      [        U5      -   S:w  a$  [        US[        U5      [        U5      -    35        SU;   a  US   OUS   SU;   a  US   OUS   /nSU;   a  US   OUS   SU;   a  US   OUS   /nSU;   a  US   OUS   n[        U[        R                  5      (       d   e[        UUUUS9$ )NÚptrr   z.invalid ptr argument for create_tma_descriptorzargs = z, kwargs = z#Expected `ptr` argument of `create_z]d_tma_descriptor`to be from a `.data_ptr()` call, represented internally by `DataPtrVariable`z `torch.compile` may fail to internally represent result of `.data_ptr()` with `DataPtrVariable` due to a graph break between the `.data_ptr()` call and `create_zTd_tma_descriptor`. Please ensure there were no graph breaks between these two calls.r%  r9   rO   z6TMA metadata rank=1 requires exactly 4 arguments, got rá  Ú	block_dimr   é   z6TMA metadata rank=2 requires exactly 6 arguments, got Údim1Údim0Ú
block_dim1r¦  Ú
block_dim0rÜ  r˜  )rÙ  rÚ  rÛ  rÜ  )r±   r   rÞ  r$   rü  rŒ   r<   r·  )r~   r–   r˜   r™   r   rÚ  rÛ  rÜ  s           r_   rû   Ú5CreateTMADescriptorExperimentalVariable.call_functionê  sð  € ð  %¨›ˆf�UŠm°D¸±Gˆä˜#œy×8Ñ8×9Ñ9ÜØHØ! $  {°6°(Ð;ØAÀ$Ç)Á)Àð M_ð _ðà#Ÿy™y˜kð */ð/ðòð �9‰9˜‹>Ü�4‹yœ3˜v›;Ñ&¨!Ó+Ü$ØØLÌSÐQUËYÔY\Ð]cÓYdÑMdÐLeÐfôð
 "'¨&£��u’°d¸1±gðˆDð (3°fÓ'<��{Ò#À$ÀqÁ'ð‰Jô �4‹yœ3˜v›;Ñ&¨!Ó+Ü$ØØLÌSÐQUËYÔY\Ð]cÓYdÑMdÐLeÐfôð
 #)¨FÓ"2��v’¸¸Q¹Ø"(¨FÓ"2��v’¸¸Q¹ðˆDð
 )5¸Ó(>��|Ò$ÀDÈÁGØ(4¸Ó(>��|Ò$ÀDÈÁGðˆJð 2@À6Ó1I�v˜nÒ-ÈtÐTVÉxˆô ˜#œy×8Ñ8×9Ñ9Ð9Ð9ä0ØØØ!Ø%ñ	
ð 	
r^   )rü  )rY   rZ   r[   r\   rß  r   r‚   r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   rû  rû  à  sc   ø† ðàðð ðð 
÷	ð:
à#ð:
ð �Ñ'ð:
ð �S˜/Ð)Ñ*ð	:
ð
 
÷:
ò :
r^   rû  c                   ó>   • \ rS rSrSSS\\   S\\\4   S\4S jrSr	g	)
Ú!CreateTMADescriptorStableVariablei'  r–   rE   r˜   r™   r`   c                 óV   • SU;   a  US   OUS   nSU;   a  US   OUS   n[        UUS9$ )NrÔ  r   rí  r9   )rÔ  rí  )r¸  )r~   r–   r˜   r™   rÔ  rí  s         r_   rû   Ú/CreateTMADescriptorStableVariable.call_function(  sF   € ð &.°Ó%7�˜Ò!¸TÀ!¹WˆØ/<ÀÓ/F�f˜]Ò+ÈDÐQRÉGˆä*ØØ#ñ
ð 	
r^   rX   N)
rY   rZ   r[   r\   r   r>   rŠ   r  rû   r]   rX   r^   r_   r	  r	  '  s<   † ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
r^   r	  c                   óB   • \ rS rSrSrSSS\\   S\\\4   S\4S jr	S	r
g
)Ú!PyTreeGetNodeTypeFunctionVariablei7  a  
`torch.utils._pytree._get_node_type` function is very hot function. We want to special case it to reduce Dynamo tracing time.

def _get_node_type(tree: Any) -> Any:
    node_type = type(tree)
    # All namedtuple types are implicitly registered as pytree nodes.
    # XXX: Other parts of the codebase expect namedtuple types always return
    #      `namedtuple` instead of the actual namedtuple type. Even if the type
    #      is explicitly registered.
    if is_namedtuple_class(node_type):
        return namedtuple
    return node_type
r–   rE   r˜   r™   r`   c                 óè  • [        U5      S:w  a  [        US[        U5       35        S nUS   R                  (       aM  [        US   R                  R	                  [
        R                  5      5        [        US   R                  5      nUS   R                  5       n[        U5      (       a1  [        [        S5      S5      n[        R                  " U[        U5      $ [        R                  " XUS9$ )Nr9   z6pytree_get_node_type requires exactly 1 argument, got r   Úcollectionsr   r  )rŒ   r<   r¯   r'   r  r&   Ú
TYPE_MATCHr0   r?  r   r(   r.   r>   r²   r   )r~   r–   r˜   r™   Útype_sourcer?  s         r_   rû   Ú/PyTreeGetNodeTypeFunctionVariable.call_functionF  sÃ   € ô ˆt‹9˜‹>Ü ØØHÌÈTËÈÐTôð ˆØ�‰7�>�>Ü˜$˜q™'Ÿ.™.×3Ñ3´L×4KÑ4KÓLÔMÜ$ T¨!¡W§^¡^Ó4ˆKØ˜1‘g×)Ñ)Ó+ˆÜ˜{×+Ñ+Ü$¤\°-Ó%@À,ÓOˆKÜ"×(Ò(¨¬Z¸ÓEÐEÜ×$Ò$ R¸[ÑIÐIr^   rX   N)rY   rZ   r[   r\   rÎ   r   r>   rŠ   r  rû   r]   rX   r^   r_   r  r  7  sF   † ñðJà#ðJð �Ñ'ðJð �S˜/Ð)Ñ*ð	Jð
 
÷Jr^   r  c                   óP   ^ • \ rS rSrSrSSS\\   S\\\4   S\4U 4S jjr	S	r
U =r$ )
Ú PyTreeTreeIsLeafFunctionVariablei\  a  
`torch.utils._pytree.tree_is_leaf` function is a hot function. We want to special case it to reduce Dynamo tracing time.

def tree_is_leaf(
    tree: PyTree,
    is_leaf: Callable[[PyTree], bool] | None = None,
) -> bool:
    if is_leaf is not None and is_leaf(tree):
        return True
    return _get_node_type(tree) not in SUPPORTED_NODES

When is_leaf is None (the common case), we can optimize by not tracing into the function.
When is_leaf is not None, we fall back to regular tracing since it requires executing user code.
r–   rE   r˜   r™   r`   c                 óˆ  >• [        U5      S:  d  [        U5      S:”  a  [        US[        U5       35        UR                  S[        5      n[        U5      S:X  a  US   nUR	                  5       (       d  [
        T	U ]  XU5      $ US   n[        [        R                  R                  R                  5      R                  X/0 5      n[        R                  " U[        R                  R                  R                  [        5       S9nUR!                  USU/0 5      n["        R$                  " UR&                  (       + 5      $ )Nr9   r   z,tree_is_leaf requires 1 or 2 arguments, got rQ   r   r  r  )rŒ   r<   r“   r?   rq  r+  rû   r  rb   rc   rd   Ú_get_node_typer>   r²   re   rf   r  r@   r´   r  )
r~   r–   r˜   r™   rQ   ÚtreeÚnode_type_varÚsupported_nodes_varÚoutr0  s
            €r_   rû   Ú.PyTreeTreeIsLeafFunctionVariable.call_functionl  s  ø€ ô ˆt‹9�q‹=œC ›I¨›MÜ ØØ>¼sÀ4»y¸kÐJôð —*‘*˜YÔ(>Ó?ˆÜˆt‹9˜‹>Ø˜1‘gˆGà×'Ñ'×)Ñ)Ü‘7Ñ(¨°6Ó:Ð:ð �A‰wˆÜ9Ü�K‰K×Ñ×.Ñ.ó
ç
‰-˜˜F BÓ
'ð 	ô .×3Ò3ØÜ�K‰K×Ñ×/Ñ/Ü4Ó6ñ
Ðð
 "×-Ñ-¨b°.À=À/ÐSUÓVˆÜ×&Ò&¨3¯9©9¤}Ó5Ð5r^   rX   rê  râ  s   @r_   r  r  \  sG   ø† ñð$6à#ð$6ð �Ñ'ð$6ð �S˜/Ð)Ñ*ð	$6ð
 
÷$6õ $6r^   r  c                   óf   ^ • \ rS rSrSrS\S\SS4U 4S jjrSS	S
\\   S\	\
\4   S\4S jrSrU =r$ )Ú SparseTensorCreationSkipVariablei“  zc
Skip variable for sparse tensor factory functions with clear messaging regarding lack of support.
r  r™   r`   Nc                 ó0   >• Sn[         TU ]  " U4SU0UD6  g )Nz8sparse tensor creation is not supported in torch.compilerO  ©r+  r‚   ©r~   r  r™   rO  r0  s       €r_   r‚   Ú)SparseTensorCreationSkipVariable.__init__˜  s   ø€ ØKˆÜ‰Ò˜Ñ8 vÐ8°Ó8r^   r–   rE   r˜   c                 ó¢   • SSK Jn  [        U R                  S[	        U R                  5      5      n[        SSU 3SU S3/ UR                  QS9  g )	Nr   )r   rY   z$Sparse tensor creation not supportedz
function: zEtorch.compile does not support sparse tensor creation functions like zZ. Sparse tensors require specialized handling that is not yet implemented in the compiler.r%  )rA  r   r×   r  r  r$   ÚSPARSE_TENSOR)r~   r–   r˜   r™   r   rŒ  s         r_   rû   Ú.SparseTensorCreationSkipVariable.call_functionœ  s]   € õ 	)ä˜$Ÿ*™* j´#°d·j±j³/ÓBˆÜØ:Ø   	Ð*àWÐX_ÐW`ð akð kð 5Ð%×3Ñ3Ð4ó	
r^   rX   ©rY   rZ   r[   r\   rÎ   r   r‚   r   r>   rŠ   r  rû   r]   rá  râ  s   @r_   r  r  “  óa   ø† ñð9˜cð 9¨Sð 9°T÷ 9ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
ò 
r^   r  c                   óf   ^ • \ rS rSrSrS\S\SS4U 4S jjrSS	S
\\   S\	\
\4   S\4S jrSrU =r$ )ÚTritonSetAllocatorSkipVariablei°  ze
Skip variable for triton.set_allocator with a clear message to move it outside the compiled region.
r  r™   r`   Nc                 ó0   >• Sn[         TU ]  " U4SU0UD6  g )Nz:triton.set_allocator is not supported inside torch.compilerO  r  r   s       €r_   r‚   Ú'TritonSetAllocatorSkipVariable.__init__µ  s   ø€ ØMˆÜ‰Ò˜Ñ8 vÐ8°Ó8r^   r–   rE   r˜   c                 ó   • [        SSSS/S9  g )Nz"triton.set_allocator not supportedz2triton.set_allocator called inside compiled regionz{triton.set_allocator is not supported inside torch.compile. It modifies global Triton allocator state and cannot be traced.zgMove triton.set_allocator() outside of the torch.compile region (call it before the compiled function).r%  r€  rú   s       r_   rû   Ú,TritonSetAllocatorSkipVariable.call_function¹  s"   € ô 	Ø8ØHðRð:ðó	
r^   rX   r%  râ  s   @r_   r(  r(  °  r&  r^   r(  r’   )°rÎ   rY  r:  rÓ   rË   r¡  r›  r³  rŸ  rÊ   r  r   Úcollections.abcr   r   r   r   Útypingr   r	   r
   r   r   r   Útyping_extensionsr   Úweakrefr   rb   Útorch._dynamo.excr   Útorch._guardsr   Útorch.utils._pytreer   rA  r   r   r   r   Úbytecode_transformationr   r   r   r`  r   r   r   r   r   r    r!   r"   r#   r$   r%   Úguardsr&   r'   r¯   r(   r)   r*   r+   r,   r-   r.   r/   r0   rc   r1   r2   r3   r4   r5   r6   r7   r8   r  r:   r;   r<   r=   r>   r¶  r?   r@   Ú#torch.distributed.fsdp._fully_shardrA   ÚModuleNotFoundErrorÚtorch._dynamo.codegenrB   r-  rC   rD   rE   rF   Ú#torch._dynamo.variables.ctx_managerrG   r»  rH   rI   rŒ  rJ   rK   rÔ  rL   rM   rz   r|   rÝ  r’  r§  rF  rT   rÌ   rì   rV   Ú	lru_cacherf   rh   r•   rŠ   r  r­   r�   r¹   r  rÂ   r£   rà  rÍ   rÖ   rÙ   rÛ   r  rä  rª  rþ  r  r‡  r‰  rŸ  rH  rÇ  râ  rz  r   rD  rN  r�  r‹  r³  r¿  rÅ  rÇ  ré  rñ  rú  r9  rj  ry  rz  r{  r|  r~  rÈ  r©  r·  r¸  rû  r	  r  r  r  r(  rX   r^   r_   Ú<module>r;     sÊ  ðòó. Û Û Û Û Û 	Û 
Û Û Ý "ß .ß (ß G× GÝ #Ý %ã Ý 4Ý  Ý 3ç >Ó >ß VÑ V÷÷ ÷ ñ ÷ 1÷
÷ 
õ 
÷	÷ 	ó 	÷õ ÷ ?ðÝEö
 Ý/÷ó õ L÷÷
 6Ý&ñ ˆT˜ # s (Ñ+Ñ,€Ø€
Ø€Ù&Ò'OÓPÐ Ù"+¨Y¨KÓ"8Ð ð DÐ ñ ,=Ó+>€Ð˜s C˜xÑ(Ó >ô	Ð0ô 	ð ×Ñð¨:ó ó ð÷
ñ 
ð>�Lð  \ô ðUØ
ðUàðUð ˜‰}ðUð �3‰-ð	Uð
 ��c�‰NðUð 
ˆ#ˆÐ
ÑôUðr DHñAØðAØ&)ðAØ39¸D±=ðAàõAð.Ð0ð .¸$¸sÀC¸x¹.ð .ÈTô .ð Ø#ð à��oÐ%Ñ&ð ð �.‰.ð ð 
ô	 ð*Ø
�.‰.ðà�C˜�H‰~ðð ðð �F˜C�KÑ  4Ñ'ð	ð
 �8‰_˜tÑ#ðð �S˜#�X‘ Ñ%ðð �c˜3�h‘ $Ñ&ðð ×Ñôò4Ð ð-Øð-Ø%+ð-Ø5;¸d±]ð-ØJMð-àô-ô62˜ô 2ôjWYÐ3ô WYôt!7Ð3ô !7ôH)Ð":ô )ôX:Ð4ô :ô@G; ?ô G;ôT

Ø ô
ôM
Ð%=ô M
ô` Ø"ô ôFq-Ð-ô q-ôh>Ð 2ô >ô<>Ð"6ô >ð:Øðà��c�Ñðð ðð �?Ñ
#ð	ð
 ��oÐ%Ñ&ðð ôô,G)Ð!9ô G)ôT*>Ð(Bô *>ôZM
˜?ô M
ô`>Ð"6ô >ô<D
 /ô D
ôNÐ ;ô ð* d¨3°¨8¡nô ð/Øð/Ø%-¨c°3¨hÑ%7ð/àô/ô_DÐ(<ô _DôD7Ð1ô 7ô4#
Ð$8ô #
ôL}
˜ô }
ô@D ô DôN "˜/ô  "÷Fó ôs
˜>ô s
ñl $8Ó#9Ð  ô-˜?ô -ô`$)¨ô $)ôN /ô ôBD
¨oô D
ôN
¨ô 
ô "JÐ(<ô "JôJ46Ð';ô 46ôn
Ð';ô 
ô:
Ð%9õ 
øðeb ó ØÓðús   Ã)P ÐP ÐP 