
    N j                    $   % 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JrJr  SSKJrJrJrJr  SSK
JrJrJrJrJ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!  S
SK"J#r#J$r$J%r%J&r&  S
SK'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  S
SK/J0r0J1r1  S
SK2J3r3  S
SK4J5r5J6r6J7r7J8r8J9r9J:r:  S
SK;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrN  SSKOJPrPJQrQJRrR  SSKSJTrTJUrUJVrV  SSKWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_  SSK`JaraJbrbJcrcJdrdJereJfrfJgrg  SSKhJiriJjrj  SSKkJlrlJmrmJnrnJoroJprp  SSKqJrrrJsrsJtrtJuru  \(       a  SSKvJwrw  SSKxJyry  \R                  " \{5      r|\R                  \R                  \R                  \GR                   \GR                  \GR                  \GR                  \GR                  \GR
                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                  \GR                   \GR"                  \GR$                  \GR&                  \GR(                  \GR*                  0r\S\
R(                  \
R(                  /\RS-  4   r\\\R   \\\R   S4   4   r\GR6                  \%GR8                  \GR:                  \%GR<                  \GR>                  \%GR@                  \GRB                  \%GRD                  \GRF                  \%GRH                  \GRJ                  \%GRL                  0r\GR                  \GR                  \GRP                  \GR                  \GR                  \GR                  \R                  \GR>                  \GRF                  \GRJ                  \GRB                  \GR:                  \GR6                  \GR                   \GR                  \GR                  \GR                  \GR                  \GR
                  \GR                  \R                  \R                  4r\GR"                  \GR&                  \GR*                  \GR                   \GR(                  \GR$                  4r\GRV                  4r\GR                  \GR                  \GR                  \GR                  \GRZ                  4r\GR^                  \GR`                  \GRb                  \GRd                  \GRf                  4r0 q\\S\4   \S\4   4   \S'   0 q\\S\4   \S\4   4   \S'   S%S  jr " S! S"\R5      r\GRv                  S#SS\
GRx                  S   4S$ j5       rg)&a\  
Built-in function and type variable tracking for TorchDynamo's symbolic execution.

This module contains variable tracker classes for Python built-in functions, types,
and operations during graph compilation. It handles symbolic execution of:

- Built-in functions (len, getattr, isinstance, etc.)
- Type constructors (int, float, str, list, dict, etc.)
- Built-in operators and methods
- Special Python constructs (super, hasattr, etc.)

Key classes:
- BuiltinVariable: Tracks built-in functions and handles their execution
- TypeVariable: Manages type constructor calls and type checking
- SuperVariable: Handles super() calls in class hierarchies

