Ë
    ÃÓ^jÄŠ ã                   óì  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlmZmZ ddlmZ ddlmZ ddlmZmZmZmZ ddlZddlmZ ddlmc mZ  ddl!m"Z" ddl#m$Z$ dd	l%m&Z& d
dl'm(Z(m)Z)m*Z*m+Z+ d
dl,m-Z-m.Z.m/Z/ d
dl0m1Z1 d
dl2m3Z3m4Z4m5Z5 d
dl6m7Z7m8Z8 d
dl9m:Z: d
dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d
dlmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZT erddlUmVZV ddlWmXZX  G d„ deK«      ZY G d„ deK«      ZZ G d„ deK«      Z[ G d „ d!eK«      Z\ G d"„ d#eK«      Z] G d$„ d%e]«      Z^ G d&„ d'eK«      Z_ G d(„ d)eK«      Z` G d*„ d+eK«      Zad,ed-ed.ef   fd/„Zb G d0„ d1eK«      ZcejÈ                   G d2„ d3«      «       Ze G d4„ d5eT«      Zf G d6„ d7eT«      Zg G d8„ d9eK«      Zh G d:„ d;eK«      Zi G d<„ d=eK«      Zj G d>„ d?eK«      Zk ejØ                  d¬@«      d-emej$                  ejÜ                  f   fdA„«       Zo ejØ                  d¬@«      d-emejÜ                  ej$                  f   fdB„«       Zp G dC„ dDeK«      Zq G dE„ dFeK«      Zr G dG„ dHeK«      Zs G dI„ dJeK«      Zt G dK„ dLeK«      Zu G dM„ dNeK«      Zv G dO„ dPeK«      Zw G dQ„ dReK«      Zx G dS„ dTeK«      Zy G dU„ dVey«      Zzejö                  eyejø                  eyejú                  eziZ~ G dW„ dXeK«      Z G dY„ dZeK«      Z€ G d[„ d\eK«      Z�y)]aÎ  
This module contains miscellaneous variable tracker implementations for various Python types
and features used in Dynamo's symbolic execution. These classes help track and propagate
information about different kinds of variables during graph capture.

Key classes include:
- SuperVariable: Handles super() calls and method resolution
- ExceptionVariable: Tracks exception objects
- RandomVariable: Manages random number generators
- GetAttrVariable: Tracks attribute access
- MethodWrapperVariable: Handles method wrappers
- PythonModuleVariable: Tracks Python modules
- NumpyVariable: Handles numpy functions and types
- StringFormatVariable: Manages string formatting
- DebuggingVariable: Handles print and logging
é    N)ÚCallableÚSequence)ÚRandom)ÚBuiltinFunctionType)ÚAnyÚTYPE_CHECKINGÚ	TypeGuardÚUnion)ÚMutationType)ÚTupleVariable)ÚSourceé   )ÚconfigÚgraph_break_hintsÚtrace_rulesÚ	variables)Úcreate_call_functionÚcreate_call_function_exÚcreate_instruction)Ú$do_not_convert_to_tracable_parameter)Úraise_observed_exceptionÚraise_type_errorÚunimplemented)ÚGuardBuilderÚinstall_guard)Úunpatched_nn_module_init)Ú
AttrSourceÚGenericAttrSourceÚGetItemSourceÚTypeMROSourceÚ
TypeSourceÚWeakRefCallSource)Úcheck_unspec_or_constant_argsÚcmp_name_to_op_mappingÚidentityÚistypeÚproxy_args_kwargsÚraise_args_mismatché   )Ú#AsPythonConstantNotImplementedErrorÚNO_SUCH_SUBOBJÚVariableTracker)ÚConstantVariable)ÚNestedUserFunctionVariableÚUserFunctionVariable)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)Ú	PyCodegen)ÚInstructionTranslatorBasec            
       óÚ   ‡ — e Zd ZeZh ej                  £Z	 ddededz  deddfˆ fd„Zde	fd„Z
dˆ fd„Zd	d
dedeeedz  f   fˆ fd„Zd	d
dedefd„Zd	d
dedee   deeef   def
d„Zˆ xZS )ÚSuperVariableNÚtypevarÚobjvarÚkwargsÚreturnc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y ©N© )ÚsuperÚ__init__r7   r8   )Úselfr7   r8   r9   Ú	__class__s       €úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/misc.pyr?   zSuperVariable.__init__X   s'   ø€ ô 	‰ÑÑ"˜6Ò"ð ˆŒð
 ˆ�ó    c                 ó"   — t         j                  S ©N)Úbuiltinsr>   ©r@   s    rB   Úpython_typezSuperVariable.python_typei   s   € Ü�~‰~ÐrC   c                 ó   •‡— ‰j                  ˆˆfd„«        ‰| j                  «       | j                  �. ‰| j                  «       ‰j                  t	        dd«      «       y ‰j                  t	        dd«      «       y )Nc                  óB   •—  ‰t        j                  t        «      «      S rE   )r   ÚBuiltinVariabler>   )rA   Úcodegens   €€rB   ú<lambda>z+SuperVariable.reconstruct.<locals>.<lambda>m   s   ø€ ¡g¬i×.GÑ.GÌÓ.NÓ&O€ rC   r   Fr)   )Úadd_push_nullr7   r8   Úextend_outputr   ©r@   rL   rA   s    `€rB   ÚreconstructzSuperVariable.reconstructl   s`   ù€ Ø×ÑÔOÔPÙ�—‘ÔØ�;‰;Ð"Ù�D—K‘KÔ Ø×!Ñ!Ô"6°q¸%Ó"@ÕAà×!Ñ!Ô"6°q¸%Ó"@ÕArC   Útxr4   Únamec                 óÆ  •— | j                   s.t        ddd|› d| j                  › d| j                   › d�dg¬«       | j                   €t        d	«      ‚| j                  j	                  «       }| j                   j                  «       }| j                   j                  rt        | j                   j                  «      nd }t        |t        «      r,| j                   j                  }| j                   j                  }d }|j                  }	 |j                  |«      d
z   }t!        |t#        |«      «      D ]W  }	||	   j$                  j'                  |t(        «      x}
sŒ)|
t(        usŒ2|rt+        t-        t/        |«      |	«      |«      }|
|fc S  t        ddd|› d| j                  › d| j                   › d�ddg¬«       y # t        $ r t        t        ||«      |«      d fcY S w xY w)Nz1-arg super not implementedÚ z"Dynamo failed to trace attribute `z$` accessed via `super()` (for type `z` and object `z4`) because one-argument of super() is not supported.z-Use two-argument super(type, object_or_type).©Úgb_typeÚcontextÚexplanationÚhintsz!super() requires objvar to be setr)   zUnable to resolve super getattrz8`) because the resolved attribute type is not supported.z0Ensure the attribute exists in the parent class.z(Check the arguments passed to `super()`.)r8   r   r7   ÚAssertionErrorÚas_python_constantrH   Úsourcer!   Ú
issubclassÚtypeÚvalueÚ__mro__ÚindexÚ
ValueErrorÚgetattrr>   ÚrangeÚlenÚ__dict__Úgetr+   r   r   r    )r@   rR   rS   Úsearch_typeÚtype_to_useÚtype_to_use_sourcer]   Ú
search_mroÚstart_indexrb   Úresolved_getattrrA   s              €rB   Ú_resolved_getattr_and_sourcez*SuperVariable._resolved_getattr_and_sourceu   sù  ø€ ð �{Š{ÜØ5ØØ@ÀÀð G,Ø,0¯L©L¨>¸ÈÏÉÀ}ð UDðDð Dðõ	ð �;‰;ÐÜ Ð!DÓEÐEØ—l‘l×5Ñ5Ó7ˆð —k‘k×-Ñ-Ó/ˆà.2¯k©k×.@Ò.@ŒJ�t—{‘{×)Ñ)Ô*Àdð 	ô �k¤4Ô(ØŸ+™+×+Ñ+ˆKØ!%§¡×!3Ñ!3ÐàˆØ ×(Ñ(ˆ
ð	HØ$×*Ñ*¨;Ó7¸!Ñ;ˆKô ˜;¬¨J«Ó8ò 
	4ˆEà#-¨eÑ#4×#=Ñ#=×#AÑ#AÀ$ÌÓ#WÐWÐÑWØ#¬>Ò9á)Ü!+Ü)¬-Ð8JÓ*KÈUÓSØ ó"˜ð ,¨VÐ3Ò3ð
	4ô 	Ø5ØØ<¸T¸Fð C(Ø(,¯© ~°^ÀDÇKÁKÀ=ð QDðDð CØ:ðö
	
øô' ò 	Hô œ5 ¨kÓ:¸DÓAÀ4ÐGÒGð	Hús   Ä	F< Æ<!G ÇG c                 ó.  — | j                  ||«      \  }}t        j                  j                  |«      st	        | |t        |«      ¬«      S |r(t        |j                  t        j                  «      «       t        j                  j                  ||¬«      S )N©Úpy_type©r]   )ro   r   r-   Ú
is_literalÚGetAttrVariabler_   r   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)r@   rR   rS   r`   r]   s        rB   Úvar_getattrzSuperVariable.var_getattrº   sy   € ð ×9Ñ9¸"¸dÓC‰ˆˆvÜ×)Ñ)×4Ñ4°UÔ;Ü" 4¨´t¸E³{ÔCÐCÙÜ˜&×+Ñ+¬L×,GÑ,GÓHÔIÜ×)Ñ)×0Ñ0°¸vÐ0ÓFÐFrC   Úargsc                 óð  — | j                  ||«      \  }}| j                  €t        d«      ‚|t        j                  u rt        t        «      S |t        j                  j                  j                  u rÈ| j                  }ddl
m} t        |t        j                  «      rkt        |j                  |«      rU|sS|sQt!        «       5  t#        j$                  |t&        |¬«      }	|	j)                  || j                  g|z   |«      cd d d «       S t+        dd| › d|› d|› d|› �d|› d	�g t,        j.                  ¢¬
«       �n.| j                  j0                  r¼t3        |d«      r°|j4                  dk(  r¡t        j6                  j9                  |«      r‚|j:                  }
t3        |
d«      r&|
j<                  dk(  rt#        j$                  ||
«      }n0|€t        d«      ‚|j>                  }t        j6                  |
|¬«      }|jA                  |d||«      S t        |tB        «      rZt        |jD                  tF        jH                  «      r6t#        j$                  ||jD                  |d¬«      }	|	j)                  |||«      S t        |tJ        «      �rt        |jD                  tF        jH                  «      rãt        | j                  t        j6                  «      r| j                  }nbd }| j                  j0                  rtM        | j                  j0                  «      }t#        j$                  || j                  jN                  |«      }|€t        d«      ‚t#        j$                  ||jD                  tQ        |d«      d¬«      }	|	j)                  ||g|¢|«      S t        |tF        jH                  «      r:t#        j$                  |||d¬«      }	|	j)                  || j                  g|z   |«      S t        |tF        jR                  «      r=t        jT                  |jD                  | j                  |¬«      j)                  |||«      S tW        |«      r:t        | j                  t        «      r  | j                  jX                  |g|¢­i |¤ŽS |t        jZ                  u �r|d   }	 |j]                  «       }|j`                  j                  jc                  | j                  «      s4t+        dd| › d|› �d| j                  › d�dgt,        jd                  ¢¬
«       t        |tf        «      st        dti        |«      › �«      ‚|j`                  j                  jk                  | j                  |t        jl                  «       «       t        jn                  jq                  d «      S t        | j                  t        j                  «      rl| j                  jr                  �V| j                  jt                  �@|| j                  jt                  v r(| j                  jr                  jA                  ||||«      S |t        jv                  u rÁ|d   jx                  }t        | j                  t        «      r| j                  j{                  ||«      S d }	 t        jw                  | j                  jx                  |«      }d }| j                  j0                  � t�        | j                  j0                  |«      }t#        j$                  |||«      S |t        j‚                  j„                  u r¦|d   }i }|d   j†                  }|d   j†                  j‡                  «       D ]$  \  }}|jˆ                  j]                  «       }|||<   Œ& |jŠ                  jŒ                  }d|jŠ                  _F        	 |j)                  |||«      ||jŠ                  _F        S t        |tF        jŽ                  «      rP|t‘        j’                  «       v r:t#        j$                  |||d¬ «      }|j)                  || j                  g|z   |«      S t        |tF        j”                  «      r,t#        j$                  |||d¬«      }	|	j)                  |||«      S t+        d!d| › d|› �d"|› d#|› d$�d%g¬
«       y # 1 sw Y   Œ'xY w# t^        $ r"}t+        dd| › d|› �ddg|¬«       Y d }~�Œd }~ww xY w# t|        $ r t        t|        |«       Y �Œ5w xY w# ||jŠ                  _F        w xY w)&Nz2super() requires objvar to be set for method callsr   )ÚAttributeMutationNewrs   z#Unsupported super().__init__() callúcall_method ú z0Dynamo encountered a super().__init__() call on zK that resolved to a `torch.nn.Module.__init__()` call that we cannot trace.rV   Ú__name__Ú__new__Ú
__module__rF   z.source must not be None for user-defined classT©r]   Úrealizez2source must not be None for classmethod resolutionÚ__func__r   z7Non-constant attribute given to `super().__delattr__()`zbDynamo requires the attribute name passed to `super().__delattr__(...)` to be a constant (string).zEEnsure the attribute name is a string literal or a constant variable.)rW   rX   rY   rZ   Úfrom_exczFAttempted super().__delattr__() on an object without mutation trackingzmDynamo needs to track mutations on an object before `super().__delattr__` can be used on it. But the object (z3) doesn't have attribute mutation tracking enabled.z<Ensure the object is tracked by Dynamo's side effect system.zattr must be a str, got é   F)rƒ   zFAttempted to call a super() attribute that is not a function or methodz4Dynamo does not know how to trace the call `super().z()` because `super().z(` is not a function or method attribute.zMEnsure the attribute accessed via `super()` is a standard method or function.)Kro   r8   r[   Úobjectr?   ÚLambdaVariabler%   ÚtorchÚnnÚModuleÚside_effectsr|   Ú
isinstancer   r2   Úmutation_typer   r,   Úbuildr   Úcall_functionr   r   Ú	DIFFICULTr]   Úhasattrr   ÚUserDefinedClassVariableÚis_supported_new_methodÚ__self__r�   ÚmemberÚcall_methodÚstaticmethodr„   ÚtypesÚFunctionTypeÚclassmethodr!   Ú
value_typer   Ú
MethodTypeÚUserMethodVariabler1   Úmethod_setattr_standardÚ__delattr__r\   ÚNotImplementedErrorÚoutputÚis_attribute_mutationÚ
DYNAMO_BUGÚstrr_   Ú
store_attrÚDeletedVariabler-   rx   Ú_base_vtÚ_base_methodsÚ__getattribute__r`   Úgeneric_getattrÚAttributeErrorr   r   Ú_CÚ_disabled_torch_function_implÚitemsÚvtÚsymbolic_torch_function_stateÚtorch_function_subclass_enabledÚMethodDescriptorTyper   Úget_tensor_methodr   )r@   rR   rS   rz   r9   Úinner_fnr]   r8   r|   Úfn_vtÚuser_clsÚuser_cls_vtÚuser_cls_sourceÚcls_variableÚ
cls_sourceÚattrÚexcÚ	attr_nameÚ
attr_valueÚattr_sourceÚfuncÚ	tf_kwargsÚtf_argsÚhash_key_vtÚvalue_vtÚkey_strÚtx_oldÚfn_vars                               rB   r—   zSuperVariable.call_methodÌ   s(  € ð  ×<Ñ<¸RÀÓFÑˆ�&Ø�;‰;ÐÜ Ð!UÓVÐVð ”v—‘Ñ&Ü!¤(Ó+Ð+ØœŸ™Ÿ™×1Ñ1Ñ1Ø—[‘[ˆFÝ;ô ˜6¤9×#FÑ#FÔGÜ˜v×3Ñ3Ð5IÔJÙ¡ä9Ó;ñ QÜ+×1Ñ1ØÔ4¸Vô�Eð !×.Ñ.¨r°D·K±K°=À4Ñ3GÈÓP÷	Qñ Qô ØAØ*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð!Ø ˜ð "1ð!1ð 9Ô-×7Ñ7Ð8÷ð �K‰K×ÒÜ˜ *Ô-Ø×!Ñ! YÒ.Ü×2Ñ2×JÑJÈ8ÔTà×(Ñ(ˆHÜ�x Ô.°8×3FÑ3FÈ*Ò3TÜ/>×/DÑ/DÀRÈÓ/R‘à�>Ü(ØHóð ð #)§-¡-�Ü'×@Ñ@Ø _ô�ð ×*Ñ*¨2¨y¸$ÀÓGÐGÜ˜¤,Ô/´JØ×Ñœu×1Ñ1ô5
ô $×)Ñ)Ø�H×%Ñ%¨f¸dôˆEð ×&Ñ& r¨4°Ó8Ð8Ü˜¤+Õ.´:Ø×Ñœu×1Ñ1ô4
ô ˜$Ÿ+™+¤y×'IÑ'IÔJð  $Ÿ{™{‘ð "�
Ø—;‘;×%Ò%Ü!+¨D¯K©K×,>Ñ,>Ó!?�JÜ.×4Ñ4ØØ—K‘K×*Ñ*Øó �ð
 ˆ~Ü$ØHóð ô $×)Ñ)ØØ×!Ñ!Ü! &¨*Ó5Øô	ˆEð ×&Ñ& r¨LÐ+@¸4Ð+@À&ÓIÐIÜ˜¤%×"4Ñ"4Ô5Ü#×)Ñ)¨"¨h¸vÈtÔTˆEØ×&Ñ& r¨D¯K©K¨=¸4Ñ+?ÀÓHÐHÜ˜¤%×"2Ñ"2Ô3Ü×/Ñ/Ø×!Ñ! 4§;¡;°vôç‰m˜B  fÓ-ð.ô ! Ô*¬zØ�K‰KÔ2ô0
ð 7�4—;‘;×6Ñ6°rÐK¸DÒKÀFÑKÐKØœ×+Ñ+Ò+Ø˜‘7ˆDðØ×.Ñ.Ó0�ð —9‘9×)Ñ)×?Ñ?ÀÇÁÔLÜØdØ*¨4¨&°°$°Ð8ð!à#Ÿ{™{˜mð ,(ð!(ð
 Wðä*×5Ñ5ðõô ˜d¤CÔ(Ü$Ð'?ÄÀTÃ
¸|Ð%LÓMÐMØ�I‰I×"Ñ"×-Ñ-Ø—‘˜T¤9×#<Ñ#<Ó#>ôô ×-Ñ-×4Ñ4°TÓ:Ð:ä�t—{‘{¤I×$GÑ$GÔHØ—‘×$Ñ$Ð0Ø—‘×)Ñ)Ð5Ø˜DŸK™K×5Ñ5Ñ5à—;‘;×'Ñ'×3Ñ3°B¸¸dÀFÓKÐKØœ×0Ñ0Ñ0Ø˜Q™Ÿ™ˆIô ˜$Ÿ+™+Ô'@ÔAØ—{‘{×2Ñ2°2°yÓAÐAàˆJð=Ü#×4Ñ4Ø—K‘K×%Ñ%Øó�
ð ˆKØ�{‰{×!Ñ!Ð-Ü/°·±×0BÑ0BÀIÓN�Ü"×(Ñ(¨¨Z¸ÓEÐEØœŸ™×?Ñ?Ñ?ð
 ˜‘7ˆDàˆIØ˜1‘g—m‘mˆGà)-¨a©¯©×)<Ñ)<Ó)>ò .Ñ%�˜XØ%Ÿ.™.×;Ñ;Ó=�Ø%-�	˜'Ò"ð.ð ×5Ñ5×UÑUˆFØOTˆB×,Ñ,ÔLðØ×)Ñ)¨"¨g°yÓAð ð ×0Ñ0ÕPô �x¤×!;Ñ!;Ô<ØœK×9Ñ9Ó;Ñ;ô %×*Ñ*¨2¨x¸ÈÔNˆFØ×'Ñ'¨¨T¯[©[¨M¸DÑ,@À&ÓIÐIÜ˜¤%×";Ñ";Ô<Ü#×)Ñ)¨"¨h¸vÈtÔTˆEØ×&Ñ& r¨4°Ó8Ð8äð'à" 4 &¨¨$¨Ð0ðØ�vÐ2°4°&ð 9,ð,ð `ðö
	
÷mQð Qûôt 'ò 
ÜØUØ*¨4¨&°°$°Ð8ð!Lð `ðð !÷	ó 	ûð
ûôf "ò =Ü(¬¸×<ð=ûð6 ð ×0Ñ0ÕPúsB   Ã=bÒb Ù?*c Þc" âbâ	b?âb:â:b?ãcãcã"c5rE   ©rL   r3   r:   N)r   r�   Ú__qualname__r>   Ú_cpython_typer,   Ú_nonvar_fieldsr   r?   r_   rH   rQ   r¥   Útupler   ro   ry   ÚlistÚdictr—   Ú__classcell__©rA   s   @rB   r6   r6   P   s   ø„ à€MðØ	×	'Ñ	'ð€Nð *.ñà ðð   $Ñ&ðð ð	ð
 
õð"˜Tó õBðC
Ø-ðC
Ø58ðC
à	ˆs�J Ñ%Ð%Ñ	&õC
ðJGØ-ðGØ58ðGà	óGð$]
à'ð]
ð ð]
ð �?Ñ#ð	]
ð
 �S˜/Ð)Ñ*ð]
ð 
÷]
rC   r6   c                   ód   ‡ — e Zd Zdej                  deddfˆ fd„Zdefd„Zddd	e	de
fˆ fd
„Zˆ xZS )ÚFrameSummaryVariableÚframe_summaryr9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   )r>   r?   rÔ   )r@   rÔ   r9   rA   s      €rB   r?   zFrameSummaryVariable.__init__­  s   ø€ Ü‰ÑÑ"˜6Ò"Ø*ˆÕrC   c                 ó"   — t         j                  S rE   )Ú	tracebackÚFrameSummaryrG   s    rB   rH   z FrameSummaryVariable.python_type±  s   € Ü×%Ñ%Ð%rC   rR   r4   rS   c                 óœ  •— |dk(  r*t        j                  || j                  j                  «      S |dk(  r*t        j                  || j                  j                  «      S |dk(  r*t        j                  || j                  j
                  «      S |dk(  r*t        j                  || j                  j                  «      S t        ‰| �!  ||«      S )NÚlinenoÚfilenamerS   Úline)	r,   r�   rÔ   rÚ   rÛ   rS   rÜ   r>   ry   ©r@   rR   rS   rA   s      €rB   ry   z FrameSummaryVariable.var_getattr´  s±   ø€ ð �8ÒÜ"×(Ñ(¨¨T×-?Ñ-?×-FÑ-FÓGÐGØ�ZÒÜ"×(Ñ(¨¨T×-?Ñ-?×-HÑ-HÓIÐIØ�VŠ^Ü"×(Ñ(¨¨T×-?Ñ-?×-DÑ-DÓEÐEØ�VŠ^Ü"×(Ñ(¨¨T×-?Ñ-?×-DÑ-DÓEÐEÜ‰wÑ" 2 tÓ,Ð,rC   )r   r�   rÊ   r×   rØ   r   r?   r_   rH   r¥   r,   ry   rÐ   rÑ   s   @rB   rÓ   rÓ   ¬  sR   ø„ ð+ i×&<Ñ&<ð +Èð +ÐPTõ +ð&˜Tó &ð-Ø-ð-Ø58ð-à	÷-ñ -rC   rÓ   c            
       ój  ‡ — e Zd Zdeded ef   deddfˆ fd„Zede	j                  ded ef   dd fd„«       Zededefd	„«       Zdee	j                  ez     fd
„Zdedefd„Zdeej*                     fd„Zdddededefd„Zdddedefˆ fd„Zdddddeddfd„Zdddedee   deeef   def
ˆ fd„Zˆ xZS )ÚTracebackVariablerÔ   Útb_nextr9   r:   Nc                 óZ   •— t        ‰| �  di |¤Ž || _        |€t        d«      ‚|| _        y )Nztb_next must not be Noner=   )r>   r?   rÔ   r[   rà   )r@   rÔ   rà   r9   rA   s       €rB   r?   zTracebackVariable.__init__Ã  s5   ø€ ô 	‰ÑÑ"˜6Ò"Ø*ˆÔàˆ?Ü Ð!;Ó<Ð<Øˆ�rC   c                 ó(   —  | t        |«      |¬«      S )N)rà   )rÓ   )ÚclsrÔ   rà   s      rB   Úfrom_frame_summaryz$TracebackVariable.from_frame_summaryÖ  s   € ñ Ô'¨Ó6ÀÔHÐHrC   Úobjc                 óF   — t        | t        «      xs | j                  «       S rE   )r&   rß   Úis_constant_none©rå   s    rB   Úis_valid_tracebackz$TracebackVariable.is_valid_tracebackÞ  s   € ä�cÔ,Ó-ÒG°×1EÑ1EÓ1GÐGrC   c                 ó    — t        | j                  t        «      r| j                  gS | j                  g| j                  j	                  «       z   S rE   )r&   rà   r-   rÔ   Ú
extract_tbrG   s    rB   rë   zTracebackVariable.extract_tbâ  sA   € Ü�$—,‘,Ô 0Ô1Ø×&Ñ&Ð'Ð'Ø×"Ñ"Ð# d§l¡l×&=Ñ&=Ó&?Ñ?Ð?rC   Útbc                 ól   — | }t        |t        «      r"||u ry|j                  }t        |t        «      rŒ"y)NTF)r&   rß   rà   )r@   rì   Úcurr_tbs      rB   Úhas_reference_cyclez%TracebackVariable.has_reference_cycleç  s7   € à8<ˆÜ�WÔ/Ô0Ø˜"‰}ØØ—o‘oˆGô �WÔ/Õ0ð rC   c                 ó"   — t         j                  S rE   )r™   ÚTracebackTyperG   s    rB   rH   zTracebackVariable.python_typeð  s   € Ü×"Ñ"Ð"rC   rR   r4   Úname_varÚvalc                 ó˜  — |j                  «       }|dk(  r—| j                  |«      st        t        |«       t	        |t
        t        f«      st        dt        |«      › �«      ‚| j                  |«      s!t        |t
        «      r!|j                  | «      rt        t        |«       || _        t        j                  j                  d «      S )Nrà   z?tb_next val must be TracebackVariable or ConstantVariable, got )r\   ré   r   Ú	TypeErrorr�   rß   r-   r[   r_   rï   r&   rc   rà   r   rx   )r@   rR   rò   ró   rS   s        rB   Úcall_setattrzTracebackVariable.call_setattró  s²   € ð ×*Ñ*Ó,ˆØ�9ÒØ×*Ñ*¨3Ô/Ü(¬°BÔ7Ü˜cÔ$5Ô7GÐ#HÔIÜ$ØUÔVZÐ[^ÓV_ÐU`Ðaóð ð ×'Ñ'¨Ô,Ü�sÔ-Ô.°3×3JÑ3JÈ4Ô3Pä(¬°RÔ8ØˆDŒLÜ×)Ñ)×0Ñ0°Ó6Ð6rC   rS   c                 óø   •— |dk(  r| j                   S |dk(  r| j                  j                  |d«      S |dk(  r| j                  S |dk(  r"t        d| › d�dg t        j
                  ¢¬	«       t        ‰| �	  ||«      S )
Nrà   Ú	tb_linenorÚ   rÔ   Útb_lastiz traceback.tb_lasti not supportedz accessing 'tb_lasti'zNDynamo does not support accessing the tb_lasti attribute of traceback objects.rV   )rà   rÔ   ry   r   r   ÚSUPPORTABLEr>   rÝ   s      €rB   ry   zTracebackVariable.var_getattr  s�   ø€ ð �9ÒØ—<‘<ÐØ�[Ò Ø×%Ñ%×1Ñ1°"°hÓ?Ð?Ø�_Ò$Ø×%Ñ%Ð%Ø�ZÒÜØ:Ø˜&Ð 5Ð6ØlØ6Ô)×5Ñ5Ð6õ	ô ‰wÑ" 2 tÓ,Ð,rC   Úotherr,   Úopc                 ó$   — ddl m}  || |||«      S ©Nr)   )Úobject_richcompare©Úobject_protocolrÿ   ©r@   rR   rû   rü   rÿ   s        rB   Úrichcompare_implz"TracebackVariable.richcompare_impl  ó   € õ 	8á! $¨¨E°2Ó6Ð6rC   rz   c                 óX   •— |dk(  r | j                   |g|¢­Ž S t        ‰| �	  ||||«      S )NÚ__setattr__)rö   r>   r—   )r@   rR   rS   rz   r9   rA   s        €rB   r—   zTracebackVariable.call_method!  s;   ø€ ð �=Ò Ø$�4×$Ñ$ RÐ/¨$Ò/Ð/Ü‰wÑ" 2 t¨T°6Ó:Ð:rC   )r   r�   rÊ   rÓ   r
   r-   r   r?   r›   r×   rØ   rä   r˜   r,   Úboolré   rÎ   rë   rï   r_   r™   rñ   rH   rö   r¥   ry   r  rÏ   r—   rÐ   rÑ   s   @rB   rß   rß   Â  s¦  ø„ ðà+ðð Ð*Ð,<Ð<Ñ=ðð ð	ð
 
õð& ðIà ×-Ñ-ðIð Ð*Ð,<Ð<Ñ=ðIð 
ò	Ió ðIð ðH ð H°Dò Hó ðHð@˜D ×!7Ñ!7Ð:NÑ!NÑOó @ð
 oð ¸$ó ð#˜T %×"5Ñ"5Ñ6ó #ð7à'ð7ð "ð7ð ð	7ð
 
ó7ð*-Ø-ð-Ø58ð-à	õ-ð$7Ø-ð7Ø6Gð7ØMPð7à	ó7ð	;à'ð	;ð ð	;ð �?Ñ#ð		;ð
 �S˜/Ð)Ñ*ð	;ð 
