
    3j                    *   % 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  SSKrSSKJr  SSKJr  SSKJr  S	S
KJrJ r J!r!J"r"  S	SK#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  S	SK+J,r,J-r-  S	SK.J/r/  S	SK0J1r1J2r2J3r3J4r4J5r5J6r6  S	SK7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrK  SSKLJMrMJNrNJOrOJPrP  SSKQJRrRJSrS  SSKTJUrUJVrVJWrWJXrXJYrY  SSKZJ[r[  SSK\J]r]J^r^J_r_J`r`JaraJbrbJcrc  SSKdJere  SSKfJgrgJhrhJiri  SSKjJkrkJlrlJmrmJnrnJoro  SSKpJqrqJrrrJsrsJtrt  \(       a  SSKuJvrv  SSKwJxrx  \R                  " \z5      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"                  \GR$                  \GR&                  \GR(                  0r\\" SS15      \\" SS15      \\" SS15      0r\\\\   4   \S '   \GR>                  S!:  a  \" S"15      \\'   \S#\
R(                  \
R(                  /\PS-  4   r\\P   \\\P   S$4   -  r\GRH                  \!GRJ                  \GRL                  \!GRN                  \GRP                  \!GRR                  \GRT                  \!GRV                  \GRX                  \!GRZ                  \GR\                  \!GR^                  0r\GR                  \GR                  \GRb                  \GR                  \GR
                  \GR                  \R                  \GRP                  \GRX                  \GR\                  \GRT                  \GRL                  \GRH                  \R                  \GR                  \GR                   \GR                  \GR                  \GR                  \GR                  \R                  \R                  4r\GR                   \GR$                  \GR(                  \GR                  \GR&                  \GR"                  4r\GRh                  4r\GR                  \GR                  \GR                  \GR                  \GRl                  4r\GRp                  \GRr                  \GRt                  \GRv                  \GRx                  4r\W\X\i\s4r\\\P   S$4   \S%'   0 q\\S$\4   \S$\4   4   \S&'   0 q\\S$\4   \S$\4   4   \S''   S6S) jr " S* S+\P5      r " S, S-\5      r " S. S/\5      r " S0 S1\5      r " S2 S3\5      r\GR                  S4S#S(\
GR                  S   4S5 j5       rg)7a\  
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TYPE_CHECKING)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specialize_symnodestr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorNO_SUCH_SUBOBJValueMutationNewVariableTracker)ConstantVariableFakeIdVariable)ConstDictVariableDefaultDictVariableDictItemsVariableDictKeysVariableDictViewVariableis_hashable)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableTupleIteratorVariableTupleVariable)NullVariable)FrozensetVariableOrderedSetClassVariableSetVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslator__new__
from_bytesfromhexhex"_BUILTIN_CONSTANT_FOLDABLE_METHODS      from_numberr[   ._SET_LIKE_OP_SUPPORT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kwargsrh   c                 .   > U=(       d    0 nUmU" U0 UD6$ Nrm   )selfrn   ro   rp   rq   most_recent_funcs        Y/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/variables/builtin.py__torch_function__Kpopulate_builtin_to_tensor_fn_map.<locals>.GetMethodMode.__torch_function__   s$     \rF#(((    )rm   N)__name__
__module____qualname____firstlineno____doc__r   r	   r   dictstrrw   __static_attributes__)ru   s   rv   GetMethodModerk      sd    	 #%,0
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	) 
	)ry   r   r8   )dtypec                    > U " T5      $ rs   rm   )oinp0s    rv   <lambda>3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s	    qwry   c                    > U " T5      $ rs   rm   r   inp0_ints    rv   r   r     s	    q{ry   c                    > U " TT5      $ rs   rm   )r   r   inp1s    rv   r   r     s    qt}ry   c                    > U " TT5      $ rs   rm   )r   r   inp1_ints    rv   r   r     s    q8,ry   c                    > U " TS5      $ Nr   rm   r   s    rv   r   r     s    q1~ry   c                    > U " ST5      $ Nr8   rm   )r   r   s    rv   r   r     s    !At*ry   c                    > U " ST5      $ r   rm   )r   r   s    rv   r   r   "      qH~ry   c                    > U " ST5      $ r   rm   r   s    rv   r   r   #  r   ry   )lenrf   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemrg   )r   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsr   r   r   r   ru   s          @@@@@rv   !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Sr\\S'   \S\S\	SS 4S j5       r
S\4S	 jrSS
 jrSSS\S\4S jrSSS\S\4S jrS\4S jrS\4S jrS\S\4S jrSrg)BaseBuiltinVariablei1  a  
Common base class for all builtin variable trackers (BuiltinVariable,
DictBuiltinVariable, IterBuiltinVariable, and future specialized builtins).

Provides shared implementations for guard installation, hasattr tracing,
and Python-level hashability/equality.

