
    ȅi                       % 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KSJTrT  SSKUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\  SSK]J^r^J_r_J`r`JaraJbrbJcrc  SSKdJereJfrf  SSKgJhrhJiriJjrjJkrkJlrl  SSKmJnrnJoroJprpJqrq  \(       a  SSKrJsrs  SSKtJuru  \R                  " \w5      rx\R                  \R                  \R                  \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"                  0r\S\
R(                  \
R(                  /\RS-  4   r\\\R   \\\R   S4   4   r\GR.                  \%GR0                  \GR2                  \%GR4                  \GR6                  \%GR8                  \GR:                  \%GR<                  \GR>                  \%GR@                  \GRB                  \%GRD                  0r\GR                  \R                  \GRH                  \GR                   \GR                  \GR                  \R                  \GR6                  \GR>                  \GRB                  \GR:                  \GR2                  \GR.                  \R                  \GR                  \R                  \GR
                  \R                  \GR                  \GR                  \R                  \R                  4r\GR                  \GR                  \GR"                  \GR                  \GR                   \GR                  4r\GRN                  4r\GR                  \GR                  \GR                  \GR                  \GRR                  4r\GRV                  \GRX                  \GRZ                  \GR\                  \GR^                  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Rn                  S#SS\
GRp                  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ConstantVariable)ConstDictVariableDefaultDictVariableDictKeysVariableDictViewVariableFrozensetVariableis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)EventVariableStreamVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslatorrZ   .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$ Nrb   )selfrc   rd   re   rf   most_recent_funcs        Y/home/james-whalen/.local/lib/python3.13/site-packages/torch/_dynamo/variables/builtin.py__torch_function__Kpopulate_builtin_to_tensor_fn_map.<locals>.GetMethodMode.__torch_function__   s$     \rF#(((    )rb   N)__name__
__module____qualname____firstlineno____doc__r   r	   r   dictstrrl   __static_attributes__)rj   s   rk   GetMethodModer`      sd    	 #%,0
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	) 
	)rn   rw   r;   )dtypec                    > U " T5      $ rh   rb   )oinp0s    rk   <lambda>3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s	    qwrn   c                    > U " T5      $ rh   rb   rz   inp0_ints    rk   r|   r}      s	    q{rn   c                    > U " TT5      $ rh   rb   )rz   r{   inp1s    rk   r|   r}      s    qt}rn   c                    > U " TT5      $ rh   rb   )rz   r   inp1_ints    rk   r|   r}      s    q8,rn   c                    > U " TS5      $ Nr   rb   r   s    rk   r|   r}      s    q1~rn   c                    > U " ST5      $ Nr;   rb   )rz   r   s    rk   r|   r}   
  s    !At*rn   c                    > U " ST5      $ r   rb   )rz   r   s    rk   r|   r}         qH~rn   c                    > U " ST5      $ r   rb   r   s    rk   r|   r}     r   rn   )lenr[   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemr\   )rw   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsr{   r   r   r   rj   s          @@@@@rk   !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      rk   create_with_source"BuiltinVariable.create_with_source-  s&    f''(B(BCD5((rn   .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;   )rQ   c              3   z   #    U  H1  n[        U[        [        R                  5      5      (       d  M-  Uv   M3     g 7frh   )
isinstancetypemathsqrt.0xs     rk   	<genexpr>;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>s  s%     W4
1d499o8V114s   ,;	;)>absallanyboolcallablechrcomplexdivmodfloatgetattrintr   maxminordpowreprroundru   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tensorrQ   updatevaluesr   __dict__)fnsrQ   s     rk   _constant_fold_functions(BuiltinVariable._constant_fold_functions2  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
rn   c                 <    U R                   U R                  5       ;   $ rh   )r   r   ri   s    rk   can_constant_fold_through)BuiltinVariable.can_constant_fold_throughv  s    ww$77999rn   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 $ rh   )(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    rk   _fx_graph_functions#BuiltinVariable._fx_graph_functionsy  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 
rn   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    rk   _binopsBuiltinVariable._binops  s     LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<   LL>M/U
> 
rn   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)UserDefinedClassVariablerW   rX   )forward_namereverse_nametxrZ   abr'  r(  r]   c                v   > [        UT5      (       a  UR                  XU/0 5      $ UR                  XU/0 5      $ rh   )r   call_method)r)  r*  r+  r'  r(  rX   s        rk   user_defined_handler=BuiltinVariable._binop_handlers.<locals>.user_defined_handler  s=    , a!455==A3CC==A3CCrn   )r'  c                *    UR                  XU/0 5      $ rh   r-  )r)  r*  r+  r'  s       rk   user_defined_inplace_handlerEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB??rn   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)builderr8  outputcreate_proxyr6   )r)  r*  r+  r   r8  s        rk   dynamic_handler8BuiltinVariable._binop_handlers.<locals>.dynamic_handler)  s?     3$II**'.?.K rn   c                 R    [        / UR                  QUR                  U 5      Q5      $ rh   )rM   itemsunpack_var_sequencer)  r*  r+  s      rk   tuple_add_handler:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerK  s)     !!G177!GQ-B-B2-F!GHHrn   c                 R    [        / UR                  QUR                  U 5      Q5      $ rh   )rK   r@  rA  rB  s      rk   size_add_handler9BuiltinVariable._binop_handlers.<locals>.size_add_handlerP  s)       F!'' FA,A,A",E FGGrn   c                 R    [        / UR                  U 5      QUR                  Q5      $ rh   )rM   rA  r@  rB  s      rk   r|   1BuiltinVariable._binop_handlers.<locals>.<lambda>w  s-    ..r2"rn   c                 `    [        / UR                  QUR                  U 5      Q[        5       S9$ Nmutation_type)rJ   r@  rA  r=   rB  s      rk   r|   rI    s+    :agg: 5 5b 9:"2"4"rn   c                 T    [        U5      " / UR                  QUR                  Q5      $ rh   )r   r@  rB  s      rk   r|   rI    s*    a"rn   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$ rh   )is_immutablehas_unpack_var_sequencerA  r;  side_effectsmutationr@  extend)r)  r*  r+  seqs       rk   list_iadd_handler:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  sa     ~~q'@'@'D'D''+CII""++A.GGNN3Hrn   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)r@  rM  re   )r   rH   is_python_constant	__class__r@  as_python_constantr=   MemoryErrorr   r   listmapr@   createre   )r)  rX  rY  excs       rk   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/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)  rZ   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   r`  ra  rb  re   )r)  r*  r+  rc  r   s       rk   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      $ rh   )inline_user_function_returnr>   buildpolyfill_fn_mappingr)  r*  r+  r   s      rk   handlerPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handler  s5     99'--b2Eb2IJQFTV rn   is_c                    > [        T5      $ rh   r?   )r)  r*  r+  none_results      rk   neverNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.never  s     ,K88rn   c                 P   > [        T" UR                  UR                  5      5      $ rh   )r@   r   ro  s      rk   r|   QBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>7  s    -=bqttn-Mrn   c                    > [        T" U R                  R                  UR                  5      U R                  R                  UR                  5      5      5      $ rh   )r@   r;  get_submodule
module_keyro  s      rk   r|   rx  >  s?    -= "$&II$;$;ALL$I$&II$;$;ALL$I!".rn   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 )Nrr  )
r   r@   rb  ro   r4   r   ObjectVariabler   ExceptionVariableexc_type)r)  r|  r}  r   s      rk   	handle_isRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_isg  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rn   )r>   r@   rn  r   rT  rR   _comparison_with_symnodeappendr   ro   
startswithobjectrS   rH   rA   rO   rN   _comparison_with_tensor)r   ri  resultop_varrp  ru  obj_op_nonenone_op_objtypes_that_are_never_noner  rt  r%  r   r#  r&  rW   rX   r!  r$  s   `         @rk   create_cmp_op_handlers?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s!   
+
0?
DS
 