÷	;ñ 	;rC   rß   c                   ó0  ‡ — e Zd ZeZ	 	 	 ddedee   dee	ef   dz  de
dz  dedz  ddfˆ fd„Zd	eddfd
„Zdd„Zdefd„Zddddde	ddfd„Zddde	dee   dee	ef   def
ˆ fd„Zddde	defˆ fd„Zde	fd„ZeZedede	fd„«       Zde	fd„Zdddefd„Zˆ xZS )ÚExceptionVariableNÚexc_typerz   Úinit_kwargsr]   rŽ   r:   c                 ón  •— t         ‰| �  ||¬«       || _        || _        |r$t	        d| › d|› �dg t
        j                  ¢¬«       t        j                  d «      | _	        t        j                  d «      | _
        t        j                  d«      | _        t        j                  d «      | _        d | _        y )N)r]   rŽ   z,Keyword args passed to exception constructorz with kwargs zRDynamo does not know how to handle keyword args passed to an exception constructorrV   F)r>   r?   r
  rz   r   r   rú   r-   rx   Ú__context__Ú	__cause__Ú__suppress_context__Ú__traceback__Úpython_stack)r@   r
  rz   r  r]   rŽ   rA   s         €rB   r?   zExceptionVariable.__init__2  s­   ø€ ô 	‰Ñ °mÐÔDØ ˆŒØˆŒ	ÙÜØFØ˜& ¨k¨]Ð;ØpØ6Ô)×5Ñ5Ð6õ	ô -=×,CÑ,CÀDÓ,IˆÔô +;×*AÑ*AÀ$Ó*GˆŒä5E×5LÑ5LÈUÓ5SˆÔ!ä.>×.EÑ.EÀdÓ.KˆÔð <@ˆÕrC   rX   c                 ó   — || _         y rE   )r  )r@   rX   s     rB   Úset_contextzExceptionVariable.set_contextS  s
   € Ø"ˆÕrC   c                 ó   ‡ ‡— ‰j                  ˆˆ fd„«       ‰j                  ‰ j                  «       ‰j                  t	        ‰ j                  «      d«       dt
        dd fˆˆ fd„} |d«        |d«        |d«       y )	Nc                  óP   •— ‰ j                  d‰j                  j                  «      S )NrF   )Úload_import_fromr
  r   ©rL   r@   s   €€rB   rM   z/ExceptionVariable.reconstruct.<locals>.<lambda>X  s   ø€ �G×,Ñ,¨Z¸¿¹×9OÑ9OÓP€ rC   FrS   r:   c                 ó
  •— t        ‰| «      }t        |t        «      r|j                  dvrt	        d|› �«      ‚y ‰j                  «         ‰|«       ‰j                  ‰j                  d«      «       ‰j                  | «       y )N)TFNz-attr.value must be True, False, or None, got r   )	rd   r&   r-   r`   r[   Údup_toprO   Úrot_nr¦   )rS   r¼   rL   r@   s     €€rB   Úcodegen_attrz3ExceptionVariable.reconstruct.<locals>.codegen_attr]  s{   ø€ Ü˜4 Ó&ˆDÜ�dÔ,Ô-Ø—:‘:Ð%8Ñ8Ü(ØGÈÀvÐNóð ð 9ð
 —‘Ô!Ù˜”Ø×%Ñ% g§m¡m°AÓ&6Ô7Ø×"Ñ" 4Õ(rC   r  r  r  )rN   Úforeachrz   r�   rf   r¥   )r@   rL   r  s   `` rB   rQ   zExceptionVariable.reconstructV  sl   ù€ Ø×ÑÜPô	
ð 	�‰˜Ÿ	™	Ô"Ø×Ñœc $§)¡)›n¨eÔ4ð	)œsð 	) tö 	)ñ 	�]Ô#Ù�[Ô!ÙÐ+Õ,rC   c                 ó   — | j                   S rE   )r
  rG   s    rB   rH   zExceptionVariable.python_typen  s   € Ø�}‰}ÐrC   rR   r4   rû   r,   rü   c                 ó$   — ddl m}  || |||«      S rþ   r   r  s        rB   r  z"ExceptionVariable.richcompare_implq  r  rC   rS   r9   c                 ó  •— |dk(  �r¿|d   j                  «       }|d   }|dk(  rj|j                  «       sGt        |t        j                  t        j
                  t        j                  f«      st        |› d�«      ‚| j                  |«       �n|dk(  r‘|j                  «       sHt        |t        j                  t        j                  t        j
                  t        j                  f«      r,|| _
        t        j                  j                  d«      | _        n�t        |d«       nƒ|d	k(  r'|j                  dd
«      r|| _        ndt        |d«       nW|dk(  r)t         j#                  |«      st        |d«       || _        n)t'        dd| › d|› �d|› d�g t(        j*                  ¢¬«       t        j                  j                  d «      S |dk(  r.|\  }t         j#                  |«      st        |d«       || _        | S t,        ‰| �]  ||||«      S )Nr  r   r)   r  z! is not a valid exception contextr  Tz9exception cause must be None or derive from BaseExceptionr  Fr  z0__traceback__ must be a traceback object or Nonez4Unsupported attribute assignment on Exception objectzcall_setattr r~   z/Dynamo does not support setting the attribute 'z{' on tracked exception objects. Only `__context__`, `__cause__`, `__suppress_context__`, and `__traceback__` are supported.rV   Úwith_traceback)r\   rç   r�   r   r	  Ú!UserDefinedExceptionClassVariableÚ"UserDefinedExceptionObjectVariabler[   r  rK   r  r-   rx   r  r   Úis_constant_matchrß   ré   r  r   r   rú   r>   r—   )r@   rR   rS   rz   r9   ró   rì   rA   s          €rB   r—   zExceptionVariable.call_methodx  s  ø€ ð �=Ó Ø˜‘7×-Ñ-Ó/ˆDØ�q‘'ˆCØ�}Ò$ð ×(Ñ(Ô*Ü!Øä%×7Ñ7Ü%×GÑGÜ%×HÑHðôô )¨C¨5Ð0QÐ)RÓSÐSØ× Ñ  Ö%Ø˜Ò$Ø×'Ñ'Ô)¬ZØä!×1Ñ1Ü!×3Ñ3Ü!×CÑCÜ!×DÑDð	ô.ð &)�D”NÜ09×0JÑ0J×0QÑ0QÐRVÓ0W�DÕ-ä$ØÐWõð Ð/Ò/Ø×(Ñ(¨¨uÔ5Ø03�DÕ-ä$ØÐWõð ˜Ò(Ü(×;Ñ;¸CÔ@Ü$ØÐNôð &)�Õ"äØRØ+¨D¨6°°4°&Ð9ð!Ø�vð ^ð!^ð ;Ô-×9Ñ9Ð:õô ×-Ñ-×4Ñ4°TÓ:Ð:ØÐ%Ò%Ø‰DˆRÜ$×7Ñ7¸Ô;Ü  Ð%WÔXØ!#ˆDÔØˆKä‘7Ñ& r¨4°°vÓ>Ð>rC   c                 óš  •— |dk(  r t        j                  || j                  «      S |dk(  r| j                  S |dk(  r| j                  S |dk(  r| j
                  S |dk(  r| j                  S |dk(  rMt        j                  |t        | j                  «      | j                  xr t        | j                  d«      ¬«      S t        ‰| �1  ||«      S )NrA   r  r  r  r  rz   rs   )r,   r�   r
  r  r  r  r  rÍ   rz   r]   r   r>   ry   rÝ   s      €rB   ry   zExceptionVariable.var_getattrÁ  sÇ   ø€ ð �;ÒÜ"×(Ñ(¨¨T¯]©]Ó;Ð;Ø�]Ò"Ø×#Ñ#Ð#Ø�[Ò Ø—>‘>Ð!ØÐ+Ò+Ø×,Ñ,Ð,Ø�_Ò$Ø×%Ñ%Ð%Ø�VŠ^Ü"×(Ñ(ØÜ�d—i‘iÓ Ø—{‘{ÒF¤z°$·+±+¸vÓ'Fôð ô
 ‰wÑ" 2 tÓ,Ð,rC   c                 óN   — | j                   j                  › d| j                  › d�S )Nú(ú))rA   r   r
  rG   s    rB   Ú__str__zExceptionVariable.__str__Ö  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M¨?¸!Ð<Ð<rC   Úargc                 ót   — 	 t        | j                  «       «      S # t        $ r | j                  «       cY S w xY wrE   )Úreprr\   Ú	ExceptionÚ
debug_repr©r)  s    rB   Ú_debug_format_argz#ExceptionVariable._debug_format_argÛ  s7   € ð	$Ü˜×.Ñ.Ó0Ó1Ð1øÜò 	$Ø—>‘>Ó#Ò#ð	$ús   ‚ ›7¶7c                 óx   ‡ — dj                  ˆ fd„‰ j                  D «       «      }‰ j                  «       › d|› d�S )Nú, c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrE   )r/  )Ú.0r)  r@   s     €rB   ú	<genexpr>z/ExceptionVariable.debug_repr.<locals>.<genexpr>ã  s   øè ø€ ÒJ¸˜×/Ñ/°×4ÑJùó   ƒr&  r'  )Újoinrz   Úpython_type_name)r@   rz   s   ` rB   r-  zExceptionVariable.debug_reprâ  s8   ø€ Ø�y‰yÓJÀÇ	Á	ÔJÓJˆØ×'Ñ'Ó)Ð*¨!¨D¨6°Ð3Ð3rC   c                 óJ   — t        j                  || j                  «       «      S rE   )r,   r�   r-  ©r@   rR   s     rB   Ú	repr_implzExceptionVariable.repr_implæ  s   € ä×$Ñ$ R¨¯©Ó):Ó;Ð;rC   )NNNrÉ   )r   r�   rÊ   ÚBaseExceptionrË   r   rÎ   r,   rÏ   r¥   r   r   r?   r  rQ   r_   rH   r  r—   ry   r(  Ú__repr__r˜   r/  r-  r:  rÐ   rÑ   s   @rB   r	  r	  -  s{  ø„ à!€Mð :>Ø $Ø-1ñ@àð@ð �?Ñ#ð@ð ˜#˜Ð.Ñ/°$Ñ6ð	@ð
 ˜‘ð@ð $ dÑ*ð@ð 
õ@ðB# ?ð #°tó #ó-ð0˜Tó ð7Ø-ð7Ø6Gð7ØMPð7à	ó7ðG?à'ðG?ð ðG?ð �?Ñ#ð	G?ð
 �S˜/Ð)Ñ*ðG?ð 
õG?ðR-Ø-ð-Ø58ð-à	õ-ð*=˜ó =ð €Hàð$˜ð $°3ò $ó ð$ð4˜Có 4ð<Ð7ð <¸O÷ <rC   r	  c                   ó   — e Zd ZdZy)ÚUnknownVariablez
    It could be anything!
    N©r   r�   rÊ   Ú__doc__r=   rC   rB   r>  r>  ë  s   „ òrC   r>  c                   ó`   ‡ — e Zd ZdZddedz  deddfˆ fd„Zddd	ee   de	eef   defd
„Z
ˆ xZS )ÚDelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    NÚmsgr9   r:   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   )r>   r?   rC  )r@   rC  r9   rA   s      €rB   r?   z DelayGraphBreakVariable.__init__ö  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rC   rR   r4   rz   c                 ó¤   — | j                   €dn| j                   j                  }t        dd| j                   › �d|› d| j                  › �g ¬«       y )NrU   z#Unsupported function call (delayed)zsource: z@Dynamo determined that a graph break should occur when calling `z`. Reason: rV   )r]   rS   r   rC  )r@   rR   rz   r9   rS   s        rB   r�   z%DelayGraphBreakVariable.call_functionú  sS   € ð —[‘[Ð(‰r¨d¯k©k×.>Ñ.>ˆÜØ9Ø˜tŸ{™{˜mÐ,ðØ!˜F +¨d¯h©h¨Zð9àö	
rC   rE   )r   r�   rÊ   r@  r¥   r   r?   rÎ   r,   rÏ   r�   rÐ   rÑ   s   @rB   rB  rB  ñ  s`   ø„ ññ˜C $™Jð ¸ð Àõ ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
rC   rB  c                   óT   — e Zd ZdZdd„Zdddedefd„Zddd	ee   d
e	eef   defd„Z
y)ÚComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    r:   Nc                 ó   — t        d«      ‚)Nzcomptime is special form)r¡   ©r@   rL   s     rB   rQ   zComptimeVariable.reconstruct  s   € Ü!Ð"<Ó=Ð=rC   rR   r4   rS   c                 ó¨   — ddl m } | j                  €t        d«      ‚t        j                  |t        ||«      t        | j                  |«      ¬«      S )Nr   )Úcomptimez"ComptimeVariable requires a sourcers   )rK  r]   r[   r,   r�   rd   r   )r@   rR   rS   rK  s       rB   ry   zComptimeVariable.var_getattr  sI   € õ 	(à�;‰;ÐÜ Ð!EÓFÐFä×$Ñ$Ø”˜ $Ó'´
¸4¿;¹;ÈÓ0Mô
ð 	
rC   rz   r9   c           
      ó¾  — ddl m} |st        |«      dkD  r&t        |ddt        |«      › dt        |«      › d�«       |d   }t	        |t
        «      r |j                  «        ||«      «       nÑt	        |t        «      rª|j                  «       }|j                  rt        |d|j                  › �«       t        j                  ||j                  |j                  j!                  «       |j"                  rt%        |j"                  j&                  «      nd d	«      } | ||«      «       nt)        d