Specialized subclasses (e.g. DictBuiltinVariable) set `_fn` as a class
attribute. BuiltinVariable stores the callable on the instance as `self.fn`
and overrides as_python_constant / reconstruct / var_getattr accordingly.
N_fnvaluesourcerh   c                 ^    [        UR                  [        R                  5      5        U " US9$ Nr   r   
make_guardr   BUILTIN_MATCHclsr   r   s      rv   create_with_source&BaseBuiltinVariable.create_with_source@  s&    f''(B(BCD&!!ry   c                     U R                   $ rs   )r   rt   s    rv   as_python_constant&BaseBuiltinVariable.as_python_constantE  s    xxry   c                     U R                  5       R                  nX!R                  R                  ;  d   S5       eUR	                  UR                  USS95        g )Nshadowed globalTadd)r   rz   tx	f_globalsappend_outputcreate_load_globalrt   codegennames      rv   reconstructBaseBuiltinVariable.reconstructH  sP    &&(11::///B1BB/g8848HIry   r   r[   r   c                     U R                   =(       a    [        U R                   U5      n[        U R                  US 5      n[        R
                  " XUb  [        U5      US9$ S US9$ )Npy_typer   )r   r   getattrr   r   GetAttrVariabletype)rt   r   r   r   attrs        rv   var_getattrBaseBuiltinVariable.var_getattrM  sa    >DKK!>txxt,((d.>T
QW
 	
DHQW
 	
ry   c                 `    [         R                  " U[        U R                  5       U5      5      $ rs   )r<   buildhasattrr   )rt   r   r   s      rv   call_obj_hasattr$BaseBuiltinVariable.call_obj_hasattrT  s'     $$R1H1H1JD)QRRry   c                     g)NTrm   r   s    rv   is_python_hashable&BaseBuiltinVariable.is_python_hashableY  s    ry   c                 4    [        U R                  5       5      $ rs   )hashr   r   s    rv   get_python_hash#BaseBuiltinVariable.get_python_hash\  s    D++-..ry   otherc                 p    [        U[        5      =(       a     U R                  5       UR                  5       L $ rs   )
isinstancer   r   rt   r   s     rv   is_python_equal#BaseBuiltinVariable.is_python_equal_  s1    %!45 
##%)A)A)CC	
ry   rm   r   rZ   rh   N)rz   r{   r|   r}   r~   r   r	   __annotations__classmethodr"   r   r   r   r   r<   r   r=   r   boolr   intr   objectr   r   rm   ry   rv   r   r   1  s    
 CO"s "F "?T " "C J

5 
S 
_ 
S)S14S	S
D / /
V 
 
ry   r   c                   p  ^  \ 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 \!" \\"\15      r#\!\
   \$S'   S\
S\
SS4U 4S jjr%S\4S jr&S\
4S jr'S\
4S jr(S\
4U 4S jjr)SS 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       r0S\/\   S\\\4   S\4S# jr1\S\S\
4   S\\   S$\S\S%\\   \\\4   /\S-  4   4S& j5       r2S'S%S\
S\4S( jr3S'S%S\S\4S) jr4\S'S%S\4S* j5       r5S'S%S\/\   S\\\4   S\S-  4S+ jr60 r7\\\S4   \S%\/\   \\\4   /\4   4   \$S,'   S'S%S\/\   S\\\4   S\4S- jr8S'S%S.\S\\   S\\\4   S\4
U 4S/ jjr9S'S%S0\S\S-  4S1 jr:S'S%S0\S\S-  4S2 jr;S'S%S0\S\S-  4S3 jr<S'S%S0\S\S-  4S4 jr=S'S%S0\S\S-  4S5 jr>S'S%S\S\S-  4S6 jr?S'S%S7\/\   S\4S8 jr@S'S%S9\S-  S:\S-  S\S-  4S; jrA\?rB\?rCS'S%S0\S\4S< jrDS'S%S0\S\4S= jrES'S%S0\S\4S> jrFS'S%S0\S\S\S\4
S? jrGS'S%S\S\S-  4S@ jrHS\S\S\4SA jrIS'S%S\S\4SB jrJS'S%S\
S\
S\4SC jrK SS'S%SD\S-  S\S\S\S-  4
SE jjrLS'S%SD\S\S\S\4
SF jrM SS'S%SD\S-  S\S\S\S-  4
SG jjrN\NrOS'S%S0\S\S-  4SH jrPSI\
S\S\S\S-  4SJ jrQS'S%S0\S\S-  4SK j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%S0\SQ\S\4SR jrXS'S%SS\ST\S\4SU jrYS'S%S9\S:\S\4SV jrZS'S%S\S\4SW jr[S'S%SD\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%SD\S_\S`\S-  S\S-  4
Sa jjr`S'S%SD\S_\Sb\S\S-  4
Sc jraS'S%SD\S_\S\4Sd jrbS'S%SD\S\4Se jrcS'S%SD\S\S-  4Sf jrdS'S%SD\S\S\S-  4Sg jreS'S%S9\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%S9\S:\S\S-  4Sr jrlS'S%S9\S:\S\S-  4Ss jrmS'S%S9\S:\S\S-  4St jrnS'S%S9\S:\S\S-  4Su jroS'S%S9\S:\S\S-  4Sv jrpS'S%S9\S:\S\S-  4Sw jrqS'S%S9\S:\S\S-  4Sx jrrS'S%S9\S:\S\S-  4Sy jrsS'S%S9\S\S-  4Sz jrtS'S%S9\S:\S\4S{ jruS|\S\4S} jrvS~rwU =rx$ )BuiltinVariableie  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.
fnr   r   rh   c                 ^    [        UR                  [        R                  5      5        U " XS9$ r   r   r   s      rv   r   "BuiltinVariable.create_with_sourcev  s&    f''(B(BCD5((ry   .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 $ )Nr8   )rR   c              3   z   #    U  H1  n[        U[        [        R                  5      5      (       d  M-  Uv   M3     g 7frs   )r   r   mathsqrt.0xs     rv   	<genexpr>;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>  s%     W4
1d499o8V114s   ,;	;)>absallanyr   callablechrcomplexdivmodfloatr   r   r   maxminordpowreprroundr   formatsumr   r   posnegnot_truthinvertmulr   floordivtruedivmodr   subr   length_hintlshiftrshiftand_or_xoripowimulr   	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrR   updatevaluesr   __dict__)fnsrR   s     rv   _constant_fold_functions(BuiltinVariable._constant_fold_functions{  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
ry   c                 <    U R                   U R                  5       ;   $ rs   )r   r,  r   s    rv   can_constant_fold_through)BuiltinVariable.can_constant_fold_through  s    ww$77999ry   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 $ rs   )(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    rv   _fx_graph_functions#BuiltinVariable._fx_graph_functions  sQ   (
LL(
LL(
 LL(
 MM	(

 OO(
 LL(
 LL(
 OO(
 (
 (
 LL(
 LL(
 KK(
 KK(
 KK(
  KK!(
" KK#(
$ KK%(
& LL'(
(   )(
* OO+(
, OO-(
. MM/(
0 LL1(
2 LL3(
4 MM5(
6 MM7(
8 9(
: ;(
< =(
> ?(
@ MMA(
B MMC(
D MME(
F G(
H I(
J MMK(
L MMM(
N LLO(
R 
ry   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  r8  s    rv   _binopsBuiltinVariable._binops  s     LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<   LL>M/U
> 
ry   c                    ^^^^^ SSK Jm  SSKJm  SSKJm  SSKJm  SSK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[(        [*        4U4[*        [(        4U4[*        [*        4U
4[*        [,        4U
4[,        [*        4S 4[.        [&        [,        [0        44S 4[&        [&        4S 4/nU [2        R4                     R7                  U5        SS	S
[&        S[        S["        4S jn[.        [        4U4[*        [*        4U
4[*        [,        4U
4/nU [2        R8                     R7                  U5        SS	S[        S[        S[        4S jn[.        [,        4U4[*        [,        4U4[,        [.        4U4[,        [*        4U4/nU [2        R:                     R7                  U5        S[         S["        4   S[<        [>        [>        [@        [@        4   [B        4      4UUUUU4S  jjn[D        RF                  " 5        H&  n[I        U5      (       d   eX;  d   eU" U5      X'   M(     U $ )!Nr8   )BaseUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)rY   )forward_namereverse_namer   r[   abrb  rc  rh   c                v   > [        UT5      (       a  UR                  XU/0 5      $ UR                  XU/0 5      $ rs   )r   call_method)r   rd  re  rb  rc  rY   s        rv   user_defined_handler=BuiltinVariable._binop_handlers.<locals>.user_defined_handler;  s=    , a!455==A3CC==A3CCry   )rb  c                *    UR                  XU/0 5      $ rs   rg  )r   rd  re  rb  s       rv   user_defined_inplace_handlerEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler]  s     }}RsB??ry   r   r   .c          
      n    SSK Jn  U" U U R                  R                  " SU/[	        X/0 5      Q76 5      $ Nr8   wrap_fx_proxycall_function)builderrr  outputcreate_proxyr2   )r   rd  re  r   rr  s        rv   dynamic_handler8BuiltinVariable._binop_handlers.<locals>.dynamic_handlern  s?     3$II**'.?.K ry   c                 R    [        / UR                  QUR                  U 5      Q5      $ rs   )rL   itemsunpack_var_sequencer   rd  re  s      rv   tuple_add_handler:BuiltinVariable._binop_handlers.<locals>.tuple_add_handler  s)     !!G177!GQ-B-B2-F!GHHry   c                 R    [        / UR                  QUR                  U 5      Q5      $ rs   )rJ   rz  r{  r|  s      rv   size_add_handler9BuiltinVariable._binop_handlers.<locals>.size_add_handler  s)       F!'' FA,A,A",E FGGry   c                 R    [        / UR                  U 5      QUR                  Q5      $ rs   )rL   r{  rz  r|  s      rv   r   1BuiltinVariable._binop_handlers.<locals>.<lambda>  s-    ..r2"ry   c                 `    [        / UR                  QUR                  U 5      Q[        5       S9$ Nmutation_type)rH   rz  r{  r;   r|  s      rv   r   r    s+    :agg: 5 5b 9:"2"4"ry   c                 T    [        U5      " / UR                  QUR                  Q5      $ rs   )r   rz  r|  s      rv   r   r    s*    a"ry   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$ rs   )is_immutablehas_unpack_var_sequencer{  ru  side_effectsmutationrz  extend)r   rd  re  seqs       rv   list_iadd_handler:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  sa     ~~q'@'@'D'D''+CII""++A.GGNN3Hry   lstconstc                 l   [        U[        5      (       d  UR                  5       (       a  X!p! [        U[        5      (       d   eUR                  UR                  UR                  5       -  [        5       S9$ ! [         a1  n[        [        U5      U [        UR                  5      S9   S nAg S nAff = f)N)rz  r  rp   )r   rF   is_python_constant	__class__rz  r   r;   MemoryErrorr   r   listrp   )r   r  r  excs       rv   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chhs   A	A8 8
B3'B..B3r   c           	      l  >^ ^
 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aC  T R                  R                  S5      (       Ga"  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	                  [        [         4UR                  4[         [        4UR                  4[
        [         4UR                  4[         [
        4UR                  4/5        SSS
[         S[         S[         S -  4U 4S jjn	UR                  [         [         4U	45        U$ )Nr   r[   rd  re  rh   c                    >  [         R                  " U T" UR                  UR                  5      5      $ ! [         a1  n[	        [        U5      U [        UR                  5      S9   S nAg S nAff = f)Nr  )r<   r   r   	TypeErrorr   r   r  rp   )r   rd  re  r  r   s       rv   compare_by_valueYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  sW    *00R5IJJ  ,S	!#((^s   15 
A0'A++A0c                 d   > U R                  [        R                  " U [        T   5      X/0 5      $ rs   )inline_user_function_returnr<   r   polyfill_fn_mapping)r   rd  re  r   s      rv   handlerPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handlerE  s5     99'--b2Eb2IJQFTV ry   is_c                 2   > [         R                  " U T5      $ rs   )r<   r   )r   rd  re  none_results      rv   neverNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.neverW  s     +00[AAry   leftrightc                    > SSK Jn  U" X5      nUc  g UR                  5       n[        R                  " U TR
                  S:X  a  U5      $ U(       + 5      $ )Nr8   )vt_identity_comparer  )object_protocolr  r   r<   r   rz   )r   r  r  r  resultis_samer   s         rv   	handle_isRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_is  s[    
 E0=F~#$779G*00r{{e';G EL ry   )r<   r=   r  r   r  rS   _comparison_with_symnodeappendr)  rz   
startswithr   rT   rF   r?   _comparison_with_tensor)r   r  r  op_varr  r  obj_op_nonenone_op_objtypes_that_are_never_noner  r  ra  r]  r_  rY   r`  s   `         @rv   create_cmp_op_handlers?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s   
+
0?
DS
 
( $%568HIJ  ((
 '(89;KL ), -o>";;
 -o>";;	/4CHW$ A7KL(*:;=MNOF3::<<AWAWB B !40B/B4CBHWB$B
 $# ##$$',%%	-)  78HI'
 ./HI'	 ), ,_="::
 -n="::
 -o>";;
 -o>";;*/) + %t+	 A9MNMry   )%	functionsr]  	nn_moduler_  r'  r`  r   ra  user_definedrY   r   rZ  rz  r<   r   r  r   r	   rS   rF   rJ   rL   r=   rH   rG   r   r   r  r  r  r  tuple_TrackersType_HandlerCallbackrR   r)  r   )op_handlersr   magic_method_namesin_place_oprb  rc  inplace_namerh  rl  rw  r}  r  list_like_addition_handlersr  list_like_iadd_handlersr  list_like_expansion_handlersr  ra  r]  r_  rY   r`  s                     @@@@@rv   _binop_handlersBuiltinVariable._binop_handlers  s   $ 	8/:,5 -/ $$&,,.
- 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H	c"H	%m]:;=MMNOH	 H	T +113BB<<<(((4R8KO 4
 ry   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$ rs   )r   r  get
issubclassr  )r   r  r  handlersmatchestype1type2r  s           rv   _find_binop_handler#BuiltinVariable._find_binop_handler  sd     #22488<'/#NUG&((Z-F-Fw' (0 ry   c                 <    U R                   U R                  5       ;   $ rs   )r   r9  r   s    rv   can_insert_in_graph#BuiltinVariable.can_insert_in_graph  s    ww$22444ry   MUST_USE_SPECIALIZEDrq   c                 h   > XR                   ;  d   SU< S35       e[        TU ]  " S0 UD6  Xl        g )Nz!Use the specialized VT class for z9, not BuiltinVariable. E.g. DictBuiltinVariable for dict.rm   )r  super__init__r   )rt   r   rq   r  s      rv   r  BuiltinVariable.__init__  sD    222 	
/v 61 2	
2 	"6"ry   c                     U R                   c  SnOU R                   R                  nU R                  R                   SU S3$ )NNone())r   rz   r  )rt   r   s     rv   __repr__BuiltinVariable.__repr__  s=    77?D77##D..))*!D633ry   c                     U R                   $ rs   rn  r   s    rv   r   "BuiltinVariable.as_python_constant      wwry   c                     U R                   $ rs   rn  r   s    rv   get_real_python_backed_value,BuiltinVariable.get_real_python_backed_value  r  ry   c                    > [         [        R                   [        [        R                  [        [        R
                  0nU R                  U;   a  XR                     $ [        TU ]!  5       $ rs   )	r   r   r   int64r  float64r   r  as_proxy)rt   DTYPEr  s     rv   r  BuiltinVariable.as_proxy  sM    %**5==

 77e>!w!!ry   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builtinsr   Tr   )r   rz   r{   r   r   r   r   r   s      rv   r   BuiltinVariable.reconstruct  sc    wwww!!Z///::///B1BB/g8848HIry   rp   c                     [        X5      $ rs   )r$   rt   rp   rq   s      rv   constant_argsBuiltinVariable.constant_args  s    "400ry   c                     SnU H=  n[        U[        R                  5      (       a    gU=(       d    UR                  5       nM?     U$ NF)r   r   r   	is_tensor)rt   rp   
any_tensorargs       rv   tensor_argsBuiltinVariable.tensor_args  s?    
C#y8899#6s}}J  ry   	arg_typesc                     SnU HG  n[        U[        R                  5      (       a    gU=(       d    [        U[        R                  5      nMI     U$ r  )r  r   r   rT   )rt   r  r  arg_types       rv   tensor_args_type BuiltinVariable.tensor_args_type  sF    
!H(I$=$=>>#Uz(I<T<T'UJ " ry   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     rv   r   BBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s/      
  -.HH,@qxx(eK s   13)	itertoolschainr)  r  r  r   r  )rt   rp   rq   r  non_tensor_argsis         rv   python_and_tensor_constant_only/BuiltinVariable.python_and_tensor_constant_only  s     }}7A{{}}""1%&&q)	 8
  
 
 
 3   /2	3ry   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 rs   )r   rz  )rp   rq   r   kvs        rv   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      $ rs   )r/  r&   r  s      rv   has_constant_handler$BuiltinVariable.has_constant_handler  s%     --/ 
4Q5
 	
ry   
has_kwargsr[   c           	        ^ ^^^^	^
^^^^^ SSK Jm  [        T 5      m/ m[        U4S jT 5       5      (       a  U4S j$ [        R
                  " T 5      (       aP  [        T [        5      (       d	  T [        L a2  SSS[        [           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$ )Nr8   )LazyVariableTrackerc              3   <   >#    U  H  n[        UT5      v   M     g 7frs   )r  )r   r  r  s     rv   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 rs   )rs  realize)r   rp   rq   r  objs       rv   r   /BuiltinVariable._make_handler.<locals>.<lambda>#  s-    C,=,=$/$QYY[$/-/s   2
r   r[   rp   rq   rh   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rs   )r  r   r   r   r   s     rv   r   WBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>4  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   r   r   SUPPORTABLEr   ExceptionVariable)r   rp   rq   r   s      rv   create_exception_class_objectDBuiltinVariable._make_handler.<locals>.create_exception_class_object/  sa    
 ' 4!4 1 1 " @ #D	$W> 1 = =>	 !222tDDry   r   r   c                    > T" U /UQ76 $ rs   rm   )r   rp   _binop_handlers      rv   r   r   V  s    M"4Lt4Lry   r/  c                 @   > T H  nU" U /UQ76 nU(       d  M  Us  $    g rs   rm   )r   rp   r/  r   rvbinop_handlerss        rv   call_binop_handlers:BuiltinVariable._make_handler.<locals>.call_binop_handlersY  s+     -]T]2#%I -  ry   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$  )r  inspect	signaturebindr  logwarningr   rz   r   	DIFFICULTr   remove_from_stats)	r   rp   rq   er  r  r   r  self_handlers	         rv   call_self_handler8BuiltinVariable._make_handler.<locals>.call_self_handlerh  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rs   )r  r=   r   s     rv   r   r    s     GYJq"233Y   c           	      j  >  T" U Vs/ s H  o3R                  5       PM     sn6 n[        R                  " U W5      $ s  snf ! [         a1  n[        [        U5      U [	        UR
                  5      S9   S nANRS 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  rp   r9   r   r   
DYNAMO_BUGr<   r   )r   rp   rq   r   resr  r   s         rv   constant_fold_handler<BuiltinVariable._make_handler.<locals>.constant_fold_handler  s     >BCd224dC" +00S99! D$ 0 I!%chh
 ? %$=&@DTUYTZ$[(a"A$5$@$@"A%(s1   A =A A 
B2'A88B2#B--B2c                    > [        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[         a1  n[        [        U5      U [        UR                  5      S9   S nANS nAff = f)NrG  rH  rI  rJ  rK  r  )r&   r   rz  r9   r   r   rN  rM  r   r   r  rp   r<   r   )	r   rp   rq   r   r  r  rO  r  r   s	           rv   rP  rQ    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	 "%)#((^s?   B BB B$B B 
C=#B??C='C88C=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 r8  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   rz   )rp   r  real_arg_typesr  r   r  s      rv   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      $ rs   rm   )r   rp   rq   rV  s      rv   r   r     s    ,>t,Dry   c                 <   > T" XU5      nU(       a  U$ T" U5        U$ rs   rm   )r   rp   rq   r2  rV  r  s       rv   builtin_dispatch7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s&    
 Rv.I"4(	ry   c                 V   > S nT H  nU" XU5      nU(       d  M  Us  $    T" U5        U$ rs   rm   )r   rp   rq   r2  r   rV  r  s        rv   rZ  r[    s9    
 "BBf-Br!	 # #4(	ry   )lazyr  r   r   r9  isclassr  BaseExceptionGeneratorExitr  r<   r   r   r  r   r   r   rT   r  _handle_insert_op_in_graphr  r   r  r	   r   rz   r   r/  r   )r   r  r  r,  r4  rB  rP  rZ  r  r0  r3  rV  r  r  r  rA  s   ```     @@@@@@@@rv   _make_handlerBuiltinVariable._make_handler  s~    	.b!+-E9EEE  ??2r=)) ]"E+E?+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+	: :8 / "?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'	   ry   r   c                     [        U5      S:X  a  U R                  U5      $ [        U5      S:X  d   e US   R                  US5      $ ! [         a    [	        [
        U5         g f = f)Nr   r8   r*  )r   _call_frame_locals_snapshotr   r   r   r  rt   r   rp   s      rv   	call_varsBuiltinVariable.call_vars  sc    t9>33B774yA~~	47&&r:66% 	4$Y3	4s   A A%$A%c                 b    [        U5      S:w  a  [        [        U5        U R                  U5      $ r   )r   r   r  re  rf  s      rv   call_localsBuiltinVariable.call_locals  s*     t9>$Y3//33ry   c                 0   [        U R                  R                  5      [        U R                  5       5      -  n[        U R                  5       5      n0 nU R                  R                  5        H  u  pEXA;  a  M  XB;   a%  U R                  R                  R                  U5      n[        R                  [        U5      (       d  [        U[        R                  5      (       a  Mv  XS[        R                   " U5      '   M     [#        U[$        ['        5       S9$ r  )setf_codeco_varnamescell_and_freevarssymbolic_localsrz  ru  r  	load_cellr   __instancecheck__rM   r   r   DeletedVariabler=   creater?   r   r;   )r   frame_local_namesrp  frame_localsr   r   s         rv   re  +BuiltinVariable._call_frame_locals_snapshot  s    		 5 56R=Q=Q=S9TT 4 4 67--335KD,(		..88?%%lE::jy00? ? :?)0067 6 !*,
 	
ry   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 aQ  [/        US   [8        5      (       a9  [:        R<                  nUS   [0        R>                  RA                  US5      US   /n[C        X#5      (       a^  [E        S	 U 5       5      (       dG  URF                  RH                  " S
[K        U5      /[M        X#5      Q76 nU" [0        RN                  X5      $ U[4        RP                  L aJ  [S        U5      S:X  a;  US   R                  5       (       a#  US   RU                  US[W        USS  5      U5      $ URF                  RH                  " S
U/[M        X#5      Q76 n[E        S U 5       5      (       a  U" [X        UU5      $ [[        X#5      (       a^  U R]                  X#5      u  nnU" U0 UD6n[E        S [^        R`                  " X#R	                  5       5       5       5      nU" [b        UUUUS9$ [e        S U 5       5      (       a  [8        R                  " XS 5      $ U[4        Rf                  L aC  [/        US   [0        Rb                  5      (       a!  [W        U5      nUS   Ri                  5       US'   U" X5      $ ! [j         a6    [m        SSU  SU SU 3SU R                   S3/ [n        Rp                  QS9   g f = f)Nr8   )rr  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rs   )r   rT   r   r  s     rv   r   =BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>z  s      B7;S	^+ts    rs  __eq__c              3   B   #    U  H  n[        U[        5      v   M     g 7frs   r   rQ   r  s     rv   r   r    s     E:c#344rE  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frs   r   r   rU   need_unwrapr   s     rv   r   r    s-      "C!!Y%J%JK "AMMC   #<<)	raw_valuer  c              3   B   #    U  H  n[        U[        5      v   M     g 7frs   r   rS   r   s     rv   r   r    s     BTZ?33TrE  z,unimplemented builtin op on tensor argumentszpartial tensor op: r8  z3Dynamo does not know how to trace builtin operator z with tensor argumentsr$  )9rt  rr  rz  r  r)  r|  torch_functionr}  r~  exportr   r  r   rg   rf   ru  r  bytecode_transformationr  r  r  rz   IN_PLACE_DESUGARING_MAPr   r   r=   r   r   rS   r   selectr<   r   r%   r   ru  rv  r1   r2   NumpyNdarrayVariabler7  r   rg  r  rQ   r'   r  r
  r  rU   r   r  r   NotImplementedErrorr   r   r*  )rt   r   rp   rq   rr  rz  r|  r}  r~  rn   tmpfn_varr   r  r  proxy_args_kwargsr  r  s                       rv   ra  *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--33B: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rs   r   r   s     rv   r   0BuiltinVariable.call_function.<locals>.<genexpr>       4t!d1ggt   Tc              3   8   #    U  H  n[        U5      v   M     g 7frs   r  r   s     rv   r   r    r  r  )rz  r  r   r  r  rb  r   r   )	rt   r   rp   rq   r  r  keyr  r   s	            rv   rs  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a-  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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)                  U R                   S5      ;   a  [+        S	 U 5       5      (       a  [+        S
 UR-                  5        5       5      (       am   [/        U R                   U5      n	U	" S U 5       0 UR1                  5        V
Vs0 s H  u  pXR3                  5       _M     snn
D6n[4        R6                  " X5      $ U R                   [        L a%  US:X  a  [         RB                  RE                  S 5      $ U R                   [F        L a  [/        U R                   U5      nU[H        ;   a  [	        US   [         RJ                  5      (       a5  US   RL                  c   eUS   RL                  RO                  XUSS  U5      $ [	        US   [         RP                  5      (       a  US   RO                  XUSS  U5      $ U R                   [R        L a[  [/        U R                   U5      nU[T        ;   a;  [	        US   [         RV                  5      (       a  US   RO                  XUSS  U5      $ U R                   [X        L a`  [        U5      S:  aQ  [/        U R                   U5      nU[Z        ;   a1  [	        US   [B        5      (       a  US   RO                  XUSS  U5      $ U R                   [\        L ac  [        U5      S:  aT  [	        US   [B        5      (       a<  [4        R6                  " U[/        [\        U5      " US   R3                  5       5      5      $ US:X  a'  [        U5      S:X  a  U(       d  SSK/J0n  U" XS   5      $ [b        TU ]  XX45      $ s  snn
f ! [8         a2  n[;        [=        U5      U[?        UR@                  5      S9   S nAGNS nAff = f)N__setattr__rb   r   r\   r8   r   r  rm   c              3   @   #    U  H  oR                  5       v   M     g 7frs   r  r   rd  s     rv   r   .BuiltinVariable.call_method.<locals>.<genexpr>	  s     84a''))4   c              3   @   #    U  H  oR                  5       v   M     g 7frs   r  r   r  s     rv   r   r  	  s      A0?1$$&&r  c              3   @   #    U  H  oR                  5       v   M     g 7frs   r   r  s     rv   r   r    s     ?$Q..00$r  r  r  __len__generic_len)2r   r   r   r  r   rX   ru  r  is_attribute_mutationr  method_setattr_standardtrack_new_user_defined_objectr  has_force_unpack_var_sequencer   force_unpack_var_sequencer   rL   r;   r`   r  r   r)  r   rz  r   r<   r   rM  r   r   r  rp   r=   ru  rm  r4   UserDefinedSetVariable_base_vtrg  rP   	frozensetr+   rN   r   r6   r  r  r  r  )rt   r   r   rp   rq   r  name_varval	init_argsr   r  r  rO  r@  resolved_fnr  r  s                   rv   rg  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 
 5 ING99"==d1g77DGJJ%<O $Q A A" EI$22!1A1C  yy--KKGH  599$''2FF84888S A06A > > $/B?$?AGP12244PC +0099 77f!3--44T::77c>!$''40Kk)d1gy'G'GHH7++7777++77$qr(FSS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&,,t,T!W-G-G-IJ  9Ta 5r7++w"2T::e Q ! ,Q!!&&\ s*   4U U
U 
U 
V'VVr  c                     SSK Jn  U" X5      $ )Nr8   )generic_int)r  r  )rt   r   r  r  s       rv   call_intBuiltinVariable.call_intD  s     	12##ry   c                     SSK Jn  U" X5      $ )Nr8   )generic_float)r  r  )rt   r   r  r  s       rv   
call_floatBuiltinVariable.call_floatK  s     	3R%%ry   c                     SSK Jn  U" X5      $ )Nr8   )generic_bool)r  r  )rt   r   r  r  s       rv   	call_boolBuiltinVariable.call_boolR  s     	2B$$ry   c                 L   [        U[        R                  [        R                  45      (       a   [	        S UR
                   5       5      n[        U5      S:X  a  UR                  R                   S3nOK[        U5      S:X  a!  UR                  R                   SUS   < S3nOUR                  R                   U< 3n[        R                  " X5      $ [        U[        R                  5      (       a  UR                  R                  n[        UR                  5      R                  [         R                  L a)  [        R                  " X5      nUR#                  U/ 0 5      $ [%        U5      (       a$  ['        SS	[        UR                  5       S
3S/S9  O5UR(                  n[        R                  " X5      nUR#                  X/0 5      $ [        U[        R*                  5      (       aZ  [        UR                  5      R                  [        R                  L a*  [        R                  " U[-        UR                  5      5      $ [        U[.        [0        [2        [4        [6        45      (       a$  [        R                  " XR9                  5       5      $ g! [         a     gf = f)z&Handle repr() on user defined objects.c              3   @   #    U  H  oR                  5       v   M     g 7frs   r  r  s     rv   r   ,BuiltinVariable.call_repr.<locals>.<genexpr>c  s     "L8a#7#7#9#98r  Nr   z()r8   r  r  z4Attempted to call repr() method implemented in C/C++ z6 has a C/C++ based repr method. This is not supported.zWrite the repr method in Pythonr$  )r   r   r+  "UserDefinedExceptionObjectVariabler  rp   r  r   exc_typerz   r<   r   rX   r   r  r   r   rs  r/   r   __func__UserDefinedClassVariabler  rI   r?   r@   rO   rC   
debug_repr)rt   r   r  
const_argsr   repr_methodfn_vtbound_methods           rv   	call_reprBuiltinVariable.call_reprZ  s"    (()*V*VW
 
""L388"LL
 :!#<<0014ZA%<<001:a=2C1E<<001*@"((33c9>>??)),,KCII''6??:'--b>**2r2660==R#'		?"33i j<=	  +33'--b?**2ub99c9==>>CII''4==8&,,RciiAA!#' 	
 	
 #((^^-=>>S ' s   J 
J#"J#c                    [        U[        R                  [        R                  45      (       a  [	        UR
                  5      S:X  a  [        R                  " US5      $ [	        UR
                  5      S:X  a-  [        [        5      R                  XR
                  S   /0 5      $ [        R                  " [        UR
                  5      5      n[        [        5      R                  X/0 5      $ [        U[        R                  5      (       a*  [        R                  " U[        UR                  5      5      $ [        U[        R                  5      (       Ga@  [!        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$                  [0        R$                  L a   [        R                  " UW" 5       5      $ [5        W5      (       a$  [)        S	S[/        UR"                  5       S
3S/S9  g UR6                  n [        R                  " X5      nUR                  X/0 5      $ g ! [2         a     g f = f! [8         a    [:        R=                  SSS9   g f = f)Nr   r  r8   __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_info)r   r   r+  r  r   rp   r<   r   r   r   rs  rL   r  UserFunctionVariabler   rX   r   r   r  r  r   r   
USER_ERRORr   r   AttributeErrorr/   r  r)  r<  r=  )rt   r   r  	tuple_var
str_methodr  user_func_variables          rv   call_strBuiltinVariable.call_str  s>    (()*V*VW
 
 388}!&,,R44SXX!#&s+99"xx{mRPP%33DNC	&s+99"k2NN cI::<<"((S[99iAACCsyy),, YY..
J// YY//
IH W9-889	 CII&&&..8 *00Z\BB 1<<N#'		?"33h i;<	*   *22 )8)>)>r)P& *77E2FF3 &   $ &  KK GRVKW s$   J /J) 
J&%J&)K
	K
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 )Nr8   r   r   )r   r  r  _call_min_max_seq_call_min_max_binary)rt   r   rp   rz  s       rv   _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ry   rz  c                     [        U5      S:  d   e[        U5      S:X  a  US   $ [        R                  " [        R                  " U R                  U5      U5      $ Nr   r8   )r   	functoolsreducepartialr  )rt   r   rz  s      rv   r  !BuiltinVariable._call_min_max_seq  sO     5zA~~u:?8O	 1 1$2K2KR PRWXXry   rd  re  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      (       aZ  [        U[H        5      (       aE  U R                  UR=                  5       UR=                  5       5      n[J        RL                  " UU5      $ g )Nr8   rz  rs  )r   r  r   r  r  c              3   v   #    U  H/  n[        U[        R                  [        R                  45      v   M1     g 7frs   )r   r   rU   r=   )r   r  s     rv   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rs   r  )r   r  s     rv   r   r  )  s     KFSz#'788FrE  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7frs   r  r   s     rv   r   r  6  s-      "#!!Y%J%JK "AMM#r  )'r  r  r   rQ   r   TorchInGraphFunctionVariabler   r'  rs  rS   rt  rz  r   ru  rv  r   r2   r  r  numpyNumpyVariableclipclampr  maximumr  minimumr   r   from_tensor_variabler   r  rU   sym_maxsym_minru  r=   r<   r   )rt   r   rd  re  rz  npr   rq   r  np_fntorch_fnraw_braw_resr  py_fnr  r   s                    rv   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 #((U33ry   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " US5      /0 5      nUR	                  U/ 0 5      $ )Nr8   r{  __abs__rt  r|  ru  r   rs  r<   r   )rt   r   r  r|  
abs_methods        rv   call_absBuiltinVariable.call_absT  T     	/ '--b':HHo++B	:;R

 ''B33ry   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " US5      /0 5      nUR	                  U/ 0 5      $ )Nr8   r{  __pos__r
  )rt   r   r  r|  
pos_methods        rv   call_posBuiltinVariable.call_pos_  r  ry   c                 :    [        U5      nUR                  U5      $ rs   )r5   nb_index_implrt   r   r  s      rv   
call_indexBuiltinVariable.call_indexj  s    
 !%  $$ry   c                     SSK Jn  UR                  U[        5      R	                  X[
        R                  " US5      /0 5      nUR	                  XU5      $ )Nr8   r{  	__round__r
  )rt   r   r  rp   rq   r|  round_methods          rv   
call_roundBuiltinVariable.call_roundr  sR     	/ )//G<JJo++B<=r
 ))"F;;ry   c                    ^ [        U0 5      (       a  [        R                  " U5      $ U R                  " U6 (       a+  [	        U4S jU 5       5      n[        R                  " U5      $ g )Nc              3   d   >#    U  H%  n[         R                  " T[        U5      5      v   M'     g 7frs   )r<   r   r-   )r   r  r   s     rv   r   -BuiltinVariable.call_range.<locals>.<genexpr>  s(     VQU#..r<3DEEQUs   -0)r&   r   rI   _dynamic_argsr  rf  s    ` rv   
call_rangeBuiltinVariable.call_range  sV     )r22**400&VQUVVD**400ry   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rs   r  r   s     rv   r   0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s     @4a:a114rE  c              3   B   #    U  H  n[        U[        5      v   M     g 7frs   r  r   s     rv   r   r&    s      H
4CqJq/**OrE  )r   r)  r  s      rv   r!  BuiltinVariable._dynamic_args  s7    @4@@ 
C H
4:MMOH
 E
 	
ry   c                 .    [         R                  " X!5      $ rs   )r   SliceVariablerf  s      rv   
call_sliceBuiltinVariable.call_slice  s     &&t00ry   c           
      ~    SSK Jn  U" UUR                  R                  " SU R                  /[        X#5      Q76 5      $ rp  )rt  rr  ru  rv  r   r2   )rt   r   rp   rq   rr  s        rv   
_dyn_proxyBuiltinVariable._dyn_proxy  s?     	+II""+<T+J
 	
ry   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a|  [        UR                  5      (       Gda  [        U[        5      (       a4  [        UR                  R                  [        R                   5      5        GO[#        USS5      (       ac  [        U[$        [        R&                  [        R(                  45      (       a/  UR*                  R,                  R/                  UR                  5        [        U[        R0                  5      (       a3  [        UR                  R                  [        R2                  5      5        OQ[        U[        R4                  5      (       d2  [        UR                  R                  [        R6                  5      5        U" [9        UR;                  U5      5      [        5       S9$ g )Nr  r   F)r   r   IteratorVariabler!  r.  rF   cls_forr   r;   r  r   r!   rK   r   r   r   TUPLE_ITERATOR_LENr   r?   OrderedSetVariableDictKeySetVariableru  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHr  r{  rt   r   r  rp   rq   r   s         rv   _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 sHe44-%88%88: : 		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  ry   c                     [         R                  R                  U R                  5      nU" [	        UR                  U5      5      [        5       S9$ r  )r   rF   r2  r   r  r  r;   r;  s         rv   _call_iter_tuple_generator*BuiltinVariable._call_iter_tuple_generator  sD     ((009..r23*,
 	
ry   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$ r  )r   r   r1  rF   r2  r   r  r  r;   LocalGeneratorObjectVariablerX   r  r?  r<  r;  s         rv   _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Gry   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      (       a*  [        R                  " U[        UR                  5      5      $ [        U[        [        [         ["        [$        [&        45      (       a  [        R                  R                  S5      $ g )Nr8   )r]  FunctoolsPartialVariabler^  TF)r  r]  rF  r  r_  r   r   r  r=   ru  rY   r<   r   r   r   rS   rT   rH   rL   rG   )rt   r   r  r]  rF  r_  s         rv   call_callableBuiltinVariable.call_callable  s     	R/22(( 	
 
 --44T::011"((Xcii-@AA $

 

 --44U;;ry   r/  c                 R    [        U5      S:X  a  US   $ [        SSU SU 3SS/S9  g )	Nr   r8   zbad args to builtin cast()z	got args r8  z0Dynamo expects exactly 2 args to builtin cast().z3Ensure your call to cast() has exactly 2 arguments.r$  )r   r   )rt   r/  rp   rq   s       rv   	call_castBuiltinVariable.call_cast  s<     t9>7N0vQvh/JHI		
ry   c                    [        U[        R                  5      (       a*  [        R                  " U[        UR                  5      5      $ [        U[        5      (       a*  [        R                  " U[        UR                  5      5      $ UR                  5       (       a.  [        R                  " U[        UR                  5       5      5      $ g rs   )r   r   r  r<   r   dirr   r   r   r  r   r  s      rv   call_dirBuiltinVariable.call_dir+  s     c9==>>"((S^<<c?++"((S[99!!##"((S1G1G1I-JKKry   c                 .   SSK Jn  U(       a   eU(       d  [        / [        5       S9$ [	        U5      S:w  a  [        [        US[	        U5       S3/S9  US   n[        U[        R                  5      (       a  UR                  [        5       S9$ UR                  U5      (       a#  UR                  U5      n[        U[        5       S9$ [        U[        R                  5      (       a  [        UR                  [        5      (       a  UR!                  US5      n[        U[        R"                  5      (       aN  UR%                  XrU5      n[        U[        5      (       a  U$ UR'                  U[(        5      R+                  X5      $ [        [        US	/S9  g )
Nr8   r{  r  z&set() takes 1 positional argument but  were givenr  r   __iter__z!failed to construct builtin set())rt  r|  rP   r;   r   r   r  r0   r   cloner  r  r   rX   r   r   r   UserMethodVariabler  ru  rm  call_set)	rt   r   rp   rq   r|  r  rz  iter_fnouts	            rv   rU  BuiltinVariable.call_set7  sY    	/zr1A1CDDt9>$>s4ykUV
 1g#y,,--99+;+=9>>..r2211"5Eu4D4FGGY@@AAjIIxG
 G
 oob*5G'9#?#?@@44WFKc;//J(//C8AA"JJ 56	
ry   c                    U(       a   eU(       d  [        / 5      $ [        U5      S:w  a  [        [        US[        U5       S3/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S/S9  g s  snf )Nr8   z,frozenset() takes 1 positional argument but rQ  r  r   z'failed to construct builtin frozenset())
rN   r   r   r  r0   r   	set_itemsvtr  r  )rt   r   rp   rq   r  r   rz  s          rv   call_frozensetBuiltinVariable.call_frozenset]  s     z$R((t9>$B3t9+[Y 1g#y2233$CMM%BMqddM%BCC..r2211"5E$U++ ;<	
	 &Cs   ?Cc                    SSK Jn  U(       a/  [        U5      S:X  a  SU;   d  [        USS[        U5       S35        UR	                  S[
        R                  " S5      5      nU Vs/ s H*  nUR                  U[        5      R                  X/0 5      PM,     nn[        R                  " UUR                  5       [        5       S9$ s  snf )	Nr8   r{  strictzip1 kwargs (`strict`) kwargsFr_  r  )rt  r|  r   r3   popr=   ru  iterrs  r   ZipVariabler   r;   )rt   r   rp   rq   r|  r_  r  	iter_argss           rv   call_zipBuiltinVariable.call_zipz  s     	/K1$V);#)6{m7+	 H&6&=&=e&DE 
 $$R.<<RK 	 
 $$,,.*,
 	
	
s   '1Cc                 $    SSK Jn  U" XS   5      $ )Nr8   r  r   )r  r  )rt   r   rp   rq   r  s        rv   call_lenBuiltinVariable.call_len  s     	12Aw''ry   c                 ,    SSK Jn  U" XS   US   5      $ )Nr8   )
vt_getitemr   )r  rn  )rt   r   rp   rq   rn  s        rv   call_getitemBuiltinVariable.call_getitem  s     	0"1gtAw//ry   isinstance_type_varc           	      f  ^  TR                  5       nUR                  5       n[        T[        R                  5      (       aD  TR                  b7  S[        S[        S	[        4U4S
 jjn[        R                  " X" 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      (       aU  SUR&                  R(                  ;   a;  [        R                  " UUR&                  R+                  UTR                  5      5      $ [        T[        R,                  5      (       a!  [        R                  " U[        WU5      5      $ [        U[.        5      (       d  [1        [3        USS 5      5      (       a  U4nOk[        U[         R4                  5      (       a  UR6                  nO?[        U[8        5      (       a  [;        S U 5       5      (       a  UnO[=        [>        US/S9   [A        WW5      n[        R                  " X5      $ ! [         a*    [        SST SU S3ST 3/ [        R                  QS9   GNf = f! [>         a    WW;   n N^f = f)Nz6builtin isinstance() cannot determine type of argumentzisinstance(, r  z=Dynamo doesn't have a rule to determine the type of argument r$  
tensor_vartensor_typerh   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tyrh   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)r7   r  nodemetar   r   nn	parameter	Parameterr   r  python_typer   )rw  example_valdtypesr  s      rv   
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..ry   c              3   4   >#    U  H  nT" U5      v   M     g 7frs   rm   )r   rw  r  s     rv   r   NBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>  s     D"z"~~s   )r	   r   r   r  r   )rt  ru  r  r  s     @rv   _tensor_isinstance;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance  sA    /3 /4 /$ $-DDDD%k22ry   z<isinstance() called on user defined object with C extensionszeUser-defined object with C extensions can have torch.Tensor attributes; intentionally graph breaking.rs  c              3   |   #    U  H2  n[        U[        5      =(       d    [        [        US S5      5      v   M4     g7f)rs  N)r   r   r   r   )r   tps     rv   r   2BuiltinVariable.call_isinstance.<locals>.<genexpr>  s5      8
% r4 THWR9Ld-S$TT%s   :<z?isinstance() arg 2 must be a type, a tuple of types, or a unionr  )!r  r  r   r   rN  r   r   r   rT   r   r<   r	   r   r   rX   r   ro   MemberDescriptorTyper*  r  r*  rs  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__r  r   r   r  r  )	rt   r   r  rq  r  isinstance_typer  isinstance_type_tupler  s	     `      rv   call_isinstanceBuiltinVariable.call_isinstance  s   	(H .@@Bc933449N3+3:=334 #((-?_-UVV c9>>??JIIu11E
 E
 V%cU"_,=Q?<6)556 sI??@@#'@'@'I'II"(());;OSYYW 
 c9FFGG"((Z/-RSS ot,,O%8$?1
 1
 &5$6!99$3$<$<!//C 8
%8
 5
 5
 %4!$U
	4 X'<=C $$R--A # 	P%cU"-@,AC[\_[`a5)445		|  	433C	4s#   I' J '0JJJ0/J0left_tyright_tyc           	           UR                  5       nUR                  5       n[
        R                  " U[        WW5      5      $ ! [         a'    [        SSU SU S3SS/[        R                  QS9   NQf = f)z,Checks if first arg is subclass of right argz(issubclass() with non-constant argumentszissubclass(rs  r  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r$  )r   r  r   r   r  r<   r   r  )rt   r   r  r  
left_ty_pyright_ty_pys         rv   call_issubclassBuiltinVariable.call_issubclass	  s    	 335J"557K $$RJ)LMM # 		B%gYb
!<U9&11			s    A .A43A4c                 .    [         R                  " X#5      $ rs   )r   SuperVariablert   r   rd  re  s       rv   
call_superBuiltinVariable.call_super-	  s     &&q,,ry   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   r8   )	next_variabler   r   r   r   r   rF   r?  rz  )rt   r   rp   r  exs        rv   	call_nextBuiltinVariable.call_next2	  s     1g
	$$R((( 	4yA~Aw 	#y99::$$&yy|#		s&    B
B=B?BBBr   c                 p    UR                  5       (       a!  UR                  5       nUR                  X5      $ g rs   )r  r   r   )rt   r   r  r   r   s        rv   call_hasattrBuiltinVariable.call_hasattrB	  s5     ""$$**,D''11ry   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 )
NFra   r8   r_  mapra  rb  z0 kwargsrc  )r=   ru  sysversion_infor   r3   rd  r  r{  r   MapVariabler   r;   )rt   r   r   r  rq   r_  r  seq_lists           rv   call_mapBuiltinVariable.call_mapJ	  s	    "((/7*Fq(X-?'-v;-w/	  H.>.E.Ee.LM#6{m7+	 
 ,/+F+Fr+J+JC##B'PSS 	 
 $$,,.*,	
 	
	
s   &3Dr  c                     UR                  U5      (       a  UR                  U5      OUn[        R                  " UU[	        5       S9$ r  )r  r{  r   FilterVariabler;   )rt   r   r   r  seq_or_lists        rv   call_filterBuiltinVariable.call_filtero	  sK     ,/+F+Fr+J+JC##B'PS 	 ''*,
 	
ry   c                    U R                   =(       a    [        U R                   U5      nUS:X  a+  [        R                  " XR                  R
                  U5      $ U R                  [        L a>   [        U R                  U5      n[        W5      (       d  [        R                  " XU5      $ [        U R                  US 5      n[        R                  " XUb  [        U5      US9$ S US9$ ! [         a    [        [        U5         Nf = f)Nrz   r   )r   r   r<   r   r   rz   r   r   r  r   r   r   r   r   )rt   r   r   r   r   r   s         rv   r   BuiltinVariable.var_getattr{	  s    >DKK!>:"((WW-=-=vFF77f=. E??&,,R??twwd+((d.>T
QW
 	
DHQW
 	
 " =(<=s   /C* *DD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   [*        R,                  " XR4                  5      $ [        U[        R8                  5      (       a  UR;                  X5      $ [        U[        R<                  [        R>                  [        R@                  [        RB                  [        RD                  [        RF                  45      (       GaD  [        U[        RF                  5      (       af  [I        URJ                  RL                  [N        RP                  5      (       a3  [R        RT                  (       a  US;   a  [        SSU 3SU S3SU S3/S9  UR                  5       (       a  URW                  5       RX                  RZ                  S   n[        U[\        R^                  5      (       aR  [a        U5      (       aB  URb                  (       a  [R        Rd                  (       d  [        SSS/ [f        Rh                  QS9   UR;                  X5      $ [        U[        Rn                  5      (       a   [q        URJ                  U5      n[        U[\        Rv                  Rx                  [\        Rv                  Rz                  45      (       aB  [\        R|                  R~                  R                  U5      (       a  [        Rn                  " XS9$ U[        ;   a  [        Rl                  " X%[%        U5      US9$ g [        U[        5      (       a  UR                  (       d  XRRJ                  R                  ;  a  [q        URJ                  U5      nOURJ                  R                  U   n[R        R                  (       a&  UR                  R                  URJ                  X]5        [*        R,                  " XU5      $  UR;                  X5      $ s  sn
n	f ! [6         a     GNf = f! [j         a    e [6         a    [        Rl                  " X%US9s $ f = f! [r         a    [u        [r        U5        e f = f! [6         a    [        Rl                  " X%US9s $ f = f) Nz)getattr() with non-constant name argumentzgetattr(rs  r  z:getattr() with non-constant name argument is not supportedz1Ensure the name argument of getattr() is a stringr$  _gradgrad)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz,getattr() on nn.Module with pending mutationzPIntentionally graph breaking on getattr() on a nn.Module with a pending mutationTF>   __base__	__bases__	__flags__r  r   r  r  )assertRaisesRegexassertNotWarnsassertWarnsRegexassertWarnszFailed to trace unittest methodzfunction: unittest.TestCase.z3Dynamo does not know how to trace unittest method `z` zAvoid calling `TestCase.z%`. Please report an issue to PyTorch.ry  zAttempted to wrap sparse Tensorr  z-torch.compile does not support sparse Tensorsr   )Hr  r   r   r  ru  r  r  r   r   r9  is_state_mutatedhas_pending_mutationhas_pending_mutation_of_attr	load_attrr  is_constant_matchr   r   r   	enumerater  r<   r   r   rL   r  r  r  r_  r   rT   r=   r@   DistributedVariabler  rX   r  r   r  unittestTestCaser   enable_trace_unittestr  rz  r{  r   Tensorr   r  capture_sparse_computer   SPARSE_TENSORr9   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_access)rt   r   r  r  r  r   hasattr_varr   r   r  re  
tuple_argsfake_valmembers                 rv   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{*.44RII 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 D1
 44ejj6K6KL --++GGOO ==fTT// 00tF|F  [))||t99+=+== D1++D1++  55ciiN"((V<<Kr00K& ' l 7  & K 006JJK " (<6 ' K 006JJKsa   AX> 5X8<X> &X> :%X> /Y  Y> 'Z 8X> >
YY)Y;:Y;>ZZ?>Z?r  c                 	   [        U[        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*     [/        U5         [0        R2                  " 5          U" UUR                  R4                  " S[0        R6                  R8                  /[;        X$/0 5      Q76 5      n	S S S 5        S S S 5        S[0        R6                  S[0        R6                  4S jn
UR                  R5                  SU
W	R=                  5       40 5        U
" UR=                  5       R>                  R@                  S   5        U	$ US;   a  SnO+[C        U5      (       a  [!        SSU SU SU S3SSU S3/S
9  UR                  R                  RE                  X%U5        U$ [        U[        RF                  5      (       GaR  UR                  RI                  5       (       d   [!        SSU 3SS/["        RJ                  QS
9  UR                  5       (       a  [        U[        RL                  5      (       a  [O        UR=                  5       R>                  U5      n URQ                  XR                  5       5      nUb  UR                  5       (       ar  [O        UR=                  5       R>                  U5      n[V        RX                  " URZ                  S5      nXL a)  U[0        R\                  R^                  R`                  L a  U$ URc                  U5        g s  snf ! , (       d  f       GNl= f! , (       d  f       GNv= f! [R        [T        4 a    S n Nf = f) Nr  r8   rq  requires_gradz!setattr() on Tensor.requires_gradzsetattr(rs  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 dtypers  r   rh   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     rv   _lower_version_count_by_1?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1
  s>    "#**"Q;&-kG**FFtgZX ry   ry  )r  r  r  zFailed to set tensor attributez6Dyanmo doesn't support setting these tensor attributeszDon't mutate attribute 'z@' on tensors, or move the mutation out of `torch.compile` regionz#nn.Module mutation in HigherOrderOpznn.Module: zPInplace modifying nn.Module params/buffers inside HigherOrderOps is not allowed.z<Remove the mutation or move it outside of the HigherOrderOp.)2r   r   r@   rX   NestedUserFunctionVariabler+  TracebackVariablerg  ru  r  r  r  r   r  rt  rr  r   r   r*  r   r   tracked_fakesremovedynamo_disable_gradr   no_gradrv  r  set_r2   r  rz  r{  r.   
store_attrr_  is_root_tracerFUNDAMENTALrT   r,   r   r  r   r9  getattr_staticmodule_typer|  Moduler  convert_to_unspecialized)rt   r   r  r  r  r   rr  tf	to_removerW  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rv   call_setattrBuiltinVariable.call_setattr3
  sz    --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   R##R#$R::A	R(R:(S (
R7	2R::
S	S! S!c                 ,    UR                  USU/0 5      $ )N__delattr__rk  )rt   r   r  r  s       rv   call_delattrBuiltinVariable.call_delattr
  s     r=8*bAAry   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  r  r   r   INVALID_INPUTr   r   r#   r   r   rX   
cls_sourcer   r  ru  install_global_by_idr   r    r<   r   )rt   r   r  r   errorr   r   s          rv   	call_typeBuiltinVariable.call_type
  s    	oo'G 6
3:: 6N3	 C CDD^^Fell"9911"e<DT 2H=F$$R&99' # 	++E
/ 		s   C 
D
"#DD
c                     UR                  U5      (       a9  [        [        UR                  U5      5      5      n[        R
                  " U5      $ g rs   )r  r  reversedr{  r   rL   )rt   r   r  rz  s       rv   call_reversedBuiltinVariable.call_reversed
  sC     &&r**#"9"9""=>?E**511ry   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 )Nr  sort)r  r   r   rT   rH   r  r;   rg  )rt   r   r  rq   list_vars        rv   call_sortedBuiltinVariable.call_sorted  sp     ,,R00)):
 :
 !----b1.0H   VR8Ory   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sym_num__neg__)
r   rS   ru  r   r  r  rX   r   r   rg  )rt   r   rd  s      rv   call_negBuiltinVariable.call_neg  s|     a))"))qzz|,  q344""2y177==YB77 ry   _format_stringc                 x    UR                  5       n[        U5      n[        R                  R	                  XSU5      $ rs   )r   r   r   StringFormatVariableru  )rt   r   r"  rp   rq   format_strings         rv   call_formatBuiltinVariable.call_format(  s5     '99;M*--44]&QQry   c                    [        U5      S:  al  [        US   [        R                  5      (       aJ  US   nUR                  R                  UR                  5      n[        R                  " U[        U5      5      $ [        U5      S:X  a<  US   R                  5       (       a$  [        [        US   5      nUR                  U5      $ [        US   [        R                  5      (       a-  [        R                  " U[        US   R                   5      5      $ [        U5      S:X  Ga  US   n[        U[        R"                  [        R$                  45      (       a  UR&                  (       a  [        U[        R"                  5      (       a3  [)        UR&                  R+                  [,        R.                  5      5        O2[)        UR&                  R+                  [,        R0                  5      5        UR3                  5       nU[4        La   [        R                  " U[        U5      5      $ [7        [        U5      5      $ [9        S[;        U5      SU 3S/[<        R>                  QS9  g )Nr   r8   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_  ru  get_submodule
module_keyr<   r   idr  r
   rT   call_idr0   rF  
fake_valuer  rX   r   r   r   r   CLASS_MATCHID_MATCHr  r:   r>   r   r   r   r*  )rt   r   rp   nn_mod_variabler  tensor_variabler  real_vals           rv   r,  BuiltinVariable.call_id3  s    t9q=ZQ1K1KLL"1gO))))/*D*DEC"((RW55Y!^Q 1 1 3 3">47;O"**2..DGY??@@"((RQ0B0B-CDDY!^q'C6677  ::!#y'I'IJJ%cjj&;&;L<T<T&UV%cjj&;&;L<Q<Q&RS779H~-&,,RH>>!"S'**4D	STXSYZ8 '22		ry   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*  )rt   r   r   s      rv   call_deepcopyBuiltinVariable.call_deepcopy]  s4     	%$QCq)A/"..		
ry   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                  " X5      $ [        R                  " X(       + 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)Nr8   r  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opr  rs  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 .rs  )rt  rz  r'  r9  r   r   r  is_notr  r+  r*   r  rz  r<   r   r   rz   r   r*  r   rT   sizer   broadcast_shapesRuntimeErrorr  ru  rv  r   )
rt   r   r  r  rz  r9  r   	is_result
tensor_clsr  s
             rv   r  'BuiltinVariable._comparison_with_tensorj  s?    	/AWW(,,00  IOO%I1$--/2F2FGH01A1F1FGHI  X\\!&,,R;;&,,R??::;;-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[        5      (       a  UOUn[        U[        [        [        45      (       d%  [        R                  " X" [        5       S 5      5      $ UR                  R                  S
XRR!                  5       UR!                  5       40 5      n[        R"                  " UUS S9$ )Nr8   r8  z!unsupported SymNode comparison opr  rs  r  r:  z with SymNode arguments r$  rs  r  )r'  r9  r   r   rz   r   r*  r   rS   r=   rT   r<   r   r   ru  rv  r  ru  )rt   r   r  r  r9  r   non_symnoder  s           rv   r  (BuiltinVariable._comparison_with_symnode  s    	BWW:;;;-qbq9H V**.r%:6)556  *$@@ed/+;^L
 
 #((R$-?@@		&&R--/5>>3C!Db
 %%
 	
ry   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[        5      (       a  UR                  USU/0 5      $ g )Nrs  r  rW  )r   r=   is_symnode_likerS   ru  ru  rv  r   r  r2   re   rg  r  s       rv   call_xorBuiltinVariable.call_xor  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   a-..==YR88ry   c                 X    [        U[        5      (       a  UR                  USU/0 5      $ g )NrY  r   re   rg  r  s       rv   	call_ixorBuiltinVariable.call_ixor  ,     a-..==Z!b99ry   c                 X    [        U[        5      (       a  UR                  USU/0 5      $ g )Nr?  rK  r  s       rv   call_subBuiltinVariable.call_sub  s,     a-..==YR88ry   c                 X    [        U[        5      (       a  UR                  USU/0 5      $ g )NrA  rK  r  s       rv   	call_isubBuiltinVariable.call_isub  rN  ry   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[        5      (       a  UR                  USU/0 5      $ g )Nrs  r  __and__)r   r=   rG  rS   ru  ru  rv  r   r  r2   re   rg  r  s       rv   	call_and_BuiltinVariable.call_and_  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a-..==YR88ry   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[        5      (       a  UR                  USU/0 5      $ g )Nrs  r  __iand__)r   r=   rG  rS   ru  ru  rv  r   r#  r2   re   rg  r  s       rv   	call_iandBuiltinVariable.call_iand   s     a)**z!=M/N/N1#4#4#6#6"))		&&#X]]5Fvr5R   a-..==Z!b99ry   c           
         [        U[        5      (       a  [        U[        5      (       a  g  UR                  5       nUR                  5       n[        U[        5      (       a.  [        U[        5      (       a  [        R
                  " XU-  5      $ 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/ [        Q[         P["        P[$        P75      (       a  UR'                  USU/0 5      $ g ! [         a     Nf = f)Nrs  r  __or__)r   r=   r   r   r<   r   r  rG  rS   ru  ru  rv  r   r  r2   re   r?   rV   rW   rg  )rt   r   rd  re  a_constb_consts         rv   call_or_BuiltinVariable.call_or_  sE    a)**z!=M/N/N	**,G**,G'4((Z-F-F&,,R71BCC 1#4#4#6#6"))		&&#X\\4Eqfb4Q   %! ' (	
 
 ==XsB77 7 # 		s   A"E 
EE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/ [        Q[        P[        P75      (       a  UR                  USU/0 5      $ g )Nrs  r  __ior__)r   r=   rG  rS   ru  ru  rv  r   r%  r2   re   r?   rV   rg  r  s       rv   call_iorBuiltinVariable.call_ior?  s     a)**z!=M/N/N1#4#4#6#6"))		&&#X\\4Eqfb4Q   %! '
 
 ==YR88 ry   c           
      6   [        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[        UR                   5      S:H  5      $ [        U["        5      (       a6  U R%                  X5      n[        R                  " XR&                  (       + 5      $ g )Nrs  r  r   )r   rS   ru  ru  rv  r   r  r2   rC   dv_dictrH   r?   rP   r<   r   r   rz  rX   r  r   )rt   r   rd  bool_results       rv   	call_not_BuiltinVariable.call_not_\  s     a))"))		&&#X]]5FsB5O   a)**		Aa,(9;GHH"((S\Q->??a233../K"((1B1B-BCCry   c                 ,    UR                  USU/0 5      $ )N__contains__rk  r  s       rv   call_containsBuiltinVariable.call_containss  s     }}R!b99ry   r   c                 t    [        U[        R                  5      =(       a    U R                  UR                  L $ rs   )r   r   r   r   r   s     rv   r   BuiltinVariable.is_python_equalx  s'    %!:!:;S588@SSry   rn  r   rs   )yrz   r{   r|   r}   r~   r   	_SENTINELr<   _nonvar_fieldsr   r	   r"   r   staticmethodr  cacherm  r   r,  r   r/  r9  r   r  r  r   rZ  r   r  r  r  r  r  r  re  r  r   r  r  r   r  r  r   r  r  r  r  r   r  r  rb  rg  rj  re  ra  r  rs  rg  r  r  r  r  r  r  r  r  call_mincall_maxr  r  r  r  r"  r!  r+  r.  r<  r?  rC  
call_tuplerG  rJ  rN  rU  r\  rh  rk  ro  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r&  r,  r5  r  r  rH  rL  rP  rS  rW  r[  ra  re  rj  rn  r   r   __classcell__r  s   @rv   r   r   e  s    I		'	'N
 )s )F )?P ) ) __@c(38*<&= @  @D:4 : __*Xc3h%7!8 *  *X __#TfuT#Yf0E%EFF #  #J __KTf)!# !	"	
		 K  KZ S#X(,_(=GK		$	& 5T 5
 ,5dD$5G+H)C.H3 # $ 4# 4C c "# "J1? 1o 1RV 1 T $t*  3$30?3	3 
'
15c?6J1K
	tCy$sCx.(	)
 

_-
7;C<P7Q
	
 o S#Xo +/:o CGo 	#!o%&	

 	$	 
o  o b43 4C 4O 44)42A4	4 
(? 
O 
 
(N#N 'N S/)*	N
 
4	Nt 	  fck')S/)*
 	
	
" 
)#) ') S/)*	)
 
)*g;#g; g; ?#	g;
 S/)*g; 
g;R$)$0?$	4	$&)&0?&	4	&%)%0?%	4	%3)30?3	4	3j?)?0??	4	?B
)
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%)%0?%	%<#< < 	<
 "< 
<	)	2A		4		
? 
o 
RV 

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

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

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

 
$
L
#
 
 "	

 

:
#
 
 "	

 

6(#( ( "	(
 
(0#0 0 "	0
 
0h.#h. h. -	h.
 
h.TN#N !N "	N
 
N4-)-.=-BQ-	-
)2A	 )0?GV	4	#
##
 #
 	#

 "#
 
#
J

)

/>

ET

	


5 
S 
_ 
, +/eK#eK eK "	eK
 !4'eK 
4	eKNd#d d "	d
 d 
4	dLB#B B "	B
 
B:):0?:	:4)0?	4	#  "	
 
4	$).=	4	&	R#	R (	R 		R
 "	R 
	R()(2A(	(T
)
.=
	
5
)5
1@5
IX5
	5
n"
)"
1@"
IX"
	"
H).=BQ	4	&).=BQ	4	).=BQ	4	).=BQ	4	).=BQ	4	&).=BQ	4	$+)+.=+BQ+	4	+Z).=BQ	4	:).=	4	.:):.=:BQ:	:
TV T T Try   r   c                     ^  \ rS rSrSr\r\4S\S\SS4U 4S jjjr	S\
4S jrS	S
S\\   S\\
\4   S\4S jrS	S
S\
S\\   S\\
\4   S\4
U 4S jjr\S	S
S\S\S\S\4
S j5       r\S	S
S\S\S\S\4
S j5       rSrU =r$ )DictBuiltinVariablei|  z4Variable tracker for the `dict` builtin constructor.r   rq   rh   Nc                 <   > U[         L d   e[        TU ]  " S0 UD6  g Nrm   )r   r  r  rt   r   rq   r  s      rv   r  DictBuiltinVariable.__init__      }}"6"ry   c                     g)NzDictBuiltinVariable()rm   r   s    rv   r  DictBuiltinVariable.__repr__      &ry   r   r[   rp   c                 @    [         R                  " U[        /UQ70 UD6$ rs   )r|  call_custom_dictr   )rt   r   rp   rq   s       rv   rs  !DictBuiltinVariable.call_function  s!     #33BNtNvNNry   r   c                   > US:X  as  [        U5      S:X  ad  U(       d]  [        0 [        [        5       S9n[	        US   [
        5      (       a  U$ UR                  R                  R                  XS   USS  5      $ US:X  a  [
        R                  " U[        /UQ70 UD6$ [        [        US 5      nUb  U[        ;   a  [	        US   [        R                  5      (       a5  US   R                  c   eUS   R                  R                  XUSS  U5      $ [	        US   [        5      (       a  US   R                  XUSS  U5      $ [         TU ]=  XX45      $ )Nr\   r8   r  r   fromkeys)r   r?   r   r;   r   r|  ru  r  r  call_custom_dict_fromkeysr   r)   r   rW   r  rg  r  )rt   r   r   rp   rq   dict_vtr  r  s          rv   rg  DictBuiltinVariable.call_method  sS    94yA~f+BDTDVWd1g':;;"Nyy--KKq'48  :&@@D#)  dD$/"{l'B$q'9#D#DEEAw''333Aw''33Bd12hOODG%677Aw**2T!"XvFFw"2T::ry   user_clsc                    [        U5      nU R                  [        R                  " U [        R
                  5      [        R                  " X5      /UQU5      $ rs   )r  r  r<   r   r   construct_dict)r   r  rp   rq   	args_lists        rv   r  $DictBuiltinVariable.call_custom_dict  sO     J	--!!"i&>&>?""20=9=
 	
ry   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                  " X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(): r8  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$  r8   r   z	.fromkeysz1 args and 1 kwargs (`value`)z
 args and rb  r   zat least 1 argsz argsr   z2 argsr  c              3   8   #    U  H  n[        U5      v   M     g 7frs   rD   r  s     rv   r   @DictBuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     04a;q>>4r  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.)r   r   r   r   rz   r   r3   rd  r=   ru  r?   r@   r   r<   r   r  r;   r  r  r   )
r   r  rp   rq   r  r   DictVariableTyper  arg_listkeyss
             rv   r  -DictBuiltinVariable.call_custom_dict_fromkeys  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  >ABc--b4cHB#h..0 
 ..r22004D04000'MM$."2"4  	4(()tfAfXF)(*;*;)< =0 0 ;/
	
 Cs   # I8rm   )rz   r{   r|   r}   r~   r   r   r   r	   r  r   r  r   r<   rs  r  rg  rt  r  r  r   ry  rz  s   @rv   r|  r|  |  sG   >
C%) #d #S #T # #'# 'O#O 'O S/)*	O
 
O;#; ; ?#	;
 S/)*; 
;> 
#

 	

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

 "P
 
P
 P
ry   r|  c                   ~   ^  \ rS rSrSr\r\4S\S\SS4U 4S jjjrS\	4S jr
S	S
S\\   S\\	\4   S\4S jrSrU =r$ )IterBuiltinVariablei  z(Variable tracker for the `iter` builtin.r   rq   rh   Nc                 <   > U[         L d   e[        TU ]  " S0 UD6  g r~  )re  r  r  r  s      rv   r  IterBuiltinVariable.__init__  r  ry   c                     g)NzIterBuiltinVariable()rm   r   s    rv   r  IterBuiltinVariable.__repr__  r  ry   r   r[   rp   c                 n   U(       d  [        SSS/ [        R                  QS9  UtpEU(       d  U(       d  [        U[        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        4	5      (       a  UR                  US/ 0 5      $ [        R                  " [         R"                  R$                  5      R'                  X/UQ0 5      nU(       a  [        R(                  " U5      nU$ )Nziter() with no argumentsziter()z%iter() requires at least one argumentr$  rR  )r   r   r  r   r   rH   rI   r1  r?   r_  rT   rL   r  rC   rg  r  r   r  iter_rs  ObjectIteratorVariable)rt   r   rp   rq   r  restrets          rv   rs  !IterBuiltinVariable.call_function  s    2 C5)445	 

 **++..//..,,++66$
  ??2z2r:: ,,$$

-L4L"
- 	  2237C
ry   rm   )rz   r{   r|   r}   r~   re  r   r	   r  r   r  r   r<   r   rs  r   ry  rz  s   @rv   r  r    sx    2
C$( #c #C #D # #'# '.#. '. S/)*	.
 
. .ry   r  c            
          ^  \ rS rSrSr\r\4S\S\SS4U 4S jjjr	S\
4S jrS	S
S\\   S\\
\4   S\4S jrS	S
S\
S\\   S\\
\4   S\4
U 4S jjrSrU =r$ )ListBuiltinVariableiO  z4Variable tracker for the `list` builtin constructor.r   rq   rh   Nc                 <   > U[         L d   e[        TU ]  " S0 UD6  g r~  )r  r  r  r  s      rv   r  ListBuiltinVariable.__init__T  r  ry   c                     g)NzListBuiltinVariable()rm   r   s    rv   r  ListBuiltinVariable.__repr__X  r  ry   r   r[   rp   c                 `   SSK Jn  U(       a  US   OS n[        U[        R                  [        R
                  45      (       d&  [        XT5      (       a@  UR                  U5      (       a*  [        [        UR                  U5      5      [        5       S9$ Uc  [        / [        5       S9$ UR                  U5      (       Ga  UR                  (       Gaf  [        UR                  5      (       GdK  [        U[        5      (       a4  [        UR                  R!                  ["        R$                  5      5        GO[        U[&        5      (       aJ  [)        U[*        [,        45      (       d/  UR.                  R0                  R3                  UR                  5        [        U[        R4                  5      (       a3  [        UR                  R!                  ["        R6                  5      5        OQ[        U[        R8                  5      (       d2  [        UR                  R!                  ["        R:                  5      5        [        [        UR=                  U5      5      [        5       S9$ U Vs/ s H  n[?        U5      R@                  PM     nn[C        SSU S3SU 3/ [D        RF                  QS	9  g s  snf )
Nr8   )rX   r   r  zFailed to trace list()zlist(r  zADynamo does not know how to construct a list from argument types r$  )$r  rX   r   r   r1  rB  r  rH   r  r  r;   r  r   r!   rK   r   r   r   r3  r?   r0   rP   rN   ru  r6  r   r7  r8  r9  r:  r{  r   rz   r   r   r*  )rt   r   rp   rq   rX   r  rd  r  s           rv   rs  !ListBuiltinVariable.call_function[  s    	<d1g4),,i.T.TU
 
 s6611"55S22267.0 
 ;2B2DEE&&r**zzz"4SZZ"@"@c#899!

--l.M.MN "#'899&k+<=C C 		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 
 044t!T!W%%t	4,I;a([\e[fg2%112		
 5s   &J+r   c                   > US:X  an  [        U5      S:X  a_  U(       dX  [        / [        5       S9n[        US   [        5      (       a  U$ UR
                  R                  R                  XS   USS  5      $ [        TU ]%  XX45      $ )Nr\   r8   r  r   )
r   rH   r;   r   r  ru  r  r  r  rg  )rt   r   r   rp   rq   list_vtr  s         rv   rg  ListBuiltinVariable.call_method  s     94yA~f&r9I9KLd1g':;;"Nyy--KKq'48  w"2T::ry   rm   )rz   r{   r|   r}   r~   r  r   r   r	   r  r   r  r   r<   r   rs  rg  r   ry  rz  s   @rv   r  r  O  s    >
C%) #d #S #T # #'# '6
#6
 '6
 S/)*	6

 
6
p;#; ; ?#	;
 S/)*; 
; ;ry   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)Nr8   )GradModeVariableF)r  r  ru  enterexit)r   r  gmvs      rv   r  r    sC     "

!
!"e
,C		"s   AA AAA)rh   N)r~   
contextlibr  r9  r
  loggingr   r   r  ro   typingr  collectionsr   r   collections.abcr   r   r   r   r	   r
   r   r   torch._subclasses.meta_utilsr   torch.overridesr   torch.utils._python_dispatchr   r  r   r   r   r   r  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+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   baser9   r:   r;   r<   constantr=   r>   dictsr?   r@   rA   rB   rC   hashablerE   listsrF   rG   rH   rI   rJ   rK   rL   miscrM   setsrN   rO   rP   r'  rQ   rR   rS   rT   rU   r  rV   rW   rX   rY   torch._dynamo.codegenrZ   torch._dynamo.symbolic_convertr[   	getLoggerrz   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  r  r   r  r   r  r`   r   r   r   r   r  r   r  r  r  r7  cmp_eqr6  cmp_ner2  cmp_ltr5  cmp_ler3  cmp_gtr4  cmp_ger  r   r   r   r  r   r   r   r   r
  r  r  r  r   re   rf   rg   r   r   r   r|  r  r  contextmanagerIteratorr  rm   ry   rv   <module>r     s)  *        
    0 B B + +  6 1 F > >   1 '      ,  7  "    I I   /D! MM8<<MM8<<MM8<<))x''MM8<<h&&hoohooMM8<<MM8==LL(,,MM8<< " I|,	-)Y-
.	9i'(B "Dy~)=$> 
 w2;]O2L&w/ fjj&**57MM  _%d?.CS.H(II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
 	; eD1367  JL $xS18CH3EEF K KM 4c 2HS#X4F FG L>EB1
/ 1
hT,T) T,TnXS
- S
l:- :zT;- T;p 3 8M  ry   