ó
    Eñix ã                   óX  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKJrJr  SSKJr  SSKJr  SSKJrJrJrJrJrJr  SSKrSSKJr  SSKJs  J r!  SSK"J#r#  SSK$J%r%  SS	K&J'r'  S
SK(J)r)J*r*J+r+J,r,  S
SK-J.r.J/r/J0r0  S
SK1J2r2  S
SK3J4r4J5r5  S
SK6J7r7J8r8  S
SK9J:r:  S
SK;J<r<J=r=J>r>J?r?J@r@JArA  S
SKJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJ  SSKKJLrLJMrMJNrN  SSKOJPrPJQrQ  SSKRJSrSJTrT  SSKUJVrVJWrWJXrX  \(       a  SSKYJZrZ  SSK[J\r\   " S S5      r] " S S\N5      r^ " S S\N5      r_ " S  S!\N5      r` " S" S#\N5      ra " S$ S%\N5      rb " S& S'\b5      rc " S( S)\N5      rd " S* S+\N5      re " S, S-\N5      rfS.\S/\S0\4   4S1 jrg " S2 S3\N5      rh\RÒ                   " S4 S55      5       rj " S6 S7\X5      rk " S8 S9\X5      rl " S: S;\N5      rm " S< S=\N5      rn " S> S?\N5      ro " S@ SA\N5      rp " SB SC\N5      rq " SD SE\N5      rr\Ræ                  " SSF9S/\t\R"                  \Rê                  4   4SG j5       rv\Ræ                  " SSF9S/\t\Rê                  \R"                  4   4SH j5       rw " SI SJ\N5      rx " SK SL\N5      ry " SM SN\N5      rz " SO SP\N5      r{ " SQ SR\N5      r| " SS ST\N5      r} " SU SV\N5      r~ " SW SX\N5      r " SY SZ\N5      r€ " S[ S\\€5      r� " S] S^\€5      r‚\GR                  \€\GR                  \€\GR
                  \‚0r† " S_ S`\N5      r‡ " Sa Sb\N5      rˆ " Sc Sd\N5      r‰g)eaÎ  
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ÚLiteralÚNoReturnÚ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Ú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Úis_tensor_base_attr_getterÚistypeÚlist_methodsÚproxy_args_kwargsÚraise_args_mismatchÚtuple_methodsé   )Ú#AsPythonConstantNotImplementedErrorÚraise_type_error_excÚVariableTracker)ÚCONSTANT_VARIABLE_NONEÚConstantVariable)ÚNestedUserFunctionVariableÚUserFunctionVariable)Úcall_random_fnÚis_standard_setattrÚUserDefinedObjectVariable)Ú	PyCodegen)ÚInstructionTranslatorc                   ó   • \ rS rSrSrg)ÚNO_SUCH_SUBOBJéV   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r=   ó    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/variables/misc.pyr;   r;   V   s   † ÚrC   r;   c            
       óä   ^ • \ rS rSr1 \R
                  kr SS\S\S-  S\SS4U 4S jjjrSU 4S jjrS	S