t+        |«      › �«      ‚t,        j.                  j1                  d «      S )Nr   )ÚComptimeContextz
comptime()zat most 2 args and 0 kwargsz
 args and ú kwargsr   zOcomptime function must not have free variables, but these variables were free: r=   z"unsupported argument to comptime: )rK  rM  rf   r(   r�   r/   Úget_functionr.   Úget_codeÚclosurer   Úco_freevarsr™   rš   Ú	f_globalsÚfn_namer\   ÚdefaultsrÍ   r¯   ÚRuntimeErrorr_   r   r-   rx   )r@   rR   rz   r9   rM  ÚfnÚcoderÁ   s           rB   r�   zComptimeVariable.call_function  s-  € õ 	/ñ ”S˜“Y ’]ÜØØØ-Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð �!‰WˆÜ�bÔ.Ô/ØˆB�O‰OÓ™o¨bÓ1Õ2Ü˜Ô6Ô7à—;‘;“=ˆDØ�zŠzÜ ØØeÐfj×fvÑfvÐewÐxôô ×%Ñ%ØØ—‘Ø—
‘
×-Ñ-Ó/à,.¯KªK”�b—k‘k×'Ñ'Ô(¸Tð óˆDñ ‘ Ó$Õ%äÐ!CÄDÈÃHÀ:ÐNÓOÐOä×)Ñ)×0Ñ0°Ó6Ð6rC   rÉ   )r   r�   rÊ   r@  rQ   r¥   r,   ry   rÎ   rÏ   r�   r=   rC   rB   rG  rG  
  sc   „ ñó
>ð

Ø-ð

Ø58ð

à	ó

ð-7à'ð-7ð �?Ñ#ð-7ð �S˜/Ð)Ñ*ð	-7ð
 
ô-7rC   rG  c                   ó€   ‡ — e Zd ZU ej                  Zedz  ed<   dZe	dz  ed<   	 ddedz  de
ddfˆ fd„Zdefd„Zˆ xZS )	ÚCellVariableNÚpre_existing_contentsÚ
local_namer9   r:   c                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   )r>   r?   r[  )r@   r[  r9   rA   s      €rB   r?   zCellVariable.__init___  s   ø€ ô 	‰ÑÑ"˜6Ò"Ø%:ˆÕ"rC   c                 ó"   — t         j                  S rE   )r™   ÚCellTyperG   s    rB   rH   zCellVariable.python_typee  s   € Ü�~‰~ÐrC   rE   )r   r�   rÊ   r™   r_  rË   r,   Ú__annotations__r\  r¥   r   r?   r_   rH   rÐ   rÑ   s   @rB   rZ  rZ  O  s]   ø… à—N‘N€Mð +¨TÑ1Ó1ð "€J��d‘
Ó!ð ?Cñ;Ø%4°tÑ%;ð;ØNQð;à	õ;ð˜T÷ rC   rZ  c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )ÚNewGlobalVariabler9   r:   Nc                 ó$   •— t        ‰| �  di |¤Ž y r<   ©r>   r?   ©r@   r9   rA   s     €rB   r?   zNewGlobalVariable.__init__j  ó   ø€ Ü‰ÑÑ"˜6Ó"rC   )r   r�   rÊ   r   r?   rÐ   rÑ   s   @rB   rb  rb  i  s   ø„ ð# ð #¨÷ #ñ #rC   rb  Úfn_clsr:   .c                 óN   ‡ — dt         dt         dt         fˆ fd„}t        |_        |S )Nrz   r9   r:   c                  ó(   •—  ‰j                   | i |¤ŽS rE   )Úapply)rz   r9   rg  s     €rB   Útrampoline_autograd_applyzDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_applyo  s   ø€ Øˆv�|‰|˜TÐ, VÑ,Ð,rC   )r   Ú!produce_trampoline_autograd_applyÚ_origin)rg  rk  s   ` rB   rl  rl  n  s/   ø€ ð-¬ð -¼ð -Äõ -ô )JÐÔ%Ø$Ð$rC   c            
       ó.  ‡ — e Zd ZdZdhej
                  £Zdededdfˆ fd„Zdefd„Z	de
e   deeef   de
e   dz  fd	„Zd
dde
e   deeef   defd„Zd
dde
e   deeef   defd„Zd
dde
e   deeef   dd fd„Zd
ddede
e   deeef   def
d„Zˆ xZS )ÚAutogradFunctionVariablez-represents a torch.autograd.Function subclassrg  r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   )r>   r?   rg  )r@   rg  r9   rA   s      €rB   r?   z!AutogradFunctionVariable.__init__  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rC   c                 ó   — t         S rE   ©r_   rG   s    rB   rH   z$AutogradFunctionVariable.python_typeƒ  ó   € ÜˆrC   rz   c                 óF  ‡— ddl m} | j                  j                  }|j                  } || j                  j
                  «       }|rdnd}t        |j                  ||j                   «      Š|D ]4  }|‰vr y‰j                  |«      t        |«      k  sŒ't        d|› d�«      ‚ t        ˆfd„|D «       t        |«      dz
  ¬«      }	t        |«      }
t        t        |«      |	dz   «      D ]1  }‰|   }||v r|
j                  ||   «       Œ!t        d	|› d
|› d�«      ‚ |
S )a	  Resolve kwargs to positional args using forward().__code__.

        Uses co_varnames/co_argcount directly to match the C++
        resolve_kwargs_to_positional in python_function.cpp.
        Keyword-only args are not resolved; callers should graph break.
        r   ©Ú_is_setup_context_definedr)   Nz,forward() got multiple values for argument 'ú'c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrE   )rb   )r3  rS   Úparam_namess     €rB   r4  z;AutogradFunctionVariable._resolve_kwargs.<locals>.<genexpr>   s   øè ø€ Ò8¨ˆ[×Ñ˜t×$Ñ8ùr5  )Údefaultz&forward() missing required argument: 'z' (position r'  )Útorch.autograd.functionrv  rg  ÚforwardÚ__code__Úsetup_contextrÎ   Úco_varnamesÚco_argcountrb   rf   rõ   Úmaxre   Úappend)r@   rz   r9   rv  rW  rX  Úhas_ctxÚparam_offsetrS   Úmax_idxÚresultÚiry  s               @rB   Ú_resolve_kwargsz(AutogradFunctionVariable._resolve_kwargs†  s6  ø€ õ 	Fà�[‰[× Ñ ˆØ�{‰{ˆÙ/°·±×0IÑ0IÓJÐJˆÙ#‘q¨ˆÜ˜4×+Ñ+¨L¸4×;KÑ;KÐLÓMˆàò 	XˆDØ˜;Ñ&ÙØ× Ñ  Ó&¬¨T«Ó2ÜÐ"NÈtÈfÐTUÐ VÓWÐWð		Xô Û8°Ô8Ü˜“I ‘Mô
ˆô
 )-¨T«
ˆÜ”s˜4“y '¨A¡+Ó.ò 	ˆAØ˜q‘>ˆDØ�v‰~Ø—‘˜f T™lÕ+äØ<¸T¸FÀ,ÈqÈcÐQRÐSóð ð	ð ˆrC   rR   r4   c           	      ó0	  ‡‡— |rw| j                  ||«      }|€_t        ddt        |«      t        | j                  j                  j
                  j                  «      z
  › �dg t        j                  ¢¬«       |}i }dŠdt        dd fˆˆfd„}t        j                  |||f«       ‰�rzt        j                  «       �re| j                  }d	d
lm} d	dlm} | j                  j                  }	 || j                  j$                  «      }
|
r3 || j                  j                  | j                  j$                  «      }	d }| j                  j&                  }|t        j(                  j*                  j&                  ur*t        dd| › d|› d|› �dddgt        j                  ¢¬«       | j                  j,                  }|t        j(                  j*                  j,                  ur)t        dd| › d|› d|› �ddgt        j                  ¢¬«       ddlm} |€E|
sCt3        ‰j5                  | j                  j6                  «      | j                  j8                  «      }|xr t3        |d¬«      } ||	| j                  j:                  ||¬«      j=                  ‰||«      }| j                  r~|
r|t3        | j                  d«      }t?        |jA                  tB        jD                  «      «       t3        | j                  d«      }t?        |jA                  tB        jD                  «      «       |S | j                  rt3        | j                  d«      }nd }| j                  j                  }tF        jI                  ‰||«      }|g|¢}tK        |tL        jN                  «      rjtQ        jR                  |«      }tU        |«      dz
  tU        |jV                  «      k(  r|dd  }t        jX                  ‰||d¬«      }|j=                  ‰||«      S tK        |tL        jZ                  «      rPt]        j^                  |j`                  t]        jb                  | j                  «      |¬«      j=                  ‰||«      S t        dd| › d|› d|› �dte        |«      j8                  › d �d!g¬«       y )"NÚautograd_function_kwonly_argsz!forward() has keyword-only args: zMautograd.Function.apply does not support keyword-only arguments in forward().rV   Fr°   r:   c                 ó¤   •— | j                  «       r| j                  durdŠt        | t        j                  «      r| j                  ‰«      rdŠy y y )NFT)Ú	is_tensorÚrequires_gradr�   r   ÚNNModuleVariableÚis_training)r°   r�  rR   s    €€rB   Úvisitz2AutogradFunctionVariable.call_apply.<locals>.visitÃ  sJ   ø€ à�|‰|Œ~à×#Ñ#¨5Ñ0Ø$(�MÜ˜"œi×8Ñ8Ô9Ø—>‘> "Ô%Ø$(‘Mð &ð :rC   r   )Ú#autograd_function_forward_rewrittenru  zUnsupported custom vjpzcall_apply r~   zgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `vjp` method.z+Remove the custom `vjp` method if possible.z.Use standard `backward` instead if applicable.zUnsupported custom jvpzgDynamo does not support tracing `torch.autograd.Function` subclasses that define a custom `jvp` method.z+Remove the custom `jvp` method if possible.r)   )ÚAutogradFunctionApplyVariablerj  )r–   rs   r|  r~  Tr‚   z=Non-function or method in subclass of torch.autograd.FunctionzˆDynamo requires the `forward` attribute of a `torch.autograd.Function` subclass to be a standard Python function or method. Found type `z