( $%568HIJ  (( -.>?AQRS(, -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Mrn   )(	functionsr   r!  	nn_moduler#  r   r$  r   r%  user_definedr&  rW   rX   r   r  r@  r>   ru   r  r   r	   rR   rH   rK   rM   r@   rJ   rI   r   r   rT  r   r   r`  tuple_TrackersType_HandlerCallbackrQ   r   r   )op_handlersr   magic_method_namesin_place_opr'  r(  inplace_namer.  r2  r=  rC  rF  list_like_addition_handlersrV  list_like_iadd_handlersrd  list_like_expansion_handlersr  r%  r   r#  r&  rW   rX   r!  r$  s                     @@@@@@@@rk   _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o	c"o	%m]:;=MMNOo	 o	b +113BB<<<(((4R8KO 4
 rn   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$ rh   )r   r  get
issubclassr  )r   r  r  handlersmatchestype1type2rp  s           rk   _find_binop_handler#BuiltinVariable._find_binop_handler  sd     #22488<'/#NUG&((Z-F-Fw' (0 rn   c                 <    U R                   U R                  5       ;   $ rh   )r   r   r   s    rk   can_insert_in_graph#BuiltinVariable.can_insert_in_graph  s    ww$22444rn   rf   c                 2   > [         TU ]  " S0 UD6  Xl        g )Nrb   )super__init__r   )ri   r   rf   r]  s      rk   r  BuiltinVariable.__init__  s    "6"rn   c                     U R                   c  SnOU R                   R                  nU R                  R                   SU S3$ )NNone())r   ro   r]  )ri   names     rk   __repr__BuiltinVariable.__repr__  s=    77?D77##D..))*!D633rn   c                     U R                   $ rh   r4  r   s    rk   r^  "BuiltinVariable.as_python_constant  s    wwrn   c                    > [         [        R                   [        [        R                  [        [        R
                  0nU R                  U;   a  XR                     $ [        TU ]!  5       $ rh   )	r   r   r   int64r   float64r   r  as_proxy)ri   DTYPEr]  s     rk   r  BuiltinVariable.as_proxy  sM    %**5==

 77e>!w!!rn   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   ro   rp   r)  	f_globalsappend_outputcreate_load_global)ri   codegenr  s      rk   reconstructBuiltinVariable.reconstruct  sc    wwww!!Z///::///B1BB/g8848HIrn   re   c                     [        X5      $ rh   )r(   ri   re   rf   s      rk   constant_argsBuiltinVariable.constant_args  s    "400rn   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)ri   re   