These variable trackers ensure that built-in Python operations are correctly
handled during symbolic execution, either by executing them directly when safe
or by creating appropriate graph nodes when needed.
    N)defaultdictOrderedDict)CallableIterableKeysViewSequence)AnycastLiteralTYPE_CHECKINGUnion)	sym_floatsym_int)is_sparse_any)BaseTorchFunctionMode)is_traceable_wrapper_subclass   )configgraph_break_hints	polyfills	variables)ObservedAttributeErrorObservedUserStopIterationraise_observed_exceptionunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_sourceSource
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_argscmp_name_to_op_mappingdict_methodsextract_fake_example_valuefrozenset_methodsget_fake_valueguard_if_dynis_tensor_getset_descriptoris_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargsraise_args_mismatchset_methodsstr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorValueMutationNewVariableTracker)CONSTANT_VARIABLE_NONEConstantVariableEnumVariable)ConstDictVariableDefaultDictVariableDictKeysVariableDictViewVariableFrozensetVariableis_hashableOrderedSetClassVariableSetVariable)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableTupleIteratorVariableTupleVariable)EventVariableStreamVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslatorr]   .BUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPreturnc                  r  ^^^	^
^ [        [        5      S:  a  g S m " U4S jS[        5      n [        R                  " S5      m[        R                  " S5      m	[        R                  " S[        R
                  S9m[        R                  " S[        R
                  S9m
U " 5          U4S j[        4U4S j[        4UU	4S j[        4UU
4S	 j[        4U4S
 j[        4/nU H$  u  p#U H  nU" U5        Tc   eT[        U'   M     M&     U	4S j[        4U
4S j[        4U4S j[        4/n[        R                  [        R                  [        R                  1nU H:  u  p#U H/  nXF;   a  M
  U" U5        Tc   eT[        U   :w  d  M&  T[        U'   M1     M<     S S S 5        g ! , (       d  f       g = f)Nr   c                   f   > \ rS rSrSr  SS\S\4   S\S\\   S	\\	\4   S-  S
\4
U 4S jjjr
Srg)8populate_builtin_to_tensor_fn_map.<locals>.GetMethodMode   z
Mode to extract the correct methods from torch function invocations
(Used to get the correct torch.Tensor methods from builtins)
 Nfunc.typesargskwargsr`   c                 .   > U=(       d    0 nUmU" U0 UD6$ Nre   )selfrf   rg   rh   ri   most_recent_funcs        p/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/_dynamo/variables/builtin.py__torch_function__Kpopulate_builtin_to_tensor_fn_map.<locals>.GetMethodMode.__torch_function__   s$     \rF#(((    )re   N)__name__
__module____qualname____firstlineno____doc__r   r	   r   dictstrro   __static_attributes__)rm   s   rn   GetMethodModerc      sd    	 #%,0
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	) 
	)rq   rz   r;   )dtypec                    > U " T5      $ rk   re   )oinp0s    rn   <lambda>3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s	    qwrq   c                    > U " T5      $ rk   re   r}   inp0_ints    rn   r   r      s	    q{rq   c                    > U " TT5      $ rk   re   )r}   r~   inp1s    rn   r   r      s    qt}rq   c                    > U " TT5      $ rk   re   )r}   r   inp1_ints    rn   r   r      s    q8,rq   c                    > U " TS5      $ Nr   re   r   s    rn   r   r     s    q1~rq   c                    > U " ST5      $ Nr;   re   )r}   r   s    rn   r   r     s    !At*rq   c                    > U " ST5      $ r   re   )r}   r   s    rn   r   r         qH~rq   c                    > U " ST5      $ r   re   r   s    rn   r   r     r   rq   )lenr^   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemr_   )rz   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsr~   r   r   r   rm   s          @@@@@rn   !populate_builtin_to_tensor_fn_mapr      sw   
#$q( 	26)- )$ ::a=D::a=Dzz!5;;/Hzz!5;;/H	'"J/$g.,k:%'9:N
 "4H'333/?(,  "4 % &{3%'9:O
 //8#3#3X5E5EF!4H<'333#'?'CC4D-b1  "53 
s   'C#F(F((
F6c                     ^  \ rS rSr% Sr\" 5       rS1\R                  kr\	S\
S\SS 4S j5       r\\R                  S\\S\
4      4S	 j5       5       rS\4S
 jr\\R                  S\\S\
4      4S j5       5       r\\R                  S\\S\4   \\\   \S\4   4   4   4S j5       5       r\\R                  S\\S\4   \\\\\   \4   \4      4   4S j5       5       r\S\S\
4   S\\   S\S\\   S-  4S j5       rS\4S jr S\
S\
SS4U 4S jjr!S\4S jr"S\
4S jr#S\
4U 4S jjr$SS jr%S\S\S\4S jr&S\S\4S jr'S\\   S\4S jr(S\S\S\4S jr)\S\*\   S\\\4   S\\\
   \\\
4   4   4S  j5       r+S\*\   S\\\4   S\4S! jr,\S\S\
4   S\\   S"\S\S#\\S4   \\\4   /\S-  4   4S$ j5       r-S%S#S\
S\4S& jr.S%S#S\*\   S\\\4   S\S-  4S' jr/0 r0\\\S4   \S#\*\   \\\4   /\4   4   \1S('   S%S#S\*\   S\\\4   S\4S) jr2S%S#S*\S\\   S\\\4   S\4
U 4S+ jjr3S%S#S,\S\S-  4S- jr4\4r5\4r6S%S#S,\S\S-  4S. jr7S%S#S,\S\S-  4S/ jr8S%S#S,\S\S-  4S0 jr9S%S#S\S\S-  4S1 jr:S%S#S2\*\   S\4S3 jr;S%S#S4\S-  S5\S-  S\S-  4S6 jr<\:r=\:r>S%S#S,\S\4S7 jr?S%S#S,\S\4S8 jr@S%S#S,\S\4S9 jrAS%S#S,\S\S\S\4
S: jrBS%S#S\S\S-  4S; jrCS\S\S\4S< jrDS%S#S\S\4S= jrES%S#S\
S\
S\4S> jrF SS%S#S?\S-  S\S\S\S-  4
S@ jjrGS%S#S?\S\S\S\4
SA jrH SS%S#S?\S-  S\S\S\S-  4
SB jjrIS%S#S?\S\S\S\4
SC jrJ\IrK\IrLS%S#S,\S\S-  4SD jrMSE\
S\S\S\S-  4SF jrNS%S#S,\S\S-  4SG jrOS%S#S\S\S\4SH jrP\S%S#SI\S\S\S\4
SJ j5       rQ\S%S#SI\S\S\S\4
SK j5       rRS%S#S\S\S\4SL jrSS%S#S\S\S\4SM jrTS%S#S\S\S\4SN jrUS%S#S\S\S\4SO jrVS%S#S\S\S\4SP jrWS%S#S,\SQ\S\4SR jrXS%S#SS\ST\S\4SU jrYS%S#S4\S5\S\4SV jrZS%S#S\S\4SW jr[S%S#S?\SX\S\S-  4SY jr\S%S#S\SZ\S\S\4
S[ jr]S%S#S\S\\S\4S] jr^S%S#S*\S\4S^ jr_ SS%S#S?\S_\S`\S-  S\S-  4
Sa jjr`S%S#S?\S_\Sb\S\S-  4
Sc jraS%S#S?\S_\S\4Sd jrbS%S#S?\S\4Se jrcS%S#S?\S\S-  4Sf jrdS%S#S?\S\S\S-  4Sg jreS%S#S4\S\S-  4Sh jrfS%S#Si\S\S\S\4
Sj jrgS%S#S\S\4Sk jrhS%S#Sl\S\4Sm jriS%S#Sn\So\S\4Sp jrjS%S#Sn\So\S\4Sq jrkS%S#S4\S5\S\S-  4Sr jrlS%S#S4\S5\S\S-  4Ss jrmS%S#S4\S5\S\S-  4St jrnS%S#S4\S5\S\S-  4Su jroS%S#S4\S5\S\S-  4Sv jrpS%S#S4\S5\S\S-  4Sw jrqS%S#S4\S5\S\S-  4Sx jrrS%S#S4\S5\S\S-  4Sy jrsS%S#S4\S\S-  4Sz jrtS%S#S4\S5\S\4S{ jruS\vS|   4S} jrwS\x4S~ jryS\S\4S jrzSr{U =r|$ )BuiltinVariablei  a  
A VariableTracker that represents a built-in value (functions and operators).
A lot of the code here assumes it will be a function object.

The BuiltinVariable class wraps Python built-in functions (like len, isinstance, etc.)
and operators (like +, -, *, etc.) to enable symbolic execution during tracing. This allows
Dynamo to properly handle these operations when converting Python code to FX graphs while
maintaining correct semantics and enabling optimizations.
fnvaluesourcer`   c                 ^    [        UR                  [        R                  5      5        U " XS9$ Nr   )r    
make_guardr   BUILTIN_MATCH)clsr   r   s      rn   create_with_source"BuiltinVariable.create_with_source/  s&    f''(B(BCD5((rq   .c                  :   1 [         i[        i[        i[        i[        i[
        i[        i[        i[        i[        i[        i[        i[        i[        i[        i[        i[         i["        i[$        i[$        R&                  i[(        i[*        i[,        R                   i[,        R.                  i[,        R0                  i[,        R2                  i[,        R4                  i[,        R6                  i[,        R                  i[,        R8                  i[,        R:                  i[,        R<                  i[,        R>                  i[,        R@                  i[,        RB                  i[,        RD                  i[,        RF                  i[,        RH                  i[,        RJ                  i[,        RL                  i[,        RN                  i[,        RP                  i[,        RR                  i[,        RT                  i[,        RV                  i[,        RX                  i[,        RZ                  i[,        R\                  i[,        R^                  i[,        R`                  i[,        Rb                  i[,        Rd                  i[,        Rf                  i[,        Rh                  i[,        Rj                  i[,        Rl                  i[,        Rn                  in SSK8J9n  U Ru                  URv                  " 5       5        U Ru                  S [x        Rz                  Rw                  5        5       5        U $ )Nr;   )rT   c              3   z   #    U  H1  n[        U[        [        R                  5      5      (       d  M-  Uv   M3     g 7frk   )
isinstancetypemathsqrt.0xs     rn   	<genexpr>;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>u  s%     W4
1d499o8V114s   ,;	;)>absallanyboolcallablechrcomplexdivmodfloatgetattrintr   maxminordpowreprroundrx   formatsumr   r   posnegnot_truthinvertmulr   floordivtruedivmodaddsubr   length_hintlshiftrshiftand_or_xoripowimulr   	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrT   updatevaluesr   __dict__)fnsrT   s     rn   _constant_fold_functions(BuiltinVariable._constant_fold_functions4  sU   :(
:(
:(
 :(
 	:(

 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
  !:(
" #:(
$ %:(
& ':(
( JJ):(
* +:(
, -:(
. LL/:(
0 LL1:(
2 LL3:(
4 MM5:(
6 NN7:(
8 OO9:(
: LL;:(
< LL=:(
> OO?:(
@ A:(
B C:(
D LLE:(
F LLG:(
H LLI:(
J K:(
L   M:(
N OOO:(
P OOQ:(
R MMS:(
T LLU:(
V LLW:(
X MMY:(
Z MM[:(
\ ]:(
^ _:(
` a:(
b MMc:(
d MMe:(
f MMg:(
h i:(
j k:(
l MMm:(
n MMo:(
p LLq:(
r NNs:(
v 	5

+2245

Wdmm224WW
rq   c                 <    U R                   U R                  5       ;   $ rk   )r   r   rl   s    rn   can_constant_fold_through)BuiltinVariable.can_constant_fold_throughx  s    ww$77999rq   c                     1 [         R                  i[         R                  i[         R                  i[         R                  i[         R
                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                  i[         R                   i[         R"                  i[         R$                  i[         R&                  i[         R(                  i[         R*                  i[         R,                  i[         R.                  i[         R0                  i[         R2                  i[         R4                  i[         R6                  i[         R8                  i[         R:                  i[         R<                  i[         R>                  i[         R@                  i[         RB                  i[         RD                  i[         RF                  i[         RH                  i[         RJ                  i[         RL                  i[         RN                  in U $ rk   )(r   r   r   r   r   r   r   r   r   r   r   r   r   ltgtgeleneeqr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    rn   _fx_graph_functions#BuiltinVariable._fx_graph_functions{  sQ   (
LL(
LL(
 LL(
 MM	(

 OO(
 LL(
 LL(
 OO(
 (
 (
 LL(
 LL(
 KK(
 KK(
 KK(
  KK!(
" KK#(
$ KK%(
& LL'(
(   )(
* OO+(
, OO-(
. MM/(
0 LL1(
2 LL3(
4 MM5(
6 MM7(
8 9(
: ;(
< =(
> ?(
@ MMA(
B MMC(
D MME(
F G(
H I(
J MMK(
L MMM(
N LLO(
R 
rq   c                     [         R                  / SQ[         R                  4[         R                  / SQ[         R                  4[         R
                  / SQ[         R                  4[         R                  / SQ[         R                  4[         R                  / SQ[         R                  4[         R                  / SQ[         R                  4[        / SQ[         R                  4[         R                  / SQ[         R                  4[         R                  / SQ[         R                   4[         R"                  / S	Q[         R$                  4[         R&                  / S
Q[         R&                  40n U $ )N)__add____radd____iadd__)__sub____rsub____isub__)__mul____rmul____imul__)__truediv____rtruediv____itruediv__)__floordiv____rfloordiv____ifloordiv__)__mod____rmod____imod__)__pow____rpow____ipow__)
__lshift____rlshift____ilshift__)
__rshift____rrshift____irshift__)__xor____rxor____ixor__)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    rn   _binopsBuiltinVariable._binops  s     LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<   LL>M/U
> 
rq   c                    ^^^^^^^^ SSK JmJm  SSKJm  SSKJm  SSKJm  SSK	J
mJmJm  0 n [        R                  5       R                  5        GHz  u  nu  p#/ X'   / X'   Uu  pEnUUS.SS	S
[         S[         S["        S["        S[         4U4S jjjnX   R%                  T[         4U45        X   R%                  [         T4U45        US.SS	S
[         S[         S["        S[         4
S jjnX   R%                  T[         4U45        X   R%                  [         T4U45        US.SS	S
[         S[         S[&        S[(        4   S[         4
S jjn	X   R%                  [*        [         4U	45        X   R%                  [         [*        4U	45        X   R%                  [*        [         4U	45        X   R%                  [         [*        4U	45        GM}     SS	S
[,        S[         S[         4S jn
SS	S
[,        S[         S[         4S jn[.        [.        4U4[.        [0        4U4[0        [.        4U4[0        [0        4U
4[0        [2        4U
4[2        [0        4S 4[4        [,        [2        [6        44S 4[,        [,        4S 4/nU [8        R:                     R=                  U5        SS	S
[,        S[         S[(        4S jn[4        [         4U4[0        [0        4U
4[0        [2        4U
4/nU [8        R>                     R=                  U5        SS	S[         S[         S[         4S jn[4        [2        4U4[0        [2        4U4[2        [4        4U4[2        [0        4U4/nU [8        R@                     R=                  U5        S[&        S[(        4   S[B        [D        [D        [F        [F        4   [H        4      4UUUUUUUU4S  jjn[J        RL                  " 5        H&  n[O        U5      (       d   eX;  d   eU" U5      X'   M(     U $ )!Nr;   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariablerZ   r[   )forward_namereverse_nametxr]   abr*  r+  r`   c                v   > [        UT5      (       a  UR                  XU/0 5      $ UR                  XU/0 5      $ rk   )r   call_method)r,  r-  r.  r*  r+  r[   s        rn   user_defined_handler=BuiltinVariable._binop_handlers.<locals>.user_defined_handler  s=    , a!455==A3CC==A3CCrq   )r*  c                *    UR                  XU/0 5      $ rk   r0  )r,  r-  r.  r*  s       rn   user_defined_inplace_handlerEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB??rq   r   r   .c          
      n    SSK Jn  U" U U R                  R                  " SU/[	        X/0 5      Q76 5      $ Nr;   wrap_fx_proxycall_function)builderr;  outputcreate_proxyr6   )r,  r-  r.  r   r;  s        rn   dynamic_handler8BuiltinVariable._binop_handlers.<locals>.dynamic_handler+  s?     3$II**'.?.K rq   c                 R    [        / UR                  QUR                  U 5      Q5      $ rk   )rP   itemsunpack_var_sequencer,  r-  r.  s      rn   tuple_add_handler:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerM  s)     !!G177!GQ-B-B2-F!GHHrq   c                 R    [        / UR                  QUR                  U 5      Q5      $ rk   )rN   rC  rD  rE  s      rn   size_add_handler9BuiltinVariable._binop_handlers.<locals>.size_add_handlerR  s)       F!'' FA,A,A",E FGGrq   c                 R    [        / UR                  U 5      QUR                  Q5      $ rk   )rP   rD  rC  rE  s      rn   r   1BuiltinVariable._binop_handlers.<locals>.<lambda>y  s-    ..r2"rq   c                 `    [        / UR                  QUR                  U 5      Q[        5       S9$ Nmutation_type)rL   rC  rD  r=   rE  s      rn   r   rL    s+    :agg: 5 5b 9:"2"4"rq   c                 T    [        U5      " / UR                  QUR                  Q5      $ rk   )r   rC  rE  s      rn   r   rL    s*    a"rq   c                     UR                  5       (       d  UR                  U 5      (       d  g UR                  U 5      nU R                  R                  R                  U5        UR                  R                  U5        U$ rk   )is_immutablehas_unpack_var_sequencerD  r>  side_effectsmutationrC  extend)r,  r-  r.  seqs       rn   list_iadd_handler:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  sa     ~~q'@'@'D'D''+CII""++A.GGNN3Hrq   lstconstc                    [        U[        5      (       d  UR                  5       (       a  X!p! [        U[        5      (       d   eUR                  UR                  UR                  5       -  [        5       S9$ ! [         aI  n[        [        U5      U [        [        [        R                  UR                  5      5      S9   S nAg S nAff = f)N)rC  rP  rh   )r   rJ   is_python_constant	__class__rC  as_python_constantr=   MemoryErrorr   r   listmapr@   createrh   )r,  r[  r\  excs       rn   expand_list_like9BuiltinVariable._binop_handlers.<locals>.expand_list_like  s     c#3449O9O9Q9Q"U!#'78888}}))e&>&>&@@"2"4 %    (Ic"2"9"9388DEs   A	A8 8
C?CCr   c                   >^ ^
 SSS[         S[         S[         4U 4S jjn[        [        4U4/nT [        ;   a  [        [        4U4[        [        4U4/n[	        T 5      nUR                  [        [         4UR                  4[         [        4UR                  4/5        SSS[         S[         S[         4U 4S jjnUR                  [         [         4U45        U$ [        [        4U4/nT TR                  5       ;   Ga  T R                  R                  S5      (       Gam  T " [        5       S 5      m
SSS[         S[         S[         4U
4S	 jjnUnUn[        [        T[        TT[        T4nUR                  U[        4U4[        U4U4/5        [	        T 5      nUR                  T[        4T[        44U 4S
 j4TT4U 4S j4TT4U4TT4U4[         ["        [        4[         ["        [        44U4[        [         4UR$                  4[         [        4UR$                  4[        [         4UR                  4[         [        4UR                  4/	5        SSS[         S[         S[         S -  4U 4S jjn	UR                  [         [         4U	45        U$ )Nr,  r]   r-  r.  r`   c                    >  [        T" UR                  UR                  5      5      $ ! [         aI  n[        [	        U5      U [        [        [         R                  UR                  5      5      S9   S nAg S nAff = f)Nr^  )	r@   r   	TypeErrorr   r   rc  rd  re  rh   )r,  r-  r.  rf  r   s       rn   compare_by_valueYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  s^    +Bqww,@AA  ,S	!#&6&=&=sxx"HIs   %) 
A<?A77A<c                 d   > U R                  [        R                  " U [        T   5      X/0 5      $ rk   )inline_user_function_returnr>   buildpolyfill_fn_mappingr,  r-  r.  r   s      rn   handlerPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handler  s5     99'--b2Eb2IJQFTV rq   is_c                    > [        T5      $ rk   )r@   )r,  r-  r.  none_results      rn   neverNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.never  s     ,K88rq   c                 P   > [        T" UR                  UR                  5      5      $ rk   )r@   r   rr  s      rn   r   QBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda><  s    -=bqttn-Mrq   c                    > [        T" U R                  R                  UR                  5      U R                  R                  UR                  5      5      5      $ rk   )r@   r>  get_submodule
module_keyrr  s      rn   r   r{  C  s?    -= "$&II$;$;ALL$I$&II$;$;ALL$I!".rq   leftrightc                   > [        U5      [        U5      La#  [        R                  " TR                  S:g  5      $ XL a  [        R                  " T" X5      5      $ [	        U[
        R                  5      (       aP  [	        U[
        R                  5      (       a1  [        R                  " T" UR                  UR                  5      5      $ [	        U[
        R                  5      (       aV  [	        U[
        R                  5      (       a6  UR                  UR                  La  [        R                  " T" X5      5      $ g g g )Nru  )
r   r@   re  rr   r4   r   ObjectVariabler   ExceptionVariableexc_type)r,  r  r  r   s      rn   	handle_isRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_isl  s     Dze4/66r{{e7KLL}/66r$GGdI$<$<==&y77C C  066r$**ekk7RSStY%@%@AA"5)*E*EFF MM?/66r$GG @ G Brq   )r>   r@   rq  rA   r   rW  rU   _comparison_with_symnodeappendr   rr   
startswithobjectrV   rJ   rB   rR   rQ   _comparison_with_tensor)r   rl  resultop_varrs  rx  obj_op_nonenone_op_objtypes_that_are_never_noner  rw  r(  r#  r&  r)  rZ   r[   r$  r'  s   `         @rn   create_cmp_op_handlers?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s3   
+
0?
DS
 
( $%568HIJ  ((
 '(89;KL"L13CD
 ), -o>";;
 -o>";;	/4CHW$ A7KL(*:;=MNOF3::<<AWAWB B !409/94C9HW9$9
 $# ##$$',%%	-)  78HI'
 ./HI'	 ), "6 G!5 G N !1 0 78QR,
 67OP, "0@P Q!/@P Q - ,_="::
 -n="::
 -o>";;
 -o>";;_35nH/H)H +H %t+	H, A9MNMrq   )(	functionsr#  r$  	nn_moduler&  r   r'  r   r(  user_definedr)  rZ   r[   r   r   rC  r>   rx   r  r   r	   rU   rJ   rN   rP   r@   rL   rK   r   r   rW  r   r   rc  tuple_TrackersType_HandlerCallbackrT   r   r   )op_handlersr   magic_method_namesin_place_opr*  r+  inplace_namer1  r5  r@  rF  rI  list_like_addition_handlersrY  list_like_iadd_handlersrg  list_like_expansion_handlersr  r(  r#  r&  r)  rZ   r[   r$  r'  s                     @@@@@@@@rn   _binop_handlersBuiltinVariable._binop_handlers  s   $ 	N/:,	
 	
 -/ $$&,,.
- KO')K$7I4L %1$0D+D"D #D
 "D "D !D D6 O""%79MN O""!#679MN %1@+@"@ #@
 "@ !@ $++%79UV $++!#679UV *,+" #
 S#X& !  O""!?3_E O""!?3_E
 $++!?3_E $++!?3_Ek /x	I'	I,<	IAP	I	I
	H'	H,<	HAP	H	H$ |, 
 }- 
 - 
 .!
  01!
 "=1 !%'79MN	 "#34W4
 	$z 	HLL!(()DE
	'
	,<
	AP
	
	 /!
 .!
  01!.
 	HMM"))*AB	'	.=	FU		0 ,-/?@-.0@A-/?@.0@A	
 	% 	HLL!(()EFr	c"r	%m]:;=MMNOr	 r	h +113BB<<<(((4R8KO 4
 rq   r   a_typeb_typeNc                     [         R                  5       R                  U 5      nUc  g / nU H=  u  u  pVn[        X5      (       d  M  [        X&5      (       d  M,  UR	                  U5        M?     U$ rk   )r   r  get
issubclassr  )r   r  r  handlersmatchestype1type2rs  s           rn   _find_binop_handler#BuiltinVariable._find_binop_handler  sd     #22488<'/#NUG&((Z-F-Fw' (0 rq   c                 <    U R                   U R                  5       ;   $ rk   )r   r   r   s    rn   can_insert_in_graph#BuiltinVariable.can_insert_in_graph  s    ww$22444rq   ri   c                 2   > [         TU ]  " S0 UD6  Xl        g )Nre   )super__init__r   )rl   r   ri   r`  s      rn   r  BuiltinVariable.__init__  s    "6"rq   c                     U R                   c  SnOU R                   R                  nU R                  R                   SU S3$ )NNone())r   rr   r`  )rl   names     rn   __repr__BuiltinVariable.__repr__  s=    77?D77##D..))*!D633rq   c                     U R                   $ rk   r7  r   s    rn   ra  "BuiltinVariable.as_python_constant  s    wwrq   c                    > [         [        R                   [        [        R                  [        [        R
                  0nU R                  U;   a  XR                     $ [        TU ]!  5       $ rk   )	r   r   r   int64r   float64r   r  as_proxy)rl   DTYPEr`  s     rn   r  BuiltinVariable.as_proxy  sM    %**5==

 77e>!w!!rq   c                     U R                   R                  nU R                   R                  S:X  d   eX!R                  R                  ;  d   S5       eUR                  UR                  USS95        g )Nbuiltinszshadowed globalT)r   )r   rr   rs   r,  	f_globalsappend_outputcreate_load_global)rl   codegenr  s      rn   reconstructBuiltinVariable.reconstruct  sc    wwww!!Z///::///B1BB/g8848HIrq   rh   c                     [        X5      $ rk   )r(   rl   rh   ri   s      rn   constant_argsBuiltinVariable.constant_args  s    "400rq   c                     SnU H=  n[        U[        R                  5      (       a    gU=(       d    UR                  5       nM?     U$ NF)r   r   GetAttrVariable	is_tensor)rl   rh   
any_tensorargs       rn   tensor_argsBuiltinVariable.tensor_args  s?    
C#y8899#6s}}J  rq   	arg_typesc                     SnU HG  n[        U[        R                  5      (       a    gU=(       d    [        U[        R                  5      nMI     U$ r  )r  r   r  rV   )rl   r  r  arg_types       rn   tensor_args_type BuiltinVariable.tensor_args_type  sF    
!H(I$=$=>>#Uz(I<T<T'UJ " rq   c                 "   / n/ n[         R                  " XR                  5       5       H<  nUR                  5       (       a  UR	                  U5        M+  UR	                  U5        M>     [        S U 5       5      =(       a    U R                  " U6 $ )Nc              3   j   #    U  H)  nUR                   b  [        UR                   5      OSv   M+     g 7fr  )r   r%   )r   ts     rn   r   BBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s/      
  -.HH,@qxx(eK s   13)	itertoolschainr   r  r  r   r  )rl   rh   ri   r  non_tensor_argsis         rn   python_and_tensor_constant_only/BuiltinVariable.python_and_tensor_constant_only  s     }}7A{{}}""1%&&q)	 8
  
 
 
 3   /2	3rq   c                     U  Vs/ s H  o"R                  5       PM     snUR                  5        VVs0 s H  u  p4X4R                  5       _M     snn4$ s  snf s  snnf rk   )ra  rC  )rh   ri   r   kvs        rn   unwrap_unspec_args_kwargs)BuiltinVariable.unwrap_unspec_args_kwargs  sZ     1551$$&528,,.8
2@$!A##%%.8
 
 	
5 8
s
   AAc                 F    U R                  5       =(       a    [        X5      $ rk   )r   r*   r  s      rn   has_constant_handler$BuiltinVariable.has_constant_handler  s%     --/ 
4Q5
 	
rq   
has_kwargsr]   c           	        ^ ^^^^	^
^^^^^ SSK Jm  [        T 5      m/ m[        U4S jT 5       5      (       a  U4S j$ [        R
                  " T 5      (       aR  [        T [        5      (       d	  T [        L a4  SSS[        [        S4   S	[        [        [        4   S
[        4U 4S jjnU$ TR                  5       (       ay  T [        R                  L a"  [        TS   [         R"                  5      (       aD  TR%                  T5      (       a  TR&                  $ T(       a  TR)                  TR&                  5        [+        T5      S:X  a|  T(       du  [        R,                  " T /TQ76 m
T
(       d  OV[+        T
5      S:X  a  T
u  m	TR)                  U	4S j5        O-SSS[.        S[.        S
[.        4U
4S jjnTR)                  U5        [1        TST R2                   3S 5      mT(       aF  SSS[4        [           S	[        [        [        4   S
[        S -  4U UU4S jjnTR)                  U5        TR7                  5       (       a  [9        S T 5       5      (       a;  T(       d4  SSS[4        [           S	[        [        [        4   S
[        S -  4U 4S jjnO3SSS[4        [           S	[        [        [        4   S
[        S -  4U 4S jjnTR)                  U5        S[4        [           S
S 4UU U4S jjm[+        T5      S:X  a  U4S j$ [+        T5      S:X  a:  Tu  mSSS[4        [           S	[        [        [        4   S
[        S -  4UU4S jjnU$ SSS[4        [           S	[        [        [        4   S
[        S -  4UU4S jjnU$ )Nr;   )LazyVariableTrackerc              3   <   >#    U  H  n[        UT5      v   M     g 7frk   )r  )r   r  r  s     rn   r   0BuiltinVariable._make_handler.<locals>.<genexpr>  s     E9az!0119s   c                 n   > TR                  X Vs/ s H  o3R                  5       PM     snU5      $ s  snf rk   )r<  realize)r,  rh   ri   r  objs       rn   r   /BuiltinVariable._make_handler.<locals>.<lambda>  s-    C,=,=$/$QYY[$/-/s   2
r,  r]   rh   .ri   r`   c                    > T[         L a<  [        S U 5       5      (       d%  [        S[        U5      S/ [        R
                  QS9  [        R                  " TX5      $ )Nc              3      #    U  H:  nUR                  5       =(       a    [        UR                  5       [        5      v   M<     g 7frk   )r_  r   ra  rx   r   s     rn   r   WBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>  s9      4! ((*Vz!:N:N:PRU/VV!s   AAzassert with non-string messagez1Dynamo only supports asserts with string messagesgb_typecontextexplanationhints)AssertionErrorr   r   rx   r   SUPPORTABLEr   r  )r,  rh   ri   r   s      rn   create_exception_class_objectDBuiltinVariable._make_handler.<locals>.create_exception_class_object  sa    
 ' 4!4 1 1 " @ #D	$W> 1 = =>	 !222tDDrq   r   r   c                    > T" U /UQ76 $ rk   re   )r,  rh   _binop_handlers      rn   r   r  2  s    M"4Lt4Lrq   r  c                 @   > T H  nU" U /UQ76 nU(       d  M  Us  $    g rk   re   )r,  rh   r  r   rvbinop_handlerss        rn   call_binop_handlers:BuiltinVariable._make_handler.<locals>.call_binop_handlers5  s+     -]T]2#%I -  rq   call_c                   >  T" U /UQ70 UD6$ ! [          a     [        R                  " T5      R                  " U /UQ70 UD6  e ! [          al  nTR	                  X5      nU(       dI  [
        R                  STU5        [        SST SU SU 3STR                   3/ [        R                  QS9   S nA g S nAff = f[         a3  nTR	                  X5      nU(       d  e UR                  5          S nAg S nAff = f)Nz1incorrect arg count %s %s and no constant handlerz"invalid call to builtin op handlerzinvalid args to z:  z/Encountered TypeError when trying to handle op r  )rk  inspect	signaturebindr  logwarningr   rr   r   	DIFFICULTr   remove_from_stats)	r,  rh   ri   er  rf  r   r  self_handlers	         rn   call_self_handler8BuiltinVariable._make_handler.<locals>.call_self_handlerD  s   
,'<T<V<<  )),7<<RQ$Q&Q   % /2/G/G/U,3KK S , !
 *(L*:<.4&PQRXQY(Z.]^`^i^i]j,k&D(9(C(C&D	 -  # ,+.+C+CD+Q(/))++,s?    
C:*AC:
B;A!B60C:6B;;C:)C55C:c              3   B   #    U  H  n[        U[        5      v   M     g 7frk   )r  r@   r   s     rn   r   r  n  s     GYJq"233Y   c                   >  T" U Vs/ s H  o3R                  5       PM     sn6 n[        R                  " U W5      $ s  snf ! [         aI  n[        [        U5      U [	        [        [        R                  UR                  5      5      S9   S nANjS nAf[         a-  n[        SST SU 3S/ [        R                  QUS9   S nANS nAff = f)Nr^  constant fold exceptionattempted to run function  with arguments 7Encountered exception when attempting to constant fold.r  r  r  r  from_exc)ra  	Exceptionr   r   rc  rd  r@   re  rh   r<   r   r   
DYNAMO_BUGr>   rp  )r,  rh   ri   r   resrf  r   s         rn   constant_fold_handler<BuiltinVariable._make_handler.<locals>.constant_fold_handlerr  s     >BCd224dC$ +00S99# D$ 0 I!%c*:*A*A388&L!M
 ? %$=&@DTUYTZ$[(a"A$5$@$@"A%(s1   A =A A 
C
?BC
#CC
c                 0  > [        X5      (       ao   T" U Vs/ s H  o3R                  5       PM     sn0 UR                  5        VVs0 s H  u  pEXER                  5       _M     snnD6n[        R                   " U W5      $ g s  snf s  snnf ! [         a-  n[	        SST SU 3S/ [
        R                  QUS9   S nANUS nAf[         aI  n[        [        U5      U [        [        [        R                  UR                  5      5      S9   S nANS nAff = f)Nr  r  r  r  r   r^  )r*   ra  rC  r<   r   r   r#  r"  r   r   rc  rd  r@   re  rh   r>   rp  )	r,  rh   ri   r   r  r  r$  rf  r   s	           rn   r%  r&    s    5TBB"$BF!G$Q"6"6"8$!G# KQ,,.#"JX$!A';';'=$=.#"#C*  /44R==+ "H#"  C )(A*DRDHXY]X^(_,e&E(9(D(D&E),  ) 4 $S	 "%)#.>.E.Esxx*P%Qs?   B BB B$B B 
D#B??D?DDc                    > U  Vs/ s H  oR                  5       PM     nn[        SSTR                   ST ST 3STR                   SU ST S3STR                   SU S	TR                   S
3SS/S9  g s  snf )Nz Failed to trace builtin operatorzbuiltin r  z4Dynamo does not know how to trace builtin operator `z` with argument types z (has_kwargs r  zAvoid calling builtin `z?. Consider using an equivalent alternative function/method to `z`.zIf you are attempting to call a logging function (e.g. `print`), you can try adding it to `torch._dynamo.config.reorderable_logging_functions`.z"Please report an issue to PyTorch.r  )python_type_namer   rr   )rh   r  real_arg_typesr  r   r  s      rn   call_unimplemented9BuiltinVariable._make_handler.<locals>.call_unimplemented  s    @DE224NE:"2;;-q1ZLIRSUS^S^R_ `''5&6mJ<qR .bkk]:PQ_P` aTTVT_T_S``bde8 Fs   A6c                    > T" U5      $ rk   re   )r,  rh   ri   r+  s      rn   r   r    s    ,>t,Drq   c                 <   > T" XU5      nU(       a  U$ T" U5        U$ rk   re   )r,  rh   ri   r  r+  rs  s       rn   builtin_dispatch7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s&    
 Rv.I"4(	rq   c                 V   > S nT H  nU" XU5      nU(       d  M  Us  $    T" U5        U$ rk   re   )r,  rh   ri   r  r   r+  r  s        rn   r/  r0    s9    
 "BBf-Br!	 # #4(	rq   )lazyr  r   r   r  isclassr  BaseExceptionGeneratorExitr  r>   rw   rx   r  r   r   r   rV   r  _handle_insert_op_in_graphr  r   r  r	   r   rr   r   r   r   )r   r  r  r  r	  r  r%  r/  r  r  r  r+  rs  r  r  r  s   ```     @@@@@@@@rn   _make_handlerBuiltinVariable._make_handler  s    	.b!+-E9EEE  ??2r=)) ]"E+EOS01E S/12E !	E$ 10""$$("""y|Y-E-EFF##I..555 > >? y>Qz,@@PiPN!^$)#1  LM / 7: ?B    34seBKK=$94@$+$/$ S/12$ !4'	$ $L OO-.((**GYGGG":/:"?3: !o!56: %t+	: :: / "?3  !o!56  %t+	 @ OO12	Xo%> 	4 	 	  x=ADD]a!JW	+	/	 S/12	 !4'		 	4  +/ S/12 !4'	   rq   r,  c                    [        U5      S:X  a0  [        SSU  SU 3SU R                   S3/ [        R                  QS9  [        U5      S:X  d   e US   R                  US	5      $ ! [         a    [        [        U5         g f = f)
Nr   z1unimplemented builtin op vars() with no argumentszvars: r  3Dynamo does not know how to trace builtin operator z with no argumentsr  r;   r   )	r   r   r   r   r   var_getattrr   r   rk  rl   r,  rh   s      rn   	call_varsBuiltinVariable.call_vars  s    t9>K av.QRVRYRYQZZlm6)556	 4yA~~	47&&r:66% 	4$Y3	4s   A' 'BBc           
         SSK JnJn  U(       a(  U R                  " / UQUR	                  5       Q76 (       d  g SSK Jn  SSKJnJn  U" XU5      (       a  UR                  (       d  [        5         US   R                  5       (       dM  U R                  [        ;   a  [        U R                     n	O[        U R                     n	US   n
US   US'   XS'   O [        U R                     n	OU R                  n	UR                  X5      nU" XX#5      $ U R                  n U R                   " U0 UD6(       a&  SSKJn  SSKJn  U" XU" UR*                  5      X#5      $ U[,        ;   a5  [/        US   [0        R2                  5      (       a  [,        U   nUS   US   /nU[4        R6                  L aP  [/        US   [8        5      (       a8  [:        R<                  nUS   [0        R2                  R                  S5      US   /n[?        X#5      (       a^  [A        S	 U 5       5      (       dG  URB                  RD                  " S
[G        U5      /[I        X#5      Q76 nU" [0        RJ                  X5      $ U[4        RL                  L aJ  [O        U5      S:X  a;  US   R                  5       (       a#  US   RQ                  US[S        USS  5      U5      $ URB                  RD                  " S
U/[I        X#5      Q76 n[A        S U 5       5      (       a  U" [T        UU5      $ [W        X#5      (       a^  U RY                  X#5      u  nnU" U0 UD6n[A        S [Z        R\                  " X#R	                  5       5       5       5      nU" [^        UUUUS9$ [a        S U 5       5      (       a  [8        R                  " XS 5      $ U[4        Rb                  L aC  [/        US   [0        R^                  5      (       a!  [S        U5      nUS   Re                  5       US'   U" X5      $ ! [f         a6    [i        SSU  SU SU 3SU R                   S3/ [j        Rl                  QS9   g f = f)Nr;   )r;  wrap_fx_proxy_clsSourcelessBuilder)can_dispatch_torch_functiondispatch_torch_functionr   r   )	unique_id)invoke_and_store_as_constantc              3   D   #    U  H  n[        U5      [        L v   M     g 7frk   )r   rV   r   r  s     rn   r   =BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>A  s      B7;S	^+ts    r<  __eq__c              3   B   #    U  H  n[        U[        5      v   M     g 7frk   r   rS   rH  s     rn   r   rI  V  s     E:c#344r  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frk   r   r   rW   need_unwrapr   s     rn   r   rI  `  s-      "C!!Y%J%JK "AMMC   #<<)	raw_valuerO  c              3   B   #    U  H  n[        U[        5      v   M     g 7frk   r   rU   r   s     rn   r   rI  m  s     BTZ?33Tr  z,unimplemented builtin op on tensor argumentszpartial tensor op: r  r:  z with tensor argumentsr  )7r=  r;  r@  r  r   rB  torch_functionrC  rD  exportr   r  r   r_   r^   re  r  bytecode_transformationrE  r  rF  rr   IN_PLACE_DESUGARING_MAPr   r   r@   r   r   rU   r   selectr)   r   r>  r?  r5   r6   NumpyNdarrayVariabler   r   r0  rc  rS   r+   r  r  r  rW   r   r   ra  NotImplementedErrorr   r   r   )rl   r,  rh   ri   r;  r@  rB  rC  rD  rf   tmpfn_varr   rE  rF  proxy_args_kwargsrQ  rO  s                       rn   r6  *BuiltinVariable._handle_insert_op_in_graph  s    	>$**CDC6==?CC 	/X 'r88 9913Aw((**ww";;8A7@q'C"1gDG!G3DGG<Dww&--b7F*2tDDWWc	33TDVD?C3Ibkk2D  ,,Q332 2 -R0Qa)X%%%*T!Wo*N*N \\G..55a8G (55c B7;B ? ? 		..#*2. 't4 ))G)GSSX[[ SY!^Q8I8I8K8K Aw**2xd12hPPII** #40E
 EEEE($ 
 *$77!%!?!?!Mw11	! "&__T==?C"  )/' +  BTBBB&--b>> )))jGYBB/ /  :D"1g88:DG$R//" 	F-dV1TF!F8DQRVRYRYQZZpq6)556		s;   <P DP (AP AP A-P ?-P -AP =Q
Qcall_function_handler_cachec           	         U(       aL  UR                  5        VVs0 s H  u  pEXER                  5       _M     nnnU R                  /S U 5       QSP7nOU R                  /S U 5       Q7nU R                  R	                  U5      nU(       dO  U R                  U R                  U Vs/ s H  n[        U5      PM     sn[        U5      5      =U R                  U'   nUc   eU" XU5      $ s  snnf s  snf )Nc              3   8   #    U  H  n[        U5      v   M     g 7frk   r   r   s     rn   r   0BuiltinVariable.call_function.<locals>.<genexpr>       4t!d1ggt   Tc              3   8   #    U  H  n[        U5      v   M     g 7frk   rd  r   s     rn   r   re    rf  rg  )rC  r  r   ra  r  r7  r   r   )	rl   r,  rh   ri   r  r  keyrs  r   s	            rn   r<  BuiltinVariable.call_function  s     17@anF@77;4t4;d;C7754t45C2266s;>B>P>P404a$q'40$v,? D,,S1G """r(( A 1s   C*'C0
r  c                   > U R                   [        L a  US:X  a  [        U5      S:X  d   e[        U5      S:X  d   eUu  pVnUR                  5       n[	        U[
        5      (       aQ  UR                  R                  R                  U5      (       a'  UR                  5       (       a  UR                  XU5      $ US:X  GaL  U R                   [        L aL  [        U5      S:X  a=  [        U5      S:X  d   eUR                  R                  R                  XS   USS  5      $ U R                   [        L a  [        U5      S:X  a{  U(       dt  [        0 [        [        5       S9n[	        US   [        5      (       a  US   R                   [        L a  U$ UR                  R                  R                  U US   USS  5      $ U R                   [         L a  [        U5      S:X  a  US   R#                  U5      (       a  U(       d  [	        US   [        5      (       aG  US   R                   [         L a1  US   R%                  U5      n	[&        R(                  " U	[        5       S9$ UR                  R                  R                  U US   USS  5      $ U R                   [*        L ao  [-        / [        5       S9n
[	        US   [        5      (       a  US   R                   [*        L a  U
$ UR                  R                  R                  U US   USS  5      $ U R                   [.        [0        4;   a  [        U5      S:X  a  U R                   [.        L a  US;   d  US	:X  a{  [2        R4                  S
:  ag  US   R                  5       (       aO   [7        U R                   U5      nU" US   R9                  5       5      n[&        R:                  R=                  U5      $ U R                   [        L a  US:X  a  [&        RJ                  $ U R                   [        L a%  US:X  a  [        RL                  " U[        /UQ70 UD6$ U R                   [        L a  [7        U R                   U5      nU[N        ;   a  [	        US   [&        RP                  5      (       a#  US   RR                  RU                  XUSS  U5      $ [	        US   [&        R                  5      (       a  US   RU                  XUSS  U5      $ U R                   [V        L a  [7        U R                   U5      nU[X        ;   a  [	        US   [&        RZ                  5      (       a#  US   R\                  RU                  XUSS  U5      $ [	        US   [&        R^                  5      (       a  US   RU                  XUSS  U5      $ U R                   [`        L a[  [7        U R                   U5      nU[b        ;   a;  [	        US   [&        Rd                  5      (       a  US   RU                  XUSS  U5      $ U R                   [f        L a`  [        U5      S:  aQ  [7        U R                   U5      nU[h        ;   a1  [	        US   [:        5      (       a  US   RU                  XUSS  U5      $ U R                   [.        L ab  [        U5      S:  aS  [	        US   [:        5      (       a;  [:        R<                  " [7        [.        U5      " US   R9                  5       5      5      $ [j        TU ]  XX45      $ ! [>        [@        4 aJ  n[C        [E        U5      U[+        [G        [:        R<                  URH                  5      5      S9   S nAGNS nAff = f)N__setattr__   r   __new__r;   rO  r   )fromhexhexfrom_numberrm     r^  r  fromkeys)6r   r  r   r  r   rZ   r>  rU  is_attribute_mutationr_  method_setattr_standardtrack_new_user_defined_objectrw   rB   r=   r   r  has_force_unpack_var_sequenceforce_unpack_var_sequencer   rP   rc  rL   r   r   sysversion_infor   ra  r@   re  OverflowError
ValueErrorr   r   rd  rh   r?   call_custom_dict_fromkeysr-   rY   _dict_vtr0  setr8   UserDefinedSetVariable_set_vtrI   	frozensetr/   rF   rx   r9   r  )rl   r,  r  rh   ri   r  name_varvaldict_vt	init_argslist_vtr   r$  r  resolved_fnr`  s                  rn   r0  BuiltinVariable.call_method  s"    77f!6t9>!>v;!###!%C3++-C3 9::II**@@EE//11222EE9ww& SY!^6{a'''yy--KKq'48  ww$3t9>&+BDTDVWd1g77DGJJ$<N"N yy--KKGH  5 ING99"==d1g77DGJJ%<O $Q A A" EI$22!1A1C  yy--KKGH  ww$&r9I9KLd1g77DGJJ$<N"Nyy--KKGH  GGw''D	QE!d.@&@M)c.>.>'.I Aw))++	 $/BT!W779:C$55<<SAA 77f!333377d?tz1"<<RWWPVWW77d?!$''40Kl*d1gy'H'HII7++77$qr(FSSQ)D)DEE7..rab6JJ77c>!$''40Kk)d1gy'G'GHH7??66rab6RRQ)>)>??7..rab6JJ77i!$''40K//d1gy'B'BCC7..rab6JJ77c>c$i1n!$''40Kk)d1g'7887..rab6JJ77eD	Q$q'#344'..E4(a)C)C)EF  w"2T::e &z2 ,Q!#&6&=&=qvv"FG s    A[; ;]?]]r  c           	      ^   UR                  5       (       d  [        U[        5      (       a  UR                  5       (       a  UR                  US/ 0 5      nOUnU R                  [
        L a  [        O[        nSSKJ	n  U" UUR                  R                  SUUR                  5       40 5      S9$ g )Nitemr   r:  r<  r,  r]  )r  r   rU   r0  r   r   r   r   torch._dynamo.variables.builderr;  r>  r?  r  )rl   r,  r  r  fn_r;  s         rn   _call_int_floatBuiltinVariable._call_int_float'  s    
 ==??jo>>}}r62r:!WW^'CE ii,,#]]_&	  rq   c                 
   UR                  5       (       a  UR                  US/ 0 5      n[        U[        5      (       a+  [        UR                  [
        R                  5      (       a  U$ [        U[        R                  5      (       a2  [        R                  R                  [        UR                  5      5      $ [        R                  " XR                  5       S:g  5      $ [        U[        5      (       a  [        UR                  [
        R                  5      (       a  U$ [        UR                  [
        R                  [
        R                  45      (       d   e[        R                  " XR                  5       S:g  5      $ g )Nr  r   )r  r0  r   rU   sym_numr   SymBoolr   r@   re  r   r   r  r4   SymIntSymFloat)rl   r,  r  r  s       rn   	call_boolBuiltinVariable.call_boolB  s    ==????2vr26D$00Zemm6 6 $	 : :;; 1188djj9IJJ"))"mmo.BCC c?++ #++u}}55

 #++enn'EFFFF"))"lln.ABB rq   c                    [        U[        R                  5      (       a  UR                  R                  n[        UR                  5      R                  [        R                  L a)  [        R                  " X5      nUR                  U/ 0 5      $ [        U5      (       a$  [        SS[        UR                  5       S3S/S9  O5UR                  n[        R                  " X5      nUR                  X/0 5      $ [        U[        R                  5      (       ab  [        UR                  5      R                  [
        R                  L a2  [        R                  R                  [!        UR                  5      5      $ [        U["        [$        [&        [(        [*        45      (       a-  [        R                  R                  UR-                  5       5      $ g)z&Handle repr() on user defined objects.z4Attempted to call repr() method implemented in C/C++ z6 has a C/C++ based repr method. This is not supported.zWrite the repr method in Pythonr  N)r   r   rZ   r   r  r   r  r>   rp  r<  r3   r   __func__r)  r@   re  r   rM   rB   rC   rH   rE   
debug_repr)rl   r,  r  repr_methodfn_vtbound_methods         rn   	call_reprBuiltinVariable.call_repr`  s]    c9>>??)),,KCII''6??:'--b>**2r2660==R#'		?"33i j<=	  +33'--b?**2ub99c9==>>CII''4==8 1188ciiII!#' 	
 	
 --44S^^5EFFrq   c                    [        U[        R                  5      (       a0  [        R                  R	                  [        UR                  5      S9$ [        U[        R                  5      (       GaF  [        UR                  S5      (       a  UR                  R                  nOW[        UR                  S5      (       a  UR                  R                  nO%[        S[        U5      S/ [        R                  QS9  [        UR                  5      R                  [         R                  L a#   [        R                  R	                  W" 5       S9$ [%        W5      (       a$  [        SS[        UR                  5       S	3S
/S9  g UR&                  n [(        R*                  " X5      nUR3                  X/0 5      $ [        U[        R4                  45      (       af  [7        UR8                  5      S:X  a  UR:                   nO"SR=                  S UR8                   5       5      n[        R                  R	                  US9$ g ! ["         a     g f = f! [,         a    [.        R1                  SSS9   g f = f)N)r   __str__r  z+failed to call str() on user defined objectz5User defined object has no __str__ or __repr__ methodr  z0Attempted to a str() method implemented in C/C++r  z5 has a C/C++ based str method. This is not supported.zWrite the str method in Pythonz%Failed to create UserFunctionVariableT)exc_infor   , c              3   @   #    U  H  oR                  5       v   M     g 7frk   )ra  )r   r-  s     rn   r   +BuiltinVariable.call_str.<locals>.<genexpr>  s     !K(Q"6"6"8"8(s   )r   r   r$  r@   re  rx   r   rZ   hasattrr   r  r  r   r   
USER_ERRORr   r  AttributeErrorr3   r  r>   rp  r  r  r  r<  r  r   rh   r  join)rl   r,  r  
str_methodr  user_func_variabler   s          rn   call_strBuiltinVariable.call_str  s    cI::<<--443svv;4GGiAACCsyy),, YY..
J// YY//
IH W9-889	 CII&&&..8 $55<<:<<PP
 1<<N#'		?"33h i;<	6 %  *22 )8)>)>r)P& *77E2FFi99;<<388}!<<.		!K#((!KK--4454AAA &   & &  KK GRVKW s$   *!H= I =
I
	I
I.-I.c                 ,   [        U5      S:X  a>  US   R                  U5      (       a%  US   R                  U5      nU R                  X5      $ [        U5      S:X  a  U R	                  XS   US   5      $ [        U5      S:  a  U R                  X5      $ g )Nr;   r   r   )r   rx  ry  _call_min_max_seq_call_min_max_binary)rl   r,  rh   rC  s       rn   _call_min_maxBuiltinVariable._call_min_max  s     t9>d1gCCBGGG55b9E))"44Y!^,,Ra$q'BBY]))"33rq   rC  c                     [        U5      S:  d   e[        U5      S:X  a  US   $ [        R                  " [        R                  " U R                  U5      U5      $ Nr   r;   )r   	functoolsreducepartialr  )rl   r,  rC  s      rn   r  !BuiltinVariable._call_min_max_seq  sO     5zA~~u:?8O	 1 1$2K2KR PRWXXrq   r-  r.  c                 	   Ub  Uc  g U R                  X#5      (       GaW  UR                  5       (       d  X2p2UR                  5       (       d   e[        U[        5      (       a5  [        R
                  " [        R                  5      R                  X/0 5      n[        U[        5      (       d  [        U[        5      (       aH  SSK
Jn  U" [        U5      UUR                  R                  " SU R                  /[!        X#/0 5      Q76 S9$ UR#                  5       (       a  [        U[        R$                  5      (       a%  SS Kn[        R(                  " UR*                  5      nO$[        R
                  " [        R,                  5      nU R                  [.        L a  SU0OSU0nUR                  X/U5      nO[        U[        R$                  5      (       aJ  SS Kn[.        UR0                  [2        UR4                  0U R                     n	[        R(                  " U	5      nOM[.        [        R0                  [2        [        R4                  0U R                     n
[        R
                  " U
5      nUR                  XU/0 5      n[7        S X#4 5       5      (       a  [9        S	 X#4 5       5      (       a  [        R                  R;                  U5      $ UR#                  5       (       a  UR=                  5       nOUR>                  nU R                  [.        L a  [/        UR>                  U5      nO[3        UR>                  U5      n[9        S
 X#4 5       5      n[        R@                  R;                  UUU5      $ U$ [        U[        5      (       d  [        U[        5      (       as  U R                  [.        L a  [        RB                  O[        RD                  nUR                  R                  " SU/[!        X#/0 5      Q76 n[        RF                  " XS 5      $ [        U[H        5      (       aY  [        U[H        5      (       aD  U R                  UR=                  5       UR=                  5       5      n[H        RF                  " U5      $ g )Nr;   r@  r<  r  r   r   r   c              3   v   #    U  H/  n[        U[        R                  [        R                  45      v   M1     g 7frk   )r   r   rW   r@   )r   r  s     rn   r   7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s?      	  A !==!22   s   79c              3   B   #    U  H  n[        U[        5      v   M     g 7frk   rL  )r   r  s     rn   r   r    s     KFSz#'788Fr  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frk   rN  r   s     rn   r   r  (  s-      "#!!Y%J%JK "AMM#rP  )%r  r  r   rS   r   TorchInGraphFunctionVariabler   r   r<  rU   r=  r@  r   r>  r?  r   r6   r_  rY  numpyNumpyVariableclipclampr   maximumr   minimumr   r   from_tensor_variablera  rQ  rW   sym_maxsym_minre  r@   )rl   r,  r-  r.  r@  npr   ri   r  np_fntorch_fnraw_braw_resrO  py_fnr]  r   s                    rn   r  $BuiltinVariable._call_min_max_binary  s    9	 A!!;;==1;;== = !-..::5<<HVVR
 !_--A1O1O6(G))00' +A626  ##%%a!?!?@@&"009B"??LB(,3%eQZ))"c6:a!?!?@@& "**c2::>twwGE"007B #U]]CGPH"??IB))"!fb9  	 	 	 	 KQFKKK$55JJ6RR''))002EKKE77c>!!++u5G!!++u5G! "V" 
 !<<QQ  ?++z!_/M/M%)WW^EMMEII**):A62)FE #))"T::+,,A?O1P1PGG$$&$$&E $**511rq   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " S5      /0 5      nUR	                  U/ 0 5      $ )Nr;   rA  __abs__r=  rB  re  r   r<  r@   )rl   r,  r  rB  
abs_methods        rn   call_absBuiltinVariable.call_absF  S     	/ '--b':HH&--i892

 ''B33rq   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " S5      /0 5      nUR	                  U/ 0 5      $ )Nr;   rA  __pos__r  )rl   r,  r  rB  
pos_methods        rn   call_posBuiltinVariable.call_posQ  r  rq   c                     UR                  5       (       a  [        SSS/ S9  [        U5      n[        R                  " U5      n[
        R                  R                  U5      $ )Nzunsupported index(Tensor)r  z;Dynamo does not support tracing builtin index() on a Tensorr  )r  r   r1   r   r   r   r@   re  )rl   r,  r  constant_values       rn   
call_indexBuiltinVariable.call_index\  sT     ==??3Y	 3!,))00@@rq   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " S5      /0 5      nUR	                  XU5      $ )Nr;   rA  	__round__r  )rl   r,  r  rh   ri   rB  round_methods          rn   
call_roundBuiltinVariable.call_roundk  sQ     	/ )//G<JJ&--k:;R
 ))"F;;rq   c                     [        U0 5      (       a  [        R                  " U5      $ U R                  " U6 (       a(  [	        S U 5       5      n[        R                  " U5      $ g )Nc              3   r   #    U  H-  n[         R                  R                  [        U5      5      v   M/     g 7frk   )r   r@   re  r1   rH  s     rn   r   -BuiltinVariable.call_range.<locals>.<genexpr>  s-      PT	**11,s2CDDPTs   57)r*   r   rM   _dynamic_argsr  r<  s      rn   
call_rangeBuiltinVariable.call_rangez  s]     )r22**400& PT D **400rq   c                 t    [        S U 5       5      =(       d     [        S UR                  5        5       5      $ )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7frk   rS  r   s     rn   r   0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s     @4a:a114r  c              3   B   #    U  H  n[        U[        5      v   M     g 7frk   rS  r   s     rn   r   r    s      H
4CqJq/**Or  )r   r   r  s      rn   r  BuiltinVariable._dynamic_args  s7    @4@@ 
C H
4:MMOH
 E
 	
rq   c                 .    [         R                  " X!5      $ rk   )r   SliceVariabler<  s      rn   
call_sliceBuiltinVariable.call_slice  s     &&t00rq   c           
      ~    SSK Jn  U" UUR                  R                  " SU R                  /[        X#5      Q76 5      $ r9  )r=  r;  r>  r?  r   r6   )rl   r,  rh   ri   r;  s        rn   
_dyn_proxyBuiltinVariable._dyn_proxy  s?     	+II""+<T+J
 	
rq   r  c                    [        U[        R                  5      (       a   eU R                  " U0 UD6(       a  U R                  " U/UQ70 UD6$ [        R
                  R                  U R                  5      nUc  U" / [        5       S9$ UR                  U5      (       Ga  UR                  (       Gax  [        UR                  5      (       Gd]  [        U[        5      (       a4  [        UR                  R                  [        R                   5      5        GO[#        USS5      (       a_  [        U[$        5      (       aJ  ['        U[(        [*        45      (       d/  UR,                  R.                  R1                  UR                  5        [        U[        R2                  5      (       a3  [        UR                  R                  [        R4                  5      5        OQ[        U[        R6                  5      (       d2  [        UR                  R                  [        R8                  5      5        U" [;        UR=                  U5      5      [        5       S9$ g )NrO  r   F)r   r   IteratorVariabler  r  rJ   cls_forr   r=   rT  r   r%   rO   r    r   r   TUPLE_ITERATOR_LENr   rB   r4   rI   rF   r>  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHrc  rD  rl   r,  r  rh   ri   r   s         rn   _call_iter_tuple_list%BuiltinVariable._call_iter_tuple_list  s    c9#=#=>>>>t.v.??27777((009;.0  ((,,zzz"4SZZ"@"@c#899!

--l.M.MN
  Xu55&s,=>> &s[:K,L M M		4488D!#y'E'EFF &JJ11,2Q2QR (Y-T-TUU &JJ11,2N2NO S,,R01.0  rq   c                     [         R                  R                  U R                  5      nU" [	        UR                  U5      5      [        5       S9$ rN  )r   rJ   r  r   rc  ry  r=   r  s         rn   _call_iter_tuple_generator*BuiltinVariable._call_iter_tuple_generator  sD     ((009..r23*,
 	
rq   c                    [        U[        R                  5      (       aP  [        R                  R	                  U R
                  5      nU" [        UR                  U5      5      [        5       S9$ [        U[        R                  5      (       d+  [        U[        5      (       a,  UR                  U5      (       a  U R                  " X/UQ70 UD6$ U R                  " X/UQ70 UD6$ rN  )r   r   r  rJ   r  r   rc  ry  r=   LocalGeneratorObjectVariablerZ   rx  r  r  r  s         rn   _call_tuple_list BuiltinVariable._call_tuple_list  s     c95566,,44TWW=CS22267.0  YCCDDs56611"55222LTLVLL--bGGGGrq   c                    [        U[        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        45      (       a  UR                  US/ 0 5      $ [        R                  " [        R                  R                  5      R                  X/UQ0 5      nU(       a  [        R                   " U5      nU$ )N__iter__)r   r   rL   rM   r  rB   r&  rV   rP   rE   r0  r$  r   r  iter_r<  ObjectIteratorVariable)rl   r,  r  rh   ri   rets         rn   	call_iterBuiltinVariable.call_iter  s     &&''**++**(('' 	
 
 ??2z2r:: 00""((mBtb1  
  66s;Jrq   c           	         SSK JnJn  SSKJn  [        U[        R                  UUU45      (       a  [        R                  R                  S5      $ [        U[        5      (       a2  [        R                  R                  [        UR                  5      5      $ [        U[        [        [        [        [         ["        45      (       a  [        R                  R                  S5      $ g )Nr;   )r#  FunctoolsPartialVariabler%  TF)r  r#  r  r  r&  r   r   r)  r@   re  r[   r   r   rU   rV   rL   rP   rK   )rl   r,  r  r#  r  r&  s         rn   call_callableBuiltinVariable.call_callable  s     	R/22(( 	
 
 --44T::011--44Xcii5HII $

 

 --44U;;rq   r  c                 R    [        U5      S:X  a  US   $ [        SSU SU 3SS/S9  g )	Nr   r;   zbad args to builtin cast()z	got args r  z0Dynamo expects exactly 2 args to builtin cast().z3Ensure your call to cast() has exactly 2 arguments.r  )r   r   )rl   r  rh   ri   s       rn   	call_castBuiltinVariable.call_cast?  s<     t9>7N0vQvh/JHI		
rq   c                    [        U[        R                  5      (       a*  [        R                  " U[        UR                  5      5      $ [        U[        5      (       a*  [        R                  " U[        UR                  5      5      $ g rk   )	r   r   r)  r>   rp  dirr   r   r   )rl   r,  r  s      rn   call_dirBuiltinVariable.call_dirL  s]     c9==>>"((S^<<c?++"((S[99rq   c                @    [         R                  " U[        /UQ70 UD6$ rk   )r   call_custom_dictrw   rl   r,  rh   ri   s       rn   	call_dictBuiltinVariable.call_dictU  s!     //DJ4J6JJrq   user_clsc                   [        U5      n[        U5      S:X  a  [        US   [        R                  5      (       az  [        US   R
                  [        R                  5      (       aN  U R                  R                  R                  US   R
                  5      (       d  US   R                  U 5      US'   U R                  [        R                  " U [        R                  5      [        R                  " X5      /UQU5      $ )Nr;   r   )rc  r   r   r   r  r  r)  r>  rU  has_pending_mutationget_forwarded_dictro  r>   rp  r   construct_dict)r,  r#  rh   ri   	args_lists        rn   r   BuiltinVariable.call_custom_dict^  s     J		Na9Q<)B)BCC9Q<++Y-O-OPPII**??	!@P@PQQ
 %Q<::2>IaL--!!"i&>&>?""20=9=
 	
rq   c          
         U[         [        [        1;  aH  [        SUR                   SU SU 3SUR                   SUR                   S3SUR                   S3/S	9  U(       av  U[        Ld$  [        U5      S
:w  d  [        U5      S
:w  d  SU;  a3  [        U UR                   S3S[        U5       S[        U5       S35        / UQUR                  S5      P7n[        U5      S:X  a'  [        U UR                   S3S[        U5       S35        [        U5      S
:X  a  / UQ[        P7n[        U5      S:w  a'  [        U UR                   S3S[        U5       S35        Uu  pEU[        La  [        O[        n[        U[         5      (       aI  U Vs/ s H  n[        R                  " U5      PM     nnU" [         R                  X5      U[        5       S9$ UR!                  U 5      (       aK  UR#                  U 5      n	[%        S U	 5       5      (       a#  U" [         R                  X5      U[        5       S9$ [        SUR                   SU SU 3SUR                   S3SS/S	9  g s  snf )Nz$Unsupported dict type for fromkeys()z.fromkeys(): r  zFailed to call z.fromkeys() because z5 is not any type of dict, OrderedDict, or defaultdictzEnsure z0 is a type of dict, OrderedDict, or defaultdict.r  r;   r   z	.fromkeysz1 args and 1 kwargs (`value`)z
 args and  kwargsr   zat least 1 argsz argsr   z2 argsrO  c              3   8   #    U  H  n[        U5      v   M     g 7frk   )rG   )r   r  s     rn   r   <BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     04a;q>>4rg  zfailed to call dict.fromkeys()zo.fromkeys() because arguments could not be automatically converted to a list, or some dict key is not hashable.z(Manually convert the argument to a list.zEnsure all keys are hashable.)rw   r   r   r   rr   r   r7   popr?   rB   rC   r   r@   re  rt  r=   rx  ry  r   )
r,  r#  rh   ri   r  r   DictVariableTyper  arg_listkeyss
             rn   r~  )BuiltinVariable.call_custom_dict_fromkeysw  s    D+{;;>#,,-]4&&J-h.?.?-@@T$$%%Z\ h//00`a  +t9>v;!#&(#(()334ykCK=@	 0T/6::g./Dt9>$$%Y/!t9+U#	 t9>2T212Dt9>$$%Y/t9+U#	 
!)!<BU 	 c4  <?@Cq(//2CH@#h..0 
 ..r22004D04000'MM$."2"4  	4(()tfAfXF)(*;*;)< =0 0 ;/
	
 As    I(c           
      ~   SSK Jn  U(       a   eU(       d  [        / [        5       S9$ [	        U5      S:w  a1  [        [        U[        R                  " S[	        U5       S35      /S9  US   n[        U[        R                  5      (       a  UR                  [        5       S9$ UR                  U5      (       a#  UR                  U5      n[        U[        5       S9$ [        U[        R                  5      (       a  [        UR                   ["        5      (       a  UR%                  US5      n[        U[        R&                  5      (       aN  UR)                  XrU5      n[        U[        5      (       a  U$ UR                  U[*        5      R-                  X5      $ [        [        U[        R                  " S	5      /S9  g )
Nr;   rA  rO  z&set() takes 1 positional argument but  were givenr^  r   r  z!failed to construct builtin set())r=  rB  rI   r=   r   r   rk  r@   re  r4   r   clonerx  ry  r   rZ   r   r   r;  UserMethodVariablero  r  call_set)	rl   r,  rh   ri   rB  r  rC  iter_fnouts	            rn   r7  BuiltinVariable.call_set  sw    	/ zr1A1CDDt9>$$++@T;W 1g#y,,--99+;+=9>>..r2211"5Eu4D4FGGY@@AAjIIxG
 G
 oob*5G'9#?#?@@44WFKc;//J(//C8AA"JJ "))*MNO	
rq   c           
         U(       a   eU(       d  [        / 5      $ [        U5      S:w  a1  [        [        U[        R
                  " S[        U5       S35      /S9  US   n[        U[        R                   5      (       a/  [        UR                   Vs/ s H  oUR                  PM     sn5      $ UR                  U5      (       a  UR                  U5      n[        U5      $ [        [        U[        R
                  " S5      /S9  g s  snf )Nr;   z,frozenset() takes 1 positional argument but r4  r^  r   z'failed to construct builtin frozenset())rF   r   r   rk  r@   re  r4   r   	set_itemsvtrx  ry  )rl   r,  rh   ri   r  r   rC  s          rn   call_frozensetBuiltinVariable.call_frozenset  s     z$R((t9>$$++Fs4ykQ\] 1g#y2233$CMM%BMqddM%BCC..r2211"5E$U++ "))*STU	
	 &Cs   Dc                    SSK Jn  U(       a/  [        U5      S:X  a  SU;   d  [        USS[        U5       S35        UR	                  S[
        R                  " S5      5      nU Vs/ s H*  nUR                  U[        5      R                  X/0 5      PM,     nn[        R                  " UUR                  5       [        5       S9$ s  snf )	Nr;   rA  strictzip1 kwargs (`strict`)r+  FrA  rP  )r=  rB  r   r7   r.  r@   re  iterr<  r   ZipVariablera  r=   )rl   r,  rh   ri   rB  rA  r  	iter_argss           rn   call_zipBuiltinVariable.call_zip	  s     	/K1$V);#)6{m7+	 H&6&=&=e&DE 
 $$R.<<RK 	 
 $$,,.*,
 	
	
s   '1Cc           	           US   R                  US[        USS  5      U5      $ ! [         a1  n[        [	        U5      U[        UR
                  5      S9   S nAg S nAff = f)Nr   __len__r;   r^  )r0  rc  r  r   r   rh   )rl   r,  rh   ri   r  s        rn   call_lenBuiltinVariable.call_len/	  sW    	E7&&r9d48nfMM 	E$T!WbtAFF|D	Es   "% 
A 'AA c           	      H    US   R                  US[        USS  5      U5      $ )Nr   __getitem__r;   )r0  rc  r   s       rn   call_getitemBuiltinVariable.call_getitem:	  s)     Aw""2}d48nfMMrq   isinstance_type_varc           	        ^  TR                  5       nUR                  5       n[        T[        R                  5      (       aM  TR                  b@  S[        S[        S	[        4U4S
 jjn[        R                  R                  U" TU5      5      $ [        T[        R                  5      (       aL  [        TR                   ["        R$                  5      (       a#  [        SST SU S3S/ [        R&                  QS9  [        T[        R                  5      (       a]  SUR(                  R*                  ;   aC  [        R                  R                  UR(                  R-                  UTR                   5      5      $ [        T[        R.                  5      (       a   [        R                  " [        WU5      5      $ [        U[0        5      (       d  [3        [5        USS 5      5      (       a  U4nOk[        U["        R6                  5      (       a  UR8                  nO?[        U[:        5      (       a  [=        S U 5       5      (       a  UnO[?        [@        US/S9   [C        WW5      n[        R                  R                  U5      $ ! [         a*    [        SST SU S3ST 3/ [        R                  QS9   GNf = f! [@         a    WW;   n Ngf = f)Nz6builtin isinstance() cannot determine type of argumentzisinstance(r  r  z=Dynamo doesn't have a rule to determine the type of argument r  
tensor_vartensor_typer`   c                    >^ S[         S[        4U4S jjm[        U5      [        L a  [	        U4S jU 5       5      $ T" U5      $ )Ntyr`   c                 N  > U [         ;  a  TR                  5       R                  R                  S   n[	        U5      (       a2  U [
        R                  R                  R                  L a  [        X5      $ [        TR                  5       U 5      $ [         U    nTR                  U;   $ )Nexample_value)r:   r  nodemetar   r   nn	parameter	Parameterr   r  python_typer{   )rW  example_valdtypesr  s      rn   
check_typeOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_typeW	  s    !44&)lln&9&9&>&>&O9+FF "ehh&8&8&B&B B
 $.k#>>#-coo.?#DD04F99..rq   c              3   4   >#    U  H  nT" U5      v   M     g 7frk   re   )r   rW  rb  s     rn   r   NBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>j	  s     D"z"~~s   )r	   r   r   r  r   )rT  rU  rb  r  s     @rn   _tensor_isinstance;BuiltinVariable.call_isinstance.<locals>._tensor_isinstanceT	  sA    /3 /4 /$ $-DDDD%k22rq   z<isinstance() called on user defined object with C extensionszeUser-defined object with C extensions can have torch.Tensor attributes; intentionally graph breaking.__instancecheck__c              3   |   #    U  H2  n[        U[        5      =(       d    [        [        US S5      5      v   M4     g7f)rh  N)r   r   r   r   )r   tps     rn   r   2BuiltinVariable.call_isinstance.<locals>.<genexpr>	  s5      8
% r4 THWR9Ld-S$TT%s   :<z?isinstance() arg 2 must be a type, a tuple of types, or a unionr^  )"r_  rZ  r   r   r#  ra  r   r   rV   r{   r>   r	   r   r@   re  rZ   r   rg   MemberDescriptorTyper   r`  r   rh  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__r  r   r   rk  r  )	rl   r,  r  rR  r  isinstance_typerf  isinstance_type_tupler  s	     `      rn   call_isinstanceBuiltinVariable.call_isinstanceB	  s   	(H .@@Bc933449N3+3:=334 --44"38 
 c9>>??JIIu11E
 E
 V%cU"_,=Q?<6)556 sI??@@#'@'@'I'II--44));;OSYYW  c9FFGG#**:h+PQQ ot,,O%8$?1
 1
 &5$6!99$3$<$<!//C 8
%8
 5
 5
 %4!$U	4 X'<=C ))0055G # 	P%cU"-@,AC[\_[`a5)445		@  	433C	4s#   J  J7  0J43J47K	K	left_tyright_tyc           	           UR                  5       nUR                  5       n[
        R                  " [        WW5      5      $ ! [         a'    [        SSU SU S3SS/[        R                  QS9   NPf = f)z,Checks if first arg is subclass of right argz(issubclass() with non-constant argumentszissubclass(r  r  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r  )ra  rZ  r   r   r  r   r@   r  )rl   r,  rt  ru  
left_ty_pyright_ty_pys         rn   call_issubclassBuiltinVariable.call_issubclass	  s    	 335J"557K ))*Z*MNN # 		B%gYb
!<U9&11			s    A .A32A3c                 .    [         R                  " X#5      $ rk   )r   SuperVariablerl   r,  r-  r.  s       rn   
call_superBuiltinVariable.call_super	  s     &&q,,rq   c                    US   n UR                  U5      $ ! [         a    [        U5      S:X  a  US   s $ e [         aI  n[	        U[
        R                  5      (       a$  UR                  5         UR                  S   s S nA$ e S nAff = f)Nr   r   r;   )	next_variabler   r   r   r   r   rJ   r  rC  )rl   r,  rh   r  exs        rn   	call_nextBuiltinVariable.call_next	  s     1g
	$$R((( 	4yA~Aw 	#y99::$$&yy|#		s&    B
B=B?BBBattrc                    UR                  5       (       aj  UR                  5       n[        U[        R                  5      (       a*  [        R
                  " [        UR                  U5      5      $ UR                  X5      $ g rk   )	r_  ra  r   r   r   r@   r  r   call_obj_hasattr)rl   r,  r  r  r  s        rn   call_hasattrBuiltinVariable.call_hasattr	  sd     ""$$**,D#y8899 11'#&&$2GHH''11rq   seqsc                    [         R                  " S5      nU(       a  [        R                  S:  aV  [	        U5      S:X  a  SU;   d  [        USS[	        U5       S35        UR                  S[         R                  " S5      5      nO[        USS[	        U5       S35        U Vs/ s H,  nUR                  U5      (       a  UR                  U5      OUPM.     nn[        R                  " UUUR                  5       [        5       S	9$ s  snf )
NFrr  r;   rA  rd  rC  r+  z0 kwargsrD  )r@   re  rz  r{  r   r7   r.  rT  rD  r   MapVariablera  r=   )rl   r,  r   r  ri   rA  rX  seq_lists           rn   call_mapBuiltinVariable.call_map	  s	    "((/7*Fq(X-?'-v;-w/	  H.>.E.Ee.LM#6{m7+	 
 ,/+F+Fr+J+JC##B'PSS 	 
 $$,,.*,	
 	
	
s   &3DrX  c                     UR                  U5      (       a  UR                  U5      OUn[        R                  " UU[	        5       S9$ rN  )rT  rD  r   FilterVariabler=   )rl   r,  r   rX  seq_or_lists        rn   call_filterBuiltinVariable.call_filter
  sK     ,/+F+Fr+J+JC##B'PS 	 ''*,
 	
rq   c                 `   U R                   =(       a    [        U R                   U5      nU R                  [        L a>   [	        U R                  U5      n[        W5      (       d  [        R                  " XU5      $ [        R                  " XUS9$ ! [
         a    [        [
        U5         NXf = fr   )r   r"   r   r  r   r  r   r   r>   rp  r   r  )rl   r,  r  r   r   s        rn   r;  BuiltinVariable.var_getattr
  s    >DKK!>77f=. E??&,,R??((FCC " =(<=s   B B-,B-r  defaultc                    UR                  5       (       d  [        SSU SU SU S3SS/S9  UR                  5       nUR                  5       (       a  US:X  a  S	nUR                  R
                  R                  U5      (       av  [        U[        R                  5      (       aW  US
;   aQ  UR                  (       a@  UR                  R
                  R                  U5      (       a  [        SSU SU SU S3S/ S9  UR                  R
                  R                  X%5      (       a%  UR                  R
                  R                  X%5      $ UbH  U R                  XU5      nUb1  UR                  SS5      (       d   eUR                  5       (       d  U$ OU$ UR                   =(       a    [#        UR                   U5      nUS;   a   UR                  5       n[        U[$        5      (       a  US:X  ad  ['        UR(                  5       V	V
s/ s H.  u  p[*        R,                  " XU=(       a    [/        Xy5      5      PM0     nn	n
[        R0                  " XS9$ US:X  a!  [*        R,                  " XR2                  U5      $ US:X  a   [4        R6                  " UR8                  5      $ [        U[        R<                  5      (       a  UR?                  X5      $ [        U[        R@                  [        RB                  [        R4                  [        RD                  [        RF                  [        RH                  [        RJ                  45      (       GaD  [        U[        RJ                  5      (       af  [M        URN                  RP                  [R        RT                  5      (       a3  [V        RX                  (       a  US;   a  [        SSU 3SU S3SU S3/S9  UR                  5       (       a  UR[                  5       R\                  R^                  S   n[        U[`        Rb                  5      (       aR  [e        U5      (       aB  URf                  (       a  [V        Rh                  (       d  [        SSS/ [j        Rl                  QS9   UR?                  X5      $ [        U[        Rr                  5      (       a  [u        URN                  U5      n[        U[`        Rv                  Rx                  [`        Rv                  Rz                  45      (       aB  [`        R|                  R~                  R                  U5      (       a  [        Rr                  " XS9$ U[        ;   a  [        Rp                  " X%US9$ g [        U[        5      (       a  UR                  (       d  XRRN                  R                  ;  a  [u        URN                  U5      nOURN                  R                  U   n[V        R                  (       a&  UR                  R                  URN                  X]5        [*        R,                  " XU5      $ [        U[        R                  5      (       a0  US;   a*  [4        R6                  " [u        UR                  U5      5      $  UR?                  X5      $ s  sn
n	f ! [:         a     GNf = f! [n         a    e [:         a    [        Rp                  " X%US9s $ f = f! [:         a    [        Rp                  " X%US9s $ f = f) Nz)getattr() with non-constant name argumentzgetattr(r  r  z:getattr() with non-constant name argument is not supportedz1Ensure the name argument of getattr() is a stringr  _gradgrad)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz,getattr() on nn.Module with pending mutationzPIntentionally graph breaking on getattr() on a nn.Module with a pending mutationTF>   __base__	__bases__	__flags__r  r   r  r  )assertRaisesRegexassertNotWarnsassertWarnsRegexassertWarnszFailed to trace unittest methodzfunction: unittest.TestCase.z3Dynamo does not know how to trace unittest method `z` zAvoid calling `TestCase.z%`. Please report an issue to PyTorch.rY  zAttempted to wrap sparse Tensorr  z-torch.compile does not support sparse Tensors)rr   rs   )Kr_  r   ra  r  r>  rU  ru  r   r   r   is_state_mutatedr%  has_pending_mutation_of_attr	load_attrr  is_constant_matchr   r"   r   	enumerater  r>   rp  r#   rP   r  r@   re  r  rZ  r&  r;  rV   NamedTupleVariablerC   DistributedVariabler)  rZ   r  r   r`  unittestTestCaser   enable_trace_unittestr  rZ  r[  r   Tensorr   rU  capture_sparse_computer   SPARSE_TENSORr<   r  r  r   _opsOpOverloadPacket
OpOverload_dynamotrace_rulesis_aten_op_or_tensor_methodr,   r!   is_torchr   replay_record_enabledexec_recorderrecord_module_accessr4   r$  r   )rl   r,  r  r  r  r  hasattr_varr   r   r  r.  
tuple_argsfake_valmembers                 rn   call_getattrBuiltinVariable.call_getattr'
  s    **,,C"3%r(2gYa@XJK	 **, ==??twD99!!77<<#yFFGG ,,		..CCCHH! N"*3%r$r'! D%2  99!!>>sII99))33C>>++BX>K&"44T5AAAA"5577"N 8 <
3::t <99..0eT**{*
 )2%//(B	& )C ,11 "v'J-2J )C	 # &  )66zQQz).44RPP{*/66uGG c95566??2,,((,,**----2233
 
 3	 C CDDsyy22H4E4EFF00 =:4&A"UVZU[[] ^24& 9= =	 }}<<>..33ODx66%h//YYf.K.K! A "$S@ 1 ? ?@	Kr00 YCCDDSYY-F44ejj6K6KL --++GGOO ==fTT// 006JJ[))||t99+=+== D1++D1++  55ciiN"((V<<C7788T F
 >
 $**73664+@AAKr00K& ' n 7  & K 006JJK@ ' K 006JJKsU   AZ 5Z<Z &Z :%Z >Z" :[ Z 
ZZ")[[[32[3r  c                 
   [        U[        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  45      (       a  UR                  USX4/0 5      $ UR                  R                  R                  U5      (       Ga  UR                  5       (       Ga}  UR                  5       nUR                  5       (       Ga/  SSKJn  US:X  a(  [%        SSU SU SU S3S	/ [&        R(                  QS
9  GOUS:X  Ga  UR*                  c  [%        SSU SU SU S3SS/S
9  O1UR,                  UR,                  :w  a  [%        SSU SU SU S3SS/S
9  UR                  R.                   Vs/ s H   owR*                  UR*                  :X  d  M  UPM"     nnU H(  nUR                  R.                  R1                  U5        M*     [3        U5         [4        R6                  " 5          U" UUR                  R8                  " S[4        R:                  R<                  /[?        X$/0 5      Q76 5      n	S S S 5        S S S 5        S[4        R:                  S[4        R:                  4S jn
UR                  R9                  SU
W	RA                  5       40 5        U
" URA                  5       RB                  RD                  S   5        U	$ US;   a  SnO+[G        U5      (       a  [%        SSU SU SU S3SSU S3/S
9  UR                  R                  RI                  X%U5        U$ [        U[        RJ                  5      (       GaR  UR                  RM                  5       (       d   [%        SSU 3SS/[&        RN                  QS
9  UR                  5       (       a  [        U[        RP                  5      (       a  [S        URA                  5       RB                  U5      n URU                  XR                  5       5      nUb  UR                  5       (       ar  [S        URA                  5       RB                  U5      n[Z        R\                  " UR^                  S5      nXL a)  U[4        R`                  Rb                  Rd                  L a  U$ URg                  U5        g s  snf ! , (       d  f       GNl= f! , (       d  f       GNv= f! [V        [X        4 a    S n Nf = f) Nrl  r;   r:  requires_gradz!setattr() on Tensor.requires_gradzsetattr(r  r  zsetattr() on Tensor.requires_grad not supported. Mutating requires_grad can introduce a new leaf from non-leaf or vice versa in the middle of the graph, which AOTAutograd does not currently know how to handle.r  dataz&Failed to mutate tensor data attributezVDyanmo only supports mutating `.data` of tensor created outside `torch.compile` regionzWDon't mutate `.data` on this tensor, or move the mutation out of `torch.compile` regionz9Failed to mutate tensor data attribute to different dtypezPDyanmo only supports mutating `.data` of tensor to a new one with the same dtyper<  r   r`   c                     U R                   nUS:  a  US-
  n[        R                  R                  R	                  U 4U45        U $ r  )_versionr   _C	_autograd_unsafe_set_version_counter)r   versions     rn   _lower_version_count_by_1?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1*  s>    "#**"Q;&-kG**FFtgZX rq   rY  )r  r  r  zFailed to set tensor attributez6Dyanmo doesn't support setting these tensor attributeszDon't mutate attribute 'z@' on tensors, or move the mutation out of `torch.compile` regionz#nn.Module mutation in HigherOrderOpznn.Module: zPInplace modifying nn.Module params/buffers inside HigherOrderOps is not allowed.z<Remove the mutation or move it outside of the HigherOrderOp.)4r   r   rC   PlacementVariabler  rZ   NestedUserFunctionVariabler  TracebackVariabler0  r>  rU  ru  r_  ra  r  r=  r;  r   r   r   r   r{   tracked_fakesremovedynamo_disable_gradr   no_gradr?  r  set_r6   r  rZ  r[  r2   
store_attrr&  is_root_tracerFUNDAMENTALrV   r0   r;  r  r   r  getattr_staticmodule_typer\  Modulerl  convert_to_unspecialized)rl   r,  r  r  r  r  r;  tf	to_remover9  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rn   call_setattrBuiltinVariable.call_setattr
  s    --++,,3344++++
 
 ??2}xorJJII""88==++--..0D}}2 ?*! C"*3%r$r#a @%l ? 1 = => V^ zz)%$L&.se2dV2cU!$D)P!M#	 cii/%$_&.se2dV2cU!$D)J!M#	" &(YY%<%<!%<r		SZZ@W%<  ! (		//66r: ( -R0%--/+II22 / % 1 1 "3C:r!B 3B0!U\\ !ell ! II**'1)	 .clln.A.A.F.F.WX J.. "D066 " @"*3%r$r#a @$\6tf =N N	 II""--c=JY778899++--A)#/ rV*66	 **,,Y--2 2 &4CLLN4G4G%L"'"%//"6Q6Q6S"TK *{/D/D/F/F)78L8L8N8S8SUW)X& #*"8"8-"XK*@'588??+F+FF**((,A! 3B/00R '(>? '"&K'sC    SSSA	S!SS* 
S	S
S'*S?>S?c                 ,    UR                  USU/0 5      $ )N__delattr__r4  )rl   r,  r  r  s       rn   call_delattrBuiltinVariable.call_delattrv  s     r=8*bAArq   c                     UR                  5       nUR                  =(       a    [        UR                  5      nUc<  [        U[        R                  5      (       a  UR                  (       a  UR                  nU[        R                  L a5  UR                  R                  S[        5      n[!        [#        U5      S5      n[$        R&                  " XU5      $ ! [         a(  n[        [        R                  [        U5      SS9S eS nAff = f)Nunknown_python_type)	case_namer  r  )r_  rZ  r   r   INVALID_INPUTrx   r   r'   r   r   rZ   
cls_sourcer   r  r>  install_global_by_idr"   r$   r>   rp  )rl   r,  r  py_typeerrorr   r  s          rn   	call_typeBuiltinVariable.call_type~  s    	oo'G 6
3:: 6N3	 C CDD^^Fell"9911"e<DT 2H=F$$R&99' # 	++E
/ 		s   C 
D
"#DD
c                     UR                  U5      (       a9  [        [        UR                  U5      5      5      n[        R
                  " U5      $ g rk   )rT  rc  reversedrD  r   rP   )rl   r,  r  rC  s       rn   call_reversedBuiltinVariable.call_reversed  sC     &&r**#"9"9""=>?E**511rq   c                     UR                  U5      (       aa  [        U[        R                  5      (       dB  [        R                  " UR                  U5      [        5       S9nUR                  US/ U5        U$ g )NrO  sort)rx  r   r   rV   rL   ry  r=   r0  )rl   r,  r  ri   list_vars        rn   call_sortedBuiltinVariable.call_sorted  sp     ,,R00)):
 :
 !----b1.0H   VR8Orq   c                 2   [        U[        5      (       a8  [        R                  " U[        R                  " UR                  5       5      S S9$ [        U[        5      (       a5  UR                  US5      R                  (       a  UR                  US/ 0 5      $ g )Nr  __neg__)
r   rU   re  r   r   r  rZ   r  r   r0  rl   r,  r-  s      rn   call_negBuiltinVariable.call_neg  s|     a))"))qzz|,  q344""2y177==YB77 rq   _format_stringc                 x    UR                  5       n[        U5      n[        R                  R	                  XSU5      $ rk   )ra  rx   r   StringFormatVariablere  )rl   r,  r  rh   ri   format_strings         rn   call_formatBuiltinVariable.call_format  s5     '99;M*--44]&QQrq   c                 0   [        U5      S:  at  [        US   [        R                  5      (       aR  US   nUR                  R                  UR                  5      n[        R                  R                  [        U5      5      $ [        U5      S:X  Ga
  [        US   [        R                  [        R                  45      (       a  US   R                  (       a  [        US   [        R                  5      (       a6  [        US   R                  R                  [        R                   5      5        O5[        US   R                  R                  [        R"                  5      5        [        US   R$                  5      n[        R                  R                  U5      $ [        U5      S:X  a<  US   R'                  5       (       a$  [)        [*        US   5      nUR-                  U5      $ [/        US   [        R0                  5      (       a5  [        R                  R                  [        US   R2                  5      5      $ [/        US   [        R4                  5      (       a5  [        R                  R                  [        US   R$                  5      5      $ [/        US   [        R6                  5      (       a5  [        R                  R                  [        US   R8                  5      5      $ [;        S[=        U5      SU 3S/[>        R@                  QS9  g )Nr   r;   zid() with unsupported argsz5Dynamo doesn't know how to trace id() call with args zkSupported args are Tensors, and functions/nn.Modules/user-defined objects from outside the compiled region.r  )!r   r   r   r&  r>  r}  r~  r@   re  idr)  rZ   r   r    r   r   CLASS_MATCHID_MATCHr   r  r
   rV   call_idr4   r$  r   SkipFunctionVariabler  
fake_valuer   rx   r   r   )rl   r,  rh   nn_mod_variabler   constant_resulttensor_variables          rn   r  BuiltinVariable.call_id  sL    t9q=ZQ1K1KLL"1gO))))/*D*DEC--44RW==Y!^
G//1T1TU!
 !
 Aw~~d1gy'I'IJJ!$q'..";";L<T<T"UV!$q'..";";L<Q<Q"RS a/O--44_EEY!^Q 1 1 3 3">47;O"**2..DGY;;<<--44RQ

^DDDGY;;<<--44RQ5FGGDGY??@@--44RQ8J8J5KLL4D	STXSYZ8 '22		rq   r   c                 F    [        SSU S3SS/[        R                  QS9  g )Nzcopy.deepcopy()zcopy.deepcopy(r  z'Dynamo does not support copy.deepcopy()zAvoid calling copy.deepcopy()r  )r   r   r   )rl   r,  r   s      rn   call_deepcopyBuiltinVariable.call_deepcopy  s4     	%$QCq)A/"..		
rq   r  r  c                 2   SSK Jn  SSKJn  U R                  nU[
        R                  [
        R                  4;   a  UR                  5       =(       ap    UR                  5       =(       aY    [        [        UR                  5       R                  5      5      [        [        UR                  5       R                  5      5      :H  nU[
        R                  L a  [        R                  " U5      $ [        R                  " U(       + 5      $ Xe;  aB  [        SUR                    SU SU S3SUR                    S	U SU 3/ ["        R$                  QS
9  ['        U[(        5      (       a{  ['        U[(        5      (       af  UR*                  =(       a    UR*                  bF  UR*                  UR*                  :w  a,   [,        R.                  " UR*                  UR*                  5        UR                  5       (       a  UOUnUR4                  R7                  SXbR                  5       UR                  5       40 5      n	U" [9        U5      UU	5      $ ! [0         aF    [        SUR                    SU SU S3SU SU SUR                    S3/ ["        R2                  QS
9   Nf = f)Nr;   r  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opr  r  r  *Dynamo does not support the comparison op z with Tensor arguments r  z8failed to broadcast when attempting Tensor comparison opz.Dynamo was unable to broad cast the arguments z, when attempting to trace the comparison op .r<  )r=  r@  r   r  r   r   ru  is_notr  r  r.   r  rZ  r@   re  r   rr   r   r   r   rV   sizer   broadcast_shapesRuntimeErrorr  r>  r?  r   )
rl   r,  r  r  r@  r  r   	is_result
tensor_clsr]  s
             rn   r  'BuiltinVariable._comparison_with_tensor  s?    	/AWW(,,00  IOO%I1$--/2F2FGH01A1F1FGHI  X\\!'..y99'..9}==::;;-qbq9H V))-b96)556 t^,,5.11)uzz6		UZZ'
&&tyy%**= "^^--T5
		&&R--/5>>3C!Db
 !
 	
   V!{{m1TF"UG1="PQUPVVXY^X_ `BBD++a!Q9-889s   4+I AJJc           
         SSK Jn  U R                  nXT;  aB  [        SUR                   SU SU S3SUR                   SU SU 3/ [
        R                  QS	9  [        U[        R                  5      (       a%  [        R                  " U" [        5       S 5      5      $ UR                  R                  S
XRR                  5       UR                  5       40 5      n[        R                   " UUS S9$ )Nr;   r  z!unsupported SymNode comparison opr  r  r  r  z with SymNode arguments r  r<  r  )r   r  r   r   rr   r   r   r   r   r)  r@   r  r>  r?  r  rU   re  )rl   r,  r  r  r  r   r]  s          rn   r  (BuiltinVariable._comparison_with_symnode;  s     	BWW:;;;-qbq9H V**.r%:6)556 eY??@@--b4.@AA		&&R--/5>>3C!Db
 %%
 	
rq   c           
         [        U[        5      (       a  [        U[        5      (       a  g UR                  5       (       a`  UR                  5       (       aK  [        R                  " UUR
                  R                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        U[        [        [        45      (       a  UR                  USU/0 5      $ g )Nr<  r  r  )r   r@   is_symnode_likerU   re  r>  r?  r   r   r6   rD   rI   rZ   r0  r}  s       rn   call_xorBuiltinVariable.call_xorX  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   {,EF
 
 ==YR88rq   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r   rD   rI   rZ   r0  r}  s       rn   	call_ixorBuiltinVariable.call_ixorn  4     a*K9RSTT==Z!b99rq   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r+  r}  s       rn   call_subBuiltinVariable.call_subu  s4     a*K9RSTT==YR88rq   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r+  r}  s       rn   	call_isubBuiltinVariable.call_isub|  r.  rq   c           
         [        U[        5      (       a  [        U[        5      (       a  g UR                  5       (       a`  UR                  5       (       aK  [        R                  " UUR
                  R                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        U[        [        [        45      (       a  UR                  USU/0 5      $ g )Nr<  r  __and__)r   r@   r'  rU   re  r>  r?  r   r   r6   rD   rI   rZ   r0  r}  s       rn   	call_and_BuiltinVariable.call_and_  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a*K9RSTT==YR88rq   c           
         [        U[        5      (       a  [        U[        5      (       a  g UR                  5       (       a`  UR                  5       (       aK  [        R                  " UUR
                  R                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        U[        [        [        45      (       a  UR                  USU/0 5      $ g )Nr<  r  __iand__)r   r@   r'  rU   re  r>  r?  r   r   r6   rD   rI   rZ   r0  r}  s       rn   	call_iandBuiltinVariable.call_iand  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a*K9RSTT==Z!b99rq   c           
         [        U[        5      (       a  [        U[        5      (       a  g UR                  5       (       a`  UR                  5       (       aK  [        R                  " UUR
                  R                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        U[        [        [        [        [        [        45      (       a  UR!                  USU/0 5      $ g )Nr<  r  __or__)r   r@   r'  rU   re  r>  r?  r   r   r6   rB   rD   rX   rI   rY   rZ   r0  r}  s       rn   call_or_BuiltinVariable.call_or_  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   ! &')

 

 ==XsB77 rq   c           
         [        U[        5      (       a  [        U[        5      (       a  g UR                  5       (       a`  UR                  5       (       aK  [        R                  " UUR
                  R                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        U[        [        [        [        [        45      (       a  UR                  USU/0 5      $ g )Nr<  r  __ior__)r   r@   r'  rU   re  r>  r?  r   r   r6   rB   rD   rX   rI   rZ   r0  r}  s       rn   call_iorBuiltinVariable.call_ior  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   ! &)	
 	
 ==YR88 rq   c           
         [        U[        5      (       aK  [        R                  " UUR                  R                  " S[
        R                  /[        U/0 5      Q76 S S9$ [        U[        5      (       a  UR                  n[        U[        [        45      (       a,  [        R                  " [        UR                  5      S:H  5      $ g )Nr<  r  r   )r   rU   re  r>  r?  r   r   r6   rE   dv_dictrL   rB   r@   r   rC  r  s      rn   	call_not_BuiltinVariable.call_not_  s     a))"))		&&#X]]5FsB5O   a)**		Aa,(9:;;#**3qww<1+<==rq   c                 ,    UR                  USU/0 5      $ )N__contains__r4  r}  s       rn   call_containsBuiltinVariable.call_contains  s     }}R!b99rq   Tc                     g)NTre   r   s    rn   is_python_hashable"BuiltinVariable.is_python_hashable  s    rq   c                 ,    [        U R                  5      $ rk   )hashr   r   s    rn   get_python_hashBuiltinVariable.get_python_hash  s    DGG}rq   otherc                 t    [        U[        R                  5      =(       a    U R                  UR                  L $ rk   )r   r   r   r   )rl   rT  s     rn   is_python_equalBuiltinVariable.is_python_equal  s'    %!:!:;S588@SSrq   r7  )r  r\   r`   Nrk   )}rr   rs   rt   ru   rv   r  	_SENTINELr>   _nonvar_fieldsclassmethodr	   r&   r   staticmethodr  cacher  r   r   r   r   r   rw   r  rc  rx   r   r   r  r  r  r  r  r  r  ra  r  r  r  r  r  r  r   r  r  r7  r=  r6  ra  __annotations__r<  r0  r  call_int
call_floatr  r  r  r  r  r  call_mincall_maxr  r  r  r  r  r  r  r  r  r  r
  r  
call_tuple	call_listr  r  r  r!  r  r~  r7  r>  rH  rL  rP  rr  ry  r~  r  r  r  r  r;  r  r  r  r  r  r  r  r  r  r  r  r  r(  r,  r0  r3  r7  r;  r?  rC  rG  rK  r   rN  r   rR  rV  ry   __classcell__)r`  s   @rn   r   r     sB    I		'	'N
 )s )F )?P ) ) __@c(38*<&= @  @D:4 : __*Xc3h%7!8 *  *X __#TfuT#Yf0E%EFF #  #J __yTf)!# !	"	
		 y  yv S#X(,_(=GK		$	& 5T 53 # $ 4# 4C "# "J1? 1o 1RV 1 T $t*  3$30?3	3 
'
15c?6J1K
	tCy$sCx.(	)
 

_-
7;C<P7Q
	
 q S#Xq +/:q CGq 	#/3&'o%&	

 	$	 
q  q f43 4C 4O 4N#N 'N S/)*	N
 
4	Nt 	  fck')S/)*
 	
	
" 
)#) ') S/)*	)
 
)*C;#C; C; ?#	C;
 S/)*C; 
C;J)0?	4	0 H J)0?	4	<$)$0?$	4	$L:):0?:	4	:x
)
2A
	4	
Y)Y2:?2KY	Yj#j T!j T!	j
 
4	jX HH	4)	40?	4		4	4)	40?	4		4A)A0?A	A<#< < 	<
 "< 
<)2A	4	
? 
o 
RV 

1)12A1	1


)

25

AD

	

  '+1#1 t#1 	1
 "1 
4	1f
#
 
 	

 "
 

  '+H#H t#H 	H
 "H 
4	H*&#& & 	&
 "& 
&P "J I)0?	4	B

,
8G
	4	
)0?	4	K#K 	K
 "K 
K 
#

 	

 "
 

 
0 P
#P
P
 	P

 "P
 
P
 P
d)
#)
 )
 "	)

 
)
V
#
 
 "	

 

>
#
 
 "	

 

6	E#	E 	E "		E
 
	EN#N N "	N
 
Nk6#k6 k6 -	k6
 
k6ZO#O !O "	O
 
O4-)-.=-BQ-	-
)2A	 )0?GV	4	#
##
 #
 	#

 "#
 
#
J

)

/>

ET

	

D5 DS D_ D& +/eK#eK eK "	eK
 !4'eK 
4	eKNf#f f "	f
 f 
4	fPB#B B "	B
 
B:):0?:	:4)0?	4	#  "	
 
4	$).=	4	&	R#	R (	R 		R
 "	R 
	R%)%2A%	%N
)
.=
	
5
)5
1@5
IX5
	5
n
)
1@
IX
	
:).=BQ	4	,).=BQ	4	).=BQ	4	).=BQ	4	).=BQ	4	&).=BQ	4	$ ) .= BQ 	4	 D).=BQ	4	>).=	4	(:):.=:BQ:	:
GDM  TV T T Trq   r   r,  c              #      #    SSK Jn  UR                  U S5      n UR                  U 5        S v   UR	                  U 5        g ! UR	                  U 5        f = f7f)Nr;   )GradModeVariableF)r  rf  re  enterexit)r,  rf  gmvs      rn   r  r    sC     "

!
!"e
,C		"s   AA AAA)r`   N)rv   
contextlibr  r  r  loggingr   r   rz  rg   typingr  collectionsr   r   collections.abcr   r   r   r   r	   r
   r   r   r   r   r   r   torch._subclasses.meta_utilsr   torch.overridesr   torch.utils._python_dispatchr   r  r   r   r   r   rf  r   r   r   r   r   r   r   guardsr   r    replay_recordr!   r   r"   r#   r$   r%   r&   r'   utilsr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   baser<   r=   r>   constantr?   r@   rA   dictsrB   rC   rD   rE   rF   rG   rH   rI   listsrJ   rK   rL   rM   rN   rO   rP   streamsrQ   rR   r   rS   rT   rU   rV   rW   r  rX   rY   rZ   r[   torch._dynamo.codegenr\   torch._dynamo.symbolic_convertr]   	getLoggerrr   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW  r  r   r  r  r   cmp_eqr   cmp_ner   cmp_ltr   cmp_ler   cmp_gtr   cmp_gerq  r   r   r   r   r   r   r   r   r   r   r   r   r   r^   rw   r]  r_   r   r   contextmanagerIteratorr  re   rq   rn   <module>r     sT  *        
    0 B B ; ;  $ 6 1 F > >   1 '      * Y X L L	 	 	   3   /D! MM8<<MM8<<MM8<<))x''MM8<<h&&hoohooMM8<<MM8==LL(,,MM8<< " fjj&**57MM  d?+U43H#3M-NNOKK!!KK!!KK!!KK!!KK!!KK!!  LLLLOOLLLLKKKKKKKKKKKKLLMMMMMMMMMM-4 MMLLLLMMMMLL oo
 OOOO  LLLLLLMM
 JL $xS18CH3EEF K KM 4c 2HS#X4F FG L>EBk/To k/T\_ 3 8M  rq   