` instead.zPEnsure the `forward` method is defined as a regular function or instance method.)3rˆ  r   Úsetrg  r|  r}  r  r   rú   r,   r�  r‰   Úis_grad_enabledr]   Ú"torch._functorch.autograd_functionr‘  r{  rv  r~  ÚvjpÚautogradÚFunctionÚjvpÚhigher_order_opsr’  r   Úimport_sourcer�   r   Úbackwardr�   r   rv   r   ÚCLOSURE_MATCHÚAutogradFunctionContextVariablerx   r�   r™   rš   ÚinspectÚ	signaturerf   Ú
parametersr�   r�   r   rž   r„   r“   r_   )r@   rR   rz   r9   Úresolvedr�  r]   r‘  rv  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnr’  Úapply_sourceró   Úfwd_srcÚsetup_ctx_srcrW  ÚctxÚsigr¶   r�  s    `                    @rB   Ú
call_applyz#AutogradFunctionVariable.call_apply¯  s%  ù€ ñ Ø×+Ñ+¨D°&Ó9ˆHØÐÜØ;Ø?ÄÀFÃÌcÐRV×R]ÑR]×ReÑRe×RnÑRn×RzÑRzÓN{Ñ@{Ð?|Ð}Ø oØ:Ô-×9Ñ9Ð:õ	ð ˆDØˆFàˆð	)”oð 	)¨$ö 	)ô 	×Ñ˜e d¨F ^Ô4âœU×2Ñ2Õ4Ø—[‘[ˆFõõ JàŸ™×,Ñ,ˆJá#<¸T¿[¹[×=VÑ=VÓ#WÐ Ù#ñ AØ—K‘K×'Ñ'¨¯©×)BÑ)Bó�
ð �à—[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜØ4Ø)¨$¨¨q°°°a¸°xÐ@ð!-ð FØHðô +×6Ñ6ðõð —[‘[—_‘_ˆFØœUŸ^™^×4Ñ4×8Ñ8Ñ8ÜØ4Ø)¨$¨¨q°°°a¸°xÐ@ð!-ð Fðä*×6Ñ6ðõ
õ Hàˆ~Ñ&:Ü#Ø×$Ñ$ T§[¡[×%;Ñ%;Ó<¸d¿k¹k×>RÑ>Ró�ð "ÒH¤j°ÀÔ&HˆLÙ/ØØ—‘×$Ñ$ØØ#ô	÷
 ‰m˜B  fÓ-ð ð �{Š{Ñ3Ü$ T§[¡[°)Ó<�Ü˜g×0Ñ0´×1KÑ1KÓLÔMÜ *¨4¯;©;¸Ó H�Ü˜m×6Ñ6´|×7QÑ7QÓRÔSàˆJà�;Š;Ü §¡¨YÓ7‰FàˆFà�[‰[× Ñ ˆÜ-×4Ñ4°R¸¸vÓFˆØˆ|�dˆ|ˆÜ�bœ%×,Ñ,Ô-Ü×#Ñ# BÓ'ˆCÜ�4‹y˜1‰}¤ C§N¡NÓ 3Ò3Ø˜A˜B�x�Ü#×)Ñ)¨"¨b¸ÈÔNˆEØ×&Ñ& r¨4°Ó8Ð8Ü˜œE×,Ñ,Ô-Ü×/Ñ/Ø—‘Ü×2Ñ2°4·;±;Ó?Øô÷ ‰m˜B  fÓ-ð	.ô ØWØ% d V¨1¨T¨F°!°F°8Ð<ð3ä37¸³8×3DÑ3DÐ2EÀZðQð3ðö
rC   c                 ó  — | j                   j                  }t        |d   j                  «      t        j
                  j                  j                  ur$t        dt        |d   j                  «      › �«      ‚t        |t        j                  «      st        dt        |«      › �«      ‚| j                  €t        d«      ‚t        | j                  d«      }t        j                  |||d¬«      }|j!                  |||«      S )Nr   z$Expected FakeBackwardCFunction, got zExpected FunctionType, got z*AutogradFunctionVariable requires a sourcerœ  Tr‚   )rg  rœ  r_   r`   r‰   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionr[   r�   r™   rš   r]   r   r,   r�   r�   )r@   rR   rz   r9   rW  Ú	fn_sourcer¶   s          rB   Úcall_backwardz&AutogradFunctionVariable.call_backward8  sÝ   € ð �[‰[×!Ñ!ˆä��a‘—‘ÓÜ—=‘=×/Ñ/×EÑEñFô !Ø6´t¸DÀ¹G¿M¹MÓ7JÐ6KÐLóð ô ˜"œe×0Ñ0Ô1Ü Ð#>¼tÀB»x¸jÐ!IÓJÐJØ�;‰;ÐÜ Ð!MÓNÐNÜ˜tŸ{™{¨JÓ7ˆ	Ü×%Ñ% b¨"°YÈÔMˆØ×"Ñ" 2 t¨VÓ4Ð4rC   c                 ó,   — t        | j                  «      S rE   )ro  rg  ©r@   rR   rz   r9   s       rB   r�   z&AutogradFunctionVariable.call_functionN  s   € ô (¨¯©Ó4Ð4rC   rS   c           
      ó¼  — ddl m} |dk(  rwt        j                  | j                  «      rEt        | j                  «      } || |j                  j                  d|gt        ||«      ¢­Ž ¬«      S | j                  |||«      S |dk(  r| j                  |||«      S | j                  �t        | j                  |«      nd }	 t        j                  | j                  |«      }t!        |t"        «      r|j%                  | j                  «      }	t        j&                  |	«      }
|
€t)        d|	› �«      ‚|�$|
j+                  |	|¬«      j-                  |||«      S  |
|	«      j-                  |||«      S t!        |t.        «      r3t1        j2                  |j4                  | |¬«      j-                  |||«      S t7        d	d
| › d|› �d|› d�dg¬«       y # t        $ r d }Y Œúw xY w)Nr)   )Úwrap_fx_proxyrj  r�   )rR   Úproxyrœ  z%trace_rules.lookup returned None for rs   z$Unsupported autograd.Function methodr}   r~   ú,Dynamo does not support calling the method `z‡` directly on the `torch.autograd.Function` instance. Supported methods include `apply`, `backward`, static methods, and class methods.znEnsure the method is decorated with `@staticmethod` or `@classmethod` if it's meant to be called on the class.rV   )Úbuilderr¶  r   Úis_callable_allowedrg  rl  r¢   Úcreate_proxyr'   r¬  r²  r]   r   rŸ  Úgetattr_staticr¬   r�   r˜   Ú__get__Úlookupr[   Úcreate_with_sourcer�   r›   r   rž   r„   r   )r@   rR   rS   rz   r9   r¶  rk  r]   rå   rÁ   Útraceds              rB   r—   z$AutogradFunctionVariable.call_methodV  sõ  € õ 	+à�7Š?Ü×.Ñ.¨t¯{©{Ô;Ü,MØ—K‘Kó-Ð)ñ %ØØ0˜"Ÿ)™)×0Ñ0Ø'Ø1ðô +¨4°Ó8òôð ð —‘ r¨4°Ó8Ð8à�ZÒØ×%Ñ% b¨$°Ó7Ð7à6:·k±kÐ6M”Z §¡¨TÔ2ÐSWˆFðÜ×,Ñ,¨T¯[©[¸$Ó?�ô ˜#œ|Ô,Ø—{‘{ 4§;¡;Ó/�Ü$×+Ñ+¨DÓ1�Ø�>Ü(Ð+PÐQUÐPVÐ)WÓXÐXØÐ%ð ×1Ñ1°$¸vÐ1ÓF×TÑTØ  fóðñ " $›<×5Ñ5°b¸$ÀÓGÐGÜ˜C¤Ô-Ü ×3Ñ3Ø—L‘L $¨vôç‘-  D¨&Ó1ð2ô ØBØ*¨4¨&°°$°Ð8ð!Ø�vð 9ð!9ð
Uðöøô/ "ò Ø’ðús   Ã  G ÇGÇG)r   r�   rÊ   r@  r,   rÌ   r   r?   r_   rH   rÎ   rÏ   r¥   rˆ  r¬  r²  r�   r—   rÐ   rÑ   s   @rB   ro  ro  w  s  ø„ Ù7ð 	ðà	×	'Ñ	'ð€Nð
˜sð ¨cð °dõ ð˜Tó ð'à�?Ñ#ð'ð �S˜/Ð)Ñ*ð'ð 
ˆoÑ	 Ñ	%ó	'ðRGà'ðGð �?Ñ#ðGð �S˜/Ð)Ñ*ð	Gð
 
óGðR5à'ð5ð �?Ñ#ð5ð �S˜/Ð)Ñ*ð	5ð
 
ó5ð,5à'ð5ð �?Ñ#ð5ð �S˜/Ð)Ñ*ð	5ð
 
$ó5ðAà'ðAð ðAð �?Ñ#ð	Að
 �S˜/Ð)Ñ*ðAð 
÷ArC   ro  c                   óD   — e Zd ZU  ej                  e¬«      Zee   ed<   y)ÚSavedTensorBox)Údefault_factoryÚtensorsN)	r   r�   rÊ   ÚdataclassesÚfieldrÎ   rÄ  r,   r`  r=   rC   rB   rÂ  rÂ  š  s   … à%6 [×%6Ñ%6ÀtÔ%L€GˆT�/Ñ"ÔLrC   rÂ  c                   ó>  ‡ — e Zd ZdZdddhej
                  £Z	 	 	 	 	 	 ddededz  dededz  de	ed	f   dz  d
edz  de
e   dz  deddfˆ fd„Ze	 	 dddde
e   dz  deeef   dz  defd„«       Zdefd„Zdddede
e   deeef   def
ˆ fd„Zdddedefˆ fd„Zˆ xZS )rž  zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    r·  Ú	inferenceÚsaved_tensorsNr`   rœ   Úneeds_input_grad.Únon_differentiableÚdirty_tensorsr9   r:   c                 óp   •— t        ‰	| �  d||dœ|¤Ž || _        || _        || _        || _        || _        y ©N)r`   rœ   r=   )r>   r?   rÈ  rÉ  rÊ  rË  rÌ  )
r@   r`   rœ   rÈ  rÉ  rÊ  rË  rÌ  r9   rA   s
            €rB   r?   z(AutogradFunctionContextVariable.__init__«  sC   ø€ ô 	‰ÑÐF˜u°ÑF¸vÒFØ"ˆŒØ*ˆÔØ 0ˆÔØ"4ˆÔØ*ˆÕrC   rR   r4   rz   c           
      ó  — d }|r|st        d„ |D «       «      }| j                  j                  j                  d t        j
                  j                  j                  t        j                  t        dt        «       |¬«      i «      }|S )Nc              3   óX   K  — | ]"  }|j                  «       xr |j                  –— Œ$ y ­wrE   )rŒ  r�  ©r3  Úxs     rB   r4  z9AutogradFunctionContextVariable.create.<locals>.<genexpr>Æ  s"   è ø€ Ò$UÈ1 Q§[¡[£]Ò%F°q·±Ó%FÑ$Uùs   ‚(*T)rÈ  rÉ  rÊ  )rÍ   r¢   rŒ   Útrack_object_newr‰   r—  ÚfunctionÚFunctionCtxÚ	functoolsÚpartialrž  rÂ  )rR   rz   r9   rÊ  Úouts        rB   rx   z&AutogradFunctionContextVariable.create½  sz   € ð  ÐÙ™ä$Ñ$UÐPTÔ$UÓUÐØ�i‰i×$Ñ$×5Ñ5ØÜ�N‰N×#Ñ#×/Ñ/Ü×ÑÜ/ØÜ,Ó.Ø!1ô	ð ó

ˆð ˆ
rC   c                 óv   — | j                   €"t        dd| › �dg t        j                  ¢¬«       | j                   S )Nzproxy not setz	as_proxy zMDynamo requires the autograd.Function context to be initialized with a proxy.rV   )r·  r   r   r¤   rG   s    rB   Úas_proxyz(AutogradFunctionContextVariable.as_proxyÔ  sA   € à�:‰:ÐÜØ'Ø# D 6Ð*ð2à5Ô)×4Ñ4Ð5õð �z‰zÐrC   rS   c                 ó.  •— |dk(  rt         ‰| �  ||||«      S |dk(  rO|rt        ||dt        |«      › d�«       t	        |i «      d   | _        t        j                  j                  d «      S |dk(  rt|rt        ||dt        |«      › d�«       t        | dd «      €%t        dd	| › d
|› �dg t        j                  ¢¬«       || _        t        j                  j                  d «      S |dk7  r)t        dd	| › d
|› �d|› d�g t        j                  ¢¬«       | j                  €t        dd	| › d
|› �ddg¬«       | j                  €t        d«      ‚| j                   s@|s| j"                  st%        |d«       |j&                  j(                  j+                  | |«       t        | j                  j,                  «      dkD  rg | j                  _        |D ]'  }| j                  j,                  j/                  |«       Œ) t        j                  j                  d «      S )Nr  Úmark_non_differentiablez0 kwargsrN  r   Ú
mark_dirtyr·  z2Unsupported autograd.Function context `mark_dirty`r}   r~   zKDynamo only supports tracing ctx.mark_dirty inside autograd.Function.apply.rV   Úsave_for_backwardz,Unsupported autograd.Function context methodr¸  z�` on `autograd.Function` context objects. Supported methods are `__setattr__`, `save_for_backward`, `mark_dirty` and `mark_non_differentiable`.z9Unsupported autograd.Function context `save_for_backward`zjDynamo requires the `saved_tensors` attribute to be initialized on the `autograd.Function` context object.zÆEnsure that the `saved_tensors` attribute is properly initialized before calling `save_for_backward`. `save_for_backward` only supported on a newly constructed `torch.autograd.function.FunctionCtx`.z:saved_tensors must be initialized before save_for_backwardz>save_for_backward() requires a source and no keyword arguments)r>   r—   r(   rf   r'   rË  r   r-   rx   rd   r   r   rú   rÌ  rÉ  r[   rÈ  r]   r   r¢   rŒ   Útrack_save_for_backwardrÄ  r‚  )r@   rR   rS   rz   r9   r)  rA   s         €rB   r—   z+AutogradFunctionContextVariable.call_methodá  s<  ø€ ð �=Ò Ü‘7Ñ& r¨4°°vÓ>Ð>ØÐ.Ò.ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRÜ&7¸¸bÓ&AÀ!Ñ&DˆDÔ#Ü×-Ñ-×4Ñ4°TÓ:Ð:Ø�\Ò!ÙÜ# B¨¨j¼SÀ»[¸MÈÐ:QÔRÜ�t˜W dÓ+Ð3ÜØPØ*¨4¨&°°$°Ð8ð!6à:Ô-×9Ñ9Ð:õð "&ˆDÔÜ×-Ñ-×4Ñ4°TÓ:Ð:àÐ&Ò&ÜØFØ& t f¨A¨d¨VÐ4ðØ�6ð >ð>ð 7Ô)×5Ñ5Ð6õð ×ÑÐ%ÜØSØ& t f¨A¨d¨VÐ4ðOðwðõ
ð ×ÑÐ%Ü ØLóð ð �~Š~Ù˜TŸ[š[Ü ØÐXôð �I‰I×"Ñ"×:Ñ:¸4ÀÔFô ˆt×!Ñ!×)Ñ)Ó*¨QÒ.à)+ˆD×ÑÔ&Øò 	3ˆCØ×Ñ×&Ñ&×-Ñ-¨cÕ2ð	3ä×)Ñ)×0Ñ0°Ó6Ð6rC   c                 ó–  •‡ ‡‡— ‰dv rt        ˆˆ ˆfd„«      S ‰dk(  rS‰ j                  €t        j                  j	                  d «      S t        j
                  t        ‰ j                  «      «      S ‰dk(  r>‰ j                  �2t        j
                  t        ‰ j                  j                  «      «      S ‰dk(  r‚‰ j                  �)t        j                  j	                  ‰ j                  «      S ‰ j                  rAt        ‰ j                  d«      }t        j                  ‰‰ j                  j                  |«      S t        ‰‰ �A  ‰‰«      S )N)rÞ  rÝ  rÜ  c                  ó>   •— ‰j                  ‰‰t        | «      |«      S rE   )r—   rÎ   )rz   r9   rS   r@   rR   s     €€€rB   rM   z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>+  s   ø€ ¨×(8Ñ(8¸¸TÄ4ÈÃ:ÈvÓ(V€ rC   rÌ  rÉ  rÊ  )rˆ   rÌ  r   r-   rx   r   rÎ   rÉ  rÄ  rÊ  r]   r   r,   r�   r`   r>   ry   )r@   rR   rS   r]   rA   s   ``` €rB   ry   z+AutogradFunctionContextVariable.var_getattr&  s  û€ ð ÐQÑQÜ!ÝVóð ð �?Ò"Ø×!Ñ!Ð)Ü ×1Ñ1×8Ñ8¸Ó>Ð>Ü×*Ñ*¬4°×0BÑ0BÓ+CÓDÐDØ�?Ò" t×'9Ñ'9Ð'EÜ×*Ñ*¬4°×0BÑ0B×0JÑ0JÓ+KÓLÐLØÐ%Ò%Ø×$Ñ$Ð0Ü ×1Ñ1×8Ñ8¸×9NÑ9NÓOÐOØ�{Š{Ü# D§K¡KÐ1CÓD�ä&×,Ñ,¨R°·±×1LÑ1LÈfÓUÐUä‰wÑ" 2 tÓ,Ð,rC   )NFNNNN©NN)r   r�   rÊ   r@  r2   rÌ   r   r_   r  rÍ   rÎ   r,   r?   r˜   rÏ   r¥   rx   rÚ  r—   ry   rÐ   rÑ   s   @rB   rž  rž  Ÿ  s‘  ø„ ñð
 	ØØðð 
#×	1Ñ	1ð	€Nð #'ØØ$(Ø48Ø)-Ø6:ñ+àð+ð ˜4‘Kð+ð ð	+ð
 ˜T‘zð+ð    c 	Ñ*¨TÑ1ð+ð   $™Jð+ð ˜OÑ,¨tÑ3ð+ð ð+ð 
õ+ð$ ð .2Ø48ñØ'ðà�?Ñ# dÑ*ðð �S˜/Ð)Ñ*¨TÑ1ðð 
ò	ó ðð,˜#ó ðC7à'ðC7ð ðC7ð �?Ñ#ð	C7ð
 �S˜/Ð)Ñ*ðC7ð 
õC7ðJ-Ø-ð-Ø58ð-à	÷-ñ -rC   rž  c            
       óÀ   ‡ — e Zd ZdZ	 ddej
                  j                  deej
                  j                     dz  deddfˆ fd„Z	dd	d
e
dee   dee
ef   def
d„Zˆ xZS )ÚAutogradEngineVariablez;
    Represents a torch._C._ImperativeEngine instance.
    Nr`   rœ   r9   r:   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rÎ  rd  )r@   r`   rœ   r9   rA   s       €rB   r?   zAutogradEngineVariable.__init__C  s   ø€ ô 	‰ÑÐF˜u°ÑF¸vÓFrC   rR   r4   rS   rz   c                 óð  — |dk(  rØt         j                  j                  j                  rž|j                  s|j
                  st        d«      ‚t        j                  |t         j                  j                  j                  j                  «      }|j                  ||j                  j                  j                  «       g|¢­|«      S t!        dd| › d|› �dg ¬«       y t!        dd| › d|› �d	|› d