any_tensorargs       rk   tensor_argsBuiltinVariable.tensor_args  s?    
C#y8899#6s}}J  rn   	arg_typesc                     SnU HG  n[        U[        R                  5      (       a    gU=(       d    [        U[        R                  5      nMI     U$ r  )r  r   r  rS   )ri   r  r  arg_types       rk   tensor_args_type BuiltinVariable.tensor_args_type  sF    
!H(I$=$=>>#Uz(I<T<T'UJ " rn   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     rk   r   BBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s/      
  -.HH,@qxx(eK s   13)	itertoolschainr   r  r  r   r  )ri   re   rf   r  non_tensor_argsis         rk   python_and_tensor_constant_only/BuiltinVariable.python_and_tensor_constant_only  s     }}7A{{}}""1%&&q)	 8
  
 
 
 3   /2	3rn   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 rh   )r^  r@  )re   rf   r   kvs        rk   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      $ rh   )r   r*   r  s      rk   has_constant_handler$BuiltinVariable.has_constant_handler  s%     --/ 
4Q5
 	
rn   
has_kwargsrZ   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rh   )r  )r   r  r  s     rk   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 rh   )r9  realize)r)  re   rf   r  objs       rk   r|   /BuiltinVariable._make_handler.<locals>.<lambda>  s-    C,=,=$/$QYY[$/-/s   2
r)  rZ   re   .rf   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rh   )r\  r   r^  ru   r   s     rk   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   ru   r   SUPPORTABLEr   r  )r)  re   rf   r   s      rk   create_exception_class_objectDBuiltinVariable._make_handler.<locals>.create_exception_class_object  sa    
 ' 4!4 1 1 " @ #D	$W> 1 = =>	 !222tDDrn   r   r   c                    > T" U /UQ76 $ rh   rb   )r)  re   _binop_handlers      rk   r|   r  -  s    M"4Lt4Lrn   r  c                 @   > T H  nU" U /UQ76 nU(       d  M  Us  $    g rh   rb   )r)  re   r  r   rvbinop_handlerss        rk   call_binop_handlers:BuiltinVariable._make_handler.<locals>.call_binop_handlers0  s+     -]T]2#%I -  rn   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  )rh  inspect	signaturebindr  logwarningr   ro   r   	DIFFICULTr   remove_from_stats)	r)  re   rf   er  rc  r   r  self_handlers	         rk   call_self_handler8BuiltinVariable._make_handler.<locals>.call_self_handler?  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rh   )r  r@   r   s     rk   r   r  i  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)r^  	Exceptionr   r   r`  ra  r@   rb  re   r<   r   r   