S\	S\
\\S-  4   4U 4S jjrS	S
S\	S\4S jrS	S
S\	S\\   S\\	\4   S\4
S jrSrU =r$ )ÚSuperVariableéZ   NÚtypevarÚobjvarÚkwargsÚreturnc                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g ©Nr=   )ÚsuperÚ__init__rH   rI   )ÚselfrH   rI   rJ   Ú	__class__s       €rD   rO   ÚSuperVariable.__init___   s#   ø€ ô 	‰ÒÑ"˜6Ò"ð Œð
 �rC   c                 ó  >^• TR                  UU4S j5        T" U R                  5        U R                  b.  T" U R                  5        TR                  [	        SS5      5        g TR                  [	        SS5      5        g )Nc                  óD   >• T" [         R                  " [        5      5      $ ©N)r   ÚBuiltinVariablerN   )rQ   Úcodegens   €€rD   Ú<lambda>Ú+SuperVariable.reconstruct.<locals>.<lambda>q   s   ø€ ¡g¬i×.GÒ.GÌÓ.NÔ&OrC   r   Fr-   )Úadd_push_nullrH   rI   Úextend_outputr   ©rP   rW   rQ   s    `€rD   ÚreconstructÚSuperVariable.reconstructp   s`   ù€ Ø×ÑÕOÔPÙ�—‘ÔØ�;‰;Ñ"Ù�D—K‘KÔ Ø×!Ñ!Ô"6°q¸%Ó"@ÕAà×!Ñ!Ô"6°q¸%Ó"@ÕArC   Útxr9   Únamec                 óà  >• U R                   (       d+  [        SSSU SU R                   SU R                    S3S/S9  U R                   c   eU R                  R                  5       nU R                   R	                  5       nU R                   R
                  (       a  [        U R                   R
                  5      OS n[        U[        5      (       a,  U R                   R                  nU R                   R
                  nS nUR                  n UR                  U5      S	-   n[        U[!        U5      5       Hb  n	Xy   R"                  R%                  U[&        5      =n
(       d  M.  U
[&        Ld  M9  U(       a  [)        [+        [-        U5      U	5      U5      nX¦4s  $    [        S
SSU SU R                   SU R                    S3SS/S9  g ! [         a    [        [        X45      U5      S 4s $ f = f)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Úhintsr-   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()`.)rI   r   rH   Úas_python_constantÚpython_typeÚsourcer"   Ú
issubclassÚtypeÚvalueÚ__mro__ÚindexÚ
ValueErrorÚgetattrrN   ÚrangeÚlenÚ__dict__Úgetr;   r   r    r!   )rP   r_   r`   Úsearch_typeÚtype_to_useÚtype_to_use_sourcerj   Ú
search_mroÚstart_indexro   Úresolved_getattrrQ   s              €rD   Ú_resolved_getattr_and_sourceÚ*SuperVariable._resolved_getattr_and_sourcey   së  ø€ ð �{�{ÜØ5ØØ@ÀÀð G,Ø,0¯L©L¨>¸ÈÏÉÀ}ð UDðDð Dðò	ð �{‰{Ñ&Ð&Ð&Ø—l‘l×5Ñ5Ó7ˆð —k‘k×-Ñ-Ó/ˆà.2¯k©k×.@×.@ŒJ�t—{‘{×)Ñ)Ô*Àdð 	ô �k¤4×(Ñ(ØŸ+™+×+Ñ+ˆKØ!%§¡×!3Ñ!3ÐàˆØ ×(Ñ(ˆ
ð	HØ$×*Ñ*¨;Ó7¸!Ñ;ˆKô ˜;¬¨J«Ö8ˆEà#-Ñ#4×#=Ñ#=×#AÑ#AÀ$ÌÓ#WÐWÐ×WØ#¬>Ô9æ)Ü!+Ü)¬-Ð8JÓ*KÈUÓSØ ó"˜ð ,Ð3Ò3ñ 9ô 	Ø5ØØ<¸T¸Fð C(Ø(,¯© ~°^ÀDÇKÁKÀ=ð QDðDð CØ:ðó
	
øô' ó 	Hô œ5 Ó:¸DÓAÀ4ÐGÒGð	Hús   ÄG	 Ç	!G-Ç,G-c                 ó  • U R                  X5      u  p4[        R                  R                  U5      (       d  [	        X5      $ U(       a(  [        UR                  [        R                  5      5        [        R                  R                  X4S9$ )N©rj   )
r|   r   r2   Ú
is_literalÚGetAttrVariabler   Ú
make_guardr   ÚCONSTANT_MATCHÚcreate)rP   r_   r`   rm   rj   s        rD   Úvar_getattrÚSuperVariable.var_getattr½   sn   € ð ×9Ñ9¸"ÓC‰ˆÜ×)Ñ)×4Ñ4°U×;Ñ;Ü" 4Ó.Ð.ÞÜ˜&×+Ñ+¬L×,GÑ,GÓHÔIÜ×)Ñ)×0Ñ0°Ð0ÐFÐFrC   Úargsc                 ó@  • U R                  X5      u  pVU R                  c   eU[        R                  L a  [	        [
        5      $ U[        R                  R                  R                  L aÖ  U R                  nSSK	J
n  [        U[        R                  5      (       aw  [        UR                  U5      (       a\  U(       dU  U(       dN  [        5          [         R"                  " U[$        US9n	U	R'                  XR                  /U-   U5      sS S S 5        $ [)        SSU  SU SU SU 3SU S3/ [*        R,                  QS	9  GOOU R                  R.                  (       aÁ  [1        US
5      (       a°  UR2                  S:X  a   [        R4                  R7                  U5      (       a|  UR8                  n
[1        U
S5      (       a'  U
R:                  S:X  a  [        R<                  " U
5      nO%Uc   eUR>                  n[        R4                  " X¬S9nURA                  USX45      $ [        U[B        5      (       a[  [        URD                  [F        RH                  5      (       a2  [         R"                  " XRD                  USS9n	U	R'                  XU5      $ [        U[J        5      (       Ga  [        URD                  [F        RH                  5      (       aã  [        U R                  [        R4                  5      (       a  U R                  nOhS nU R                  R.                  (       a  [M        U R                  R.                  5      n[         R"                  " UU R                  RN                  U5      nUc   e[         R"                  " UURD                  [Q        US5      SS9n	U	R'                  X/UQU5      $ [        U[F        RH                  5      (       a6  [         R"                  " XUSS9n	U	R'                  XR                  /U-   U5      $ [        U[F        RR                  5      (       a:  [        RT                  " URD                  U R                  US9R'                  XU5      $ [W        U5      (       a?  [        U R                  [        5      (       a   U R                  RX                  " U/UQ70 UD6$ U[        RZ                  L aæ  US   n UR]                  5       nUR`                  R                  Rc                  U R                  5      (       d1  [)        SSU  SU 3SU R                   S3S/[*        Rd                  QS	9  [        U[f        5      (       d   eUR`                  R                  Ri                  U R                  U[        Rj                  " 5       5        [        Rl                  $ [        U R                  [        Rn                  5      (       a?  XPR                  Rp                  ;   a&  U R                  Rr                  RA                  XX45      $ [        U R                  [        Rt                  5      (       a?  XPR                  Rv                  ;   a&  U R                  Rx                  RA                  XX45      $ [        U R                  [        Rz                  5      (       a0  U[|        ;   a&  U R                  R~                  RA                  XX45      $ [        U R                  [        R€                  5      (       a0  U[‚        ;   a&  U R                  R„                  RA                  XX45      $ U[        R†                  L Ga"  US   Rˆ                  nUR`                  R                  R‹                  U R                  U5      (       a`  UR`                  R                  R�                  U R                  USS9n[        U[        Rj                  5      (       a  [�        [�        U5        U$ S n [        R‡                  U R                  Rˆ                  U5      nS nU R                  R.                  b   [“        U R                  R.                  U5      n[         R"                  " UUU5      $ U[        R”                  R–                  L a¨  US   n0 nUS   R˜                  nUS   R˜                  R™                  5        H%  u  nnURš                  R]                  5       nUUU'   M'     URœ                  Rž                  nSURœ                  lO         UR'                  UUU5      UURœ                  lO        $ [        U[F        R                   5      (       aO  U[¢        R¤                  " 5       ;   a6  [         R"                  " XUSS9nUR'                  XR                  /U-   U5      $ [)        SSU  SU 3SU S U S!3S"/S	9  g ! , (       d  f       N)= f! [^         a  n[)        SSU  SU 3SS/US9   S nAGNS nAff = f! [�         a    [�        [�        U5         GNùf = f! UURœ                  lO        f = f)#Nr   )ÚAttributeMutationNewr   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.rc   r>   Ú__new__r?   ÚbuiltinsT©rj   ÚrealizeÚ__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.)rd   re   rf   rg   Ú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.)Ú
deleted_oké   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.)Sr|   rI   ÚobjectrO   ÚLambdaVariabler&   ÚtorchÚnnÚModuleÚside_effectsr‰   Ú
isinstancer   r7   Úmutation_typer   r0   Úbuildr   Úcall_functionr   r   Ú	DIFFICULTrj   Úhasattrr>   ÚUserDefinedClassVariableÚis_supported_new_methodÚ__self__r?   rV   ÚmemberÚcall_methodÚstaticmethodr�   ÚtypesÚFunctionTypeÚclassmethodr"   Ú
value_typer   Ú
MethodTypeÚUserMethodVariabler6   Úmethod_setattr_standardÚ__delattr__rh   ÚNotImplementedErrorÚoutputÚis_attribute_mutationÚ
DYNAMO_BUGÚstrÚ
store_attrÚDeletedVariabler1   ÚUserDefinedDictVariableÚ_dict_methodsÚ_dict_vtÚUserDefinedSetVariableÚ_set_methodsÚ_set_vtÚUserDefinedTupleVariabler,   Ú	_tuple_vtÚUserDefinedListVariabler)   Ú_list_vtÚ__getattribute__rm   Úhas_pending_mutation_of_attrÚ	load_attrr   ÚAttributeErrorr   Ú_CÚ_disabled_torch_function_implÚitemsÚvtÚsymbolic_torch_function_stateÚtorch_function_subclass_enabledÚMethodDescriptorTyper   Úget_tensor_method)rP   r_   r`   r‡   rJ   Úinner_fnrj   rI   r‰   Úfn_vtÚuser_clsÚuser_cls_vtÚuser_cls_sourceÚcls_variableÚ
cls_sourceÚattrÚexcÚ	attr_nameÚresultÚ
attr_valueÚattr_sourceÚfuncÚ	tf_kwargsÚtf_argsÚhash_key_vtÚvalue_vtÚkey_strÚtx_oldÚfn_vars                                rD   r¤   ÚSuperVariable.call_methodÍ   s¤  € ð  ×<Ñ<¸RÓFÑˆØ�{‰{Ñ&Ð&Ð&ð ”v—‘Ò&Ü!¤(Ó+Ð+ØœŸ™Ÿ™×1Ñ1Ò1Ø—[‘[ˆFÝ;ô ˜6¤9×#FÑ#F×GÑGÜ˜v×3Ñ3Ð5I×JÑJÞ¦ä9Õ;Ü+×1Ò1ØÔ4¸Vñ�Eð !×.Ñ.¨r·K±K°=À4Ñ3GÈÓP÷	 <Ñ;ô ØAØ*¨4¨&°°$°°q¸¸¸aÀ¸xÐHð!Ø ˜ð "1ð!1ð 9Ô-×7Ñ7Ð8ôð �K‰K××Ü˜ *×-Ñ-Ø×!Ñ! YÓ.Ü×2Ñ2×JÑJÈ8×TÑTà×(Ñ(ˆHÜ�x ×.Ñ.°8×3FÑ3FÈ*Ó3TÜ/8×/HÒ/HÈÓ/R‘àÑ)Ð)Ð)Ø"(§-¡-�Ü'×@Ò@Øñ�ð ×*Ñ*¨2¨y¸$ÓGÐGÜ˜¤,×/Ñ/´JØ×Ñœu×1Ñ1÷5
ñ 5
ô $×)Ò)Ø×%Ñ%¨f¸dñˆEð ×&Ñ& r°Ó8Ð8Ü˜¤+×.Ò.´:Ø×Ñœu×1Ñ1÷4
ñ 4
ô ˜$Ÿ+™+¤y×'IÑ'I×JÑJð  $Ÿ{™{‘ð "�
Ø—;‘;×%×%Ü!+¨D¯K©K×,>Ñ,>Ó!?�JÜ.×4Ò4ØØ—K‘K×*Ñ*Øó �ð
 Ñ%Ð%Ð%Ü#×)Ò)ØØ×!Ñ!Ü! &¨*Ó5Øñ	ˆEð ×&Ñ& rÐ+@¸4Ð+@À&ÓIÐIÜ˜¤%×"4Ñ"4×5Ñ5Ü#×)Ò)¨"¸vÈtÑTˆEØ×&Ñ& r¯K©K¨=¸4Ñ+?ÀÓHÐHÜ˜¤%×"2Ñ"2×3Ñ3Ü×/Ò/Ø×!Ñ! 4§;¡;°vñç‰m˜B fÓ-ð.ô ! ×*Ñ*¬zØ�K‰KÔ2÷0
ñ 0
ð —;‘;×6Ò6°rÐK¸DÒKÀFÑKÐKØœ×+Ñ+Ò+Ø˜‘7ˆDðØ×.Ñ.Ó0�ð —9‘9×)Ñ)×?Ñ?ÀÇÁ×LÑLÜØdØ*¨4¨&°°$°Ð8ð!à#Ÿ{™{˜mð ,(ð!(ð
 Wðä*×5Ñ5ðòô ˜d¤C×(Ñ(Ð(Ð(Ø�I‰I×"Ñ"×-Ñ-Ø—‘˜T¤9×#<Ò#<Ó#>ôô ×3Ñ3Ð3ä�t—{‘{¤I×$EÑ$E×FÑFØŸK™K×5Ñ5Ó5à—;‘;×'Ñ'×3Ñ3°B¸dÓKÐKä�t—{‘{¤I×$DÑ$D×EÑEØŸK™K×4Ñ4Ó4à—;‘;×&Ñ&×2Ñ2°2¸TÓJÐJä�t—{‘{¤I×$FÑ$F×GÑGØœMÓ)à—;‘;×(Ñ(×4Ñ4°R¸tÓLÐLä�t—{‘{¤I×$EÑ$E×FÑFØœLÓ(à—;‘;×'Ñ'×3Ñ3°B¸dÓKÐKØœ×0Ñ0Ó0ð ˜Q™Ÿ™ˆIØ�y‰y×%Ñ%×BÑBØ—‘˜Y÷ñ ð Ÿ™×/Ñ/×9Ñ9Ø—K‘K °tð :ð �ô ˜f¤i×&?Ñ&?×@Ñ@Ü,¬^¸RÔ@Ø�àˆJð=ô $×4Ñ4°T·[±[×5FÑ5FÈ	ÓR�
ð ˆ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¸ÈÑNˆFØ×'Ñ'¨¯[©[¨M¸DÑ,@À&ÓIÐIäð'à" 4 &¨¨$¨Ð0ðØ�vÐ2°4°&ð 9,ð,ð `ðó
	
÷ <Õ;ûôh 'ó 
ÜØUØ*¨4¨&°°$°Ð8ð!Lð `ðð !÷	ð 	ûð
ûôH "ó =Ü(¬¸×<ð=ûð8 ð ×0Ñ0ÕPúsB   Ã:f,Óf= ß#*g) ã?h
 æ,
f:æ=
g&çg!ç!g&ç)hèhè
h)rI   rH   rU   ©rW   r8   rK   N)r>   r?   r@   rA   r0   Ú_nonvar_fieldsr   rO   r]   r²   Útupler   r|   r…   ÚlistÚdictr¤   rB   Ú__classcell__©rQ   s   @rD   rF   rF   Z   sø   ø† ðØ	×	'Ñ	'ð€Nð *.ñà ðð   $Ñ&ðð ð	ð
 
÷ð ÷"BðB
Ø)ðB
Ø14ðB
à	ˆs�J Ñ%Ð%Ñ	&÷B
ðHGÐ5ð G¸Sð GÀ_ô Gð e
à#ðe
ð ðe
ð �?Ñ#ð	e
ð
 �S˜/Ð)Ñ*ðe
ð 
÷e
ò e
rC   rF   c                   óv   ^ • \ rS rSrS\R
                  S\SS4U 4S jjrS\4S jr	SS	S
\
S\4U 4S jjrSrU =r$ )ÚFrameSummaryVariableiµ  Úframe_summaryrJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   rê   )rP   rê   rJ   rQ   s      €rD   rO   ÚFrameSummaryVariable.__init__¶  s   ø€ Ü‰ÒÑ"˜6Ò"Ø*ÕrC   c                 ó"   • [         R                  $ rU   )Ú	tracebackÚFrameSummary©rP   s    rD   ri   Ú FrameSummaryVariable.python_typeº  s   € Ü×%Ñ%Ð%rC   r_   r9   r`   c                 óê  >• US:X  a3  [         R                  R                  U R                  R                  5      $ US:X  a3  [         R                  R                  U R                  R
                  5      $ US:X  a3  [         R                  R                  U R                  R                  5      $ US:X  a3  [         R                  R                  U R                  R                  5      $ [        TU ]%  X5      $ )NÚlinenoÚfilenamer`   Úline)
r   r2   r„   rê   ró   rô   r`   rõ   rN   r…   ©rP   r_   r`   rQ   s      €rD   r…   Ú FrameSummaryVariable.var_getattr½  s½   ø€ Ø�8ÓÜ×-Ñ-×4Ñ4°T×5GÑ5G×5NÑ5NÓOÐOØ�ZÓÜ×-Ñ-×4Ñ4°T×5GÑ5G×5PÑ5PÓQÐQØ�V‹^Ü×-Ñ-×4Ñ4°T×5GÑ5G×5LÑ5LÓMÐMØ�V‹^Ü×-Ñ-×4Ñ4°T×5GÑ5G×5LÑ5LÓMÐMÜ‰wÑ" 2Ó,Ð,rC   )rê   )r>   r?   r@   rA   rî   rï   r   rO   rl   ri   r²   r0   r…   rB   ræ   rç   s   @rD   ré   ré   µ  sP   ø† ð+ i×&<Ñ&<ð +Èð +ÐPT÷ +ð&˜Tô &ð	-Ð5ð 	-¸Sð 	-À_÷ 	-õ 	-rC   ré   c            
       ór  ^ • \ rS rSrS\S\S \4   S\SS4U 4S jjr\	S\
R                  S\S \4   SS 4S j5       r\S	\S\4S
 j5       rS\\
R                  \-     4S jrS\S\4S jrS\\R,                     4S jrSSS\S\S\4S jrSSS\S\4U 4S jjrSSS\S\\   S\\\4   S\4
U 4S jjrSrU =r$ )ÚTracebackVariableiÉ  rê   Útb_nextrJ   rK   Nc                 óH   >• [         TU ]  " S0 UD6  Xl        Uc   eX l        g rM   )rN   rO   rê   rú   )rP   rê   rú   rJ   rQ   s       €rD   rO   ÚTracebackVariable.__init__Ê  s,   ø€ ô 	‰ÒÑ"˜6Ò"Ø*ÔàÑ"Ð"Ð"Ø�rC   c                 ó"   • U " [        U5      US9$ )N)rú   )ré   )Úclsrê   rú   s      rD   Úfrom_frame_summaryÚ$TracebackVariable.from_frame_summaryÜ  s   € ñ Ô'¨Ó6ÀÑHÐHrC   Úobjc                 ó~   • [        U [        5      =(       d'    [        U [        5      =(       a    U R                  5       $ rU   )r(   rù   r2   Úis_constant_none©r  s    rD   Úis_valid_tracebackÚ$TracebackVariable.is_valid_tracebackä  s0   € ä�cÔ,Ó-÷ 
Ü�3Ô(Ó)×D¨c×.BÑ.BÓ.Dð	
rC   c                 óª   • [        U R                  [        5      (       a  U R                  /$ U R                  /U R                  R	                  5       -   $ rU   )r(   rú   r2   rê   Ú
extract_tbrð   s    rD   r  ÚTracebackVariable.extract_tbê  sD   € Ü�$—,‘,Ô 0×1Ñ1Ø×&Ñ&Ð'Ð'Ø×"Ñ"Ð# d§l¡l×&=Ñ&=Ó&?Ñ?Ð?rC   Útbc                 ó‚   • U n[        U[        5      (       a(  X!L a  gUR                  n[        U[        5      (       a  M(  g)NTF)r(   rù   rú   )rP   r
  Úcurr_tbs      rD   Úhas_reference_cycleÚ%TracebackVariable.has_reference_cycleï  s;   € à8<ˆÜ�WÔ/×0Ñ0ØŠ}ØØ—o‘oˆGô �WÔ/×0Ó0ð rC   c                 ó"   • [         R                  $ rU   )r¦   ÚTracebackTyperð   s    rD   ri   ÚTracebackVariable.python_typeø  s   € Ü×"Ñ"Ð"rC   r_   r9   Úname_varÚvalc                 ó‚  • UR                  5       nUS:X  aš  U R                  U5      (       d  [        [        U5        [	        U[
        [        45      (       d   eU R                  U5      (       d+  [        U[
        5      (       a&  UR                  U 5      (       a  [        [        U5        X0l
        [        R                  $ )Nrú   )rh   r  r   Ú	TypeErrorrš   rù   r2   r  r(   rp   rú   r   r1   )rP   r_   r  r  r`   s        rD   Úcall_setattrÚTracebackVariable.call_setattrû  s™   € ð ×*Ñ*Ó,ˆØ�9ÓØ×*Ñ*¨3×/Ñ/Ü(¬°BÔ7Ü˜cÔ$5Ô7GÐ#H×IÑIÐIÐIØ×'Ñ'¨×,Ñ,Ü�sÔ-×.Ñ.°3×3JÑ3JÈ4×3PÑ3Pä(¬°RÔ8ØŒLÜ×/Ñ/Ð/rC   r`   c                 óø   >• US:X  a  U R                   $ US:X  a  U R                  R                  US5      $ US:X  a  U R                  $ US:X  a  [        SU  S3S/ [        R
                  QS	9  [        TU ]	  X5      $ )
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.rc   )rú   rê   r…   r   r   ÚSUPPORTABLErN   rö   s      €rD   r…   ÚTracebackVariable.var_getattr  sŒ   ø€ Ø�9ÓØ—<‘<ÐØ�[Ó Ø×%Ñ%×1Ñ1°"°hÓ?Ð?Ø�_Ó$Ø×%Ñ%Ð%Ø�ZÓÜØ:Ø˜&Ð 5Ð6ØlØ6Ô)×5Ñ5Ð6ò	ô ‰wÑ" 2Ó,Ð,rC   r‡   c                 ó¨   >• US:X  a#  [         R                  R                  XS   L 5      $ US:X  a  U R                  " U/UQ76 $ [        TU ]  XX45      $ )NÚ__eq__r   Ú__setattr__)r   r2   r„   r  rN   r¤   )rP   r_   r`   r‡   rJ   rQ   s        €rD   r¤   ÚTracebackVariable.call_method  sZ   ø€ ð �8Óä×-Ñ-×4Ñ4°TÀ!¹W°_ÓEÐEØ�]Ó"Ø×$Ò$ RÐ/¨$Ò/Ð/Ü‰wÑ" 2¨TÓ:Ð:rC   )rê   rú   )r>   r?   r@   rA   ré   r   r2   r   rO   r¨   rî   rï   rÿ   r¥   r0   Úboolr  rä   r  r  rl   r¦   r  ri   r  r²   r…   rå   r¤   rB   ræ   rç   s   @rD   rù   rù   É  s{  ø† ðà+ðð Ð*Ð,<Ð<Ñ=ðð ð	ð
 
÷ð$ ðIà ×-Ñ-ðIð Ð*Ð,<Ð<Ñ=ðIð 
ó	Ió ðIð ð
 ð 
°Dó 
ó ð
ð
@˜D ×!7Ñ!7Ð:NÑ!NÑOô @ð
 oð ¸$ô ð#˜T %×"5Ñ"5Ñ6ô #ð0à#ð0ð "ð0ð ð	0ð
 
ô0ð$-Ð5ð -¸Sð -À_÷ -ð ;à#ð;ð ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;õ ;rC   rù   c                   ó  ^ • \ rS rSr   SS\S\\S4   S\\\4   S-  S\	S-  S\
S-  S	S4U 4S
 jjjrS\S	S4S jrSS jrS	\4S jrSSS\S\S	\4S jrSSS\S\\   S\\\4   S	\4
U 4S jjrSSS\S	\4U 4S jjrS	\4S jr\rSrU =r$ )ÚExceptionVariablei,  NÚexc_typer‡   .Úinit_kwargsrj   r›   rK   c                 óø   >• [         TU ]  XES9  Xl        X l        U(       a!  [	        SU  SU 3S/ [
        R                  QS9  [        U l        [        U l	        [        S5      U l        [        U l        S U l        g )N)rj   r›   z,Keyword args passed to exception constructorz with kwargs zRDynamo does not know how to handle keyword args passed to an exception constructorrc   F)rN   rO   r$  r‡   r   r   r  r1   Ú__context__Ú	__cause__r2   Ú__suppress_context__Ú__traceback__Úpython_stack)rP   r$  r‡   r%  rj   r›   rQ   s         €rD   rO   ÚExceptionVariable.__init__.  s‚   ø€ ô 	‰Ñ ÐÑDØ ŒØŒ	ÞÜØFØ˜& ¨k¨]Ð;ØpØ6Ô)×5Ñ5Ð6ò	ô -CˆÔô +AˆŒä5EÀeÓ5LˆÔ!ä.DˆÔð <@ˆÕrC   re   c                 ó   • Xl         g rU   )r'  )rP   re   s     rD   Úset_contextÚExceptionVariable.set_contextO  s   € Ø"ÕrC   c                 ó  ^ ^• TR                  UU 4S j5        TR                  T R                  5        TR                  [	        T R                  5      S5        S[
        SS 4UU 4S jjnU" S5        U" S5        U" S5        g )	Nc                  óP   >• T R                  STR                  R                  5      $ )Nr�   )Úload_import_fromr$  r>   ©rW   rP   s   €€rD   rX   Ú/ExceptionVariable.reconstruct.<locals>.<lambda>T  s   ø€ �G×,Ñ,¨Z¸¿¹×9OÑ9OÔPrC   Fr`   rK   c                 ó
  >• [        TU 5      n[        U[        5      (       a  UR                  S;   d   U5       eg TR	                  5         T" U5        TR                  TR                  S5      5        TR                  U 5        g )N)TFNr   )rq   r(   r2   rm   Údup_topr[   Úrot_nr³   )r`   rÒ   rW   rP   s     €€rD   Úcodegen_attrÚ3ExceptionVariable.reconstruct.<locals>.codegen_attrY  sk   ø€ Ü˜4 Ó&ˆDÜ�dÔ,×-Ñ-Ø—z‘zÐ%8Ó8Ð>¸$Ó>Ñ8à—‘Ô!Ù˜”Ø×%Ñ% g§m¡m°AÓ&6Ô7Ø×"Ñ" 4Õ(rC   r'  r(  r)  )rZ   Úforeachr‡   r�   rs   r²   )rP   rW   r8  s   `` rD   r]   ÚExceptionVariable.reconstructR  sq   ù€ Ø×ÑÝPô	
ð 	�‰˜Ÿ	™	Ô"Ø×Ñœc $§)¡)›n¨eÔ4ð	)œsð 	) t÷ 	)ð 	)ñ 	�]Ô#Ù�[Ô!ÙÐ+Õ,rC   c                 ó   • U R                   $ rU   )r$  rð   s    rD   ri   ÚExceptionVariable.python_typeg  s   € Ø�}‰}ÐrC   r_   r9   r  r  c                 óð  ^• S[         S[        4U4S jjnUR                  5       nUS:X  a>  [        U[        [
        45      (       d   eU R                  U5        [        R0                  $ US:X  a¬  UR                  5       (       dM  [        U[        R                  [        R                  [        R                  [        R                  45      (       a1  X0l        [        R
                  " S5      U l        [        R0                  $ U" S5         [        R0                  $ US:X  aF  UR                  SS	5      (       a  X0l        [        R0                  $ U" S5         [        R0                  $ US
:X  aT  [        R!                  U5      (       d$  [#        [$        T[
        R&                  " S5      /S9  X0l        [        R0                  $ [+        SSU  SU 3SU S3/ [,        R.                  QS9  [        R0                  $ )NÚmsgrK   c                 ó8   >• [        [        T[        U 5      /S9  g )N©r‡   )r   r  r2   )r?  r_   s    €rD   Úraise_errorÚ3ExceptionVariable.call_setattr.<locals>.raise_errorp  s   ø€ Ü$¤Y°Ô:JÈ3Ó:OÐ9PÓQrC   r'  r(  Tz9exception cause must be None or derive from BaseExceptionr)  Fr*  z0__traceback__ must be a traceback object or NonerA  z4Unsupported 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.rc   )r²   r	   rh   rš   r#  r2   r.  r  r   rV   Ú!UserDefinedExceptionClassVariableÚ"UserDefinedExceptionObjectVariabler(  r)  Úis_constant_matchrù   r  r   r  r„   r*  r   r   r  r1   )rP   r_   r  r  rB  r`   s    `    rD   r  ÚExceptionVariable.call_setattrj  sí  ø€ ð	RœSð 	R¤X÷ 	Rð ×*Ñ*Ó,ˆØ�=Ó ä˜cÔ$5Ô7GÐ#H×IÑIÐIÐIØ×Ñ˜SÔ!ôR ×/Ñ/Ð/ðQ �[Ó Ø×#Ñ#×%Ñ%¬Øä×-Ñ-Ü×/Ñ/Ü×?Ñ?Ü×@Ñ@ð	÷*ñ *ð "%”Ü,5×,FÒ,FÀtÓ,L�Ô)ô: ×/Ñ/Ð/ñ7 ÐWÕXô6 ×/Ñ/Ð/ð5 Ð+Ó+Ø×$Ñ$ T¨5×1Ñ1Ø,/Ô)ô0 ×/Ñ/Ð/ñ- ÐWÕXô, ×/Ñ/Ð/ð+ �_Ó$Ü$×7Ñ7¸×<Ñ<Ü(ÜØä(×/Ò/ØNóðòð "%Ôô ×/Ñ/Ð/ô ØNØ'¨ v¨Q¨t¨fÐ5ðØ�6ð ZðZð 7Ô)×5Ñ5Ð6òô ×/Ñ/Ð/rC   r`   rJ   c                 ó¦   >• US:X  a  U R                   " U/UQ76 $ US:X  a"  Uu  nU R                  U[        S5      U5        U $ [        TU ]  XX45      $ )Nr  Úwith_tracebackr*  )r  r2   rN   r¤   )rP   r_   r`   r‡   rJ   r
  rQ   s         €rD   r¤   ÚExceptionVariable.call_method¢  sb   ø€ ð �=Ó Ø×$Ò$ RÐ/¨$Ò/Ð/ØÐ%Ó%Ø‰DˆRØ×Ñ˜bÔ"2°?Ó"CÀRÔHØˆKä‘7Ñ& r°Ó>Ð>rC   c                 ó"  >• US:X  a  U R                   $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a2  [        R
                  " [        U R                  5      U R                  S9$ [        TU ])  X5      $ )Nr'  r(  r)  r*  r‡   r   )r'  r(  r)  r*  r   ÚListVariablerä   r‡   rj   rN   r…   rö   s      €rD   r…   ÚExceptionVariable.var_getattr²  sˆ   ø€ Ø�=Ó Ø×#Ñ#Ð#Ø�[Ó Ø—>‘>Ð!ØÐ+Ó+Ø×,Ñ,Ð,Ø�_Ó$Ø×%Ñ%Ð%Ø�V‹^Ü×)Ò)¬$¨t¯y©y«/À$Ç+Á+ÑNÐNÜ‰wÑ" 2Ó,Ð,rC   c                 óN   • U R                   R                   SU R                   S3$ )NÚ(Ú))rQ   r>   r$  rð   s    rD   Ú__str__ÚExceptionVariable.__str__¿  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©M¨?¸!Ð<Ð<rC   )r(  r'  r)  r*  r‡   r$  r+  )NNNrá   )r>   r?   r@   rA   r   rã   r0   rå   r²   r   r   rO   r.  r]   rl   ri   r  rä   r¤   r…   rQ  Ú__repr__rB   ræ   rç   s   @rD   r#  r#  ,  s?  ø† ð :>Ø $Ø-1ñ@àð@ð �O SÐ(Ñ)ð@ð ˜#˜Ð.Ñ/°$Ñ6ð	@ð
 ˜‘ð@ð $ dÑ*ð@ð 
÷@ð @ðB# ?ð #°tô #ô-ð*˜Tô ð60à#ð60ð "ð60ð ð	60ð
 
ô60ðp?à#ð?ð ð?ð �?Ñ#ð	?ð
 �S˜/Ð)Ñ*ð?ð 
÷?ð -Ð5ð -¸Sð -À_÷ -ð=˜ô =ð †HrC   r#  c                   ó   • \ rS rSrSrSrg)ÚUnknownVariableiÅ  z
It could be anything!
r=   N©r>   r?   r@   rA   Ú__doc__rB   r=   rC   rD   rU  rU  Å  s   † ôrC   rU  c                   óp   ^ • \ rS rSrSrSS\S-  S\SS4U 4S jjjrSS	S
\\	   S\
\\	4   S\	4S jrSrU =r$ )ÚDelayGraphBreakVariableiË  zV
Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
Nr?  rJ   rK   c                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   r?  )rP   r?  rJ   rQ   s      €rD   rO   Ú DelayGraphBreakVariable.__init__Ð  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�rC   r_   r9   r‡   c                 ó    • U R                   c  SOU R                   R                  n[        SSU R                    3SU SU R                   3/ S9  g )Nrb   z#Unsupported function call (delayed)zsource: z@Dynamo determined that a graph break should occur when calling `z`. Reason: rc   )rj   r`   r   r?  )rP   r_   r‡   rJ   r`   s        rD   r�   Ú%DelayGraphBreakVariable.call_functionÔ  sS   € ð —[‘[Ñ(‰r¨d¯k©k×.>Ñ.>ˆÜØ9Ø˜tŸ{™{˜mÐ,ðØ!˜F +¨d¯h©h¨Zð9àó	
rC   )r?  rU   )r>   r?   r@   rA   rW  r²   r   rO   r   r0   rå   r�   rB   ræ   rç   s   @rD   rY  rY  Ë  sj   ø† ññ˜C $™Jð ¸ð À÷ ð ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
ò 
rC   rY  c                   ób   • \ rS rSrSrSS jrSSS\S\4S	 jrSSS
\	\   S\
\\4   S\4S jrSrg)ÚComptimeVariableiä  zU
This variable is special, it lets you execute arbitrary code at
Dynamo compile time
rK   Nc                 ó   • [        S5      e)Nzcomptime is special form)r®   ©rP   rW   s     rD   r]   ÚComptimeVariable.reconstructê  s   € Ü!Ð"<Ó=Ð=rC   r_   r9   r`   c                 ó’   • SSK J n  U R                  c   e[        R                  " U[	        X25      [        U R                  U5      S9$ )Nr   )Úcomptimer   )rd  rj   r0   rœ   rq   r   )rP   r_   r`   rd  s       rD   r…   ÚComptimeVariable.var_getattrí  s?   € Ý'à�{‰{Ñ&Ð&Ð&ä×$Ò$Ø”˜Ó'´
¸4¿;¹;ÈÓ0Mñ
ð 	
rC   r‡   rJ   c           
      óò  • SSK Jn  U(       d  [        U5      S:”  a&  [        USS[        U5       S[        U5       S35        US   n[	        U[
        5      (       a,  UR                  5       " U" U5      5        [,        R.                  $ [	        U[        5      (       aÄ  UR                  5       nUR                  (       a  [        USUR                   35        [        R                  " UUR                  UR                  R!                  5       UR"                  (       a  [%        UR"                  R&                  5      OS S	5      nU" U" U5      5        [,        R.                  $ [)        S
[+        U5       35      e)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: )rd  rg  rs   r+   rš   r4   Úget_functionr3   Úget_codeÚclosurer/   Úco_freevarsr¦   r§   Ú	f_globalsÚfn_namerh   Údefaultsrã   rÅ   ÚRuntimeErrorrl   r   r1   )rP   r_   r‡   rJ   rg  ÚfnÚcoderØ   s           rD   r�   ÚComptimeVariable.call_functionö  s:  € õ 	/ö ”S˜“Y “]ÜØØØ-Ü�t“9�+˜Z¬¨F« }°GÐ<ô	ð �!‰WˆÜ�bÔ.×/Ñ/Ø�O‰OÔ™o¨bÓ1Ô2ô4 ×/Ñ/Ð/ô3 ˜Ô6×7Ñ7à—;‘;“=ˆDØ�z�zÜ$ØØeÐfj×fvÑfvÐewÐxôô ×%Ò%ØØ—‘Ø—
‘
×-Ñ-Ó/à,.¯K¯K”�b—k‘k×'Ñ'Ô(¸Tð óˆDñ ‘ Ó$Ô%ô ×/Ñ/Ð/ô Ð!CÄDÈÃHÀ:ÐNÓOÐOrC   r=   rá   )r>   r?   r@   rA   rW  r]   r²   r0   r…   r   rå   r�   rB   r=   rC   rD   r_  r_  ä  sa   † ñô
>ð
Ð5ð 
¸Sð 
À_ô 
ð-0à#ð-0ð �Ñ'ð-0ð �S˜/Ð)Ñ*ð	-0ð
 
÷-0rC   r_  c                   ój   ^ • \ rS rSr% \S-  \S'   Sr\S-  \S'    S	S\S-  S\SS4U 4S jjjr	Sr
U =r$ )
ÚCellVariablei&  NÚpre_existing_contentsÚ
local_namerJ   rK   c                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   rv  )rP   rv  rJ   rQ   s      €rD   rO   ÚCellVariable.__init__3  s   ø€ ô 	‰ÒÑ"˜6Ò"Ø%:Õ"rC   )rv  rU   )r>   r?   r@   rA   r0   Ú__annotations__rw  r²   r   rO   rB   ræ   rç   s   @rD   ru  ru  &  sM   ø‡ ð +¨TÑ1Ó1ð "€J��d‘
Ó!ð ?Cñ;Ø%4°tÑ%;ð;ØNQð;à	÷;ö ;rC   ru  c                   ó4   ^ • \ rS rSrS\SS4U 4S jjrSrU =r$ )ÚNewGlobalVariablei:  rJ   rK   Nc                 ó&   >• [         TU ]  " S0 UD6  g rM   ©rN   rO   ©rP   rJ   rQ   s     €rD   rO   ÚNewGlobalVariable.__init__;  ó   ø€ Ü‰ÒÑ"˜6Ó"rC   r=   )r>   r?   r@   rA   r   rO   rB   ræ   rç   s   @rD   r|  r|  :  s   ø† ð# ð #¨÷ #õ #rC   r|  Úfn_clsrK   .c                 óR   ^ • S[         S[         S[         4U 4S jjn[        Ul        U$ )Nr‡   rJ   rK   c                  ó(   >• TR                   " U 0 UD6$ rU   )Úapply)r‡   rJ   r‚  s     €rD   Útrampoline_autograd_applyÚDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_apply@  s   ø€ Ø�|Š|˜TÐ, VÑ,Ð,rC   )r   Ú!produce_trampoline_autograd_applyÚ_origin)r‚  r†  s   ` rD   rˆ  rˆ  ?  s/   ø€ ð-¬ð -¼ð -Ä÷ -ô )JÐÔ%Ø$Ð$rC   c            
       ó  ^ • \ rS rSrSrS1\R                  krS\S\SS4U 4S jjrSS	S
\	\   S\
\\4   S\4S jrSS	S
\	\   S\
\\4   S\4S jrSS	S
\\   S\
\\4   SS 4S jrSS	S\S
\	\   S\
\\4   S\4
S jrSrU =r$ )ÚAutogradFunctionVariableiH  z-represents a torch.autograd.Function subclassr‚  rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   r‚  )rP   r‚  rJ   rQ   s      €rD   rO   Ú!AutogradFunctionVariable.__init__P  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�rC   r_   r9   r‡   c           	      ó†  ^^• SmS[         SS 4UU4S jjn[         R                  " XBU45        T(       Ga�  [        R                  " 5       (       Gat  U R                  nSSKJn  SSKJn  U R                  R                  nU" U R                  R                  5      n	U	(       a3  U" U R                  R                  U R                  R                  5      nS nU R                  R                  n
U
[        R                  R                  R                  La'  [        SS	U  S
U S
U 3SSS/[         R"                  QS9  U R                  R$                  nU[        R                  R                  R$                  La&  [        SS	U  S
U S
U 3SS/[         R"                  QS9  SSKJn  UcJ  U	(       dC  [+        TR-                  U R                  R.                  5      U R                  R0                  5      nU=(       a
    [+        USS9nU" UU R                  R2                  UUS9R5                  TX#5      nU R                  (       aƒ  U	(       a|  [+        U R                  S5      n[7        UR9                  [:        R<                  5      5        [+        U R                  S5      n[7        UR9                  [:        R<                  5      5        U$ U R                  (       a  [+        U R                  S5      nOS nU R                  R                  n[>        RA                  TX#5      nU/UQn[C        U[D        RF                  5      (       ai  [H        RJ                  " U5      n[M        U5      S-
  [M        URN                  5      :X  a  USS  n[         RP                  " TUUSS9nUR5                  TX#5      $ [C        U[D        RR                  5      (       aN  [T        RV                  " URX                  [T        RZ                  " U R                  5      US9R5                  TX#5      $ [        SS	U  S
U S
U 3S[]        U5      R0                   S3S/S9  g )NFrÆ   rK   c                 óÄ   >• U R                  5       (       a  U R                  SLa  Sm[        U [        R                  5      (       a  U R                  T5      (       a  Smg g g )NFT)Ú	is_tensorÚrequires_gradrš   r   ÚNNModuleVariableÚis_training)rÆ   r‘  r_   s    €€rD   ÚvisitÚ2AutogradFunctionVariable.call_apply.<locals>.visit\  sR   ø€ à�|‰|�~‰~à×#Ñ#¨5Ò0Ø$(�MÜ˜"œi×8Ñ8×9Ñ9Ø—>‘> "×%Ñ%Ø$(‘Mð &ð :rC   r   )Ú#autograd_function_forward_rewritten)Ú_is_setup_context_definedz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.rc   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-   )ÚAutogradFunctionApplyVariabler…  )r£   r   ÚforwardÚsetup_contextTrŽ   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.)/r0   r”  r–   Úis_grad_enabledrj   Ú"torch._functorch.autograd_functionr–  Útorch.autograd.functionr—  r‚  r™  rš  ÚvjpÚautogradÚFunctionr   r   r  ÚjvpÚhigher_order_opsr˜  r   Úimport_sourcer?   r>   Úbackwardr�   r   r‚   r   ÚCLOSURE_MATCHÚAutogradFunctionContextVariabler„   rš   r¦   r§   ÚinspectÚ	signaturers   Ú
parametersrœ   rª   r   r«   r�   r    rl   )rP   r_   r‡   rJ   r”  rj   r–  r—  Ú
forward_fnÚis_setup_ctx_definedÚvjp_fnÚjvp_fnr˜  Úapply_sourcer  Úfwd_srcÚsetup_ctx_srcrq  ÚctxÚsigrÌ   r‘  s    `                   @rD   Ú
call_applyÚ#AutogradFunctionVariable.call_applyT  s³  ù€ ð ˆð	)”oð 	)¨$÷ 	)ð 	)ô 	×Ò˜e¨F ^Ô4çœU×2Ò2×4Ò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 Ó-ð ð �{�{Ö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¸Ó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 Ó-ð	.ô ØWØ% d V¨1¨T¨F°!°F°8Ð<ð3ä37¸³8×3DÑ3DÐ2EÀZðQð3ðó
rC   c                 óˆ  • U R                   R                  n[        US   R                  5      [        R
                  R                  R                  L d   e[        U[        R                  5      (       d   eU R                  c   e[        U R                  S5      n[        R                  " XUSS9nUR                  XU5      $ )Nr   r¤  TrŽ   )r‚  r¤  rl   rm   r–   Ú_dynamoÚexternal_utilsÚFakeBackwardCFunctionrš   r¦   r§   rj   r   r0   rœ   r�   )rP   r_   r‡   rJ   rq  Ú	fn_sourcerÌ   s          rD   Úcall_backwardÚ&AutogradFunctionVariable.call_backwardÑ  sž   € ð �[‰[×!Ñ!ˆä�D˜‘G—M‘MÓ"¤e§m¡m×&BÑ&B×&XÑ&XÒXÐXÐXÜ˜"œe×0Ñ0×1Ñ1Ð1Ð1Ø�{‰{Ñ&Ð&Ð&Ü˜tŸ{™{¨JÓ7ˆ	Ü×%Ò% b°YÈÑMˆØ×"Ñ" 2¨VÓ4Ð4rC   c                 ó,   • [        U R                  5      $ rU   )r‹  r‚  ©rP   r_   r‡   rJ   s       rD   r�   Ú&AutogradFunctionVariable.call_functionà  s   € ô (¨¯©Ó4Ð4rC   r`   c           
      ó®  • SSK Jn  US:X  ax  [        R                  " U R                  5      (       aA  [        U R                  5      nU" UUR                  R                  " SU/[        X45      Q76 S9$ U R                  XU5      $ US:X  a  U R                  XU5      $ U R                  b  [        U R                  U5      OS n [        R                  " U R                  U5      n[!        U["        5      (       ap  UR%                  U R                  5      n	[        R&                  " U	5      n
U
c   eUb  U
R)                  X—S9R+                  XU5      $ U
" U	5      R+                  XU5      $ [!        U[,        5      (       a/  [.        R0                  " UR2                  XS9R+                  XU5      $ [5        SS	U  S
U 3SU S3S/S9  g ! [         a    S n Nïf = f)Nr-   )Úwrap_fx_proxyr…  r�   )r_   Úproxyr¤  r   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.rc   )ÚbuilderrÀ  r   Úis_callable_allowedr‚  rˆ  r¯   Úcreate_proxyr*   r³  rº  rj   r   r§  Úgetattr_staticrÂ   rš   r¥   Ú__get__ÚlookupÚcreate_with_sourcer�   r¨   r   r«   r�   r   )rP   r_   r`   r‡   rJ   rÀ  r†  rj   r  rØ   Útraceds              rD   r¤   Ú$AutogradFunctionVariable.call_methodè  sÞ  € õ 	+à�7‹?Ü×.Ò.¨t¯{©{×;Ñ;Ü,MØ—K‘Kó-Ð)ñ %ØØŸ)™)×0Ò0Ø'Ø1ðô +¨4Ó8òñð ð —‘ r°Ó8Ð8à�ZÓØ×%Ñ% b°Ó7Ð7à6:·k±kÑ6M”Z §¡¨TÔ2ÐSWˆFðÜ×,Ò,¨T¯[©[¸$Ó?�ô ˜#œ|×,Ñ,Ø—{‘{ 4§;¡;Ó/�Ü$×+Ò+¨DÓ1�ØÑ)Ð)Ð)ØÑ%ð ×1Ñ1°$Ð1ÐF×TÑTØ fóðñ " $›<×5Ñ5°bÀÓGÐGÜ˜C¤×-Ñ-Ü ×3Ò3Ø—L‘L $ñç‘- ¨&Ó1ð2ô ØBØ*¨4¨&°°$°Ð8ð!Ø�vð 9ð!9ð
Uðóøô- "ó Ø’ðús   Ã!G ÇGÇG)r‚  )r>   r?   r@   rA   rW  r0   râ   r   rO   rä   rå   r²   r³  rº  r   r�   r¤   rB   ræ   rç   s   @rD   r‹  r‹  H  s>  ø† Ù7ð 	ðà	×	'Ñ	'ð€Nð
˜sð ¨cð °d÷ ð{à#ð{ð �?Ñ#ð{ð �S˜/Ð)Ñ*ð	{ð
 
ô{ðz5à#ð5ð �?Ñ#ð5ð �S˜/Ð)Ñ*ð	5ð
 
ô5ð5à#ð5ð �Ñ'ð5ð �S˜/Ð)Ñ*ð	5ð
 
$ô5ð@à#ð@ð ð@ð �?Ñ#ð	@ð
 �S˜/Ð)Ñ*ð@ð 
÷@ò @rC   r‹  c                   óF   • \ rS rSr% \R
                  " \S9r\\   \	S'   Sr
g)ÚSavedTensorBoxi+  )Údefault_factoryÚtensorsr=   N)r>   r?   r@   rA   ÚdataclassesÚfieldrä   rÏ  r0   rz  rB   r=   rC   rD   rÍ  rÍ  +  s   ‡ à%0×%6Ò%6ÀtÑ%L€GˆT�/Ñ"ÖLrC   rÍ  c                   óH  ^ • \ rS rSrSrSSS1\R                  kr     SS\S\S-  S\	S\S-  S	\
\	S
4   S-  S\S-  S\SS4U 4S jjjr\  SSSS\\   S-  S\\\4   S-  S\4S jj5       rS\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\S\4U 4S jjrSrU =r$ )r¦  i0  zR
Tracks an autograd.Function() context using mutation tracking in side_effects.py
rÁ  Ú	inferenceÚsaved_tensorsNrm   r©   Úneeds_input_grad.Únon_differentiablerJ   rK   c                 óZ   >• [         TU ]  " SXS.UD6  X0l        X@l        XPl        X`l        g ©N)rm   r©   r=   )rN   rO   rÓ  rÔ  rÕ  rÖ  )	rP   rm   r©   rÓ  rÔ  rÕ  rÖ  rJ   rQ   s	           €rD   rO   Ú(AutogradFunctionContextVariable.__init__<  s1   ø€ ô 	‰ÒÐF˜uÑF¸vÒFØ"ŒØ*ÔØ 0ÔØ"4ÕrC   r_   r9   r‡   c                 ó   • S nU(       a  U(       d  [        S U 5       5      nU R                  R                  R                  S [        R
                  R                  R                  [        R                  " [        S[        5       US90 5      nU$ )Nc              3   óf   #   • U  H'  oR                  5       =(       a    UR                  v •  M)     g 7frU   )r�  r‘  ©Ú.0Úxs     rD   Ú	<genexpr>Ú9AutogradFunctionContextVariable.create.<locals>.<genexpr>U  s"   é € Ð$UÒPTÈ1§[¡[£]×%F°q·±Ô%FÒPTùs   ‚/1T)rÓ  rÔ  rÕ  )rã   r¯   r™   Útrack_object_newr–   rŸ  ÚfunctionÚFunctionCtxÚ	functoolsÚpartialr¦  rÍ  )r_   r‡   rJ   rÕ  Úouts        rD   r„   Ú&AutogradFunctionContextVariable.createL  sz   € ð  ÐÞžä$Ñ$UÑPTÓ$UÓUÐØ�i‰i×$Ñ$×5Ñ5ØÜ�N‰N×#Ñ#×/Ñ/Ü×ÒÜ/ØÜ,Ó.Ø!1ñ	ð ó

ˆð ˆ
rC   c                 ór   • U R                   c  [        SSU  3S/ [        R                  QS9  U R                   $ )Nzproxy not setz	as_proxy zMDynamo requires the autograd.Function context to be initialized with a proxy.rc   )rÁ  r   r   r±   rð   s    rD   Úas_proxyÚ(AutogradFunctionContextVariable.as_proxyc  sA   € à�:‰:ÑÜØ'Ø# D 6Ð*ð2à5Ô)×4Ñ4Ð5òð �z‰zÐrC   r`   c                 ó  >• US:X  a  [         TU ]  XX45      $ US:X  aD  U(       a  [        XS[        U5       S35        [	        U0 5      S   U l        [        R                  $ US:w  a&  [        SSU  S	U 3S
U S3/ [        R                  QS9  U R                  c  [        SSU  S	U 3SS/S9  U R                  c   eU R                  (       dI  U(       d  U R                  (       d  [        US5        UR                  R                   R#                  X5        [        U R                  R$                  5      S:”  a  / U R                  l        U H(  nU R                  R$                  R'                  U5        M*     [        R                  $ )Nr  Úmark_non_differentiablez0 kwargsrh  r   Úsave_for_backwardz,Unsupported autograd.Function context methodrŠ   r‹   rÂ  z�` on `autograd.Function` context objects. Supported methods are `__setattr__`, `save_for_backward` and `mark_non_differentiable`.rc   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>save_for_backward() requires a source and no keyword arguments)rN   r¤   r+   rs   r*   rÖ  r   r1   r   r   r  rÔ  rÓ  rj   r/   r¯   r™   Útrack_save_for_backwardrÏ  Úappend)rP   r_   r`   r‡   rJ   ÚargrQ   s         €rD   r¤   Ú+AutogradFunctionContextVariable.call_methodp  sŠ  ø€ ð �=Ó Ü‘7Ñ& r°Ó>Ð>ØÐ.Ó.ÞÜ# B¨j¼SÀ»[¸MÈÐ:QÔRÜ&7¸¸bÓ&AÀ!Ñ&DˆDÔ#Ü×3Ñ3Ð3àÐ&Ó&ÜØFØ& t f¨A¨d¨VÐ4ðØ�6ð -ð-ð 7Ô)×5Ñ5Ð6òð ×ÑÑ%ÜØSØ& t f¨A¨d¨VÐ4ðOðwðò
ð ×!Ñ!Ñ-Ð-Ð-Ø�~�~Þ˜TŸ[Ÿ[Ü$ØÐXôð �I‰I×"Ñ"×:Ñ:¸4ÔFô ˆt×!Ñ!×)Ñ)Ó*¨QÓ.à)+ˆD×ÑÔ&ÛˆCØ×Ñ×&Ñ&×-Ñ-¨cÖ2ñ ä×/Ñ/Ð/rC   c                 ó  >^ ^^• TS;   a  [        UU U4S j5      $ TS:X  a@  T R                  b3  [        R                  " [	        T R                  R
                  5      5      $ TS:X  a‰  T R                  b)  [        R                  R                  T R                  5      $ T R                  (       aB  [        T R                  S5      n[        R                  " TT R                  R                  U5      $ [        TT ]=  TT5      $ )N)rí  rì  c                  ó>   >• TR                  TT[        U 5      U5      $ rU   )r¤   rä   )r‡   rJ   r`   rP   r_   s     €€€rD   rX   Ú=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>¨  s   ø€ ¨×(8Ñ(8¸¸TÄ4ÈÃ:ÈvÔ(VrC   rÔ  rÕ  )r•   rÔ  r   r   rä   rÏ  rÕ  r2   r„   rj   r   r0   rœ   rm   rN   r…   ©rP   r_   r`   rj   rQ   s   ``` €rD   r…   Ú+AutogradFunctionContextVariable.var_getattr¥  sÎ   û€ ØÐCÓCÜ!ÞVóð ð �?Ó" 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   )rÓ  rÕ  rÖ  rÔ  )NFNNN©NN)r>   r?   r@   rA   rW  r7   râ   r   rl   r!  rã   rO   r¥   r   r0   rå   r²   r„   ré  rä   r¤   r…   rB   ræ   rç   s   @rD   r¦  r¦  0  sw  ø† ñð
 	ØØðð 
#×	1Ñ	1ð	€Nð #'ØØ$(Ø48Ø)-ñ5àð5ð ˜4‘Kð5ð ð	5ð
 ˜T‘zð5ð    c 	Ñ*¨TÑ1ð5ð   $™Jð5ð ð5ð 
÷5ð 5ð  ð 26Ø48ñØ#ðà�Ñ'¨$Ñ.ðð �S˜/Ð)Ñ*¨TÑ1ðð 
ô	ó ðð,˜#ô ð30à#ð30ð ð30ð �?Ñ#ð	30ð
 �S˜/Ð)Ñ*ð30ð 
÷30ðj-Ð5ð -¸Sð -À_÷ -õ -rC   r¦  c            
       óÐ   ^ • \ rS rSrSr SS\R                  R                  S\\R                  R                     S-  S\	SS4U 4S jjjr
S	S
S\S\\   S\\\4   S\4
S jrSrU =r$ )ÚAutogradEngineVariablei·  z3
Represents a torch._C._ImperativeEngine instance.
Nrm   r©   rJ   rK   c                 ó*   >• [         TU ]  " SXS.UD6  g rØ  r~  )rP   rm   r©   rJ   rQ   s       €rD   rO   ÚAutogradEngineVariable.__init__¼  s   ø€ ô 	‰ÒÐF˜uÑF¸vÓFrC   r_   r9   r`   r‡   c                 óþ  • US:X  aá  [         R                  R                  R                  (       a¥  UR                  (       d  UR
                  (       d   S5       e[        R                  " U[         R                  R                  R                  R                  5      nUR                  UUR                  R                  R                  5       /UQ7U5      $ [        SSU  SU 3S/ S9  g [        SSU  SU 3S	U S
3/ S9  g )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.rc   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_breakr0   rœ   r·  ÚFakeCompiledAutogradEnginerý  r�   r¯   r™   Úget_ca_final_callbacks_varr   )rP   r_   r`   r‡   rJ   rÌ   s         rD   r¤   Ú"AutogradEngineVariable.call_methodÄ  sÿ   € ð Ð#Ó#Ü�}‰}×.Ñ.×J×JØ—|—| r×'>×'>ð ØnóÐ>ô (×-Ò-ØÜ—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   r=   rU   )r>   r?   r@   rA   rW  r–   rÃ   Ú_ImperativeEnginerl   r   rO   r²   rä   r0   rå   r¤   rB   ræ   rç   s   @rD   rù  rù  ·  s«   ø† ñð ?CñGà�x‰x×)Ñ)ðGð ˜Ÿ™×3Ñ3Ñ4°tÑ;ðGð ð	Gð
 
÷Gð Gð%à#ð%ð ð%ð �?Ñ#ð	%ð
 �S˜/Ð)Ñ*ð%ð 
÷%ò %rC   rù  c                   ól   ^ • \ rS rSrS\S\4   S\SS4U 4S jjrSS	S
\\   S\	\
\4   S\4S jrSrU =r$ )r•   iì  rq  .rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   rq  )rP   rq  rJ   rQ   s      €rD   rO   ÚLambdaVariable.__init__î  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�rC   r_   r9   r‡   c                 ó&   • U R                   " U0 UD6$ rU   ©rq  r½  s       rD   r�   ÚLambdaVariable.call_functionò  s   € ð �wŠw˜Ð' Ñ'Ð'rC   r
  )r>   r?   r@   rA   r   r0   r   rO   r   rå   r²   r�   rB   ræ   rç   s   @rD   r•   r•   ì  sf   ø† ð˜8 C¨Ð$8Ñ9ð ÀSð ÈT÷ ð(à#ð(ð �Ñ'ð(ð �S˜/Ð)Ñ*ð	(ð
 
÷(ò (rC   r•   c                   ó‚  ^ • \ rS rSrSS1\R
                  kr SS\S\S\S-  S\SS4
U 4S jjjr	S\4U 4S	 jjr
S\4S
 jr\S\R                  R                  S\S\4S j5       rS\4S jrS\4S jrSSS\S\4S jrSS jrSSS\\   S\\\4   S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\4S jrSrU =r$ )r�   iû  r`   Úpy_typeNr  rJ   rK   c                 ó¦   >• [         TU ]  " S0 UD6  [        U[        5      (       d   e[        U[        5      (       d   eXl        X l        X0l        g rM   )rN   rO   rš   r0   r²   r  r`   r  )rP   r  r`   r  rJ   rQ   s        €rD   rO   ÚGetAttrVariable.__init__  sJ   ø€ ô 	‰ÒÑ"˜6Ò"Ü˜#œ×/Ñ/Ð/Ð/Ü˜$¤×$Ñ$Ð$Ð$ØŒØŒ	Ø�rC   c                 óR   >• U R                   b  U R                   $ [        TU ]	  5       $ rU   )r  rN   ri   ©rP   rQ   s    €rD   ri   ÚGetAttrVariable.python_type  s%   ø€ Ø�<‰<Ñ#Ø—<‘<Ðä‘7Ñ&Ó(Ð(rC   c                 óh   • U R                   R                   SU R                   SU R                   S3$ ©NrO  z, rP  )rQ   r>   r  r`   rð   s    rD   rS  ÚGetAttrVariable.__repr__  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯H©H¨:°R¸¿	¹	°{À!ÐDÐDrC   Ú
base_proxyrÒ   c                 ó   • [        X5      $ rU   )rq   )r  rÒ   s     rD   Úcreate_getattr_proxyÚ$GetAttrVariable.create_getattr_proxy  s   € ä�zÓ(Ð(rC   c                 ór   • [         R                  U R                  R                  5       U R                  5      $ rU   )r�   r  r  ré  r`   rð   s    rD   ré  ÚGetAttrVariable.as_proxy  s&   € Ü×3Ñ3°D·H±H×4EÑ4EÓ4GÈÏÉÓSÐSrC   c                 óœ   • U R                   R                  5       n [        XR                  5      $ ! [         a    [        U  S35      S ef = f)Nz is not a constant)r  rh   rq   r`   rÂ   r®   )rP   Úconstants     rD   rh   Ú"GetAttrVariable.as_python_constant   sO   € Ø—8‘8×.Ñ.Ó0ˆð	MÜ˜8§Y¡YÓ/Ð/øÜó 	MÜ%¨¨Ð.@Ð&AÓBÈÐLð	Mús	   œ1 ±Ar_   r9   c                 ó”  • [        U R                  [        R                  5      (       d  [        eUR
                  R                  U R                  R                  5      nU R                  UR                  ;  a  [        e[        R                  " X0R                  5      nX$R                  ;  a  [        e[        R                  " XB5      $ rU   )rš   r  r   r’  r®   r¯   Úget_submoduleÚ
module_keyr`   rt   r§  rÆ  )rP   r_   r`   Ústep1Ústep2s        rD   Úconst_getattrÚGetAttrVariable.const_getattr'  sˆ   € Ü˜$Ÿ(™(¤I×$>Ñ$>×?Ñ?Ü%Ð%Ø—	‘	×'Ñ'¨¯©×(;Ñ(;Ó<ˆØ�9‰9˜EŸN™NÓ*Ü%Ð%Ü×&Ò& u¯i©iÓ8ˆØ—~‘~Ó%Ü%Ð%Ü×%Ò% eÓ2Ð2rC   c                 ó|   • U" U R                   5        UR                  UR                  U R                  5      5        g rU   )r  r[   Úcreate_load_attrsr`   ra  s     rD   r]   ÚGetAttrVariable.reconstruct2  s+   € Ù�—‘ÔØ×Ñ˜g×7Ñ7¸¿	¹	ÓBÕCrC   r‡   c                 ób   • U R                   R                  XR                  [        U5      U5      $ rU   )r  r¤   r`   rä   r½  s       rD   r�   ÚGetAttrVariable.call_function6  s%   € ð �x‰x×#Ñ# B¯	©	´4¸³:¸vÓFÐFrC   c                 ó2  >• US;   aé  U R                   S:X  aÙ  U(       dÒ  US   R                  5       (       aº  [        U R                  [        R
                  [        R                  [        R                  45      (       ar  U R                  nUS   R                  5       nUR                  X5      (       a  UR                  X5      $ US:X  a$  [        U5      S:X  a  US   $ [        R                  $ GO˜US:X  aç  U R                   S:X  a×  [        U5      S:X  aÈ  US   R                  5       (       a°  U(       d©  [        U R                  [        R
                  [        R                  [        R                  45      (       aa  U R                  nUS   R                  5       nUR                  X5      (       a  [        R                  " S5      $ [        R                  " S	5      $ US
:X  a¥  U R                   S:X  a•  U(       dŽ  [        U R                  [        R
                  5      (       a!  U R                  R                  XS   US   SS9$ [        U R                  [        R                  5      (       a  U R                  R                  U5        [         TU ]E  XX45      $ )N)Ú__getitem__ru   rt   r   ru   r   r-   Ú__contains__TFÚ__setitem__)Údirectly_update_dict)r`   Úis_python_constantrš   r  r   r7   r’  r    rh   Úhas_key_in_generic_dictr…   rs   r1   r2   r¬   Úconvert_to_unspecializedrN   r¤   )rP   r_   r`   r‡   rJ   r  ÚkeyrQ   s          €rD   r¤   ÚGetAttrVariable.call_method>  s  ø€ ð Ð*Ó*Ø—	‘	˜ZÓ'ÞØ�Q‘×*Ñ*×,Ñ,ÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ð÷ñ ð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2×3Ñ3à—‘ rÓ/Ð/ð �u‹}Ü�t“9 “>Ø ™7�Nä$×;Ñ;Ð;ñ	 ð �NÓ"Ø—	‘	˜ZÓ'Ü�D“	˜Q“Ø�Q‘×*Ñ*×,Ñ,ÞÜØ—‘ä×7Ñ7Ü×.Ñ.Ü×6Ñ6ð÷ñ ð —(‘(ˆCØ�q‘'×,Ñ,Ó.ˆCØ×*Ñ*¨2×3Ñ3Ü ×1Ò1°$Ó7Ð7ä ×1Ò1°%Ó8Ð8à�]Ó" t§y¡y°JÓ'>ÆvÜ˜$Ÿ(™(¤I×$GÑ$G×HÑHà—x‘x×7Ñ7Ø˜Q™  a¡¸tð 8ð ð ô ˜$Ÿ(™(¤I×$>Ñ$>×?Ñ?à—‘×1Ñ1°"Ô5ä‰wÑ" 2¨TÓ:Ð:rC   c                 ó€  • U R                   S:X  a]  [        U R                  [        R                  5      (       a4  UR
                  R                  R                  U R                  5      (       a   eSU R                  l        [        R                  " XR                  R                  R                  U R                  5      $ )Nrt   T)r`   rš   r  r   r    r¯   r™   Úhas_pending_mutationÚban_mutationr0   rœ   rm   rt   rj   )rP   r_   s     rD   Úget_forwarded_dictÚ"GetAttrVariable.get_forwarded_dict‚  s‚   € à�I‰I˜Ó#Ü˜4Ÿ8™8¤Y×%GÑ%G×HÑHØ—I‘I×*Ñ*×?Ñ?ÀÇÁ×IÑIð	
ðJð !%ˆ�‰ÔÜ×$Ò$ R¯©¯©×)@Ñ)@À$Ç+Á+ÓNÐNrC   )r`   r  r  rU   rá   )r>   r?   r@   rA   r0   râ   r²   rl   r   rO   ri   rS  r¥   r–   ÚfxÚProxyr  ré  rh   r$  r]   r   rå   r�   rä   r¤   r8  rB   ræ   rç   s   @rD   r�   r�   û  s’  ø† àØðð 
×	'Ñ	'ð€Nð  $ñ	àðð ðð ˜‘ð	ð
 ðð 
÷ð ð)˜T÷ )ðE˜#ô Eð ð)¨¯©¯©ð )¸sð )Àsó )ó ð)ðT˜#ô TðM Cô Mð	3Ð 7ð 	3¸sð 	3Àsô 	3ôDðGà#ðGð �Ñ'ðGð �S˜/Ð)Ñ*ð	Gð
 
ôGðB;à#ðB;ð ðB;ð �?Ñ#ð	B;ð
 �S˜/Ð)Ñ*ðB;ð 
÷B;ðHOÐ%<ð OÀ÷ Oò OrC   r�   c                   óæ   ^ • \ rS rSrS\R
                  S\SS4U 4S jjrSSS	\\	   S\
\\	4   S\	4U 4S
 jjrS\S   4S jrS\R
                  4S jrS\S   4S jrS\4S jrS\S\4S jrSrU =r$ )ÚMethodWrapperVariableiŒ  Úmethod_wrapperrJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   r>  )rP   r>  rJ   rQ   s      €rD   rO   ÚMethodWrapperVariable.__init__�  s   ø€ Ü‰ÒÑ"˜6Ò"Ø,ÕrC   r_   r9   r‡   c           	      óÞ  >• [        U R                  5      (       a~  [        US   [        R                  5      (       a\  [        U5      S:X  a  [        U5      S:X  d  [        US5        US   R                  XR                  R                  R                  5      $ U R                  R                  nU R                  R                  nUS:X  aY  [        U5      R                  nU[        R                  L a/  [        R                  " [        5      R                  UUU/UQU5      $ GO}[        R                   S:¼  a’  U[        R"                  S   L a|  US:X  av  SSKJn  [        U5      S:X  a9  U(       d2   UR)                  XR                  US   R+                  5       5      5      $ [3        S	S
U  SU SU 3SSS/[4        R6                  QS9  O×U[        R"                  S   L a  US:X  d  U[        R"                  S   L a¥  US:X  aŸ  SSKJn  [        U5      S:X  a9  U(       d2   UR)                  XR                  US   R+                  5       5      5      $ U[        R"                  S   L a  SOSn[3        SU S3S
U  SU SU 3SU S3SU S3SU S3/[4        R6                  QS9  [8        T	U ]u  XU5      $ ! [,         a    [/        [,        U5         GN,[0         a     GN8f = f! [0         a     Nšf = f)Nr   r-   z2tensor attribute getter takes exactly one argumentrO   )r“   é   rz  rÇ  )ÚSourcelessBuilderz9unsupported type.__dict__['__annotations__'].__get__ callzcall_function ú, args: ú
, kwargs: z{`torch.compile` only supports calling type.__dict__['__annotations__'].__get__ on a single constant argument (i.e. a type).zpMake sure your call to type.__dict__['__annotations__'] only has one positional argument (no keyword arguments).z„Make sure the argument to type.__dict__['__annotations__'] is a constant (i.e. type). For example, `object`, `int`, `MyCustomClass`.rc   rn   rt   zunsupported type.__dict__['z'].__get__ callz5`torch.compile` only supports calling type.__dict__['z7'].__get__ on a single constant argument (i.e. a type).z&Make sure your call to type.__dict__['zC'].__get__ only has one positional argument (no keyword arguments).z)Make sure the argument to type.__dict__['zT'].__get__ is a constant (i.e. type). For example, `object`, `int`, `MyCustomClass`.)r'   r>  rš   r   ÚTensorVariablers   r/   r…   r¢   r>   rl   rO   r”   rV   r¤   ÚsysÚversion_infort   rÃ  rC  r„   rh   rÂ   r   r.   r   r   r  rN   r�   )
rP   r_   r‡   rJ   Úself_objÚwrapper_nameÚfn_objrC  rÔ   rQ   s
            €rD   r�   Ú#MethodWrapperVariable.call_function‘  s  ø€ ô & d×&9Ñ&9×:Ñ:¼zØ�‰G”Y×-Ñ-÷@
ñ @
ô ˜“I “N¤s¨6£{°aÓ'7Ü$ØÐLôð ˜‘7×&Ñ& r×+>Ñ+>×+GÑ+G×+PÑ+PÓQÐQð ×&Ñ&×/Ñ/ˆØ×*Ñ*×3Ñ3ˆð ˜:Ó%Ü˜(“^×,Ñ,ˆFØœŸ™Ò(Ü ×0Ò0´Ó8×DÑDØØ àÐ% Ð%Øóð ñ )ô ×Ñ Ó'ð œDŸM™MÐ*;Ñ<Ò<Ø 	Ó)å2ä�4‹y˜A‹~¦fðØ,×3Ñ3Ø×/Ñ/°°Q±×0JÑ0JÓ0LÓMóð ô ØSØ(¨¨¨h°t°f¸JÀvÀhÐOð?ðFðRðô
 '×2Ñ2ðóð œ$Ÿ-™-¨	Ñ2Ò2°|ÀyÓ7PØœŸ™ jÑ1Ò1°lÀiÓ6Oå2ä�4‹y˜A‹~¦fðØ,×3Ñ3Ø×/Ñ/°°Q±×0JÑ0JÓ0LÓMóð ð &¬¯©°yÑ)AÒA‘	Àzð ô Ø5°i°[ÀÐPØ(¨¨¨h°t°f¸JÀvÀhÐOØSÐT]ÐS^ð _?ð ?ð =¸Y¸Kð HFð Fà?À	¸{ð KRð Rðô
 '×2Ñ2ðòô ‰wÑ$ R¨vÓ6Ð6øôa &ó AÜ,¬^¸R×@Ü:ó Úðûô4 ;ó Ùðús*   Å20J2 È 0K Ê2KË	KËKË
K,Ë+K,Tc                 ó   • g©NTr=   rð   s    rD   r0  Ú(MethodWrapperVariable.is_python_constantô  ó   € ØrC   c                 ó   • U R                   $ rU   ©r>  rð   s    rD   rh   Ú(MethodWrapperVariable.as_python_constant÷  s   € Ø×"Ñ"Ð"rC   c                 ó   • grN  r=   rð   s    rD   Úis_python_hashableÚ(MethodWrapperVariable.is_python_hashableú  rP  rC   c                 ó4   • [        U R                  5       5      $ rU   ©Úhashrh   rð   s    rD   Úget_python_hashÚ%MethodWrapperVariable.get_python_hashý  ó   € Ü�D×+Ñ+Ó-Ó.Ð.rC   Úotherc                 ór   • [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rU   ©rš   r0   rh   ©rP   r]  s     rD   Úis_python_equalÚ%MethodWrapperVariable.is_python_equal   ó1   € ä�uœoÓ.÷ HØ×'Ñ'Ó)¨U×-EÑ-EÓ-GÑGð	
rC   rR  )r>   r?   r@   rA   r¦   ÚMethodWrapperTyper   rO   r   r0   rå   r²   r�   r   r0  rh   rU  ÚintrZ  r”   r!  ra  rB   ræ   rç   s   @rD   r=  r=  Œ  sº   ø† ð- u×'>Ñ'>ð -È#ð -ÐRV÷ -ða7à#ða7ð �Ñ'ða7ð �S˜/Ð)Ñ*ð	a7ð
 
÷a7ðF G¨D¡Mô ð# E×$;Ñ$;ô #ð G¨D¡Mô ð/ ô /ð
 Vð 
°÷ 
ò 
rC   r=  c                   óž   ^ • \ rS rSrS\R
                  S\SS4U 4S jjrSSS	\S\	4U 4S
 jjr
S\S   4S jrS\R
                  4S jrSrU =r$ )ÚGetSetDescriptorVariablei  ÚdescrJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   )rN   rO   rh  )rP   rh  rJ   rQ   s      €rD   rO   Ú!GetSetDescriptorVariable.__init__  s   ø€ Ü‰ÒÑ"˜6Ò"Ø�	rC   r_   r9   r`   c                 óÒ   >• US:X  aR  U R                   (       aA  [        U R                   S5      n[        R                  " XR                  R
                  U5      $ [        TU ]  X5      $ )NrÇ  )rj   r   r0   rœ   rh  rÇ  rN   r…   rõ  s       €rD   r…   Ú$GetSetDescriptorVariable.var_getattr  sN   ø€ Ø�9Ó §§Ü §¡¨YÓ7ˆFÜ"×(Ò(¨¯Y©Y×->Ñ->ÀÓGÐGä‘7Ñ& rÓ0Ð0rC   Tc                 ó   • grN  r=   rð   s    rD   r0  Ú+GetSetDescriptorVariable.is_python_constant  rP  rC   c                 ó   • U R                   $ rU   ©rh  rð   s    rD   rh   Ú+GetSetDescriptorVariable.as_python_constant  s   € Ø�y‰yÐrC   rp  )r>   r?   r@   rA   r¦   ÚGetSetDescriptorTyper   rO   r²   r0   r…   r   r0  rh   rB   ræ   rç   s   @rD   rg  rg    se   ø† ð˜U×7Ñ7ð À3ð È4÷ ð1Ð5ð 1¸Sð 1À_÷ 1ð G¨D¡Mô ð E×$>Ñ$>÷ ò rC   rg  c                   óð   ^ • \ rS rSrSS1\R
                  krS\R                  S\SS4U 4S jjr	S\
\R                     4S jrS\R                  4S	 jrS\4S
 jrSSS\S\4S jrSSS\S\4S jrSrU =r$ )ÚPythonModuleVariablei  rm   Úis_torchrJ   rK   Nc                 ó¸   >• [         TU ]  " S0 UD6  Xl        U R                  [        L =(       d%    U R                  R                  R                  S5      U l        g )Nztorch.r=   )rN   rO   rm   r–   r>   Ú
startswithru  ©rP   rm   rJ   rQ   s      €rD   rO   ÚPythonModuleVariable.__init__!  sB   ø€ Ü‰ÒÑ"˜6Ò"ØŒ
ØŸ
™
¤eÐ+×W¨t¯z©z×/BÑ/B×/MÑ/MÈhÓ/Wˆ�rC   c                 ó"   • [         R                  $ rU   )r¦   Ú
ModuleTyperð   s    rD   ri   Ú PythonModuleVariable.python_type&  s   € Ü×ÑÐrC   c                 ó   • U R                   $ rU   ©rm   rð   s    rD   rh   Ú'PythonModuleVariable.as_python_constant)  ó   € Ø�z‰zÐrC   c                 ó"   • SU R                    S3$ )NzPythonModuleVariable(rP  r~  rð   s    rD   rS  ÚPythonModuleVariable.__repr__,  s   € Ø& t§z¡z l°!Ð4Ð4rC   r_   r9   r`   c                 ól   • [        U R                  U5      n[        R                  R	                  U5      $ rU   )rŸ   rm   r   r2   r„   ©rP   r_   r`   rÕ   s       rD   Úcall_obj_hasattrÚ%PythonModuleVariable.call_obj_hasattr/  s+   € ô ˜Ÿ™ TÓ*ˆÜ×)Ñ)×0Ñ0°Ó8Ð8rC   c                 ó  • UR                   R                  R                  X5      (       a%  UR                   R                  R                  X5      $ S nU R                  (       d  X R
                  R                  ;  a   [        U R
                  U5      nOU R
                  R                  U   nU R                  =(       a    [        U R                  U5      n[        R                  " XU5      $ ! [         a    [        [        U5         N\f = frU   )r¯   r™   rÀ   rÁ   ru  rm   rt   rq   rÂ   r   rj   r   r0   rœ   )rP   r_   r`   rÖ   rj   s        rD   r…   Ú PythonModuleVariable.var_getattr5  sÅ   € Ø�9‰9×!Ñ!×>Ñ>¸t×JÑJØ—9‘9×)Ñ)×3Ñ3°DÓ?Ð?àˆ
Ø�=�=˜D¯
©
×(;Ñ(;Ó;ð=Ü$ T§Z¡Z°Ó6‘
ð Ÿ™×,Ñ,¨TÑ2ˆJà—‘×>¤¨D¯K©K¸Ó!>ˆÜ×$Ò$ R°VÓ<Ð<øô "ó =Ü(¬¸Ö<ð=ús   Á=C- Ã-D
Ä	D
)ru  rm   )r>   r?   r@   rA   r0   râ   r¦   r{  r   rO   rl   ri   rh   r²   rS  r2   r…  r…   rB   ræ   rç   s   @rD   rt  rt    s¶   ø† àØðð 
×	'Ñ	'ð€NðX˜e×.Ñ.ð X¸#ð XÀ$÷ Xð
 ˜T %×"2Ñ"2Ñ3ô  ð E×$4Ñ$4ô ð5˜#ô 5ð9Ø)ð9Ø14ð9à	ô9ð=Ð5ð =¸Sð =À_÷ =ò =rC   rt  c            
       óÎ   ^ • \ rS rSrS\S\SS4U 4S jjrSSS	\S
\\   S\	\\4   S\4
S jr
SSS	\S\4S jrS\4S jrSU 4S jjrS\S   4S jrS\4S jrS\S\4S jrSrU =r$ )ÚTypingVariableiF  rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   ©rN   rO   rm   rx  s      €rD   rO   ÚTypingVariable.__init__G  ó   ø€ Ü‰ÒÑ"˜6Ò"Ø�
rC   r_   r9   r`   r‡   c                 ó  • US:X  a:  [        U5      S:X  a+  U R                  US   R                  5          n[        U5      $ US:X  ak  [        U5      S:X  a\  U(       dU  [	        US   [        5      =(       a    U R                  US   R                  :H  n[
        R                  R                  U5      $ [        SSU R                   SU SU S	U 3S
U SU R                   S3SU SU R                   S3/[        R                  QS9  g )Nr,  r-   r   r  z,unsupported method call on `typing` variableztyping variable: z, method name: rD  rE  z.`torch.compile` does not support method call `z` on `typing` variable fÚ.zAvoid calling the z method on rc   )rs   rm   rh   rŠ  r(   r   r2   r„   r   r   r  )rP   r_   r`   r‡   rJ   Ú
new_typingrÕ   s          rD   r¤   ÚTypingVariable.call_methodK  s  € ð �=Ó ¤S¨£Y°!£^ØŸ™ D¨¡G×$>Ñ$>Ó$@ÑAˆJÜ! *Ó-Ð-Ø�XÓÜ�4‹y˜A‹~¦fÜ  Q¡¬Ó8×X¸T¿Z¹ZÈ4ÐPQÉ7Ï=É=Ñ=X�Ü ×1Ñ1×8Ñ8¸Ó@Ð@ÜØBØ'¨¯
©
 |°?À4À&ÈÐQUÐPVÐV`ÐagÐ`hÐiØHÈÈÐNfÐgk×gqÑgqÐfrÐrsÐtà$ T F¨+°d·j±j°\ÀÐCðä"×.Ñ.ðó		
rC   c                 ó¨  • SSK JnJn  U[        ;   a  [        R
                  " X5      $ UR                  R                  R                  X5      (       a%  UR                  R                  R                  X5      $ [        U R                  U5      nU R                  (       a$  [        U R                  U5      nU" X5      " U5      $ UR                  X5      $ )Nr-   )rC  ÚVariableBuilder)rÃ  rC  r”  r%   r   r�   r¯   r™   rÀ   rÁ   rq   rm   rj   r   r„   )rP   r_   r`   rC  r”  rm   r×   s          rD   r…   ÚTypingVariable.var_getattrd  s�   € ß?àÔ)Ó)Ü×,Ò,¨TÓ8Ð8à�9‰9×!Ñ!×>Ñ>¸t×JÑJØ—9‘9×)Ñ)×3Ñ3°DÓ?Ð?ä˜Ÿ
™
 DÓ)ˆØ�;�;Ü$ T§[¡[°$Ó7ˆKÙ" 2Ô3°EÓ:Ð:à$×+Ñ+¨BÓ6Ð6rC   c                 ó   • U R                   $ rU   r~  rð   s    rD   rh   Ú!TypingVariable.as_python_constantt  r€  rC   c                 óÊ   >• [        U R                  [        R                  5      (       d  [        TU ]  U5      $ UR                  UR                  U R                  5      5        g rU   )rš   rm   r¦   ÚGenericAliasrN   r]   Úappend_outputÚcreate_load_constr\   s     €rD   r]   ÚTypingVariable.reconstructw  sI   ø€ Ü˜$Ÿ*™*¤e×&8Ñ&8×9Ñ9Ü‘7Ñ& wÓ/Ð/ð0 	×Ñ˜g×7Ñ7¸¿
¹
ÓCÕDrC   Tc                 ó   • grN  r=   rð   s    rD   rU  Ú!TypingVariable.is_python_hashable“  rP  rC   c                 ó4   • [        U R                  5       5      $ rU   rX  rð   s    rD   rZ  ÚTypingVariable.get_python_hash–  r\  rC   r]  c                 ór   • [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rU   r_  r`  s     rD   ra  ÚTypingVariable.is_python_equal™  rc  rC   r~  rá   )r>   r?   r@   rA   r   rO   r²   rä   r0   rå   r¤   r…   rh   r]   r   rU  re  rZ  r”   r!  ra  rB   ræ   rç   s   @rD   rŠ  rŠ  F  sÂ   ø† ð˜cð ¨Sð °T÷ ð
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ô
ð27Ð5ð 7¸Sð 7À_ô 7ð  Cô ÷Eð8 G¨D¡Mô ð/ ô /ð
 Vð 
°÷ 
ò 
rC   rŠ  )Úmaxsizec                  óä   • SSK Jn   0 nU R                  5        HS  u  p#UR                  R                  5        H0  u  pE[	        U5      (       d  M  [        X$S5      =n(       d  M,  XQU'   M2     MU     U$ )zX
This generates a mapping from numpy modules to their torch._numpy
modules equivalents.
r   )ÚNP_TO_TNP_MODULEN)Úutilsr¥  rÅ   rt   Úcallablerq   )r¥  Únp_fn_to_tnp_fnÚnp_modÚtnp_modrn  Útnp_fnÚnp_fns          rD   Úget_np_to_tnp_mapr­     sk   € õ )à€Oà+×1Ñ1Ö3‰ˆØ&×/Ñ/×5Ñ5Ö7‰OˆGÜ˜×Óô $ F°TÓ:Ð:�5×:Ø-3 EÓ*ó  8ñ 4ð ÐrC   c                  ól   • [        5       n U R                  5        VVs0 s H  u  pX!_M	     snn$ s  snnf )zs
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      rD   Úget_tnp_to_np_mapr²  µ  s.   € ô 	Ó€AØŸW™WœYÔ'šY‘T�QˆAŠD™YÒ'Ð'ùÓ's   ž0c            
       ód  ^ • \ rS rSrSr\R                  4rS\S\SS4U 4S jjr	\
S\R                  S\4S	 j5       r\
S\R                  S\4S
 j5       rSSS\\   S\\\4   S\4S jrSSS\S\\   S\\\4   S\4
S jrS\4S jrS\4U 4S jjrS\S   4S jrS\4S jrS\S\4S jrSr U =r!$ )ÚNumpyVariablei¿  zr
Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   ÚNumpyVariable.__init__Æ  rŽ  rC   rq  c                 óŒ   • UR                   R                  S5      n[        U5      S:¼  a  US S SS/:X  d   eXR                  ;   $ ©Nr�  r   r–   Ú_numpy)r?   Úsplitrs   Úconstant_fold_functions©rþ   rq  Úmods      rD   Úcan_constant_fold_throughÚ'NumpyVariable.can_constant_fold_throughÊ  sH   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1‹}  R a ¨W°hÐ,?Ó!?Ð?Ð?Ø×0Ñ0Ñ0Ð0rC   c                 óš   • UR                   R                  S5      n[        U5      S:¼  a  US S SS/:X  d   e[        R	                  U5      $ r¸  )r?   rº  rs   Únp_constant_collections_mapru   r¼  s      rD   Ú get_constant_collection_for_funcÚ.NumpyVariable.get_constant_collection_for_funcÐ  sJ   € à�m‰m×!Ñ! #Ó&ˆÜ�3‹x˜1‹}  R a ¨W°hÐ,?Ó!?Ð?Ð?Ü*×.Ñ.¨rÓ2Ð2rC   r_   r9   r‡   c                 ó  • [         R                  (       d.  [        SSU R                   SU SU 3SU R                   S3S/S9  S	S
KJn  SSKJn  [        5       R                  U R                  5      nUcA  [        SSU R                   SU SU SU S3	SU R                   S3/ [        R                  QS9  Uc   eU R                  U5      =n bh   U" U R                  " U Vs/ s H  oˆR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pšXšR                  5       _M     sn
n	D65      $ UR"                  S:X  aV  [         R$                  (       aA  [        SSU R                   SU SU SU S3	SU R                   S3SSU R                   S3/S9  UR'                  UR(                  X#5      u  p#U R+                  U5      (       a’  [-        X#5      (       a‚  [.        R0                  R3                  U R                  5       " U Vs/ s H  oˆR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pšXšR                  5       _M     sn
n	D65      $ UR4                  R6                  " SU" U5      /[9        X#5      Q76 nUR3                  X5      $ s  snf s  sn
n	f ! [         aD    [        SSU R                   SU SU SU S3	SU R                   S3/ [        R                   QS9   g f = fs  snf s  sn
n	f )Nz?attempted to trace numpy function with config.trace_numpy=Falseúnumpy function: rD  rE  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.rc   r   )Únumpy_to_tensor_wrapperr-   )ÚNumpyNdarrayVariablez8attempted to trace numpy function unsupported by PyTorchz  (corresponding torch function: rP  z Can't find numpy numpy function z in torch._numpy.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 r�  r�   )r   Útrace_numpyr   rm   r¦  rÆ  ÚtensorrÇ  r­  ru   r   r  rÂ  rh   rÅ   r.   Ú
USER_ERRORr?   Úuse_numpy_random_streamÚ
patch_argsr>   r¾  r$   r   r2   r„   r¯   rÅ  r*   )rP   r_   r‡   rJ   rÆ  rÇ  rØ   Úcollection_variable_typrÞ  r°  r±  rÁ  s               rD   r�   ÚNumpyVariable.call_functionÖ  sV  € ô ×!×!ÜØ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ðò	ð ÑÐÐà'+×'LÑ'LÈTÓ'RÐRÐ#ØñðÙ.Ø—J’JÙ:>Ó?º$°Q×.Ñ.Ö0¹$Ñ?ðàAGÇÁÄÔPÂ¹¸˜1×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¿=¹=È$ÓW‰LˆDà×-Ñ-¨d×3Ñ3Ü-¨d×;Ñ;ô !×1Ñ1×8Ñ8Ø×+Ñ+Ô-Ù:>Ó?º$°Q×.Ñ.Ö0¹$Ñ?ðàAGÇÁÄÔPÂ¹¸˜1×2Ñ2Ó4Ò4ÁÒPñóð ð —I‘I×*Ò*ØÙ'¨Ó-ðô # 4Ó0òˆEð
 (×.Ñ.¨rÓ9Ð9ùòe @ùÛPøô 7ó 
ÜØrØ.¨t¯z©z¨l¸(À4À&È
ÐSYÐRZÐZzÐ{ð  {Að  ABð  CØ"1°$·*±*°ð >@ð !@ðÜ*×5Ñ5ðô	ð
üòF @ùÛPs=   ÃJ. Ã$J#Ã=J. ÄJ(Ä/	J. ÈK?È?LÊ#J. Ê.AK<Ë;K<r`   c           	      ób   • [        SSU R                   SU SU 3S/ [        R                  QS9  g )Nz/attempted to trace numpy.* function as a methodrÅ  rD  rE  z6Tracing numpy.* functions as methods is not supported.rc   )r   rm   r   rž   )rP   r_   r`   r‡   rJ   s        rD   r¤   ÚNumpyVariable.call_method1  s?   € ô 	ØEØ& t§z¡z l°(¸4¸&À
È6È(ÐSØPðÜ"×,Ñ,ðó		
rC   c                 ó   • U R                   $ rU   r~  rð   s    rD   rh   Ú NumpyVariable.as_python_constantA  r€  rC   c                 ó  >• [         R                  (       aj  [        U R                  [        R
                  5      (       a  U R                  $ [        U R                  [        5      (       a  U R                  R                  $ [        TU ]%  5       $ rU   )
r   rÈ  rš   rm   ÚenumÚEnumMetarl   r>   rN   ré  r  s    €rD   ré  ÚNumpyVariable.as_proxyD  s\   ø€ Ü××ä˜$Ÿ*™*¤d§m¡m×4Ñ4à—z‘zÐ!Ü˜$Ÿ*™*¤d×+Ñ+ð —z‘z×*Ñ*Ð*ä‰wÑÓ!Ð!rC   Tc                 ó   • grN  r=   rð   s    rD   rU  Ú NumpyVariable.is_python_hashableR  rP  rC   c                 ó4   • [        U R                  5       5      $ rU   rX  rð   s    rD   rZ  ÚNumpyVariable.get_python_hashU  r\  rC   r]  c                 ór   • [        U[        5      =(       a!    U R                  5       UR                  5       :H  $ rU   r_  r`  s     rD   ra  ÚNumpyVariable.is_python_equalX  rc  rC   r~  )"r>   r?   r@   rA   rW  ÚtnpÚ
issubdtyper»  r   rO   r¨   r¦   r§   r!  r¾  rÂ  r   r0   rå   r²   r�   rä   r¤   r   rh   ré  r   rU  re  rZ  r”   ra  rB   ræ   rç   s   @rD   r´  r´  ¿  sR  ø† ñð  #Ÿ~™~Ð/Ðð˜cð ¨Sð °T÷ ð ð1¨5×+=Ñ+=ð 1À$ó 1ó ð1ð
 ð3°%×2DÑ2Dð 3Èó 3ó ð3ð
Y:à#ðY:ð �Ñ'ðY:ð �S˜/Ð)Ñ*ð	Y:ð
 
ôY:ðv
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
ô
ð Ð$7ô ð"˜#÷ "ð G¨D¡Mô ð/ ô /ð
 Vð 
°÷ 
ò 
rC   r´  c                   óL   ^ • \ rS rSrS\SS4U 4S jjrS\4S jrS	S jrSr	U =r
$ )
ÚNullVariablei`  rJ   rK   Nc                 ó&   >• [         TU ]  " S0 UD6  g rM   r~  r  s     €rD   rO   ÚNullVariable.__init__a  r�  rC   c                 ó   • g)Nrà  r=   rð   s    rD   rS  ÚNullVariable.__repr__d  s   € ØrC   c                 ó˜   • [         R                  S:  a  [        SSS/ [        R                  QS9  UR                  [        S5      5        g )N)r“   é   z0cannot reconstruct NullVariable in Python < 3.11rb   zdAttempted to generate PUSH_NULL instruction in Python < 3.11; where this instruction does not exist.rc   Ú	PUSH_NULL)rG  rH  r   r   r±   rš  r   ra  s     rD   r]   ÚNullVariable.reconstructg  sL   € Ü×Ñ˜gÓ%ÜØJØð9ðÜ&×1Ñ1ðòð 	×ÑÔ0°Ó=Õ>rC   r=   rá   )r>   r?   r@   rA   r   rO   r²   rS  r]   rB   ræ   rç   s   @rD   rà  rà  `  s,   ø† ð# ð #¨÷ #ð˜#ô ÷?ò ?rC   rà  c                   ó   • \ rS rSrSrSrg)r´   iu  z"Marker used to implement delattr()r=   NrV  r=   rC   rD   r´   r´   u  s   † Ü,rC   r´   c            
       ó¾   ^ • \ rS rSrSrS1\R                  kr\S\S\	\   S\
\\4   S\4S j5       rS\S\	\   S\
\\4   S\SS	4
U 4S
 jjrS\4S jrSS jrSrU =r$ )ÚStringFormatVariableiy  zS
Represents a call to str.format(), we delay calling format until after the graph.
Úformat_stringÚsym_argsÚ
sym_kwargsrK   c                 ó¾  • [        S [        R                  " X#R                  5       5       5       5      (       a~  [        R
                  R                  UR                  " U Vs/ s H  oDR                  5       PM     sn0 UR                  5        VVs0 s H  u  pTXTR                  5       _M     snnD65      $ U " U[        U5      [        U5      5      $ s  snf s  snnf )Nc              3   óB   #   • U  H  nUR                  5       v •  M     g 7frU   )r0  rÜ  s     rD   rß  Ú.StringFormatVariable.create.<locals>.<genexpr>‡  s#   é € ð 
âC�ð × Ñ ×"Ð"ÚCùs   ‚)ÚallÚ	itertoolsÚchainÚvaluesr   r2   r„   Úformatrh   rÅ   rä   rå   )rþ   rì  rí  rî  r±  r°  s         rD   r„   ÚStringFormatVariable.create€  sÅ   € ô ñ 
ä—_’_ X×/@Ñ/@Ó/BÔCó
÷ 
ñ 
ô ×-Ñ-×4Ñ4Ø×$Ò$Ù6>Ó?²h°×*Ñ*Ö,±hÑ?ðà=G×=MÑ=MÔ=OÔPÒ=O±T°Q�q×.Ñ.Ó0Ò0Ñ=OÒPñóð ñ �=¤$ x£.´$°zÓ2BÓCÐCùò	 @ùÛPs   Á#CÂCrJ   Nc                 óx   >• [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        X l        X0l        g rM   )rN   rO   rš   r²   rì  rí  rî  )rP   rì  rí  rî  rJ   rQ   s        €rD   rO   ÚStringFormatVariable.__init__“  s8   ø€ ô 	‰ÒÑ"˜6Ò"Ü˜-¬×-Ñ-Ð-Ð-Ø*ÔØ ŒØ$�rC   c                 óˆ   • U R                   R                   SU R                  < SU R                  < SU R                  < S3$ r  )rQ   r>   rì  rí  rî  rð   s    rD   rS  ÚStringFormatVariable.__repr__   sB   € Ø—.‘.×)Ñ)Ð*¨!¨D×,>Ñ,>Ñ+AÀÀDÇMÁMÑCTÐTVÐW[×WfÑWfÑViÐijÐkÐkrC   c                 ó¢  ^ ^• TR                  UU 4S jSS9  T" [        R                  " [        T R                  5      5      5        T R
                  R                  5        VVs0 s H%  u  p#[        R                  R                  U5      U_M'     nnnT" [        R                  " U5      5        TR                  [        SS5      5        g s  snnf )Nc                  óz   >• T R                  T R                  TR                  5      T R                  S5      /5      $ )Nrö  )r[   r›  rì  Úcreate_load_attrr3  s   €€rD   rX   Ú2StringFormatVariable.reconstruct.<locals>.<lambda>¥  s7   ø€ �G×)Ñ)à×-Ñ-¨d×.@Ñ.@ÓAØ×,Ñ,¨XÓ6ðôrC   T)Úcall_function_exF)rZ   r   r   rä   rí  rî  rÅ   r2   r„   ÚConstDictVariabler[   r   )rP   rW   r°  r±  rJ   s   ``   rD   r]   Ú StringFormatVariable.reconstruct£  s°   ù€ Ø×Ñõð "ð 	ñ 	
ñ 	”	×'Ò'¬¨T¯]©]Ó(;Ó<Ô=à@DÇÁ×@UÑ@UÔ@Wô
Ú@W¹¸ŒI×&Ñ&×-Ñ-¨aÓ0°!Ò3Ñ@Wð 	ñ 
ñ 	”	×+Ò+¨FÓ3Ô4Ø×ÑÔ5°d¸EÓBÕCùó	
s   Á$,C)rì  rí  rî  rá   )r>   r?   r@   rA   rW  r0   râ   r¨   r²   r   rå   r„   r   rO   rS  r]   rB   ræ   rç   s   @rD   rë  rë  y  sÈ   ø† ñð &ÐG¨×(FÑ(FÐG€NàðDàðDð ˜?Ñ+ðDð ˜˜oÐ-Ñ.ð	Dð
 
óDó ðDð$%àð%ð ˜?Ñ+ð%ð ˜˜oÐ-Ñ.ð	%ð
 ð%ð 
÷%ðl˜#ô l÷Dò DrC   rë  c                   óL   ^ • \ rS rSrS\S\SS4U 4S jjrS\\   4S jrSr	U =r
$ )	ÚObjectVariableiµ  rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   ÚObjectVariable.__init__·  rŽ  rC   c                 ó   • [         $ rU   )r”   rð   s    rD   ri   ÚObjectVariable.python_type»  s   € ÜˆrC   r~  )r>   r?   r@   rA   r”   r   rO   rl   ri   rB   ræ   rç   s   @rD   r  r  µ  s2   ø† ð˜fð °ð ¸÷ ð˜T &™\÷ ò rC   r  c            	       óô   ^ • \ rS rSrSrS\S\SS4U 4S jjr\S\S\\	R                  \	R                  -     4S	 j5       rS
SS\\   S\\\4   SS4S jrSS jr\S\S\\   S\\\4   S\4S j5       rSrU =r$ )ÚDebuggingVariablei¿  zz
Represents a call to a debugging function like print(), or something
registered to config.reorderable_logging_functions.
rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   ÚDebuggingVariable.__init__Å  rŽ  rC   r  c                 óÖ   • [        U 5      =(       aX    [        U [        R                  [        R                  45      =(       a'    U [
        R                  R                  R                  ;   $ rU   )	r§  rš   r¦   r§   r   r–   r¶  r   Úreorderable_logging_functionsr  s    rD   Úis_reorderable_logging_functionÚ1DebuggingVariable.is_reorderable_logging_functionÉ  sO   € ô
 �S‹M÷ JÜ˜3¤×!3Ñ!3´U×5NÑ5NÐ OÓP÷Jà”u—}‘}×+Ñ+×IÑIÑIð	
rC   r_   r9   r‡   c           	      ó  • UR                   (       a  g U R                  U R                  X#5      (       d.  [        SSU R                   SU SU 3SSU R                   S3/S9  UR                  R                  U [        U5      45        g )	NzJattempted to reorder a debugging function that can't actually be reorderedzfn: rD  rE  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.rc   )ÚexportÚcan_reorder_logsrm   r   Údebug_localsrï  rä   r½  s       rD   r�   ÚDebuggingVariable.call_functionÔ  s…   € ð �9�9àà×$Ñ$ T§Z¡Z°×>Ñ>ÜØdØ˜tŸz™z˜l¨(°4°&¸
À6À(ÐKð@ð :¸$¿*¹*¸ÐEgÐhðòð 	�‰×Ñ ¤d¨4£jÐ1Õ2rC   c                 óV   • U R                   c   eU R                   R                  U5      $ rU   )rj   r]   ra  s     rD   r]   ÚDebuggingVariable.reconstructë  s'   € Ø�{‰{Ñ&Ð&Ð&Ø�{‰{×&Ñ& wÓ/Ð/rC   rq  c                 ó²   • [         R                  [         R                  [        4n[        R
                  " X/5      nU H  n[        XS5      (       a  M    g   g)zU
Run some additional checks for what sort of function calls can we
actually reorder.
FT)r   rF  r2   rë  ÚpytreeÚtree_leavesrš   )rq  r‡   rJ   Úallowed_input_typesÚ	flat_argsrð  s         rD   r  Ú"DebuggingVariable.can_reorder_logsï  sR   € ô ×$Ñ$Ü×&Ñ&Ü ð
Ðô ×&Ò&¨ ~Ó6ˆ	ÛˆCÜ˜c×7Ó7Ùñ ð rC   r~  rá   )r>   r?   r@   rA   rW  r   rO   r¥   r   r¦   r§   r   r  r   r0   rå   r²   r�   r]   r!  r  rB   ræ   rç   s   @rD   r
  r
  ¿  sØ   ø† ñð
˜cð ¨Sð °T÷ ð ð
Øð
à	�5×%Ñ%¨×(AÑ(AÑAÑ	Bó
ó ð
ð3à#ð3ð �Ñ'ð3ð �S˜/Ð)Ñ*ð	3ð
 
ô3ô.0ð ð˜Sð ¨°©ð ¸tÀCÈÀH¹~ð ÐRVó ó örC   r
  c                   óf   ^ • \ rS rSrSrS\S\SS4U 4S jjrSS	S
\\   S\	\
\4   S\4S jrSrU =r$ )ÚIgnoredFunctionVariablei  zD
Represents a call to an arbitrary function that should be ignored.
rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   Ú IgnoredFunctionVariable.__init__	  rŽ  rC   r_   r9   r‡   c                 ó"   • [         R                  $ rU   )r   r1   r½  s       rD   r�   Ú%IgnoredFunctionVariable.call_function  s   € ô ×/Ñ/Ð/rC   r~  ©r>   r?   r@   rA   rW  r   rO   r   r0   rå   r²   r�   rB   ræ   rç   s   @rD   r  r    sa   ø† ñð˜cð ¨Sð °T÷ ð0à#ð0ð �Ñ'ð0ð �S˜/Ð)Ñ*ð	0ð
 
÷0ò 0rC   r  c            
       ó~   ^ • \ rS rSrSrS\R                  S\SS4U 4S jjrSS	S
\	S\
\   S\\	\4   S\4
S jrSrU =r$ )ÚLoggingLoggerVariablei  z2
Represents a call to any logging.Logger methods.
rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   ÚLoggingLoggerVariable.__init__  rŽ  rC   r_   r9   r`   r‡   c                 óP  • UR                   (       a  [        R                  $ [        U R                  US 5      n[        USS 5      n[
        R                  R                  R                  nXW;   d  Xg;   a  [        R                  $ [        SSU R                   SU SU SU 3SS/S	9  g )
Nr�   z8logging.Logger method not supported for non-export caseszmethod: r�  rD  rE  z>logging.Logger methods are not supported for non-export cases.zJAdd the logging method to `torch._dynamo.config.ignore_logging_functions`.rc   )
r  r   r1   rq   rm   r–   r¶  r   Úignore_logging_functionsr   )rP   r_   r`   r‡   rJ   Úmethodrâ  Ú
ignore_sets           rD   r¤   Ú!LoggingLoggerVariable.call_method  s›   € ð �9�9ä×3Ñ3Ð3ä˜Ÿ™ T¨4Ó0ˆÜ˜6 :¨tÓ4ˆô —]‘]×)Ñ)×BÑBˆ
àÓ 8Ó#9Ü×3Ñ3Ð3äØNØ˜tŸz™z˜l¨!¨D¨6°¸$¸¸zÈ&ÈÐRØXà\ðó		
rC   r~  )r>   r?   r@   rA   rW  ÚloggingÚLoggerr   rO   r²   rä   r0   rå   r¤   rB   ræ   rç   s   @rD   r&  r&    so   ø† ñð˜gŸn™nð ¸ð À÷ ð
à#ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
÷
ò 
rC   r&  c            
       óü   ^ • \ rS rSrSr SSKJrJr	J
r  S\S\S	S
4U 4S jjr\S	\4S j5       rS	\4S jrSSS\S\\   S\\\4   S	\4
S jrSSS\S	\4S jrSrU =r$ ! \ a    \" SS0 5      r	\" SS0 5      r Nef = f)ÚConstantLikeVariablei=  z8self.value is a compile-time constant, but not a literalr   )ÚdtypeÚfloatingÚgenericÚinvalid_typer=   rm   rJ   rK   Nc                 ó2   >• [         TU ]  " S0 UD6  Xl        g rM   rŒ  rx  s      €rD   rO   ÚConstantLikeVariable.__init__L  rŽ  rC   c                 óš   • [        U R                  5      nUR                  S:X  a  UR                  $ UR                   SUR                   3$ )z4Dynamically compute the prefix from the value's typer�   r�  )rl   rm   r?   r@   )rP   Úts     rD   Ú_error_prefixÚ"ConstantLikeVariable._error_prefixP  sD   € ô �—‘Óˆð �<‰<˜:Ó%Ø—>‘>Ð!à—,‘,�˜q §¡Ð 0Ð1Ð1rC   c                 ó   • U R                   $ rU   r~  rð   s    rD   rh   Ú'ConstantLikeVariable.as_python_constant[  r€  rC   r_   r9   r`   r‡   c                 óð  • / 0 pe U Vs/ s H  owR                  5       PM     nnUR                  5        VV	s0 s H  u  p‰X‰R                  5       _M     nnn	[        U R                  U5      " U0 UD6n
[        R                  R                  U
5      (       a  [        R                  R                  U
5      $ [        U
[        R                  5      (       a  [        U
5      $ [        S
U R                   SU SU SU SU
 3	SU R                   SU SU
 S3/ [        R                   QS	9  g s  snf s  sn	nf ! [         a8    [        SU R                   SU SU SU S3SU R                   SU S3S/S	9   GNf = f)Nz0constant-like method call with non-constant argsr�  z(*z, **rP  zAttempted to call z with non-constant args.zFEnsure that the args to the method call are constant (int, str, etc.).rc   z6constant-like method call with unsupported return typez) returned z, got unsupported return value )rh   rÅ   r®   r   r:  rq   rm   r   r2   r€   r„   rš   ÚreÚMatchr1  r   r  )rP   r_   r`   r‡   rJ   ÚcargsÚckwargsrÞ  r°  r±  rÕ   s              rD   r¤   Ú ConstantLikeVariable.call_method^  sŠ  € ð ˜Rˆwð	á59Ó:²T°×)Ñ)Ö+±TˆEÐ:Ø=C¿\¹\¼^ÔLº^±T°Q�q×.Ñ.Ó0Ò0¹^ˆGÑLô ˜Ÿ™ TÔ*¨EÐ=°WÑ=ˆä×%Ñ%×0Ñ0°×8Ñ8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü�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,   …D3 ‰D(¢D3 ·D-ÁD3 Ä(D3 Ä3>E5Å4E5c                 óÒ  • [        U R                  U5      n[        X0R                  5      (       a  [	        U5      n[        X0R
                  5      (       a  [        U5      $ [        U[        5      (       a%  [        X0R                  5      (       a  [        U5      $ [        R                  R                  U5      (       a  [        R                  R                  U5      $ [        X5      $ rU   )rq   rm   rš   Únp_floatingÚfloatÚnp_dtypeÚNumpyDTypeVariablerl   rk   Ú
np_genericr´  r   r2   r€   r„   r�   r„  s       rD   r…   Ú ConstantLikeVariable.var_getattr…  s¥   € Ü˜Ÿ™ TÓ*ˆÜ�f×.Ñ.×/Ñ/Ü˜6“]ˆFÜ�fŸm™m×,Ñ,Ü% fÓ-Ð-Ü�fœd×#Ñ#¬
°6¿?¹?×(KÑ(Kä  Ó(Ð(Ü×%Ñ%×0Ñ0°×8Ñ8Ü×-Ñ-×4Ñ4°VÓ<Ð<Ü˜tÓ*Ð*rC   r~  )r>   r?   r@   rA   rW  Únumpyr2  rG  r3  rE  r4  rI  ÚImportErrorrl   r   rO   Úpropertyr²   r:  rh   rä   r0   rå   r¤   r…   rB   ræ   rç   s   @rD   r1  r1  =  sé   ø† ÙBð
0÷	
ñ 	
ð˜cð ¨Sð °T÷ ð ð2˜só 2ó ð2ð Cô ð%
à#ð%
ð ð%
ð �?Ñ#ð	%
ð
 �S˜/Ð)Ñ*ð%
ð 
ô%
ðN+Ð5ð +¸Sð +À_÷ +ò +øð ó 0á˜>¨2¨rÓ2ˆá˜¨¨BÓ/Šð	0ús   ‹
A ÁA;Á:A;r1  c                   ó8   ^ • \ rS rSrSrS\SS4U 4S jjrSrU =r$ )ÚTorchVersionVariablei“  ztorch.__version__rJ   rK   Nc                 ó–   >• UR                  S[        R                  5        US   [        R                  L d   e[        TU ]  " S0 UD6  g )Nrm   r=   )Ú
setdefaultr–   Ú__version__rN   rO   r  s     €rD   rO   ÚTorchVersionVariable.__init__–  sA   ø€ Ø×Ñ˜'¤5×#4Ñ#4Ô5Ø�g‰¤%×"3Ñ"3Ò3Ð3Ð3Ü‰ÒÑ"˜6Ó"rC   r=   )	r>   r?   r@   rA   r:  r   rO   rB   ræ   rç   s   @rD   rO  rO  “  s    ø† Ø'€Mð# ð #¨÷ #õ #rC   rO  c                   ó"   • \ rS rSrS\4S jrSrg)rH  iœ  rK   c                 óB   • U R                   R                  R                  $ )a  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).
)rm   rl   r>   rð   s    rD   ré  ÚNumpyDTypeVariable.as_proxy�  s   € ð �z‰z�‰×'Ñ'Ð'rC   r=   N)r>   r?   r@   rA   r²   ré  rB   r=   rC   rD   rH  rH  œ  s   † ð(˜#÷ (rC   rH  c                   ób   ^ • \ rS rSrSrS\SS4U 4S jjrSSS	\\   S\	\
\4   SS
4S jrSrU =r$ )ÚRandomClassVariablei­  zrandom.RandomrJ   rK   Nc                 ó&   >• [         TU ]  " S0 UD6  g rM   r~  r  s     €rD   rO   ÚRandomClassVariable.__init__°  r�  rC   r_   r9   r‡   ÚRandomVariablec                 ó  • [        U5      S:”  d  U(       a"  [        SSU SU 3S/ [        R                  QS9  [        U5      S:X  a  [        R
                  OUS   n[        U[        R                  R                  5       S9$ )	Nr-   z'random.Random() with improper argumentszargs: rE  z=random.Random() with > 1 arg or with kwargs is not supported.rc   r   )Úseedr›   )	rs   r   r   rÊ  r   r1   r[  ÚbaseÚValueMutationNew)rP   r_   r‡   rJ   r]  s        rD   r�   Ú!RandomClassVariable.call_function³  s~   € ô ˆt‹9�q‹=žFÜØAØ    j°°Ð9Ø[ðÜ&×1Ñ1ðò	ô 47°t³9À³>Œy×/Ò/ÀtÈAÁwˆÜØ¤Y§^¡^×%DÑ%DÓ%Fñ
ð 	
rC   r=   r$  rç   s   @rD   rX  rX  ­  sX   ø† Ùð# ð #¨÷ #ð
à#ð
ð �Ñ'ð
ð �S˜/Ð)Ñ*ð	
ð
 
÷
ò 
rC   rX  c            
       óÚ  ^ • \ rS rSrSrS1\R                  kr1 Skr  SS\R                  S-  S\S-  S\
S	S4U 4S
 jjjrS	\\R                     4S jrS	\R                  4S jr\S\	S	\4S j5       r\S\\\\S4   \S-  4   S	S4S j5       r\S\\\\S4   \S-  4   S	\4S j5       r\S\S	\\\\S4   \S-  4   4S j5       rSSS\S\\   S\\\4   S	\4
U 4S jjrSS jrSrU =r$ )r[  iÈ  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>   rb  ÚrandintÚuniformÚ	randrangeNÚrandr]  rJ   rK   c                 óD  >• [         TU ]  " S0 UD6  Ub\  U R                  U5      (       d   e[        R                  " 5       U l        U R                  R                  UR                  5       5        g Ub  UR                  5       OS n[        R                  " U5      U l        g rM   )rN   rO   Úis_supported_random_objrb  r   ÚsetstateÚgetstaterh   )rP   rf  r]  rJ   rQ   s       €rD   rO   ÚRandomVariable.__init__Ü  s|   ø€ ô 	‰ÒÑ"˜6Ò"ØÑØ×/Ñ/°×5Ñ5Ð5Ð5Ü Ÿ-š-›/ˆDŒKØ�K‰K× Ñ  §¡£Õ1à04Ñ0@�4×*Ñ*Ô,ÀdˆDÜ Ÿ-š-¨Ó-ˆD�KrC   c                 ó"   • [         R                  $ rU   )rb  r   rð   s    rD   ri   ÚRandomVariable.python_typeë  s   € Ü�}‰}ÐrC   c                 ó   • U R                   $ rU   ©rb  rð   s    rD   rh   Ú!RandomVariable.as_python_constantî  s   € Ø�{‰{ÐrC   r  c                 ó¼  • [        U 5      [        R                  La  g[        R                  " [
        R                  S5       H–  n[        X5      (       d    g[        X5      n[        R                  " U5      (       a1  U[        [        R                  U5      R                  U 5      :w  a    gMl  [        USS 5      [        [        R                  U5      Ld  M–    g   g)NF)r]  rj  ri  r�   T)rl   rb  r   ró  rô  r[  Ú_supported_fn_namesrŸ   rq   r§  Ú	isbuiltinrÇ  )r  r`   Úmeths      rD   rh  Ú&RandomVariable.is_supported_random_objñ  s­   € ä�‹9œFŸM™MÒ)ØÜ—O’OÜ×.Ñ.Ð0Pö
ˆDô ˜3×%Ñ%ÙÜ˜3Ó%ˆDÜ× Ò  ×&Ñ&àœ7¤6§=¡=°$Ó7×?Ñ?ÀÓDÓDÙ ñ Eô ˜4 ¨TÓ2¼'Ä&Ç-Á-ÐQUÓ:VÔVÙ ñ
ð rC   Ústate.c                 óü   • [        U 5      [        L d   e[        U S   5      [        L d   e[        U S   5      [        L d   e[        S U S    5       5      (       d   eU S   b  [        U S   5      [        L d   eg g )Nr   r-   c              3   óD   #   • U  H  n[        U5      [        L v •  M     g 7frU   )rl   re  rÜ  s     rD   rß  Ú-RandomVariable.check_state.<locals>.<genexpr>		  s   é € Ð4ª8 a”4˜“7œc•>ª8ùs   ‚ r   )rl   rã   re  rò  rF  )rv  s    rD   Úcheck_stateÚRandomVariable.check_state	  s€   € ä�E‹{œeÒ#Ð#Ð#Ü�E˜!‘H‹~¤Ò$Ð$Ð$Ü�E˜!‘H‹~¤Ò&Ð&Ð&ÜÑ4¨5°ª8Ó4×4Ñ4Ð4Ð4Ø�Q‰xÑ¤4¨¨a©£>´UÒ#:Ð:Ð:Ð#:ÐrC   c                 ór  • [         R                  U 5        [        R                  " [        R                  R                  U S   5      [        R                  " U S    Vs/ s H"  n[        R                  R                  U5      PM$     sn5      [        R                  R                  U S   5      /5      $ s  snf )Nr   r-   r   )r[  rz  r   r   r2   r„   )rv  rÞ  s     rD   Ú
wrap_stateÚRandomVariable.wrap_state	  s•   € ä×"Ñ" 5Ô)Ü×&Ò&ä×*Ñ*×1Ñ1°%¸±(Ó;Ü×'Ò'ØCHÈÂ8ÓLÂ8¸a”Y×/Ñ/×6Ñ6°qÖ9Á8ÑLóô ×*Ñ*×1Ñ1°%¸±(Ó;ðó
ð 	
ùò Ms   Á)B4c                 óP   • U R                  5       n[        R                  U5        U$ rU   )rh   r[  rz  )rv  Ú	state_objs     rD   Úunwrap_stateÚRandomVariable.unwrap_state	  s&   € ð ×,Ñ,Ó.ˆ	Ü×"Ñ" 9Ô-ØÐrC   r_   r9   r`   r‡   c                 ó’  >^^• TS:X  a   UR                   R                  R                  U 5        U R                  R                  " U Vs/ s H  oUR                  5       PM     sn0 UR                  5        VVs0 s H  u  pgXgR                  5       _M     snnD6  [        R                  $ TS:X  a)  U R                  U R                  R                  5       5      $ TS:X  ab  UR                   R                  R                  U 5        U R                  R                  U R                  US   5      5        [        R                  $ TU R                  ;   aÑ  UR                   R                  R                  U 5        U R                  R                  5       mS[        S[        S[        4UU4S jjn[        U R                  T5      " U Vs/ s H  oUR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pšXšR                  5       _M     sn
n	D6  [!        XX45      $ ["        TU ]I  UTX45      $ s  snf s  snnf s  snf s  sn
n	f )	Nr]  rj  ri  r   r‡   rJ   rK   c                  ót   >• [         R                  " 5       nUR                  T5        [        UT5      " U 0 UD6$ rU   )rb  r   ri  rq   )r‡   rJ   Úrr`   rv  s      €€rD   Úcall_random_methÚ4RandomVariable.call_method.<locals>.call_random_meth9	  s1   ø€ Ü—M’M“O�Ø—
‘
˜5Ô!Ü˜q $Ô'¨Ð8°Ñ8Ð8rC   )r¯   r™   Úmutationrb  r]  rh   rÅ   r   r1   r}  rj  ri  r�  rr  r   rq   r5   rN   r¤   )rP   r_   r`   r‡   rJ   rÞ  r3  r  r†  r°  r±  rv  rQ   s     `        @€rD   r¤   ÚRandomVariable.call_method!	  sÜ  ú€ ð �6‹>Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K×ÒÙ26Ó7²$¨Q×&Ñ&Ö(±$Ñ7ðàAGÇÁÄÔPÂ±X°S�3×.Ñ.Ó0Ò0ÁÒPòô ×3Ñ3Ð3Ø�ZÓØ—?‘? 4§;¡;×#7Ñ#7Ó#9Ó:Ð:Ø�ZÓØ�I‰I×"Ñ"×+Ñ+¨DÔ1Ø�K‰K× Ñ  ×!2Ñ!2°4¸±7Ó!;Ô<Ü×3Ñ3Ð3Ø�T×-Ñ-Ó-Ø�I‰I×"Ñ"×+Ñ+¨DÔ1Ø—K‘K×(Ñ(Ó*ˆEð9¬ð 9´sð 9¼s÷ 9ð 9ô �D—K‘K Ô&Ù26Ó7²$¨Q×&Ñ&Ö(±$Ñ7ðà9?¿¹¼ÔHº±°�1×*Ñ*Ó,Ò,¹ÒHòô
 " "¸ÓEÐEÜ‰wÑ" 2 t¨TÓ:Ð:ùò7 8ùÛPùò* 8ùÛHs   Á	H3Á8H8ÇH>Ç4Ic                 ó8  ^• TR                  U4S j5        TR                  SS5        TR                  5         TR                  S5        T" U R	                  U R
                  R                  5       5      5        TR                  SS5        TR                  5         g )Nc                  ón   >• T R                  T R                  [        5      T R                  S5      /5      $ )Nr   )r[   Úcreate_load_python_modulerb  rþ  ©rW   s   €rD   rX   Ú,RandomVariable.reconstruct.<locals>.<lambda>J	  s1   ø€ �G×)Ñ)à×5Ñ5´fÓ=Ø×,Ñ,¨XÓ6ðôrC   r   Fri  r-   T)rZ   r�   r6  rÁ   r}  rb  rj  Úpop_topra  s    `rD   r]   ÚRandomVariable.reconstructH	  sz   ø€ Ø×Ñôô	
ð 	×Ñ˜a Ô'ð 	�‰ÔØ×Ñ˜*Ô%Ù�—‘ §¡× 4Ñ 4Ó 6Ó7Ô8Ø×Ñ˜a Ô&Ø�‰ÕrC   ro  r÷  rá   ) r>   r?   r@   rA   rW  r0   râ   rr  rb  r   r   rO   rl   ri   rh   r¥   r!  rh  rã   re  rF  rz  r   r}  r�  r²   rä   rå   r¤   r]   rB   ræ   rç   s   @rD   r[  r[  È  s¶  ø† ñð 	ðà	×	'Ñ	'ð€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                   óæ   ^ • \ rS rSr\SSS\R                  \   S\S-  S\SS 4
S	 j5       r	S
\
S\
S\SS4U 4S jjrSSS\\
   S\\\
4   S\
4S jrSS jrS\4S jrS\4S jrS\S\4S jrSrU =r$ )ÚWeakRefVariablei[	  r_   r9   Úweakref_valuerj   NÚoptionsrK   c                 ó   • Uc   eUR                   nU=(       a    [        US5      n[        R                  " XU5      nU" 5       nU=(       a    [	        U5      n[        R                  " XU5      nX#S'   [        X†40 UD6$ )NÚ__callback__rj   )r–  r   r0   rœ   r#   r’  )	r_   r“  rj   r”  ÚcallbackÚcallback_sourceÚcallback_vtÚreferentÚreferent_vts	            rD   rœ   ÚWeakRefVariable.build\	  s   € ð Ñ!Ð!Ð!Ø ×-Ñ-ˆØ ×G¤Z°¸Ó%GˆÜ%×+Ò+¨B¸/ÓJˆÙ “?ˆØ×5Ô-¨fÓ5ˆÜ%×+Ò+¨B¸&ÓAˆØ"�ÑÜ˜{ÑC¸7ÑCÐCrC   r›  r™  c                 ó>   >• [         TU ]  " S0 UD6  Xl        X l        g rM   )rN   rO   r›  r™  )rP   r›  r™  r”  rQ   s       €rD   rO   ÚWeakRefVariable.__init__n	  s!   ø€ ô 	‰ÒÑ#˜7Ò#Ø&ÔØ&ÕrC   r‡   rJ   c                 ó   • U R                   $ rU   )r›  r½  s       rD   r�   ÚWeakRefVariable.call_functionu	  s   € ð ×ÑÐrC   c                 ó®   ^• TR                  U4S j5        T" U R                  5        T" U R                  5        TR                  [	        SS5      5        g )Nc                  ó(   >• T R                  SS5      $ )NÚweakrefÚref)r2  r�  s   €rD   rX   Ú-WeakRefVariable.reconstruct.<locals>.<lambda>~	  s   ø€  g×&>Ñ&>¸yÈ%Ô&PrC   r   F)rZ   r›  r™  r[   r   ra  s    `rD   r]   ÚWeakRefVariable.reconstruct}	  sD   ø€ Ø×ÑÔPÔQÙ�× Ñ Ô!Ù�× Ñ Ô!Ø×ÑÔ2°1°eÓ<Õ=rC   c                 ó6   • U R                   R                  5       $ rU   )r›  rU  rð   s    rD   rU  Ú"WeakRefVariable.is_python_hashableƒ	  s   € Ø×Ñ×2Ñ2Ó4Ð4rC   c                 ó6   • U R                   R                  5       $ rU   )r›  rZ  rð   s    rD   rZ  ÚWeakRefVariable.get_python_hash†	  s   € à×Ñ×/Ñ/Ó1Ð1rC   r]  c                 óx   • [        U[        5      (       d  gU R                  R                  UR                  5      $ )NF)rš   r’  r›  ra  r`  s     rD   ra  ÚWeakRefVariable.is_python_equalŠ	  s/   € Ü˜%¤×1Ñ1ØØ×Ñ×/Ñ/°×0AÑ0AÓBÐBrC   )r™  r›  rá   )r>   r?   r@   rA   r¥   r£  ÚReferenceTyper   r   rœ   r0   rO   r   rå   r²   r�   r]   r!  rU  re  rZ  r”   ra  rB   ræ   rç   s   @rD   r’  r’  [	  sñ   ø† ØðDØ#ðDà×,Ñ,¨SÑ1ðDð ˜‘ðDð ð	Dð
 
óDó ðDð 'Ø*ð'Ø9Hð'ØUXð'à	÷'ð à#ð ð �Ñ'ð ð �S˜/Ð)Ñ*ð	 ð
 
ô ô>ð5 Dô 5ð2 ô 2ðC Vð C°÷ Cò CrC   r’  )ŠrW  rÐ  rÔ  rä  r§  ró  r.  rb  r?  rG  rî   r¦   r£  Úcollections.abcr   r   r   r   Útypingr   r   r	   r
   r   r   Útorch._Cr–   Útorch._numpyr¹  rÝ  Útorch.utils._pytreer¦  Ú_pytreer  Útorch._dynamo.variables.baser   Útorch._dynamo.variables.listsr   Útorch._guardsr   rb   r   r   r   r   Úbytecode_transformationr   r   r   Úcreate_parameter_opr   rÓ   r   r   Úguardsr   r   Úmutation_guardr   rj   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r^  r.   r/   r0   r  r1   r2   Ú	functionsr3   r4   Úuser_definedr5   r6   r7   Útorch._dynamo.codegenr8   Útorch._dynamo.symbolic_convertr9   r;   rF   ré   rù   r#  rU  rY  r_  ru  r|  rˆ  r‹  Ú	dataclassrÍ  r¦  rù  r•   r�   r=  rg  rt  rŠ  Ú	lru_cacherå   r§   r­  r²  r´  rà  r´   rë  r  r
  r  r&  r1  rO  rH  ÚfinfoÚiinfor2  rÁ  rX  r[  r’  r=   rC   rD   Ú<module>rÃ     sJ  ðñó" Û Û Û Û Û Û Û 	Û 
Û Û Û ß .Ý Ý %ß J× Jã Ý ß $Ð $Ý 5Ý 7Ý  ç @Ó @÷ñ õ
 Gß 9ß 0Ý 5÷÷ ÷
÷ 
õ 
÷ñ ÷
 ?ß Gß XÑ Xö Ý/ÝD÷	ñ 	ôX
�Oô X
ôv
-˜?ô -ô(`;˜ô `;ôFV˜ô Vôr�oô ô
˜oô 
ô2?0�ô ?0ôD;�?ô ;ô(#˜ô #ð
%¨cð %°h¸sÀC¸xÑ6Hô %ô`˜ô `ðF ×Ñ÷Mð Mó ðMôD-Ð&?ô D-ôN2Ð6ô 2ôj(�_ô (ôNO�oô NOôbx
˜Oô x
ôv˜ô ô&)=˜?ô )=ôXW
�_ô W
ðt ×Ò˜QÑð˜4 × 9Ñ 9¸5×;MÑ;MÐ MÑNó ó  ðð( ×Ò˜QÑð(˜4 × 2Ñ 2°E×4MÑ4MÐ MÑNó (ó  ð(ô]
�Oô ]
ôB?�?ô ?ô*-�oô -ô9D˜?ô 9Dôx�_ô ôB˜ô BôJ0˜oô 0ô$$
˜Oô $
ôNS+˜?ô S+ôl#Ð/ô #ô(Ð-ô (ð ‡I‚IÐ#Ø‡I‚IÐ#Ø‡I‚IÐ!ðÐ ô
˜/ô 
ô6P�_ô Pôf2C�oõ 2CrC   