�g ¬«       y )NÚqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truez7Unsupported torch._C._ImperativeEngine.queue_callback()r}   r~   zYqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=True.rV   z-Unsupported torch._C._ImperativeEngine methodzgDynamo only supports the `queue_callback` method on a torch._C._ImperativeEngine instance, but found: `z`.)r‰   r®  Úcompiled_autogradÚin_compiled_autograd_regionÚ	one_graphÚerror_on_graph_breakr[   r,   r�   r¯  ÚFakeCompiledAutogradEnginerç  r�   r¢   rŒ   Úget_ca_final_callbacks_varr   )r@   rR   rS   rz   r9   r¶   s         rB   r—   z"AutogradEngineVariable.call_methodK  sÿ   € ð Ð#Ò#Ü�}‰}×.Ñ.×JÒJØŸš¨×(?Ò(?Ü(Øróð ô (×-Ñ-ØÜ—M‘M×0Ñ0×KÑK×ZÑZó�ð ×*Ñ*ØØ—Y‘Y×+Ñ+×FÑFÓHÐPÈ4ÑPØóð ô ØUØ*¨4¨&°°$°Ð8ð!Hàöô ØGØ& t f¨A¨d¨VÐ4ðIØIMÈÈbðRàörC   rE   )r   r�   rÊ   r@  r‰   r­   Ú_ImperativeEnginer_   r   r?   r¥   rÎ   r,   rÏ   r—   rÐ   rÑ   s   @rB   rä  rä  >  s    ø„ ñð ?CñGà�x‰x×)Ñ)ðGð ˜Ÿ™×3Ñ3Ñ4°tÑ;ðGð ð	Gð
 
õGð&à'ð&ð ð&ð �?Ñ#ð	&ð
 �S˜/Ð)Ñ*ð&ð 
÷&rC   rä  c                   ój   ‡ — e Zd Zdedef   deddfˆ fd„Zdefd„Zdd	d
e	e   de
eef   defd„Zˆ xZS )rˆ   rW  .r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   )r>   r?   rW  )r@   rW  r9   rA   s      €rB   r?   zLambdaVariable.__init__v  s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�rC   c                 ó"   — t         j                  S rE   )r™   rš   rG   s    rB   rH   zLambdaVariable.python_typez  s   € Ü×!Ñ!Ð!rC   rR   r4   rz   c                 ó&   —  | j                   |i |¤ŽS rE   )rW  r´  s       rB   r�   zLambdaVariable.call_function}  s   € ð ˆt�w‰w˜Ð' Ñ'Ð'rC   )r   r�   rÊ   r   r,   r   r?   r_   rH   rÎ   rÏ   r¥   r�   rÐ   rÑ   s   @rB   rˆ   rˆ   t  sm   ø„ ð˜8 C¨Ð$8Ñ9ð ÀSð ÈTõ ð"˜Tó "ð(à'ð(ð �?Ñ#ð(ð �S˜/Ð)Ñ*ð	(ð
 
÷(rC   rˆ   c                   óf  ‡ — e Zd Zddhej                  £Z	 ddedededz  deddf
ˆ fd„Zdefˆ fd„Z	defd	„Z
ed
ej                  j                  dedefd„«       Zdefd„Zdefd„Zdedeeef   fd„Zdddedefd„Zdd„Zdddddeddfd„Zdddee   deeef   defd„Zdddedefˆ fd„Zˆ xZS )ru   rS   rr   Nrå   r9   r:   c                 óê   •— t        ‰| �  di |¤Ž t        |t        «      st	        dt        |«      › �«      ‚t        |t        «      st	        dt        |«      › �«      ‚|| _        || _        || _	        y )Nz#obj must be a VariableTracker, got zname must be a str, got r=   )
r>   r?   r�   r,   r[   r_   r¥   rå   rS   rr   )r@   rå   rS   rr   r9   rA   s        €rB   r?   zGetAttrVariable.__init__�  sl   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜#œÔ/Ü Ð#FÄtÈCÃyÀkÐ!RÓSÐSÜ˜$¤Ô$Ü Ð#;¼DÀ»J¸<Ð!HÓIÐIØˆŒØˆŒ	Øˆ�rC   c                 óP   •— | j                   �| j                   S t        ‰| �	  «       S rE   )rr   r>   rH   ©r@   rA   s    €rB   rH   zGetAttrVariable.python_type�  s%   ø€ Ø�<‰<Ð#Ø—<‘<Ðä‘7Ñ&Ó(Ð(rC   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S ©Nr&  r1  r'  )rA   r   rå   rS   rG   s    rB   r<  zGetAttrVariable.__repr__£  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨:°R¸¿	¹	°{À!ÐDÐDrC   Ú
base_proxyr¼   c                 ó   — t        | |«      S rE   )rd   )rù  r¼   s     rB   Úcreate_getattr_proxyz$GetAttrVariable.create_getattr_proxy¦  s   € ä�z 4Ó(Ð(rC   c                 ór   — t         j                  | j                  j                  «       | j                  «      S rE   )ru   rû  rå   rÚ  rS   rG   s    rB   rÚ  zGetAttrVariable.as_proxyª  s&   € Ü×3Ñ3°D·H±H×4EÑ4EÓ4GÈÏÉÓSÐSrC   c                 óœ   — | j                   j                  «       }	 t        || j                  «      S # t        $ r t        | › d�«      d ‚w xY w)Nz is not a constant)rå   r\   rd   rS   r¬   r¡   )r@   Úconstants     rB   r\   z"GetAttrVariable.as_python_constant­  sQ   € Ø—8‘8×.Ñ.Ó0ˆð	MÜ˜8 T§Y¡YÓ/Ð/øÜò 	MÜ%¨¨Ð.@Ð&AÓBÈÐLð	Mús	   œ2 ²ArR   c                 óº   — 	 | j                  «       }t        «      dfS # t        t        f$ r, ddlm}  |dd| › �d| › d�g t
        j                  ¢¬«       Y ŒGw xY w)	Nr   )r   z!Non-constant GetAttrVariable hashz
hash_impl zCannot hash zh because Dynamo doesn't know how to represent the type of the getattr() result, which is not a constant.rV   F)r\   r*   r¡   r½   r   r   rú   Úhash)r@   rR   ró   r   s       rB   Ú	hash_implzGetAttrVariable.hash_impl´  sw   € ð	Ø×)Ñ)Ó+ˆCô �C‹y˜%ÐÐøô 4Ô5HÐIò 		Ý+áØ;Ø$ T FÐ+Ø*¨4¨&ð 1Mð Mà6Ô)×5Ñ5Ð6÷ð		ús   ‚ Ÿ8AÁAr4   c                 ó„  — t        | j                  t        j                  «      st        ‚|j
                  j                  | j                  j                  «      }| j                  |j                  vrt        ‚t        j                  || j                  «      }||j                  vrt        ‚t        j                  ||«      S rE   )r�   rå   r   rŽ  r¡   r¢   Úget_submoduleÚ
module_keyrS   rg   rŸ  r¼  )r@   rR   rS   Ústep1Ústep2s        rB   Úconst_getattrzGetAttrVariable.const_getattrÅ  s‹   € Ü˜$Ÿ(™(¤I×$>Ñ$>Ô?Ü%Ð%Ø—	‘	×'Ñ'¨¯©×(;Ñ(;Ó<ˆØ�9‰9˜EŸN™NÑ*Ü%Ð%Ü×&Ñ& u¨d¯i©iÓ8ˆØ�u—~‘~Ñ%Ü%Ð%Ü×%Ñ% e¨TÓ2Ð2rC   c                 ó|   —  || j                   «       |j                  |j                  | j                  «      «       y rE   )rå   rO   Úcreate_load_attrsrS   rI  s     rB   rQ   zGetAttrVariable.reconstructÐ  s+   € Ù�—‘ÔØ×Ñ˜g×7Ñ7¸¿	¹	ÓBÕCrC   rû   r,   rü   c                 óÈ  — ddl m} 	 | j                  j                  || j                  «      }|�t        |t        «      rˆ| j                  j                  «       rEt        | j                  j                  «       | j                  «      }t        j                  ||«      }n)t        dd| › d|› �d| › d�g t        j                  ¢¬«        |||||«      S # t
        $ r d }Y Œ²w xY w)	Nr)   )Úgeneric_richcomparez%Unresolved GetAttrVariable comparisonzrichcompare_impl r~   zCannot compare zA because the attribute could not be resolved to a concrete value.rV   )r  r  rå   ry   rS   r¡   r�   ru   Úis_python_constantrd   r\   r,   r�   r   r   rú   )r@   rR   rû   rü   r  r¢  ró   s          rB   r  z GetAttrVariable.richcompare_implÔ  sÜ   € õ 	9ð	Ø—x‘x×+Ñ+¨B°·	±	Ó:ˆHð Ðœz¨(´OÔDØ�x‰x×*Ñ*Ô,Ü˜dŸh™h×9Ñ9Ó;¸T¿Y¹YÓG�Ü*×0Ñ0°°SÓ9‘äØCØ/°¨v°Q°r°dÐ;Ø"1°$°ð 8Að !Bà:Ô-×9Ñ9Ð:õñ # 2 x°¸Ó;Ð;øô #ò 	ØŠHð	ús   ˆ&C ÃC!Ã C!rz   c                 óR   — | j                   j                  || j                  ||«      S rE   )rå   r—   rS   r´  s       rB   r�   zGetAttrVariable.call_functionë  s#   € ð �x‰x×#Ñ# B¨¯	©	°4¸Ó@Ð@rC   Úkeyc                 óÄ   •— | j                   dk(  rAt        | j                  d«      r+| j                  j                  |«      j	                  ||«      S t
        ‰| �  ||«      S )Nrg   Úget_dict_vt)rS   r’   rå   r  Úmp_subscript_implr>   )r@   rR   r  rA   s      €rB   r  z!GetAttrVariable.mp_subscript_impló  sR   ø€ ð
 �9‰9˜
Ò"¤w¨t¯x©x¸Ô'GØ—8‘8×'Ñ'¨Ó+×=Ñ=¸bÀ#ÓFÐFÜ‰wÑ(¨¨SÓ1Ð1rC   rE   rÉ   )r   r�   rÊ   r,   rÌ   r¥   r_   r   r?   rH   r<  r˜   r‰   ÚfxÚProxyrû  rÚ  r\   rÍ   Úintr  r  r  rQ   r  rÎ   rÏ   r�   r  rÐ   rÑ   s   @rB   ru   ru   †  sŒ  ø„ àØðð 
×	'Ñ	'ð€Nð  $ñ	àðð ðð ˜‘ð	ð
 ðð 
õð )˜Tõ )ðE˜#ó Eð ð)¨¯©¯©ð )¸sð )Àsò )ó ð)ðT˜#ó TðM Có Mð ˜Cð   E¨#¨t¨)Ñ$4ó  ð"	3Ð ;ð 	3À3ð 	3È3ó 	3óDð<Ø-ð<Ø6Gð<ØMPð<à	ó<ð.Aà'ðAð �?Ñ#ðAð �S˜/Ð)Ñ*ð	Að
 
óAð2à'ð2ð ð2ð 
÷	2ñ 2rC   ru   c                   ó*  ‡ — e Zd Zej                  Zddhej                  £Zdej                  deddfˆ fd„Z	de
ej                     fd„Zdej                  fd„Zdej                  fd	„Zdefd
„Zdddeddfd„Zdddedefd„Zdddddeddfd„Zˆ xZS )ÚPythonModuleVariabler`   Úis_torchr9   r:   Nc                 ó®   •— t        ‰| �  di |¤Ž || _        | j                  t        u xs% | j                  j                  j                  d«      | _        y )Nztorch.r=   )r>   r?   r`   r‰   r   Ú
startswithr  ©r@   r`   r9   rA   s      €rB   r?   zPythonModuleVariable.__init__  sD   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
ØŸ
™
¤eÐ+ÒW¨t¯z©z×/BÑ/B×/MÑ/MÈhÓ/Wˆ�rC   c                 ó"   — t         j                  S rE   )r™   Ú
ModuleTyperG   s    rB   rH   z PythonModuleVariable.python_type  s   € Ü×ÑÐrC   c                 ó   — | j                   S rE   ©r`   rG   s    rB   r\   z'PythonModuleVariable.as_python_constant  ó   € Ø�z‰zÐrC   c                 ó   — | j                   S rE   r  rG   s    rB   Úget_real_python_backed_valuez1PythonModuleVariable.get_real_python_backed_value  r  rC   c                 ó"   — d| j                   › d�S )NzPythonModuleVariable(r'  r  rG   s    rB   r<  zPythonModuleVariable.__repr__  s   € Ø& t§z¡z l°!Ð4Ð4rC   rR   r4   rS   r-   c                 óZ   — t        | j                  |«      }t        j                  ||«      S rE   )r’   r`   r,   r�   ©r@   rR   rS   r†  s       rB   Úcall_obj_hasattrz%PythonModuleVariable.call_obj_hasattr  s'   € ô ˜Ÿ™ TÓ*ˆÜ×$Ñ$ R¨Ó0Ð0rC   c                 óü  — |j                   j                  j                  | |«      r&|j                   j                  j                  | |«      S d }| j                  s|| j
                  j                  vr	 t        | j
                  |«      }n| j
                  j                  |   }| j                  xr t        | j                  |«      }t        j                  |||«      S # t        $ r t        t        |«       Y ŒVw xY wrE   )r¢   rŒ   Úhas_pending_mutation_of_attrÚ	load_attrr  r`   rg   rd   r¬   r   r]   r   r,   r�   )r@   rR   rS   r¿   r]   s        rB   ry   z PythonModuleVariable.var_getattr  sÌ   € ð �9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?àˆ
Ø�=Š=˜D¨¯
©
×(;Ñ(;Ñ;ð=Ü$ T§Z¡Z°Ó6‘
ð Ÿ™×,Ñ,¨TÑ2ˆJà—‘Ò>¤¨D¯K©K¸Ó!>ˆÜ×$Ñ$ R¨°VÓ<Ð<øô "ò =Ü(¬¸Ö<ð=ús   Á4C ÃC;Ã:C;rû   r,   rü   c                 ó$   — ddl m}  || |||«      S rþ   r   r  s        rB   r  z%PythonModuleVariable.richcompare_impl0  r  rC   )r   r�   rÊ   r™   r  rË   r,   rÌ   r   r?   r_   rH   r\   r!  r¥   r<  r%  ry   r  rÐ   rÑ   s   @rB   r  r  ý  s÷   ø„ à×$Ñ$€Mð 	Øðð 
×	'Ñ	'ð€NðX˜e×.Ñ.ð X¸#ð XÀ$õ Xð
 ˜T %×"2Ñ"2Ñ3ó  ð E×$4Ñ$4ó ð¨e×.>Ñ.>ó ð5˜#ó 5ð1Ø-ð1Ø58ð1à	ó1ð=Ø-ð=Ø58ð=à	ó=ð$7Ø-ð7Ø6Gð7ØMPð7à	÷7rC   r  c            
       ó  ‡ — e Zd Zdededdfˆ fd„Zdddedefd	„Zddd
ddeddfd„Zdddede	e   de
eef   def
d„Z	 dddd
ededefd„Zdddedefd„Zdefd„Zdedeeef   fd„Zdefd„Zdˆ fd„Zd
edefd„Zˆ xZS )ÚTypingVariabler`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   ©r>   r?   r`   r  s      €rB   r?   zTypingVariable.__init__9  ó   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
rC   rR   r4   r  c                 óÔ   — |j                  «       s1t        dd|› d�d| j                  › d�g t        j                  ¢¬«       | j                  |j                  «          }t        |«      S )Nznon-constant typing subscriptzTypingVariable[ú]z"Cannot subscript typing construct z with a non-constant key.rV   )r  r   r`   r   rú   r\   r+  )r@   rR   r  Ú
new_typings       rB   r  z TypingVariable.mp_subscript_impl=  sk   € ð ×%Ñ%Ô'ÜØ7Ø)¨#¨¨aÐ0Ø@ÀÇÁÀÐLeÐfØ6Ô)×5Ñ5Ð6õ	ð —Z‘Z × 6Ñ 6Ó 8Ñ9ˆ
Ü˜jÓ)Ð)rC   rû   r,   rü   c                 óú   — |dv r_t        |t        «      r6| j                  |j                  k(  }|dk(  r| }t        j                  |«      S t        j                  t
        «      S t        j                  t
        «      S )N)Ú__eq__Ú__ne__r4  )r&   r+  r`   r-   rx   ÚNotImplemented)r@   rR   rû   rü   r†  s        rB   r  zTypingVariable.richcompare_implM  sj   € ð Ð%Ñ%Ü�eœ^Ô,ØŸ™ u§{¡{Ñ2�Ø˜’>Ø!'˜Z�FÜ'×.Ñ.¨vÓ6Ð6Ü#×*Ñ*¬>Ó:Ð:Ü×&Ñ&¤~Ó6Ð6rC   rS   rz   c                 ó´   — t        dd| j                  › d|› d|› d|› �d|› d| j                  › d�d	|› d
| j                  › d�gt        j                  ¢¬«       y )Nz,unsupported method call on `typing` variableztyping variable: z, method name: ú, args: ú
, kwargs: z.`torch.compile` does not support method call `z` on `typing` variable fú.zAvoid calling the z method on rV   )r   r`   r   rú   ©r@   rR   rS   rz   r9   s        rB   r—   zTypingVariable.call_methodY  sy   € ô 	ØBØ'¨¯
©
 |°?À4À&ÈÐQUÐPVÐV`ÐagÐ`hÐiØHÈÈÐNfÐgk×gqÑgqÐfrÐrsÐtà$ T F¨+°d·j±j°\ÀÐCðä"×.Ñ.ðö		