DYNAMO_BUGr>   rm  )r)  re   rf   r   resrc  r   s         rk   constant_fold_handler<BuiltinVariable._make_handler.<locals>.constant_fold_handlerm  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*   r^  r@  r<   r   r   r   r  r   r   r`  ra  r@   rb  re   r>   rm  )	r)  re   rf   r   r  r  r!  rc  r   s	           rk   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   ro   )re   r  real_arg_typesr  r   r  s      rk   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      $ rh   rb   )r)  re   rf   r(  s      rk   r|   r    s    ,>t,Drn   c                 <   > T" XU5      nU(       a  U$ T" U5        U$ rh   rb   )r)  re   rf   r  r(  rp  s       rk   builtin_dispatch7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s&    
 Rv.I"4(	rn   c                 V   > S nT H  nU" XU5      nU(       d  M  Us  $    T" U5        U$ rh   rb   )r)  re   rf   r  r   r(  r  s        rk   r,  r-    s9    
 "BBf-Br!	 # #4(	rn   )lazyr  r   r   r  isclassr  BaseExceptionGeneratorExitr  r>   rt   ru   r  r   r   r   rS   r  _handle_insert_op_in_graphr  r   r  r	   r   ro   r   r   r   )r   r  r  r  r  r  r"  r,  r  r  r  r(  rp  r  r  r  s   ```     @@@@@@@@rk   _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'	   rn   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   rh  ri   r)  re   s      rk   	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;   )r8  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rh   )r   rS   r   r  s     rk   r   =BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr><  s      B7;S	^+ts    r9  __eq__c              3   B   #    U  H  n[        U[        5      v   M     g 7frh   r   rP   rD  s     rk   r   rE  Q  s     E:c#344r  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frh   r   r   rT   need_unwrapr   s     rk   r   rE  [  s-      "C!!Y%J%JK "AMMC   #<<)	raw_valuerK  c              3   B   #    U  H  n[        U[        5      v   M     g 7frh   r   rR   r   s     rk   r   rE  h  s     BTZ?33Tr  z,unimplemented builtin op on tensor argumentszpartial tensor op: r
  r7  z with tensor argumentsr  )7r:  r8  r=  r  r   r>  torch_functionr?  r@  exportr   r  r   r\   r[   rb  r  bytecode_transformationrA  r  rB  ro   IN_PLACE_DESUGARING_MAPr   r   r@   r   r   rR   r   selectr)   r   r;  r<  r5   r6   NumpyNdarrayVariabler   r   r-  r`  rP   r+   r  r  r  rT   r   r   r^  NotImplementedErrorr   r   r  )ri   r)  re   rf   r8  r=  r>  r?  r@  rc   tmpfn_varr   rA  rB  proxy_args_kwargsrM  rK  s                       rk   r3  *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rh   r   r   s     rk   r   0BuiltinVariable.call_function.<locals>.<genexpr>       4t!d1ggt   Tc              3   8   #    U  H  n[        U5      v   M     g 7frh   r`  r   s     rk   r   ra    rb  rc  )r@  r  r   r]  r  r4  r   r   )	ri   r)  re   rf   r  r  keyrp  r   s	            rk   r9  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  [&        R:                  " S 5      $ U R                   [        L a%  US:X  a  [        RJ                  " U[        /UQ70 UD6$ U R                   [        L a  [7        U R                   U5      nU[L        ;   a  [	        US   [&        RN                  5      (       a#  US   RP                  RS                  XUSS  U5      $ [	        US   [&        R                  5      (       a  US   RS                  XUSS  U5      $ U R                   [T        L a  [7        U R                   U5      nU[V        ;   a  [	        US   [&        RX                  5      (       a#  US   RZ                  RS                  XUSS  U5      $ [	        US   [&        R\                  5      (       a  US   RS                  XUSS  U5      $ U R                   [^        L a[  [7        U R                   U5      nU[`        ;   a;  [	        US   [&        Rb                  5      (       a  US   RS                  XUSS  U5      $ U R                   [d        L a`  [        U5      S:  aQ  [7        U R                   U5      nU[f        ;   a1  [	        US   [:        5      (       a  US   RS                  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      $ [h        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;   rL  r   )fromhexhexfrom_numberri     r[  r  fromkeys)5r   r  r   r  r   rW   r;  rR  is_attribute_mutationr\  method_setattr_standardtrack_new_user_defined_objectrt   rA   r=   r   r  has_force_unpack_var_sequenceforce_unpack_var_sequencer   rM   r`  rJ   r   r   sysversion_infor   r^  r@   rb  OverflowError
ValueErrorr   r   ra  re   call_custom_dict_fromkeysr-   rV   _dict_vtr-  setr8   UserDefinedSetVariable_set_vtrG   	frozensetr/   rE   ru   r9   r  )ri   r)  r  re   rf   r  name_varvaldict_vt	init_argslist_vtr   r!  r  resolved_fnr]  s                  rk   r-  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--d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   r7  r9  r)  rY  )r  r   rR   r-  r   r   r   r   torch._dynamo.variables.builderr8  r;  r<  r  )ri   r)  r  r  fn_r8  s         rk   _call_int_floatBuiltinVariable._call_int_float"  s    
 ==??jo>>}}r62r:!WW^'CE ii,,#]]_&	  rn   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  r-  r   rR   sym_numr   SymBoolr   r@   rb  r   r   r  r4   SymIntSymFloat)ri   r)  r  r  s       rk   	call_boolBuiltinVariable.call_bool=  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 rn   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R                  n[        R                  " X5      nUR                  X/0 5      $ g)z&Handle repr() on user defined objects.N)r   r   rW   r   r  r   r  r>   rm  r9  __func__)ri   r)  r  repr_methodfn_vtbound_methods         rk   	call_reprBuiltinVariable.call_repr[  s     c9>>??)),,KCII''6??:'--b>**2r266  +33'--b?**2ub99rn   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++ 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rh   )r^  )r   r*  s     rk   r   +BuiltinVariable.call_str.<locals>.<genexpr>  s     !K(Q"6"6"8"8(s   )r   r   r!  r@   rb  ru   r   rW   hasattrr   r  r  r   r   
USER_ERRORr   r  AttributeErrorr3   r  r>   rm  r  r  r  r9  r  r   re   r  join)ri   r)  r  
str_methodr  user_func_variabler   s          rk   call_strBuiltinVariable.call_strm  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   rt  ru  _call_min_max_seq_call_min_max_binary)ri   r)  re   r@  s       rk   _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rn   r@  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  )ri   r)  r@  s      rk   r  !BuiltinVariable._call_min_max_seq  sO     5zA~~u:?8O	 1 1$2K2KR PRWXXrn   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=  r9  r  r   r   r   c              3   v   #    U  H/  n[        U[        R                  [        R                  45      v   M1     g 7frh   )r   r   rT   r@   )r   r  s     rk   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rh   rH  )r   r  s     rk   r   r    s     KFSz#'788Fr  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frh   rJ  r   s     rk   r   r    s-      "#!!Y%J%JK "AMM#rL  )%r  r  r   rP   r   TorchInGraphFunctionVariabler   r   r9  rR   r:  r=  r   r;  r<  r   r6   r\  rU  numpyNumpyVariableclipclampr   maximumr   minimumr   r   from_tensor_variabler^  rM  rT   sym_maxsym_minrb  r@   )ri   r)  r*  r+  r=  npr   rf   r  np_fntorch_fnraw_braw_resrK  py_fnrY  r   s                    rk   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rn   c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  U/ 0 5      $ )N__abs__r   r   r9  r@   rb  )ri   r)  r  
abs_methods       rk   call_absBuiltinVariable.call_abs-  F     %W-;;&--i892

 ''B33rn   c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  U/ 0 5      $ )N__pos__r  )ri   r)  r  