rC   Úreversec                 óD  — |j                  «       st        j                  |t        «      S |j	                  «       }t        | j                  «      j                  | j                  |«      }|t        u rt        j                  |t        «      S t        j                  ||«      S rE   )r  r,   r�   r5  r\   r_   r`   Ú__or__)r@   rR   rû   r;  Ú	other_valr†  s         rB   Ú
nb_or_implzTypingVariable.nb_or_implj  s~   € ð ×'Ñ'Ô)Ü"×(Ñ(¨¬^Ó<Ð<Ø×,Ñ,Ó.ˆ	ä�d—j‘jÓ!×(Ñ(¨¯©°YÓ?ˆØ”^Ñ#Ü"×(Ñ(¨¬^Ó<Ð<Ü×$Ñ$ R¨Ó0Ð0rC   c           
      óÖ  — ddl m}m} |t        v r5t	        j
                  | |t        t        | j                  |«      «      ¬«      S |j                  j                  j                  | |«      r&|j                  j                  j                  | |«      S t        | j                  |«      }| j                  r%t        | j                  |«      }  |||«      |«      S |j                  ||«      S )Nr)   )ÚSourcelessBuilderÚVariableBuilderrq   )r¹  rA  rB  r$   r   ru   r_   rd   r`   r¢   rŒ   r'  r(  r]   r   rx   )r@   rR   rS   rA  rB  r`   rÀ   s          rB   ry   zTypingVariable.var_getattr{  sÂ   € ÷ 	@àÔ)Ñ)Ü×,Ñ,Ø�d¤D¬°·±¸TÓ)BÓ$Côð ð �9‰9×!Ñ!×>Ñ>¸tÀTÔJØ—9‘9×)Ñ)×3Ñ3°D¸$Ó?Ð?ä˜Ÿ
™
 DÓ)ˆØ�;Š;Ü$ T§[¡[°$Ó7ˆKØ3‘? 2 {Ó3°EÓ:Ð:à$×+Ñ+¨B°Ó6Ð6rC   c                 ó   — | j                   S rE   r  rG   s    rB   r\   z!TypingVariable.as_python_constant�  r  rC   c                 ó0   — t        | j                  «      dfS ©NF©r   r`   r9  s     rB   r  zTypingVariable.hash_impl’  ó   € Ü�D—J‘JÓ Ð&Ð&rC   c                 ó   — | j                   S rE   r  rG   s    rB   r!  z+TypingVariable.get_real_python_backed_value•  r  rC   c                 óÀ   •— t        | j                  t        j                  «      st        ‰| �  |«      S |j                  |j                  | j                  «      «       y rE   )r�   r`   r™   ÚGenericAliasr>   rQ   Úappend_outputÚcreate_load_constrP   s     €rB   rQ   zTypingVariable.reconstruct˜  sF   ø€ Ü˜$Ÿ*™*¤e×&8Ñ&8Ô9Ü‘7Ñ& wÓ/Ð/ð0 	×Ñ˜g×7Ñ7¸¿
¹
ÓCÕDrC   c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rE   ©r�   r,   r\   ©r@   rû   s     rB   Úis_python_equalzTypingVariable.is_python_equal´  ó1   € ä�uœoÓ.ò HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
rC   )FrÉ   )r   r�   rÊ   r   r?   r,   r  r¥   r  rÎ   rÏ   r—   r  r?  ry   r\   rÍ   r  r  r!  rQ   r‡   rP  rÐ   rÑ   s   @rB   r+  r+  8  sA  ø„ ð˜cð ¨Sð °Tõ ð*à'ð*ð ð*ð 
ó	*ð 
7Ø-ð
7Ø6Gð
7ØMPð
7à	ó
7ð
à'ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ó
ð* ñ	1à'ð1ð ð1ð ð	1ð
 
ó1ð"7Ø-ð7Ø58ð7à	ó7ð( Có ð'˜Cð ' E¨#¨t¨)Ñ$4ó 'ð¨có õEð8
 Vð 
°÷ 
rC   r+  )Úmaxsizec                  óÌ   — ddl m}  i }| j                  «       D ]H  \  }}|j                  j                  «       D ]&  \  }}t	        |«      sŒt        ||d«      x}sŒ"|||<   Œ( ŒJ |S )zd
    This generates a mapping from numpy modules to their torch._numpy
    modules equivalents.
    r   )ÚNP_TO_TNP_MODULEN)ÚutilsrT  r¯   rg   Úcallablerd   )rT  Únp_fn_to_tnp_fnÚnp_modÚtnp_modrT  Útnp_fnÚnp_fns          rB   Úget_np_to_tnp_mapr\  »  sz   € õ )à€Oà+×1Ñ1Ó3ò 4‰ˆ�Ø&×/Ñ/×5Ñ5Ó7ò 	4‰OˆG�VÜ˜Õô $ F¨G°TÓ:Ð:�5Ñ:Ø-3�O EÒ*ñ	4ð4ð ÐrC   c                  ój   — t        «       } | j                  «       D ��ci c]  \  }}||“Œ
 c}}S c c}}w )z
    This is just the reverse mapping of get_np_to_tnp_map() - mapping from
    torch._numpy modules to numpy equivalents.
    )r\  r¯   )ÚmÚkÚvs      rB   Úget_tnp_to_np_mapra  Ð  s.   € ô 	Ó€AØŸW™W›Y×'‘T�Q˜ˆAˆq‰DÓ'Ð'ùÓ's   ž/c            
       ó2  ‡ — e Zd ZdZej
                  fZdededdfˆ fd„Zdefd„Z	e
dej                  defd	„«       Ze
dej                  defd
„«       Zdddee   deeef   defd„Zdddedee   deeef   def
d„Zdefd„Zdefˆ fd„Zdedefd„Zˆ xZS )ÚNumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    r`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   zNumpyVariable.__init__á  r.  rC   c                 ó   — | j                   S rE   r  rG   s    rB   r!  z*NumpyVariable.get_real_python_backed_valueå  r  rC   rW  c                 óà   — |j                   j                  d«      }t        |«      dk  rt        d|› �«      ‚|d d ddgk7  r t        ddj	                  |d d «      › �«      ‚|| j
                  v S ©Nr9  r   z0Expected module path with at least 2 parts, got r‰   Ú_numpyz"Expected torch._numpy module, got )r�   Úsplitrf   r[   r6  Úconstant_fold_functions©rã   rW  Úmods      rB   Úcan_constant_fold_throughz'NumpyVariable.can_constant_fold_throughè  s‡   € à�m‰m×!Ñ! #Ó&ˆÜˆs‹8�aŠ<Ü ØBÀ3À%ÐHóð ð ˆr�ˆ7�w Ð)Ò)Ü Ø4°S·X±X¸cÀ"À1¸gÓ5FÐ4GÐHóð ð �S×0Ñ0Ð0Ð0rC   c                 óî   — |j                   j                  d«      }t        |«      dk  rt        d|› �«      ‚|d d ddgk7  r t        ddj	                  |d d «      › �«      ‚t
        j                  |«      S rg  )r�   ri  rf   r[   r6  Únp_constant_collections_maprh   rk  s      rB   Ú get_constant_collection_for_funcz.NumpyVariable.get_constant_collection_for_funcõ  s‡   € à�m‰m×!Ñ! #Ó&ˆÜˆs‹8�aŠ<Ü ØBÀ3À%ÐHóð ð ˆr�ˆ7�w Ð)Ò)Ü Ø4°S·X±X¸cÀ"À1¸gÓ5FÐ4GÐHóð ô +×.Ñ.¨rÓ2Ð2rC   rR   r4   rz   c                 ó  — t         j                  s1t        dd| j                  › d|› d|› �d| j                  › d�dg¬«       d	d
lm} ddlm} t        «       j                  | j                  «      }|€Dt        dd| j                  › d|› d|› d|› d�	d| j                  › d�g t        j                  ¢¬«       |€t        d| j                  › �«      ‚| j                  |«      x}	 �e	  | | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S |j$                  dk(  rTt         j&                  rDt        dd| j                  › d|› d|› d|› d�	d| j                  › d�dd| j                  › d�g¬«       |j)                  |j*                  ||«      \  }}| j-                  |«      r‚t/        ||«      rvt1        j2                  | | j                  «       |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž«      S  |j4                  j6                  d ||«      gt9        ||«      ¢­Ž }|j;                  ||«      S c c}w c c}
}	w # t         $ rG t        dd| j                  › d|› d|› d|› d�	d| j                  › d�g t        j"                  ¢¬«       Y y w xY wc c}w c c}
}	w )Nz?attempted to trace numpy function with config.trace_numpy=Falseúnumpy function: r7  r8  z"Attempted to trace numpy function z; while `torch._dynamo.config.trace_numpy` was set to False.zHSet `torch._dynamo.config.trace_numpy` to True to trace numpy functions.rV   r   )Únumpy_to_tensor_wrapperr)   )ÚNumpyNdarrayVariablez8attempted to trace numpy function unsupported by PyTorchz  (corresponding torch function: r'  z Can't find numpy numpy function z in torch._numpy.z+Could not find torch._numpy equivalent for zTnumpy function that produces a const collection type encountered non-const argumentsznumpy function zs that produces a const collection type (e.g. np.dtype, np.iinfo/np.finfo) received arguments that are not constant.ztorch._numpy.randomzXattempted to trace torch._numpy.random function with config.use_numpy_random_stream=TruezAttempted to trace zD when `torch._dynamo.config.use_numpy_random_stream` is set to True.z<Set `torch._dynamo.config.use_numpy_random_stream` to False.zAvoid calling r9  r�   )r   Útrace_numpyr   r`   rU  rs  Útensorrt  r\  rh   r   rú   r[   rp  r\   r¯   r*   Ú
USER_ERRORr�   Úuse_numpy_random_streamÚ
patch_argsr   rm  r#   r,   r�   r¢   r»  r'   rx   )r@   rR   rz   r9   rs  rt  rÁ   Úcollection_variable_typrÒ  r_  r`  r·  s               rB   r�   zNumpyVariable.call_function  sp  € ô ×!Ò!ÜØYØ*¨4¯:©:¨,°h¸t¸fÀJÈvÈhÐWØ@ÀÇÁÀð MMð Mð _ðõõ 	4Ý0ä Ó"×&Ñ& t§z¡zÓ2ˆØˆ<ÜØRØ*¨4¯:©:¨,°h¸t¸fÀJÈvÈhÐVvÐw{Ðv|Ð|}Ð~Ø>¸t¿z¹z¸lÐJ[Ð\ðÜ&×2Ñ2ðõ	ð ˆ<Ü Ø=¸d¿j¹j¸\ÐJóð ð (,×'LÑ'LÈTÓ'RÐRÐ#ØððÙ.Ø�D—J‘JØ:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð& —‘Ð#8Ò8Ü×2Ò2äØvØ.¨t¯z©z¨l¸(À4À&È
ÐSYÐRZÐZzÐ{ð  {Að  ABð  CØ"5°d·j±j°\ð B&ð !&ð WØ(¨¯©¨°AÐ6ðõ	ð 0×:Ñ:¸4¿=¹=È$ÐPVÓW‰LˆD�&à×-Ñ-¨dÔ3Ü-¨d°FÔ;ô '×,Ñ,ØØ-�D×+Ñ+Ó-Ø:>Ö?°Q˜!×.Ñ.Õ0Ò?ðàAGÇÁÃ×P¹¸¸A˜1˜a×2Ñ2Ó4Ñ4ÓPñóð ð +�B—I‘I×*Ñ*ØÙ'¨Ó-ðô # 4¨Ó0òˆEð
 (×.Ñ.¨r°5Ó9Ð9ùòg @ùÛPøô 7ò 
ÜØrØ.¨t¯z©z¨l¸(À4À&È
ÐSYÐRZÐZzÐ{ð  {Að  ABð  CØ"1°$·*±*°ð >@ð !@ðÜ*×5Ñ5ð÷	ð
üòH @ùÛPs=   Ã&J+ Ã8J ÄJ+ Ä%J%Å 	J+ ÈK>È;LÊ J+ Ê+AK;Ë:K;rS   c           	      óh   — t        dd| j                  › d|› d|› �dg t        j                  ¢¬«       y )Nz/attempted to trace numpy.* function as a methodrr  r7  r8  z6Tracing numpy.* functions as methods is not supported.rV   )r   r`   r   r‘   r:  s        rB   r—   zNumpyVariable.call_methoda  s?   € ô 	ØEØ& t§z¡z l°(¸4¸&À
È6È(ÐSØPðÜ"×,Ñ,ðö		
rC   c                 ó   — | j                   S rE   r  rG   s    rB   r\   z NumpyVariable.as_python_constantq  r  rC   c                 ó   •— t         j                  r`t        | j                  t        j
                  «      r| j                  S t        | j                  t        «      r| j                  j                  S t        ‰| �%  «       S rE   )
r   ru  r�   r`   ÚenumÚEnumMetar_   r   r>   rÚ  rö  s    €rB   rÚ  zNumpyVariable.as_proxyt  sV   ø€ Ü×Òä˜$Ÿ*™*¤d§m¡mÔ4à—z‘zÐ!Ü˜$Ÿ*™*¤dÔ+ð —z‘z×*Ñ*Ð*ä‰wÑÓ!Ð!rC   rû   c                 óh   — t        |t        «      xr! | j                  «       |j                  «       k(  S rE   rN  rO  s     rB   rP  zNumpyVariable.is_python_equal‚  rQ  rC   )r   r�   rÊ   r@  ÚtnpÚ
issubdtyperj  r   r?   r!  r›   r™   rš   r  rm  rp  rÎ   r,   rÏ   r¥   r�   r—   r   r\   rÚ  r‡   rP  rÐ   rÑ   s   @rB   rc  rc  Ú  s=  ø„ ñð  #Ÿ~™~Ð/Ðð˜cð ¨Sð °Tõ ð¨có ð ð
1¨5×+=Ñ+=ð 
1À$ò 
1ó ð
1ð ð
3°%×2DÑ2Dð 
3Èò 
3ó ð
3ð]:à'ð]:ð �?Ñ#ð]:ð �S˜/Ð)Ñ*ð	]:ð
 
ó]:ð~
à'ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ó
ð Ð$7ó ð"˜#õ "ð
 Vð 
°÷ 
rC   rc  c                   óL   ‡ — e Zd Zdeddfˆ fd„Zdefd„Zd
d„Zdddefd	„Zˆ xZ	S )ÚNullVariabler9   r:   Nc                 ó$   •— t        ‰| �  di |¤Ž y r<   rd  re  s     €rB   r?   zNullVariable.__init__‹  rf  rC   c                  ó   — y)Nr„  r=   rG   s    rB   r<  zNullVariable.__repr__Ž  s   € ØrC   rL   r3   c                 óœ   — t         j                  dk  rt        dddg t        j                  ¢¬«       |j                  t        d«      «       y )N)r†   é   z0cannot reconstruct NullVariable in Python < 3.11rU   zdAttempted to generate PUSH_NULL instruction in Python < 3.11; where this instruction does not exist.rV   Ú	PUSH_NULL)ÚsysÚversion_infor   r   r¤   rK  r   rI  s     rB   rQ   zNullVariable.reconstruct‘  sL   € Ü×Ñ˜gÒ%ÜØJØð9ðÜ&×1Ñ1ðõð 	×ÑÔ0°Ó=Õ>rC   c                  ó   — y)NÚNoner=   rI  s     rB   Úreconstruct_pycodezNullVariable.reconstruct_pycodež  s   € ØrC   rÉ   )
r   r�   rÊ   r   r?   r¥   r<  rQ   rŽ  rÐ   rÑ   s   @rB   r„  r„  Š  s:   ø„ ð# ð #¨õ #ð˜#ó ó?ð¨+ð ¸#÷ rC   r„  c                   ó   — e Zd ZdZy)r§   z"Marker used to implement delattr()Nr?  r=   rC   rB   r§   r§   ¢  s   „ Ú,rC   r§   c            
       óÞ   ‡ — e Zd ZdZdhej
                  £Zdefd„Zede	de
e   dee	ef   defd„«       Zde	de
e   dee	ef   dedd	f
ˆ fd
„Zde	fd„Zededefd„«       Zde	fd„Zdd„Zˆ xZS )ÚStringFormatVariablez[
    Represents a call to str.format(), we delay calling format until after the graph.
    Úformat_stringr:   c                 ó   — t         S rE   )r¥   rG   s    rB   rH   z StringFormatVariable.python_type­  s   € Üˆ
rC   Úsym_argsÚ
sym_kwargsc                 ó®  — t        d„ t        j                  ||j                  «       «      D «       «      r{t        j
                  j                   |j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž«      S  | |t        |«      t        |«      «      S c c}w c c}}w )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrE   )r  rÑ  s     rB   r4  z.StringFormatVariable.create.<locals>.<genexpr>·  s!   è ø€ ò 
àð × Ñ ×"ñ
ùs   ‚)ÚallÚ	itertoolsÚchainÚvaluesr   r-   rx   Úformatr\   r¯   rÎ   rÏ   )rã   r’  r”  r•  r`  r_  s         rB   rx   zStringFormatVariable.create°  sÀ   € ô ñ 
ä—_‘_ X¨z×/@Ñ/@Ó/BÓCô
ô 
ô ×-Ñ-×4Ñ4Ø$�×$Ñ$Ø6>Ö?°�a×*Ñ*Õ,Ò?ðà=G×=MÑ=MÓ=O×P±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓPñóð ñ �=¤$ x£.´$°zÓ2BÓCÐCùò	 @ùÛPs   ÁCÂCr9   Nc                 óœ   •— t        ‰| �  di |¤Ž t        |t        «      st	        dt        |«      › �«      ‚|| _        || _        || _        y )Nz!format_string must be a str, got r=   )	r>   r?   r�   r¥   r[   r_   r’  r”  r•  )r@   r’  r”  r•  r9   rA   s        €rB   r?   zStringFormatVariable.__init__Ã  sT   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜-¬Ô-Ü Ø3´D¸Ó4GÐ3HÐIóð ð +ˆÔØ ˆŒØ$ˆ�rC   c                 ó‚   — | j                   j                  › d| j                  ›d| j                  ›d| j                  ›d�S rø  )rA   r   r’  r”  r•  rG   s    rB   r<  zStringFormatVariable.__repr__Ó  sB   € Ø—.‘.×)Ñ)Ð*¨!¨D×,>Ñ,>Ð+AÀÀDÇMÁMÐCTÐTVÐW[×WfÑWfÐViÐijÐkÐkrC   r)  c                 ób   — 	 | j                  «       S # t        $ r | j                  «       cY S w xY wrE   )r\   r,  r-  r.  s    rB   r/  z&StringFormatVariable._debug_format_argÖ  s2   € ð	$Ø×)Ñ)Ó+Ð+øÜò 	$Ø—>‘>Ó#Ò#ð	$ús   ‚ ’.­.c                 ó`  — 	  | j                   j                  | j                  D �cg c]  }| j                  |«      ‘Œ c}i | j                  j                  «       D ��ci c]  \  }}|| j                  |«      “Œ c}}¤Ž}t        |«      S c c}w c c}}w # t        $ r t        | «      cY S w xY wrE   )r’  rœ  r”  r/  r•  r¯   r,  r+  )r@   r)  r  r`   Úrendereds        rB   r-  zStringFormatVariable.debug_reprÝ  s¬   € ð		Ø0�t×)Ñ)×0Ñ0Ø9=¿¹ÖG°#�$×(Ñ(¨Õ-ÒGðð '+§o¡o×&;Ñ&;Ó&=÷á"˜˜Uð ˜×/Ñ/°Ó6Ñ6óñˆHô �H‹~Ðùò Hùóøô
 ò 	Ü˜“:Òð	ús-   ‚$B ¦B¾ B ÁBÁ:B ÂB ÂB-Â,B-c                 óž  ‡ ‡— ‰j                  ˆˆ fd„d¬«        ‰t        j                  t        ‰ j                  «      «      «       ‰ j
                  j                  «       D ��ci c]%  \  }}t        j                  j                  |«      |“Œ' }}} ‰t        j                  |«      «       ‰j                  t        dd«      «       y c c}}w )Nc                  óz   •— ‰ j                  ‰ j                  ‰j                  «      ‰ j                  d«      g«      S )Nrœ  )rO   rL  r’  Úcreate_load_attrr  s   €€rB   rM   z2StringFormatVariable.reconstruct.<locals>.<lambda>ì  s9   ø€ �G×)Ñ)à×-Ñ-¨d×.@Ñ.@ÓAØ×,Ñ,¨XÓ6ðó€ rC   T)Úcall_function_exF)rN   r   r   rÎ   r”  r•  r¯   r-   rx   ÚConstDictVariablerO   r   )r@   rL   r_  r`  r9   s   ``   rB   rQ   z StringFormatVariable.reconstructê  s¯   ù€ Ø×Ñôð "ð 	ô 	
ñ 	”	×'Ñ'¬¨T¯]©]Ó(;Ó<Ô=à@DÇÁ×@UÑ@UÓ@W÷
Ù8<¸¸1ŒI×&Ñ&×-Ñ-¨aÓ0°!Ñ3ð
ˆñ 
ñ 	”	×+Ñ+¨FÓ3Ô4Ø×ÑÔ5°d¸EÓBÕCùó	
s   Á%*C	rÉ   )r   r�   rÊ   r@  r,   rÌ   r_   rH   r›   r¥   rÎ   rÏ   rx   r   r?   r<  r˜   r‡   r/  r-  rQ   rÐ   rÑ   s   @rB   r‘  r‘  ¦  sþ   ø„ ñð &ÐG¨×(FÑ(FÐG€Nð˜Tó ð ðDàðDð �Ñ'ðDð ˜˜oÐ-Ñ.ð	Dð
 
òDó ðDð$%àð%ð �Ñ'ð%ð ˜˜oÐ-Ñ.ð	%ð
 ð%ð 
õ%ð l˜#ó lð ð$˜ð $°6ò $ó ð$ð˜Có ÷DrC   r‘  c                   óN   ‡ — e Zd ZeZdededdfˆ fd„Zdefd„Zdee   fd„Z	ˆ xZ
S )ÚObjectVariabler`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   zObjectVariable.__init__  r.  rC   c                 ó   — | j                   S rE   r  rG   s    rB   r!  z+ObjectVariable.get_real_python_backed_value  r  rC   c                 ó   — t         S rE   )r‡   rG   s    rB   rH   zObjectVariable.python_type  s   € ÜˆrC   )r   r�   rÊ   r‡   rË   r   r?   r!  r_   rH   rÐ   rÑ   s   @rB   r¨  r¨  ü  s>   ø„ à€Mð˜fð °ð ¸õ ð¨fó ð˜T &™\÷ rC   r¨  c            	       óì   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zedede	e
j                  e
j                  z     fd	„«       Zd
ddee   deeef   defd„Zdd„Zededee   deeef   defd„«       Zˆ xZS )ÚDebuggingVariablez†
    Represents a call to a debugging function like print(), or something
    registered to config.reorderable_logging_functions.
    r`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   zDebuggingVariable.__init__  r.  rC   c                 ó,   — t        | j                  «      S rE   ©r_   r`   rG   s    rB   rH   zDebuggingVariable.python_type  ó   € Ü�D—J‘JÓÐrC   rå   c                 óÀ   — t        | «      xrR t        | t        j                  t        j                  f«      xr& | t
        j                  j                  j                  v S rE   )	rV  r�   r™   rš   r   r‰   r®  r   Úreorderable_logging_functionsrè   s    rB   Úis_reorderable_logging_functionz1DebuggingVariable.is_reorderable_logging_function  sO   € ô
 �S‹Mò JÜ˜3¤×!3Ñ!3´U×5NÑ5NÐ OÓPòJà”u—}‘}×+Ñ+×IÑIÐIð	
rC   rR   r4   rz   c           	      óV  — |j                   rt        j                  d «      S | j                  | j                  ||«      s1t        dd| j                  › d|› d|› �dd| j                  › d�g¬«       |j                  j                  | t        |«      f«       t        j                  d «      S )	NzJattempted to reorder a debugging function that can't actually be reorderedzfn: r7  r8  zl`torch.compile` can only reorder functions where the arguments are Tensors, constants, or string formatters.z#Avoid calling the logging function z" with args that are not supported.rV   )	Úexportr-   rx   Úcan_reorder_logsr`   r   Údebug_localsr‚  rÎ   r´  s       rB   r�   zDebuggingVariable.call_function#  s£   € ð �9Š9ä#×*Ñ*¨4Ó0Ð0à×$Ñ$ T§Z¡Z°°vÔ>ÜØdØ˜tŸz™z˜l¨(°4°&¸
À6À(ÐKð@ð :¸$¿*¹*¸ÐEgÐhðõð 	�‰×Ñ ¤d¨4£jÐ1Ô2Ü×&Ñ& tÓ,Ð,rC   c                 óf   — | j                   €t        d«      ‚| j                   j                  |«      S )Nz7DebugLocalVariable requires a source for reconstruction)r]   r[   rQ   rI  s     rB   rQ   zDebuggingVariable.reconstruct;  s3   € Ø�;‰;ÐÜ ØIóð ð �{‰{×&Ñ& wÓ/Ð/rC   rW  c                 ó¦   — t         j                  t         j                  t        f}t	        j
                  ||g«      }|D ]  }t        ||«      rŒ y y)zm
        Run some additional checks for what sort of function calls can we
        actually reorder.
        FT)r   ÚTensorVariabler-   r‘  ÚpytreeÚtree_leavesr�   )rW  rz   r9   Úallowed_input_typesÚ	flat_argsr)  s         rB   r·  z"DebuggingVariable.can_reorder_logsB  sY   € ô ×$Ñ$Ü×&Ñ&Ü ð
Ðô ×&Ñ&¨¨f ~Ó6ˆ	Øò 	ˆCÜ˜cÐ#6Õ7Ùð	ð rC   rÉ   )r   r�   rÊ   r@  r   r?   r_   rH   r˜   r	   r™   rš   r   r´  rÎ   r,   rÏ   r¥   r�   rQ   r   r  r·  rÐ   rÑ   s   @rB   r­  r­    sä   ø„ ñð
˜cð ¨Sð °Tõ ð ˜Tó  ð ð
Øð
à	�5×%Ñ%¨×(AÑ(AÑAÑ	Bò
ó ð
ð-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ó-ó00ð ð˜Sð ¨°©ð ¸tÀCÈÀH¹~ð ÐRVò ó ôrC   r­  c                   óp   ‡ — e Zd ZdZdededdfˆ fd„Zdefd„Zdefd„Zd	d
de	e
   deee
f   de
fd„Zˆ xZS )ÚIgnoredFunctionVariablezL
    Represents a call to an arbitrary function that should be ignored.
    r`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   z IgnoredFunctionVariable.__init__\  r.  rC   c                 ó,   — t        | j                  «      S rE   r°  rG   s    rB   rH   z#IgnoredFunctionVariable.python_type`  r±  rC   c                 ó   — | j                   S rE   r  rG   s    rB   r!  z4IgnoredFunctionVariable.get_real_python_backed_valuec  r  rC   rR   r4   rz   c                 ó@   — t         j                  j                  d «      S rE   )r   r-   rx   r´  s       rB   r�   z%IgnoredFunctionVariable.call_functionf  s   € ô ×)Ñ)×0Ñ0°Ó6Ð6rC   )r   r�   rÊ   r@  r   r?   r_   rH   r!  rÎ   r,   rÏ   r¥   r�   rÐ   rÑ   s   @rB   rÁ  rÁ  W  st   ø„ ñð˜cð ¨Sð °Tõ ð ˜Tó  ð¨có ð7à'ð7ð �?Ñ#ð7ð �S˜/Ð)Ñ*ð	7ð
 
÷7rC   rÁ  c            
       óœ   ‡ — e Zd ZdZdej
                  deddfˆ fd„Zdefd„Z	dej
                  fd„Z
d	d
dedee   deeef   def
d„Zˆ xZS )ÚLoggingLoggerVariablez:
    Represents a call to any logging.Logger methods.
    r`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   zLoggingLoggerVariable.__init__t  r.  rC   c                 ó,   — t        | j                  «      S rE   r°  rG   s    rB   rH   z!LoggingLoggerVariable.python_typex  r±  rC   c                 ó   — | j                   S rE   r  rG   s    rB   r!  z2LoggingLoggerVariable.get_real_python_backed_value{  r  rC   rR   r4   rS   rz   c                 ó„  — |j                   rt        j                  j                  d «      S t	        | j
                  |d «      }t	        |dd «      }t        j                  j                  j                  }||v s||v rt        j                  j                  d «      S t        dd| j
                  › d|› d|› d|› �ddg¬	«       y )
Nr„   z8logging.Logger method not supported for non-export caseszmethod: r9  r7  r8  z>logging.Logger methods are not supported for non-export cases.zJAdd the logging method to `torch._dynamo.config.ignore_logging_functions`.rV   )r¶  r   r-   rx   rd   r`   r‰   r®  r   Úignore_logging_functionsr   )r@   rR   rS   rz   r9   ÚmethodrÔ  Ú
ignore_sets           rB   r—   z!LoggingLoggerVariable.call_method~  sµ   € ð �9Š9ä×-Ñ-×4Ñ4°TÓ:Ð:ä˜Ÿ™ T¨4Ó0ˆÜ˜6 :¨tÓ4ˆô —]‘]×)Ñ)×BÑBˆ
à�ZÑ 8¨zÑ#9Ü×-Ñ-×4Ñ4°TÓ:Ð:äØNØ˜tŸz™z˜l¨!¨D¨6°¸$¸¸zÈ&ÈÐRØXà\ðö		
rC   )r   r�   rÊ   r@  ÚloggingÚLoggerr   r?   r_   rH   r!  r¥   rÎ   r,   rÏ   r—   rÐ   rÑ   s   @rB   rÇ  rÇ  o  s†   ø„ ñð˜gŸn™nð ¸ð Àõ ð ˜Tó  ð¨g¯n©nó ð
à'ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
÷
rC   rÇ  c            
       ó  ‡ — e Zd ZdZ	 ddlmZmZm	Z
 dededd	fˆ fd
„Zedefd„«       Zdefd„Zdddeeef   fd„Zdddddeddfd„Zdddedee   deeef   def
d„Zdddedefd„Zˆ xZS # e$ r  eddi «      Z eddi «      ZY Œuw xY w)ÚConstantLikeVariablez8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer=   r`   r9   r:   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r<   r-  r  s      €rB   r?   zConstantLikeVariable.__init__«  r.  rC   c                 ó˜   — t        | j                  «      }|j                  dk(  r|j                  S |j                  › d|j                  › �S )z4Dynamically compute the prefix from the value's typerF   r9  )r_   r`   r�   rÊ   )r@   Úts     rB   Ú_error_prefixz"ConstantLikeVariable._error_prefix¯  sD   € ô �—‘Óˆð �<‰<˜:Ò%Ø—>‘>Ð!à—,‘,�˜q §¡Ð 0Ð1Ð1rC   c                 ó   — | j                   S rE   r  rG   s    rB   r\   z'ConstantLikeVariable.as_python_constantº  r  rC   rR   r4   c                 ó0   — t        | j                  «      dfS rE  rF  r9  s     rB   r  zConstantLikeVariable.hash_impl½  rG  rC   rû   r,   rü   c                 ó$   — ddl m}  || |||«      S )Nr)   )Ú python_constant_richcompare_impl)r  rÞ  )r@   rR   rû   rü   rÞ  s        rB   r  z%ConstantLikeVariable.richcompare_implÀ  s   € õ 	Fá/°°b¸%ÀÓDÐDrC   rS   rz   c                 óÐ  — g i }}	 |D �cg c]  }|j                  «       ‘Œ }}|j                  «       D ��	ci c]  \  }}	||	j                  «       “Œ }}}	 t        | j                  |«      |i |¤Ž}
t        j                  j                  |
«      rt        j                  ||
«      S t        |
t        j                  «      rt        |
«      S t        d
| j                  › d|› d|› d|› d|
› �	d| j                  › d|› d|
› d�g t         j"                  ¢¬	«       y c c}w c c}	}w # t        $ r; t        d| j                  › d|› d|› d|› d�d| j                  › d|› d�dg¬	«       Y �Œw xY w)Nz0constant-like method call with non-constant argsr9  z(*z, **r'  zAttempted to call z with non-constant args.zFEnsure that the args to the method call are constant (int, str, etc.).rV   z6constant-like method call with unsupported return typez) returned z, got unsupported return value )r\   r¯   r¡   r   rÚ  rd   r`   r   r-   rt   r,   r�   r�   ÚreÚMatchrÒ  r   rú   )r@   rR   rS   rz   r9   ÚcargsÚckwargsrÒ  r_  r`  r†  s              rB   r—   z ConstantLikeVariable.call_methodÇ  s�  € ð ˜Rˆwˆð	à59Ö:°�Q×)Ñ)Õ+Ð:ˆEÐ:Ø=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÐLˆGÑLð +”˜Ÿ™ TÓ*¨EÐ=°WÑ=ˆä×%Ñ%×0Ñ0°Ô8Ü"×(Ñ(¨¨VÓ4Ð4Ü�fœbŸh™hÔ'Ü'¨Ó/Ð/äØLØ×)Ñ)Ð*¨!¨D¨6°°D°6¸¸f¸XÀ[ÐQWÐPXÐYØ,¨T×-?Ñ-?Ð,@ÀÀ$ÀÐGfÐgmÐfnÐnoÐpðÜ"×.Ñ.ðö		
ùò' ;ùÛLøÜ"ò 	ÜØJØ×-Ñ-Ð.¨a°¨v°R¸°v¸TÀ&ÀÈÐKØ0°×1CÑ1CÐ0DÀAÀdÀVÐKcÐdà\ð÷	ð ð	ús-   †D! ŠD¡D! ¶DÁD! ÄD! Ä!A E%Å$E%c                 ó¬  — t        | j                  |«      }t        || j                  «      rt	        |«      }t        || j
                  «      rt        |«      S t        |t        «      r!t        || j                  «      rt        |«      S t        j                  j                  |«      rt        j                  ||«      S t!        | |t        |«      ¬«      S )Nrq   )rd   r`   r�   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariabler_   r^   Ú
np_genericrc  r   r-   rt   r,   r�   ru   r$  s       rB   ry   z ConstantLikeVariable.var_getattrî  s¢   € ô ˜Ÿ™ TÓ*ˆÜ�f˜d×.Ñ.Ô/Ü˜6“]ˆFÜ�f˜dŸm™mÔ,Ü% fÓ-Ð-Ü�fœdÔ#¬
°6¸4¿?¹?Ô(Kä  Ó(Ð(Ü×%Ñ%×0Ñ0°Ô8Ü"×(Ñ(¨¨VÓ4Ð4Ü˜t T´4¸³<Ô@Ð@rC   )r   r�   rÊ   r@  ÚnumpyrÓ  rç  rÔ  rå  rÕ  ré  ÚImportErrorr_   r   r?   Úpropertyr¥   rÚ  r\   rÍ   r  r  r  r  rÎ   r,   rÏ   r—   ry   rÐ   rÑ   s   @rB   rÒ  rÒ  œ  s1  ø„ ÙBð
0÷	
ñ 	
ð˜cð ¨Sð °Tõ ð ð2˜sò 2ó ð2ð Có ð'Ð7ð '¸EÀ#ÀtÀ)Ñ<Ló 'ðEØ-ðEØ6GðEØMPðEà	óEð%
à'ð%
ð ð%
ð �?Ñ#ð	%
ð
 �S˜/Ð)Ñ*ð%
ð 
ó%
ðNAØ-ðAØ58ðAà	÷AøðS ò 0á˜>¨2¨rÓ2ˆá˜¨¨BÓ/Šð	0ús   ‰
A- Á-B	ÂB	rÒ  c                   ó   — e Zd Zdefd„Zy)rè  r:   c                 óB   — | j                   j                  j                  S )a0  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

        np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
        This also handles unsupported things nicely (i.e. structured arrays and object arrays).
        )r`   r_   r   rG   s    rB   rÚ  zNumpyDTypeVariable.as_proxyÿ  s   € ð �z‰z�‰×'Ñ'Ð'rC   N)r   r�   rÊ   r¥   rÚ  r=   rC   rB   rè  rè  þ  s   „ ð(˜#ô (rC   rè  c                   ó`   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zddd	ee	   de
ee	f   dd
fd„Zˆ xZS )ÚRandomClassVariablezrandom.Randomr9   r:   Nc                 ó$   •— t        ‰| �  di |¤Ž y r<   rd  re  s     €rB   r?   zRandomClassVariable.__init__	  rf  rC   c                 ó   — t         S rE   rr  rG   s    rB   rH   zRandomClassVariable.python_type	  rs  rC   rR   r4   rz   ÚRandomVariablec                 ó"  — t        |«      dkD  s|r%t        dd|› d|› �dg t        j                  ¢¬«       t        |«      dk(  rt        j
                  j                  d «      n|d   }t        |t        j                  j                  «       ¬«      S )	Nr)   z'random.Random() with improper argumentszargs: r8  z=random.Random() with > 1 arg or with kwargs is not supported.rV   r   )ÚseedrŽ   )