pos_methods       rk   call_posBuiltinVariable.call_pos6  r  rn   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@   rb  )ri   r)  r  constant_values       rk   
call_indexBuiltinVariable.call_index?  sT     ==??3Y	 3!,))00@@rn   c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  XU5      $ )N	__round__r  )ri   r)  r  re   rf   round_methods         rk   
call_roundBuiltinVariable.call_roundN  sD     'w/==&--k:;R
 ))"F;;rn   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rh   )r   r@   rb  r1   rD  s     rk   r   -BuiltinVariable.call_range.<locals>.<genexpr>a  s-      PT	**11,s2CDDPTs   57)r*   r   RangeVariable_dynamic_argsr  r9  s      rk   
call_rangeBuiltinVariable.call_range[  s]     )r22**400& PT D **400rn   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rh   rO  r   s     rk   r   0BuiltinVariable._dynamic_args.<locals>.<genexpr>i  s     @4a:a114r  c              3   B   #    U  H  n[        U[        5      v   M     g 7frh   rO  r   s     rk   r   r  i  s      H
4CqJq/**Or  )r   r   r  s      rk   r  BuiltinVariable._dynamic_argsh  s7    @4@@ 
C H
4:MMOH
 E
 	
rn   c                 .    [         R                  " X!5      $ rh   )r   SliceVariabler9  s      rk   
call_sliceBuiltinVariable.call_slicem  s     &&t00rn   c           
      ~    SSK Jn  U" UUR                  R                  " SU R                  /[        X#5      Q76 5      $ r6  )r:  r8  r;  r<  r   r6   )ri   r)  re   rf   r8  s        rk   
_dyn_proxyBuiltinVariable._dyn_proxyr  s?     	+II""+<T+J
 	
rn   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 )NrL  r   F)r   r   IteratorVariabler  r  rH   cls_forr   r=   rQ  r   r%   rL   r    r   r   TUPLE_ITERATOR_LENr   rA   r4   rG   rE   r;  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHr`  rA  ri   r)  r  re   rf   r   s         rk   _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  rn   c                     [         R                  R                  U R                  5      nU" [	        UR                  U5      5      [        5       S9$ rK  )r   rH   r  r   r`  ru  r=   r  s         rk   _call_iter_tuple_generator*BuiltinVariable._call_iter_tuple_generator  sD     ((009..r23*,
 	
rn   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$ rK  )r   r   r  rH   r  r   r`  ru  r=   LocalGeneratorObjectVariablerW   rt  r  r  r  s         rk   _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Grn   c           	         [        U[        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   rJ   r  r  rA   r#  rS   r-  r!  r   r  iter_r9  ObjectIteratorVariable)ri   r)  r  re   rf   rets         rk   	call_iterBuiltinVariable.call_iter  s     &&''**++**((

 

 ??2z2r:: 00""((mBtb1  
  66s;Jrn   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@   rb  rX   r   r   rR   rS   rJ   rM   rI   )ri   r)  r  r   r  r#  s         rk   call_callableBuiltinVariable.call_callable  s     	R/22(( 	
 
 --44T::011--44Xcii5HII $

 

 --44U;;rn   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   )ri   r  re   rf   s       rk   	call_castBuiltinVariable.call_cast  s<     t9>7N0vQvh/JHI		
rn   c                    [        U[        R                  5      (       a*  [        R                  " U[        UR                  5      5      $ [        U[        5      (       a*  [        R                  " U[        UR                  5      5      $ g rh   )	r   r   r&  r>   rm  dirr   r   r   )ri   r)  r  s      rk   call_dirBuiltinVariable.call_dir+  s]     c9==>>"((S^<<c?++"((S[99rn   c                @    [         R                  " U[        /UQ70 UD6$ rh   )r   call_custom_dictrt   ri   r)  re   rf   s       rk   	call_dictBuiltinVariable.call_dict4  s!     //DJ4J6JJrn   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   )r`  r   r   r   r  r  r&  r;  rR  has_pending_mutationget_forwarded_dictrl  r>   rm  r   construct_dict)r)  r  re   rf   	args_lists        rk   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=
 	
rn   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[        R                  " S 5      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 argsrL  c              3   8   #    U  H  n[        U5      v   M     g 7frh   )rF   )r   r  s     rk   r   <BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     04a;q>>4rc  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.)rt   r   r   r   ro   r   r7   popr@   rb  rA   rB   r   rp  r=   rt  ru  r   )
r)  r  re   rf   r  r   DictVariableTyper  arg_listkeyss
             rk   rz  )BuiltinVariable.call_custom_dict_fromkeysV  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>9T9+22489D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   # I8c           
      d   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      (       ax  UR!                  US5      n[        U[        R"                  5      (       aG  UR%                  XbU5      n[        U[         5      (       a  U$ ['        [(        5      R+                  X5      $ [        [        U[
        R                  " S5      /S9  g )	NrL  r;   z&set() takes 1 positional argument but  were givenr[  r   r	  z!failed to construct builtin set())rG   r=   r   r   rh  r@   rb  r4   r   clonert  ru  r   rW   r   r   r8  UserMethodVariablerl  r   r|  call_set)ri   r)  re   rf   r  r@  iter_fnouts           rk   r3  BuiltinVariable.call_set  sj    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&s+44R== "))*MNO	
rn   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 r0  r[  r   z'failed to construct builtin frozenset())rE   r   r   rh  r@   rb  r4   r   	set_itemsvtrt  ru  )ri   r)  re   rf   r  r   r@  s          rk   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                 |   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[        [        5      R                  X/0 5      PM%     nn[        R                  " UUR                  5       [        5       S9$ s  snf )Nr;   strictzip1 kwargs (`strict`)r'  Fr=  rM  )r   r7   r*  r@   rb  r   iterr9  r   ZipVariabler^  r=   )ri   r)  re   rf   r=  r  	iter_argss          rk   call_zipBuiltinVariable.call_zip  s     K1$V);#)6{m7+	 H&6&=&=e&DESWXSWC_T*88UBGSW	X$$,,.*,
 	
 Ys   !*B9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[  )r-  r`  r  r   r   re   )ri   r)  re   rf   r  s        rk   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;   )r-  r`  r  s       rk   call_getitemBuiltinVariable.call_getitem	  s)     Aw""2}d48nfMMrn   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_typerx   )rS  example_valdtypesr  s      rk   
check_typeOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_type/	  s    !44&)lln&9&9&>&>&O9+FF "ehh&8&8&B&B B
 $.k#>>#-coo.?#DD04F99..rn   c              3   4   >#    U  H  nT" U5      v   M     g 7frh   rb   )r   rS  r^  s     rk   r   NBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>B	  s     D"z"~~s   )r	   r   r   r  r   )rP  rQ  r^  r  s     @rk   _tensor_isinstance;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance,	  sA    /3 /4 /$ $-DDDD%k22rn   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)rd  N)r   r   r   r   )r   tps     rk   r   2BuiltinVariable.call_isinstance.<locals>.<genexpr>j	  s5      8
% r4 THWR9Ld-S$TT%s   :<z?isinstance() arg 2 must be a type, a tuple of types, or a unionr[  )"r[  rV  r   r   r   r^  r   r   rS   rx   r>   r	   r   r@   rb  rW   r   rd   MemberDescriptorTyper  r]  r   rd  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__r  r   r   rh  r  )	ri   r)  r  rN  r  isinstance_typerb  isinstance_type_tupler  s	     `      rk   call_isinstanceBuiltinVariable.call_isinstance	  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  )r^  rV  r   r   r  r   r@   r  )ri   r)  rp  rq  
left_ty_pyright_ty_pys         rk   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      $ rh   )r   SuperVariableri   r)  r*  r+  s       rk   
call_superBuiltinVariable.call_super	  s     &&q,,rn   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   rH   r  r@  )ri   r)  re   r  exs        rk   	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 rh   )	r\  r^  r   r   r   r@   r  r   call_obj_hasattr)ri   r)  r  r  r  s        rk   call_hasattrBuiltinVariable.call_hasattr	  sd     ""$$**,D#y8899 11'#&&$2GHH''11rn   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 )
NFrn  r;   r=  ra  r?  r'  z0 kwargsr@  )r@   rb  rv  rw  r   r7   r*  rQ  rA  r   MapVariabler^  r=   )ri   r)  r   r  rf   r=  rU  seq_lists           rk   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rU  c                     UR                  U5      (       a  UR                  U5      OUn[        R                  " UU[	        5       S9$ rK  )rQ  rA  r   FilterVariabler=   )ri   r)  r   rU  seq_or_lists        rk   call_filterBuiltinVariable.call_filter	  sK     ,/+F+Fr+J+JC##B'PS 	 ''*,
 	
rn   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>   rm  r   r  )ri   r)  r  r   r   s        rk   r8  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                  45      (       GaD  [        U[        RH                  5      (       af  [K        URL                  RN                  [P        RR                  5      (       a3  [T        RV                  (       a  US;   a  [        SSU 3SU S3SU S3/S9  UR                  5       (       a  URY                  5       RZ                  R\                  S   n[        U[^        R`                  5      (       aR  [c        U5      (       aB  URd                  (       a  [T        Rf                  (       d  [        SSS/ [h        Rj                  QS9   UR?                  X5      $ [        U[        Rp                  5      (       a  [s        URL                  U5      n[        U[^        Rt                  Rv                  [^        Rt                  Rx                  45      (       aB  [^        Rz                  R|                  R                  U5      (       a  [        Rp                  " XS9$ U[        ;   a  [        Rn                  " X%US9$ g [        U[        5      (       a  UR                  (       d  XRRL                  R                  ;  a  [s        URL                  U5      nOURL                  R                  U   n[T        R                  (       a&  UR                  R                  URL                  X]5        [*        R,                  " XU5      $ [        U[        R                  5      (       a0  US;   a*  [4        R6                  " [s        UR                  U5      5      $  UR?                  X5      $ s  sn
n	f ! [:         a     GNf = f! [l         a    e [:         a    [        Rn                  " X%US9s $ f = f! [:         a    [        Rn                  " 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.rU  zAttempted to wrap sparse Tensorr  z-torch.compile does not support sparse Tensors)ro   rp   )Jr\  r   r^  r  r;  rR  rq  r   r   r  is_state_mutatedr!  has_pending_mutation_of_attr	load_attrr  is_constant_matchr   r"   r   	enumerater  r>   rm  r#   rM   r  r@   rb  r  rV  r#  r8  rS   NamedTupleVariableDistributedVariabler&  rW   r  r   r]  unittestTestCaser   enable_trace_unittestr  rV  rW  r   Tensorr   rQ  capture_sparse_computer   r  r<   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   )ri   r)  r  r  r  r  hasattr_varr   r   r  r+  
tuple_argsfake_valmembers                 rk   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0I& ' l 7  & K 006JJK@ ' K 006JJKsU   AZ 5Y<<Z &Z :%Z /Z +[ <Z 
ZZ)Z?>Z?[$#[$r  c                 	   [        U[        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,                  R/                  U5        M*     [1        U5         [2        R4                  " 5          U" UUR                  R6                  " S[2        R8                  R:                  /[=        X$/0 5      Q76 5      n	S S S 5        S S S 5        S[2        R8                  S[2        R8                  4S jn
UR                  R7                  SU
W	R?                  5       40 5        U
" UR?                  5       R@                  RB                  S   5        U	$ US;   a  SnO+[E        U5      (       a  [#        SSU SU SU S3SSU S3/S
9  UR                  R                  RG                  X%U5        U$ [        U[        RH                  5      (       GaR  UR                  RK                  5       (       d   [#        SSU 3SS/[$        RL                  QS
9  UR                  5       (       a  [        U[        RN                  5      (       a  [Q        UR?                  5       R@                  U5      n URS                  XR                  5       5      nUb  UR                  5       (       ar  [Q        UR?                  5       R@                  U5      n[X        RZ                  " UR\                  S5      nXL a)  U[2        R^                  R`                  Rb                  L a  U$ URe                  U5        g s  snf ! , (       d  f       GNl= f! , (       d  f       GNv= f! [T        [V        4 a    S n Nf = f) Nrh  r;   r7  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 dtyper9  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     rk   _lower_version_count_by_1?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1   s>    "#**"Q;&-kG**FFtgZX rn   rU  )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.)3r   r   PlacementVariabler  rW   NestedUserFunctionVariabler  TracebackVariabler-  r;  rR  rq  r\  r^  r  r:  r8  r   r   r  r   rx   tracked_fakesremovedynamo_disable_gradr   no_gradr<  r  set_r6   r  rV  rW  r2   
store_attrr#  is_root_tracerFUNDAMENTALrS   r0   r8  r  r   r  getattr_staticmodule_typerX  Modulerh  convert_to_unspecialized)ri   r)  r  r  r  r  r8  tf	to_remover5  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rk   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   R22R23S		A	R7S	7S 7
S	S		
SS0/S0c                 ,    UR                  USU/0 5      $ )N__delattr__r1  )ri   r)  r  r  s       rk   call_delattrBuiltinVariable.call_delattrL  s     r=8*bAArn   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[  rV  r   r   INVALID_INPUTru   r   r'   r   r   rW   
cls_sourcer   r  r;  install_global_by_idr"   r$   r>   rm  )ri   r)  r  py_typeerrorr   r  s          rk   	call_typeBuiltinVariable.call_typeT  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 rh   )rQ  r`  reversedrA  r   rM   )ri   r)  r  r@  s       rk   call_reversedBuiltinVariable.call_reversedn  sC     &&r**#"9"9""=>?E**511rn   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 )NrL  sort)rt  r   r   rS   rJ   ru  r=   r-  )ri   r)  r  rf   list_vars        rk   call_sortedBuiltinVariable.call_sortedv  sp     ,,R00)):
 :
 !----b1.0H   VR8Orn   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   rR   rb  r   r   r  rW   r  r   r-  ri   r)  r*  s      rk   call_negBuiltinVariable.call_neg  s|     a))"))qzz|,  q344""2y177==YB77 rn   _format_stringc                 x    UR                  5       n[        U5      n[        R                  R	                  XSU5      $ rh   )r^  ru   r   StringFormatVariablerb  )ri   r)  r  re   rf   format_strings         rk   call_formatBuiltinVariable.call_format  s5     '99;M*--44]&QQrn   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;  rz  r{  r@   rb  idr&  rW   r   r    r   r   CLASS_MATCHID_MATCHr   r  r
   rS   call_idr4   r!  r   SkipFunctionVariabler  
fake_valuer   ru   r   r  )ri   r)  re   nn_mod_variabler   constant_resulttensor_variables          rk   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		rn   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  )ri   r)  r   s      rk   call_deepcopyBuiltinVariable.call_deepcopy  s4     	%$QCq)A/"..		
rn   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 .r9  )r:  r=  r   r  r   r   rr  is_notr  r  r.   r  rV  r@   rb  r   ro   r   r  r   rS   sizer   broadcast_shapesRuntimeErrorr  r;  r<  r   )
ri   r)  r|  r}  r=  r  r   	is_result
tensor_clsrY  s
             rk   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  r9  r  )r   r  r   r   ro   r   r  r   r   r&  r@   r  r;  r<  r  rR   rb  )ri   r)  r|  r}  r  r   rY  s          rk   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
 %%
 	
rn   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 )Nr9  r  r  )r   r@   is_symnode_likerR   rb  r;  r<  r   r   r6   rC   rG   rW   r-  ry  s       rk   call_xorBuiltinVariable.call_xor.  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   {,EF
 
 ==YR88rn   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r   rC   rG   rW   r-  ry  s       rk   	call_ixorBuiltinVariable.call_ixorD  4     a*K9RSTT==Z!b99rn   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r&  ry  s       rk   call_subBuiltinVariable.call_subK  s4     a*K9RSTT==YR88rn   c                 n    [        U[        [        [        45      (       a  UR	                  USU/0 5      $ g )Nr  r&  ry  s       rk   	call_isubBuiltinVariable.call_isubR  r)  rn   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 )Nr9  r  __and__)r   r@   r"  rR   rb  r;  r<  r   r   r6   rC   rG   rW   r-  ry  s       rk   	call_and_BuiltinVariable.call_and_Y  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a*K9RSTT==YR88rn   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 )Nr9  r  __iand__)r   r@   r"  rR   rb  r;  r<  r   r   r6   rC   rG   rW   r-  ry  s       rk   	call_iandBuiltinVariable.call_iandl  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a*K9RSTT==Z!b99rn   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 )Nr9  r  __or__)r   r@   r"  rR   rb  r;  r<  r   r   r6   rA   rC   rU   rG   rV   rW   r-  ry  s       rk   call_or_BuiltinVariable.call_or_~  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   ! &')

 

 ==XsB77 rn   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 )Nr9  r  __ior__)r   r@   r"  rR   rb  r;  r<  r   r   r6   rA   rC   rU   rG   rW   r-  ry  s       rk   call_iorBuiltinVariable.call_ior  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   ! &)	
 	
 ==YR88 rn   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 )Nr9  r  r   )r   rR   rb  r;  r<  r   r   r6   rD   dv_dictrJ   rA   r@   r   r@  r  s      rk   	call_not_BuiltinVariable.call_not_  s     a))"))		&&#X]]5FsB5O   a)**		Aa,(9:;;#**3qww<1+<==rn   c                 ,    UR                  USU/0 5      $ )N__contains__r1  ry  s       rk   call_containsBuiltinVariable.call_contains  s     }}R!b99rn   Tc                     g)NTrb   r   s    rk   is_python_hashable"BuiltinVariable.is_python_hashable  s    rn   c                 ,    [        U R                  5      $ rh   )hashr   r   s    rk   get_python_hashBuiltinVariable.get_python_hash  s    DGG}rn   otherc                 t    [        U[        R                  5      =(       a    U R                  UR                  L $ rh   )r   r   r   r   )ri   rO  s     rk   is_python_equalBuiltinVariable.is_python_equal  s'    %!:!:;S588@SSrn   r4  )r  rY   r]   Nrh   )}ro   rp   rq   rr   rs   r  	_SENTINELr>   _nonvar_fieldsclassmethodr	   r&   r   staticmethodr  cacher|  r   r   r   r   r   rt   r  r`  ru   r  r   r  r  r  r  r  r  r  r^  r  r  r  r  r  r  r   r  r  r4  r:  r3  r]  __annotations__r9  r-  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  rz  r3  r:  rD  rH  rL  rn  ru  rz  r  r  r  r  r8  r  r  r  r  r  r  r  r  r	  r  r  r  r#  r'  r+  r.  r2  r6  r:  r>  rB  rF  r   rI  r   rM  rQ  rv   __classcell__)r]  s   @rk   r   r     sA    I		'	'N
 )s )F )?P ) ) __@c(38*<&= @  @D:4 : __*Xc3h%7!8 *  *X __#TfuT#Yf0E%EFF #  #J __vTf)!# !	"	
		 v  vp 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	$:):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*$#$ $ 	$
 "$ 
$L "J I)0?	4	B

,
8G
	4	
)0?	4	K#K 	K
 "K 
K 
#

 	

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

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

 
'
R
#
 
 "	

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

 

,	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& +/dK#dK dK "	dK
 !4'dK 
4	dKLe#e e "	e
 e 
4	eN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rn   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  ra  rb  enterexit)r)  ra  gmvs      rk   r  r    sC     "

!
!"e
,C		"s   AA AAA)r]   N)rs   
contextlibr  r  r  loggingr   r   rv  rd   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   rc  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@   dictsrA   rB   rC   rD   rE   rF   rG   listsrH   rI   rJ   rK   rL   rM   streamsrN   rO   r   rP   rQ   rR   rS   rT   r  rU   rV   rW   rX   torch._dynamo.codegenrY   torch._dynamo.symbolic_convertrZ   	getLoggerro   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   rS  r  r   r  r  r   cmp_eqr   cmp_ner   cmp_ltr   cmp_ler   cmp_gtr   cmp_gern  r   r   r   r   r   r   r   r   r   r   r   r   r   r[   rt   rX  r\   r   r   contextmanagerIteratorr  rb   rn   rk   <module>r     sL  *        
    0 B B ; ;  $ 6 1 F > >   1 '      * Y X &    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C/To C/TL^ 3 8M  rn   