rf   r   r   rw  r   r-   rx   ró  ÚbaseÚValueMutationNew)r@   rR   rz   r9   rõ  s        rB   r�   z!RandomClassVariable.call_function	  sŠ   € ô ˆt‹9�qŠ=™FÜØAØ    j°°Ð9Ø[ðÜ&×1Ñ1ðõ	ô ;>¸d»)Àqº.Œy×)Ñ)×0Ñ0°Ô6ÈdÐSTÉgˆÜØ¤Y§^¡^×%DÑ%DÓ%Fô
ð 	
rC   )r   r�   rÊ   r@  r   r?   r_   rH   rÎ   r,   rÏ   r¥   r�   rÐ   rÑ   s   @rB   rð  rð  	  s_   ø„ Ùð# ð #¨õ #ð˜Tó ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
rC   rð  c            
       óÒ  ‡ — e Zd ZdZej
                  Zdhej                  £Zh d£Z		 	 ddej
                  dz  dedz  de
ddfˆ fd	„Zdeej
                     fd
„Zdej
                  fd„Zededefd„«       Zedeeeedf   edz  f   ddfd„«       Zedeeeedf   edz  f   defd„«       Zededeeeedf   edz  f   fd„«       Zdddedee   deeef   def
ˆ fd„Zdd„Zˆ xZS )ró  zúrandom.Random()

    Implemented by wrapping a VariableTracker around a random.Random object.
    The supported methods for the random.Random object cannot be overridden.
    Assumes that random objects behave the same given a set seed or state.
    Úrandom>   rù  ÚrandintÚuniformÚ	randrangeNÚrandrõ  r9   r:   c                 óB  •— t        ‰| �  di |¤Ž |�_| j                  |«      st        d«      ‚t	        j
                  «       | _        | j                  j                  |j                  «       «       y |�|j                  «       nd }t	        j
                  |«      | _        y )Nz8Unsupported random.Random object with overridden methodsr=   )	r>   r?   Úis_supported_random_objr[   rù  r   ÚsetstateÚgetstater\   )r@   rý  rõ  r9   rA   s       €rB   r?   zRandomVariable.__init__C	  s…   ø€ ô 	‰ÑÑ"˜6Ò"ØÐØ×/Ñ/°Ô5Ü$ØNóð ô !Ÿ-™-›/ˆDŒKØ�K‰K× Ñ  §¡£Õ1à04Ð0@�4×*Ñ*Ô,ÀdˆDÜ Ÿ-™-¨Ó-ˆD�KrC   c                 ó"   — t         j                  S rE   )rù  r   rG   s    rB   rH   zRandomVariable.python_typeU	  s   € Ü�}‰}ÐrC   c                 ó   — | j                   S rE   )rù  rG   s    rB   r\   z!RandomVariable.as_python_constantX	  s   € Ø�{‰{ÐrC   ró   c                 óœ  — t        | «      t        j                  uryt        j                  t
        j                  d«      D ]‰  }t        | |«      s yt        | |«      }t        j                  |«      r/|t        t        j                  |«      j                  | «      k7  sŒ_ yt        |dd «      t        t        j                  |«      usŒ‰ y y)NF)rõ  r  r   r„   T)r_   rù  r   r™  rš  ró  Ú_supported_fn_namesr’   rd   rŸ  Ú	isbuiltinr½  )ró   rS   Úmeths      rB   rÿ  z&RandomVariable.is_supported_random_obj[	  s¨   € ä�‹9œFŸM™MÑ)ØÜ—O‘OÜ×.Ñ.Ð0Pó
ò 	!ˆDô ˜3 Ô%ÙÜ˜3 Ó%ˆDÜ× Ñ  Ô&àœ7¤6§=¡=°$Ó7×?Ñ?ÀÓDÓDÙ ä˜4 ¨TÓ2¼'Ä&Ç-Á-ÐQUÓ:VÒVÙ ð	!ð rC   Ústate.c                 ó´  — t        | «      t        urt        dt        | «      › �«      ‚t        | d   «      t        urt        dt        | d   «      › �«      ‚t        | d   «      t        urt        dt        | d   «      › �«      ‚t	        d„ | d   D «       «      st        d«      ‚| d   �/t        | d   «      t
        urt        d	t        | d   «      › �«      ‚y y )
Nzstate must be a tuple, got r   zstate[0] must be an int, got r)   zstate[1] must be a tuple, got c              3   ó>   K  — | ]  }t        |«      t        u –— Œ y ­wrE   )r_   r  rÑ  s     rB   r4  z-RandomVariable.check_state.<locals>.<genexpr>v	  s   è ø€ Ò4 a”4˜“7œc”>Ñ4ùs   ‚z$all elements of state[1] must be intr   z$state[2] must be None or float, got )r_   rÍ   r[   r  r˜  ræ  )r  s    rB   Úcheck_statezRandomVariable.check_staten	  sÝ   € ä�‹;œeÑ#Ü Ð#>¼tÀE»{¸mÐ!LÓMÐMÜ��a‘‹>¤Ñ$Ü Ð#@ÄÀeÈAÁhÃÐ@PÐ!QÓRÐRÜ��a‘‹>¤Ñ&Ü Ð#AÄ$ÀuÈQÁxÃ.ÐAQÐ!RÓSÐSÜÑ4¨5°©8Ô4Ô4Ü Ð!GÓHÐHØ�‰8Ð¤D¨¨q©£N¼%Ñ$?Ü Ø6´t¸EÀ!¹H³~Ð6FÐGóð ð %@ÐrC   c                 óh  — t         j                  | «       t        j                  t        j                  j                  | d   «      t        j                  | d   D �cg c]!  }t        j                  j                  |«      ‘Œ# c}«      t        j                  j                  | d   «      g«      S c c}w )Nr   r)   r   )ró  r  r   r   r-   rx   )r  rÒ  s     rB   Ú
wrap_statezRandomVariable.wrap_state}	  s‘   € ä×"Ñ" 5Ô)Ü×&Ñ&ä×*Ñ*×1Ñ1°%¸±(Ó;Ü×'Ñ'ØCHÈÁ8ÖL¸a”Y×/Ñ/×6Ñ6°qÕ9ÒLóô ×*Ñ*×1Ñ1°%¸±(Ó;ðó
ð 	
ùò Ms   Á&B/c                 óP   — | j                  «       }t        j                  |«       |S rE   )r\   ró  r  )r  Ú	state_objs     rB   Úunwrap_statezRandomVariable.unwrap_stateŠ	  s&   € ð ×,Ñ,Ó.ˆ	Ü×"Ñ" 9Ô-ØÐrC   rR   r4   rS   rz   c                 óº  •‡‡— ‰dk(  r¬|j                   j                  j                  | «        | j                  j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž t        j                  j                  d «      S ‰dk(  r)| j                  | j                  j                  «       «      S ‰dk(  rq|j                   j                  j                  | «       | j                  j                  | j                  |d   «      «       t        j                  j                  d «      S ‰| j                  v rÎ|j                   j                  j                  | «       | j                  j                  «       Šdt        dt        dt        fˆˆfd„} t!        | j                  ‰«      |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D �	�
ci c]  \  }	}
|	|
j                  «       “Œ c}
}	¤Ž t#        ||||«      S t$        ‰| �M  |‰||«      S c c}w c c}}w c c}w c c}
}	w )	Nrõ  r  r   r   rz   r9   r:   c                  ór   •— t        j                  «       }|j                  ‰«        t        |‰«      | i |¤ŽS rE   )rù  r   r   rd   )rz   r9   ÚrrS   r  s      €€rB   Úcall_random_methz4RandomVariable.call_method.<locals>.call_random_methª	  s3   ø€ Ü—M‘M“O�Ø—
‘
˜5Ô!Ø'”w˜q $Ó'¨Ð8°Ñ8Ð8rC   )r¢   rŒ   Úmutationrù  rõ  r\   r¯   r   r-   rx   r  r  r   r  r  r   rd   r0   r>   r—   )r@   rR   rS   rz   r9   rÒ  r  ró   r  r_  r`  r  rA   s     `        @€rB   r—   zRandomVariable.call_method’	  sô  ú€ ð �6Š>Ø�I‰I×"Ñ"×+Ñ+¨DÔ1ØˆD�K‰K×ÑØ26Ö7¨Q�!×&Ñ&Õ(Ò7ðàAGÇÁÃ×P±X°S¸#�3˜×.Ñ.Ó0Ñ0ÓPòô ×-Ñ-×4Ñ4°TÓ:Ð:Ø�ZÒØ—?‘? 4§;¡;×#7Ñ#7Ó#9Ó:Ð:Ø�ZÒØ�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K× Ñ  ×!2Ñ!2°4¸±7Ó!;Ô<Ü×-Ñ-×4Ñ4°TÓ:Ð:Ø�T×-Ñ-Ñ-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—K‘K×(Ñ(Ó*ˆEð9¬ð 9´sð 9¼sö 9ð 'ŒG�D—K‘K Ó&Ø26Ö7¨Q�!×&Ñ&Õ(Ò7ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHòô
 " "Ð&6¸¸fÓEÐEÜ‰wÑ" 2 t¨T°6Ó:Ð:ùò7 8ùÛPùò* 8ùÛHs   ÁIÁ5IÇIÈIc                 ó6  ‡— ‰j                  ˆfd„«       ‰j                  dd«       ‰j                  «        ‰j                  d«        ‰| j	                  | j
                  j                  «       «      «       ‰j                  dd«       ‰j                  «        y )Nc                  ón   •— ‰ j                  ‰ j                  t        «      ‰ j                  d«      g«      S )Nr   )rO   Úcreate_load_python_modulerù  r¤  ©rL   s   €rB   rM   z,RandomVariable.reconstruct.<locals>.<lambda>»	  s3   ø€ �G×)Ñ)à×5Ñ5´fÓ=Ø×,Ñ,¨XÓ6ðó€ rC   r   Fr   r)   T)rN   r�   r  r(  r  rù  r  Úpop_toprI  s    `rB   rQ   zRandomVariable.reconstruct¹	  sz   ø€ Ø×Ñóô	
ð 	×Ñ˜a Ô'ð 	�‰ÔØ×Ñ˜*Ô%Ù�—‘ §¡× 4Ñ 4Ó 6Ó7Ô8Ø×Ñ˜a Ô&Ø�‰ÕrC   râ  rÉ   )r   r�   rÊ   r@  rù  r   rË   r,   rÌ   r  r   r?   r_   rH   r\   r˜   r  rÿ  rÍ   r  ræ  r  r   r  r  r¥   rÎ   rÏ   r—   rQ   rÐ   rÑ   s   @rB   ró  ró  -	  s·  ø„ ñð —M‘M€Mð 	ðà	×	'Ñ	'ð€Nò
Ðð &*Ø'+ñ.à�m‰m˜dÑ"ð.ð  Ñ$ð.ð ð	.ð
 
õ.ð$˜T &§-¡-Ñ0ó ð F§M¡Mó ð ð Vð °ò ó ðð$ ð˜5  e¨C°¨H¡o°u¸t±|Ð!CÑDð Èò ó ðð ð

˜%  U¨3°¨8¡_°e¸d±lÐ BÑCð 

Èò 

ó ð

ð ðØðà	ˆs�E˜#˜s˜(‘O U¨T¡\Ð1Ñ	2òó ðð%;à'ð%;ð ð%;ð �?Ñ#ð	%;ð
 �S˜/Ð)Ñ*ð%;ð 
õ%;÷NrC   ró  c                   óô   ‡ — e Zd Zdefd„Zedddej                  e   de	dz  dedd f
d	„«       Z
d
edededdfˆ fd„Zdddee   deeef   defd„Zdd„Zdedeeef   fd„Zdddddeddfd„Zdedefd„Zˆ xZS )ÚWeakRefVariabler:   c                 ó"   — t         j                  S rE   )ÚweakrefÚrefrG   s    rB   rH   zWeakRefVariable.python_typeÍ	  s   € Ü�{‰{ÐrC   rR   r4   Úweakref_valuer]   NÚoptionsc                 ó   — |€t        d«      ‚|j                  }|xr t        |d«      }t        j                  | ||«      } |«       }|xr t        |«      }t        j                  | ||«      }||d<   t        ||fi |¤ŽS )Nz'WeakRefVariable.build requires a sourceÚ__callback__r]   )r[   r#  r   r,   r�   r"   r  )	rR   r   r]   r!  ÚcallbackÚcallback_sourceÚcallback_vtÚreferentÚreferent_vts	            rB   r�   zWeakRefVariable.buildÐ	  sŒ   € ð ˆ>Ü Ð!JÓKÐKØ ×-Ñ-ˆØ ÒG¤Z°¸Ó%GˆÜ%×+Ñ+¨B°¸/ÓJˆÙ “?ˆØÒ5Ô-¨fÓ5ˆÜ%×+Ñ+¨B°¸&ÓAˆØ"ˆ�ÑÜ˜{¨KÑC¸7ÑCÐCrC   r(  r&  c                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r<   )r>   r?   r(  r&  )r@   r(  r&  r!  rA   s       €rB   r?   zWeakRefVariable.__init__ã	  s%   ø€ ô 	‰ÑÑ#˜7Ò#Ø&ˆÔØ&ˆÕrC   rz   r9   c                 ó   — | j                   S rE   )r(  r´  s       rB   r�   zWeakRefVariable.call_functionê	  s   € ð ×ÑÐrC   c                 ó¬   ‡— ‰j                  ˆfd„«        ‰| j                  «        ‰| j                  «       ‰j                  t	        dd«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nr  r  )r  r  s   €rB   rM   z-WeakRefVariable.reconstruct.<locals>.<lambda>ó	  s   ø€  g×&>Ñ&>¸yÈ%Ó&P€ rC   r   F)rN   r(  r&  rO   r   rI  s    `rB   rQ   zWeakRefVariable.reconstructò	  sD   ø€ Ø×ÑÓPÔQÙ�× Ñ Ô!Ù�× Ñ Ô!Ø×ÑÔ2°1°eÓ<Õ=rC   c                 ó4   — ddl m}  ||| j                  «      S )Nr)   )Úgeneric_hash_impl)r  r.  r(  )r@   rR   r.  s      rB   r  zWeakRefVariable.hash_implø	  s   € õ 	7á   T×%5Ñ%5Ó6Ð6rC   rû   r,   rü   c                 ó$   — ddl m}  || |||«      S rþ   r   r  s        rB   r  z WeakRefVariable.richcompare_implÿ	  r  rC   c                 ón   — t        |t        «      sy| j                  j                  |j                  «      S rE  )r�   r  r(  rP  rO  s     rB   rP  zWeakRefVariable.is_python_equal
  s,   € Ü˜%¤Ô1ØØ×Ñ×/Ñ/°×0AÑ0AÓBÐBrC   rÉ   )r   r�   rÊ   r_   rH   r˜   r  ÚReferenceTyper   r   r�   r,   r?   rÎ   rÏ   r¥   r�   rQ   rÍ   r  r  r  r  r‡   rP  rÐ   rÑ   s   @rB   r  r  Ì	  s"  ø„ ð˜Tó ð ðDØ'ðDà×,Ñ,¨SÑ1ðDð ˜‘ðDð ð	Dð
 
òDó ðDð"'Ø*ð'Ø9Hð'ØUXð'à	õ'ð à'ð ð �?Ñ#ð ð �S˜/Ð)Ñ*ð	 ð
 
ó ó>ð7˜Cð 7 E¨#¨t¨)Ñ$4ó 7ð7Ø-ð7Ø6Gð7ØMPð7à	ó7ðC Vð C°÷ CrC   r  )‚r@  rF   rÅ  r~  rÖ  rŸ  r™  rÏ  rù  rà  rŠ  r×   r™   r  Úcollections.abcr   r   r   r   Útypingr   r   r	   r
   Útorch._Cr‰   Útorch._numpyrh  r�  Útorch.utils._pytreerU  Ú_pytreer¼  Útorch._dynamo.variables.baser   Útorch._dynamo.variables.listsr   Útorch._guardsr   rU   r   r   r   r   Úbytecode_transformationr   r   r   Úcreate_parameter_opr   r½   r   r   r   Úguardsr   r   Úmutation_guardr   r]   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   rö  r*   r+   r,   rþ  r-   Ú	functionsr.   r/   Úuser_definedr0   r1   r2   Útorch._dynamo.codegenr3   Útorch._dynamo.symbolic_convertr4   r6   rÓ   rß   r	  r>  rB  rG  rZ  rb  rl  ro  Ú	dataclassrÂ  rž  rä  rˆ   ru   r  r+  Ú	lru_cacherÏ   rš   r\  ra  rc  r„  r§   r‘  r¨  r­  rÁ  rÇ  rÒ  rè  ÚfinfoÚiinforÓ  ro  rð  ró  r  r=   rC   rB   ú<module>rG     s  ðñó" Û Û Û Û Û Û Û Û 	Û 
Û Û Û ß .Ý Ý %ß 7Ó 7ã Ý ß $Ð $Ý 5Ý 7Ý  ç @Ó @÷ñ õ
 Gß KÑ Kß 0Ý 5÷÷ ÷÷ ÷ WÑ VÝ &ß Gß XÑ Xñ Ý/ÝHôY
�Oô Y
ôx
-˜?ô -ô,h;˜ô h;ôV{<˜ô {<ô|�oô ô
˜oô 
ô2B7�ô B7ôJ�?ô ô4#˜ô #ð
%¨cð %°h¸sÀC¸xÑ6Hó %ô`˜ô `ðF	 ×Ñ÷Mð Mó ðMô\-Ð&?ô \-ô~3Ð6ô 3ôl(�_ô (ô$t2�oô t2ôn87˜?ô 87ôv@
�_ô @
ðF €×Ñ˜QÔð˜4 × 9Ñ 9¸5×;MÑ;MÐ MÑNò ó  ðð( €×Ñ˜QÔð(˜4 × 2Ñ 2°E×4MÑ4MÐ MÑNò (ó  ð(ôl
�Oô l
ô`�?ô ô0-�oô -ôSD˜?ô SDôl�_ô ô H˜ô HôV7˜oô 7ô0*
˜Oô *
ôZ_A˜?ô _AôD(Ð-ô (ð ‡I�IÐ#Ø‡I�IÐ#Ø‡I�IÐ!ðÐ ô
˜/ô 
ô<\�_ô \ô~=C�oõ =CrC   