
    7h                    t   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  SSK
JrJrJr  SSKrSSKJrJr  SSKJr  SSKJr  S	S
KJr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K.J/r/J0r0J1r1J2r2J3r3  S	SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrD  SSKEJFrFJGrGJHrH  SSKIJJrJ  SSKKJLrLJMrM  SSKNJOrOJPrPJQrQJRrRJSrSJTrT  SSKUJVrVJWrWJXrXJYrYJZrZJ[r[  SSK\J]r]J^r^J_r_J`r`Jara  SSKbJcrcJdrd  \(       a  SSKeJfrf  SSKgJhrh  \R                  " \j5      rk\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \GR                   \GR                  \GR                  \GR                  \GR                  0r\S\
GR                  \
GR                  /\H4   r\\\H   \\\H   S4   4   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\H5      r\GR2                  S 5       rg)a\  
Built-in function and type variable tracking for TorchDynamo's symbolic execution.

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

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

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

These variable trackers ensure that built-in Python operations are correctly
handled during symbolic execution, either by executing them directly when safe
or by creating appropriate graph nodes when needed.
    N)defaultdictOrderedDict)KeysViewSequence)CallableTYPE_CHECKINGUnion)	sym_floatsym_int)is_sparse_any)is_traceable_wrapper_subclass   )configgraph_break_hints	polyfills	variables)AttributeMutationErrorObservedAttributeErrorraise_observed_exceptionunimplemented_v2Unsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_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get_fake_valueguard_if_dynis_tensor_getset_descriptoris_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargsstr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorValueMutationNewVariableTrackerConstantVariable)EventVariableStreamVariable)ConstDictVariableDefaultDictVariableDictViewVariableFrozensetVariableis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)UserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslatorrN   .c            
       
  ^  \ rS rSr% Sr\" 5       rS1\R                  kr\	S 5       r
\\R                  S 5       5       rS r\\R                  S 5       5       r\\R                  S\\S	\4   \\\   \S	\4   4   4   4S
 j5       5       r\\R                  S 5       5       r\S 5       rS rS`U 4S jjrS\4S jrS rU 4S jrSaS jrS rS r S r!S r"\S 5       r#S r$\S\\%   S\&4S j5       r'SbS jr(0 r)\\\S	4   \S\*\   \\\4   /\4   4   \+S'   SSS \*S!   S"S#SS!4S$ jr,      ScU 4S% jjr-SbS& jr.\.r/\.r0SbS' jr1SbS( jr2SbS) jr3SbS* jr4SbS+ jr5\3r6\3r7SdS- jr8SdS. jr9SdS/ jr:SbS0 jr;SbS1 jr<S2 r=SbS3 jr>SbS4 jr? Se SbS5 jjr@S6 rASeS7 jrBSbS8 jrC\BrD\BrESbS9 jrFS: rGSbS; jrH\SbS< j5       rI\  SbS= j5       rJSbS> jrKSbS? jrLSbS@ jrMSbSA jrNSbSB jrOSbSC jrPSbSD jrQSbSE jrRSSS,\4SF jrSSbSG jrTSbSH jrUSbSI jrV SeSSSJ\SK\4SL jjrWSSSJ\SK\SM\4SN jrXSSSJ\SK\4SO jrYSSSJ\4SP jrZSSSJ\4SQ jr[SSSJ\S"\4SR jr\SbSS jr]SbST jr^SbSU jr_SbSV jr`SbSW jraSbSX jrbSbSY jrc\crdSbSZ jre\erfSbS[ jrgSSS\\S]\4S^ jrhS_riU =rj$ )fBuiltinVariable   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.
fnc                 ^    [        UR                  [        R                  5      5        U " XS9$ )Nsource)r   
make_guardr   BUILTIN_MATCH)clsvaluerU   s      Y/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_dynamo/variables/builtin.pycreate_with_source"BuiltinVariable.create_with_source   s&    f''(B(BCD5((    c                  .   1 [         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[*        R.                  i[*        R0                  i[*        R2                  i[*        R4                  i[*        R                  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[*        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n SSK7J8n  U Rs                  URt                  " 5       5        U Rs                  S [v        Rx                  Ru                  5        5       5        U $ )Nr2   )rG   c              3   z   #    U  H1  n[        U[        [        R                  5      5      (       d  M-  Uv   M3     g 7fN)
isinstancetypemathsqrt.0xs     rZ   	<genexpr>;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>   s%     W4
1d499o8V114s   ,;	;)=absallanyboolcallablechrdivmodfloatgetattrintlenmaxminordpowreprroundstrformatsumrb   operatorposnegnot_truthinvertmulmatmulfloordivtruedivmodaddsubgetitemlength_hintlshiftrshiftand_or_xoripowimulimatmul	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrG   updatevaluesrc   __dict__)fnsrG   s     rZ   _constant_fold_functions(BuiltinVariable._constant_fold_functions   sI   9
9
9
 9
 	9

 9
 9
 9
 9
 9
 9
 9
 9
 9
 9
 9
  !9
" #9
$ %9
& JJ'9
( )9
* +9
, LL-9
. LL/9
0 LL19
2 MM39
4 NN59
6 OO79
8 LL99
: LL;9
< OO=9
> ?9
@ A9
B LLC9
D LLE9
F LLG9
H I9
J   K9
L OOM9
N OOO9
P MMQ9
R LLS9
T LLU9
V MMW9
X MMY9
Z [9
\ ]9
^ _9
` MMa9
b MMc9
d MMe9
f g9
h i9
j MMk9
l MMm9
n LLo9
p NNq9
t 	5

+2245

Wdmm224WW
r]   c                 <    U R                   U R                  5       ;   $ r`   )rR   r   selfs    rZ   can_constant_fold_through)BuiltinVariable.can_constant_fold_through   s    ww$77999r]   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 $ r`   )(r~   rj   r   r   r   r   rx   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    rZ   _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 
r]   return.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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__)r~   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   s    rZ   _binopsBuiltinVariable._binops  s     LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<  'U
> 
r]   c            
      "  ^^^^^^^^ SSK JmJm  SSKJm  SSKJm  SSKJm  SSK	J
mJmJm  0 n [        R                  5       R                  5        GH  u  nu  p#/ X'   / X'   Uu  pEnUUS.U4S jjnX   R!                  T["        4U45        X   R!                  ["        T4U45        US	. SS
 jjnX   R!                  T["        4U45        X   R!                  ["        T4U45        US.S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 jn
S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 jn[,        ["        4U4[(        [(        4U
4[(        [*        4U
4/nU [2        R8                     R7                  U5        SS jn[,        [*        4U4[(        [*        4U4[*        [,        4U4[*        [(        4U4/nU [2        R:                     R7                  U5        UUUUUUUU4S jn[<        R>                  " 5        H&  n[A        U5      (       d   eX;  d   eU" U5      X'   M(     U $ )Nr2   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariablerK   rL   )forward_namereverse_namec                v   > [        UT5      (       a  UR                  XU/0 5      $ UR                  XU/0 5      $ r`   )ra   call_method)txabr   r   rL   s        rZ   user_defined_handler=BuiltinVariable._binop_handlers.<locals>.user_defined_handlern  s=    , a!455==A3CC==A3CCr]   )r   c                *    UR                  XU/0 5      $ r`   r   )r   r   r   r   s       rZ   user_defined_inplace_handlerEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB??r]   rR   c          
      n    SSK Jn  U" U U R                  R                  " SU/[	        X/0 5      Q76 5      $ Nr2   wrap_fx_proxycall_function)builderr   outputcreate_proxyr/   )r   r   r   rR   r   s        rZ   dynamic_handler8BuiltinVariable._binop_handlers.<locals>.dynamic_handler  s=    2$II**'.?.K r]   c                 R    [        / UR                  QUR                  U 5      Q5      $ r`   )rE   itemsunpack_var_sequencer   r   r   s      rZ   tuple_add_handler:BuiltinVariable._binop_handlers.<locals>.tuple_add_handler  s'     !G177!GQ-B-B2-F!GHHr]   c                 R    [        / UR                  QUR                  U 5      Q5      $ r`   )rC   r   r   r   s      rZ   size_add_handler9BuiltinVariable._binop_handlers.<locals>.size_add_handler  s'     F!'' FA,A,A",E FGGr]   c                 R    [        / UR                  U 5      QUR                  Q5      $ r`   )rE   r   r   r   s      rZ   <lambda>1BuiltinVariable._binop_handlers.<locals>.<lambda>  s-    ..r2"r]   c                 `    [        / UR                  QUR                  U 5      Q[        5       S9$ Nmutation_type)rB   r   r   r4   r   s      rZ   r   r     s+    :agg: 5 5b 9:"2"4"r]   c                 T    [        U5      " / UR                  QUR                  Q5      $ r`   )rb   r   r   s      rZ   r   r     s*    a"r]   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$ r`   )is_immutablehas_unpack_var_sequencer   r   side_effectsmutationr   extend)r   r   r   seqs       rZ   list_iadd_handler:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  s_    ~~q'@'@'D'D''+CII""++A.GGNN3Hr]   c                     [        U[        5      (       a  X!p!UR                  UR                  UR	                  5       -  [        5       S9$ )N)r   r  )ra   r7   	__class__r   as_python_constantr4   )r   lstconsts      rZ   expand_list_like9BuiltinVariable._binop_handlers.<locals>.expand_list_like  sF    #/00"U==ii%":":"<<.0 !  r]   c                 X  >^ ^
 S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        U 4S 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aB  T " [        5       S 5      m
SU
4S jjnUnUn[        [        T[        TT[        T4nUR                  U[         4U4[         U4U4/5        [        T 5      nUR                  T[        4T[        44U 4S j4TT4U 4S j4TT4U4TT4U4[        [         [         4[        [         [         44U4[        [
        4UR"                  4[
        [        4UR"                  4[        [
        4UR                  4[
        [        4UR                  4/	5        SU 4S jjn	UR                  [
        [
        4U	45        U$ )	Nc                 P   > [        T" UR                  UR                  5      5      $ r`   )r7   rY   r   r   r   ops      rZ   compare_by_valueYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value4  s    '177AGG(<==r]   c                 d   > U R                  [        R                  " U [        T   5      X/0 5      $ r`   )inline_user_function_returnr5   buildpolyfill_fn_mappingr  s      rZ   handlerPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handlerV  s3    99'--b2Eb2IJQFTV r]   is_c                    > [        T5      $ r`   r6   )r   r   r   none_results      rZ   neverNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.neverf  s    +K88r]   c                 P   > [        T" UR                  UR                  5      5      $ r`   )r7   rR   r  s      rZ   r   QBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>  s    -=bqttn-Mr]   c                    > [        T" U R                  R                  UR                  5      U R                  R                  UR                  5      5      5      $ r`   )r7   r   get_submodule
module_keyr  s      rZ   r   r(    s?    -= "$&II$;$;ALL$I$&II$;$;ALL$I!".r]   c                   > [        U5      [        U5      La#  [        R                  " TR                  S:g  5      $ XL a  [        R                  " T" X5      5      $ [	        U[
        R                  5      (       aV  [	        U[
        R                  5      (       a6  UR                  UR                  La  [        R                  " T" X5      5      $ g g g )Nr"  )rb   r7   create__name__r-   r   ExceptionVariableexc_type)r   leftrightr  s      rZ   	handle_isRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_is  s     Dze4/66r{{e7KLL}/66r$GGtY%@%@AA"5)*E*EFF MM?/66r$GG @ G Br]   r   rN   )r7   r  rP   r  rH   r5   _comparison_with_symnodeappendr   r.  
startswithobjectrI   r@   r:   r9   r8   _comparison_with_tensor)r  r  resultop_varr   r%  obj_op_nonenone_op_objtypes_that_are_never_noner3  r$  r   r   r   r   rK   rL   r   r   s   `         @rZ   create_cmp_op_handlers?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers3  s   > $%568HIJ  (( -.>?AQRS(, -o>";;
 -o>";;	
 A7KL(*:;=MNOF3::<<AWAWB B !409 $# ##$$',%%	-)  78HI'
 ./HI'	 ), "6 G!5 G N !1 0 78QR,
 67OP, "0@P Q!/@P Q - ,_="::
 -n="::
 -o>";;
 -o>";;_35nH A9MNMr]   r5  )!	functionsr   r   	nn_moduler   r   r   torchr   user_definedr   rK   rL   rP   r   r   r7  r5   rH   rC   rE   r7   rB   r@   rA   r~   r   r  r   r   rG   r   rn   )op_handlersr  magic_method_namesin_place_opr   r   inplace_namer   r   r   r   r   list_like_addition_handlersr  list_like_iadd_handlersr  list_like_expansion_handlersr@  r   r   r   r   rK   rL   r   r   s                     @@@@@@@@rZ   _binop_handlersBuiltinVariable._binop_handlersF  s    	N/:,	
 	
$  	 $$&,,.
- KO')K$7I4L *)D D6 O""%79MN O""!#679MN
 DP@+@
 $++%79UV $++!#679UV
 JL  O""!?3_E O""!?3_E
 $++!?3_E $++!?3_EW /d	I	H  |, 
 }- 
 - 
 .!
  01!
 "=1 !%'79MN	 "#34W4
 	$z 	HLL!(()DE	" /!
 .!
  01!
 	 & 	HMM"))*AB	 ,-/?@-.0@A-/?@.0@A	
 	% 	HLL!(()EFX	 X	t +113BB<<<(((4R8KO 4
 r]   c                     [         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$ r`   )rP   rM  get
issubclassr7  )r  a_typeb_typehandlersmatchestype1type2r   s           rZ   _find_binop_handler#BuiltinVariable._find_binop_handler  sb    "22488<'/#NUG&((Z-F-Fw' (0 r]   c                 <    U R                   U R                  5       ;   $ r`   )rR   r   r   s    rZ   can_insert_in_graph#BuiltinVariable.can_insert_in_graph  s    ww$22444r]   c                 2   > [         TU ]  " S0 UD6  Xl        g )N )super__init__rR   )r   rR   kwargsr  s      rZ   r`  BuiltinVariable.__init__  s    "6"r]   c                     U R                   c  SnOU R                   R                  nU R                  R                   SU S3$ )NNone())rR   r.  r  )r   names     rZ   __repr__BuiltinVariable.__repr__  s=    77?D77##D..))*!D633r]   c                     U R                   $ r`   r   r   s    rZ   r  "BuiltinVariable.as_python_constant  s    wwr]   c                    > [         [        R                   [        [        R                  [        [        R
                  0nU R                  U;   a  XR                     $ [        TU ]!  5       $ r`   )	rm   rD  rs   int64rq   float64rR   r_  as_proxy)r   DTYPEr  s     rZ   ro  BuiltinVariable.as_proxy  sM    %**5==

 77e>!w!!r]   c                     U R                   R                  nU R                   R                  S:X  d   eX!R                  R                  ;  d   S5       eUR                  UR                  USS95        g )Nbuiltinszshadowed globalT)r   )rR   r.  
__module__r   	f_globalsappend_outputcreate_load_global)r   codegenrg  s      rZ   reconstructBuiltinVariable.reconstruct  sc    wwww!!Z///::///B1BB/g8848HIr]   c                     [        X5      $ r`   )r"   r   argsra  s      rZ   constant_argsBuiltinVariable.constant_args  s    "400r]   c                     SnU HG  n[        U[        R                  5      (       a    gU=(       d    [        U[        R                  5      nMI     U$ NF)ra   r   GetAttrVariablerI   )r   r}  
any_tensorargs       rZ   tensor_argsBuiltinVariable.tensor_args  sF    
C#y8899#Pz#y7O7O'PJ  r]   c                     SnU HG  n[        U[        R                  5      (       a    gU=(       d    [        U[        R                  5      nMI     U$ r  )rQ  r   r  rI   )r   	arg_typesr  arg_types       rZ   tensor_args_type BuiltinVariable.tensor_args_type  sF    
!H(I$=$=>>#Uz(I<T<T'UJ " r]   c                 6   / n/ n[         R                  " XR                  5       5       HF  n[        U[        R
                  5      (       a  UR                  U5        M5  UR                  U5        MH     [        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  )rU   r    )rf   ts     rZ   rh   BBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s/      
  -.HH,@qxx(eK s   13)		itertoolschainr   ra   r   rI   r7  rk   r~  )r   r}  ra  r  non_tensor_argsis         rZ   python_and_tensor_constant_only/BuiltinVariable.python_and_tensor_constant_only  s    }}7A!Y5566""1%&&q)	 8
  
 
 
 3   /2	3r]   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 r`   )r  r   )r}  ra  rg   kvs        rZ   unwrap_unspec_args_kwargs)BuiltinVariable.unwrap_unspec_args_kwargs"  sX    0451$$&528,,.8
2@$!A##%%.8
 
 	
5 8
s
   AAc                 F    U R                  5       =(       a    [        X5      $ r`   )r   r$   r|  s      rZ   has_constant_handler$BuiltinVariable.has_constant_handler(  s#    --/ 
4Q5
 	
r]   r  
has_kwargsc                   ^ ^^^^	^
^^^^^ SSK Jm  [        T 5      m/ m[        U4S jT 5       5      (       a  U4S j$ [        R
                  " T 5      (       a*  [        T [        5      (       d	  T [        L a    S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  ah  T(       da  [        R$                  " T /TQ76 m
T
(       d  OB[#        T
5      S:X  a  T
u  m	TR!                  U	4S j5        OSU
4S	 jjnTR!                  U5        ['        TS
T R(                   3S 5      mT(       a  SU UU4S jjnTR!                  U5        TR+                  5       (       a@  [-        S T 5       5      (       a  T(       d	  SU 4S jjnOSU 4S jjnTR!                  U5        UU U4S jm[#        T5      S:X  a  U4S j$ [#        T5      S:X  a  Tu  mSUU4S jjnU$ SUU4S jjnU$ )Nr2   )LazyVariableTrackerc              3   <   >#    U  H  n[        UT5      v   M     g 7fr`   )rQ  )rf   r  r  s     rZ   rh   0BuiltinVariable._make_handler.<locals>.<genexpr>4  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 r`   )r   realize)r   r}  ra  r  objs       rZ   r   /BuiltinVariable._make_handler.<locals>.<lambda>5  s-    C,=,=$/$QYY[$/-/s   2
c                    > T[         L a<  [        S U 5       5      (       d%  [        S[        U5      S/ [        R
                  QS9  [        R                  " TU40 UD6$ )Nc              3      #    U  H@  n[        U[        R                  5      =(       a    [        UR                  [        5      v   MB     g 7fr`   )ra   r   r7   rY   r{   re   s     rZ   rh   WBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>D  s>      4 " q)"<"<= 1"177C01!s   AA
zassert with non-string messagez1Dynamo only supports asserts with string messagesgb_typecontextexplanationhints)AssertionErrorrk   r   r{   r   SUPPORTABLEr   r/  )r   r}  ra  rR   s      rZ   create_exception_class_objectDBuiltinVariable._make_handler.<locals>.create_exception_class_objectA  sh     ' 4 "4 1 1
 % @ #D	$W> 1 = =>	 !222tFvFFr]   r   r   c                    > T" U /UQ76 $ r`   r^  )r   r}  _binop_handlers      rZ   r   r  g  s    M"4Lt4Lr]   c                 @   > T H  nU" U /UQ76 nU(       d  M  Us  $    g r`   r^  )r   r}  r  rR   rvbinop_handlerss        rZ   call_binop_handlers:BuiltinVariable._make_handler.<locals>.call_binop_handlersj  s$    ,]T]2#%I -r]   call_c                   >  T	" U /UQ70 UD6nUb  U$ g ! [          a     [        R                  " T	5      R                  " U /UQ70 UD6  e ! [          ar  nTR	                  X5      nU(       dO  [
        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 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  )	TypeErrorinspect	signaturebindr  logwarningr   r.  r   	DIFFICULTr   remove_from_stats)
r   r}  ra  r;  er  excrR   r  self_handlers
          rZ   call_self_handler8BuiltinVariable._make_handler.<locals>.call_self_handleru  s%   ,)">t>v>F)% *  )),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	   4  # ,+.+C+CD+Q(/))++,sE    
D*A
D
CA!C6D<DCD)DDc              3   B   #    U  H  n[        U[        5      v   M     g 7fr`   )rQ  r7   re   s     rZ   rh   r    s     GYJq"233Y   c                   >  T" U Vs/ s H  o3R                  5       PM     sn6 n[        R                  " U W5      $ s  snf ! [         aI  n[        [        U5      U [	        [        [        R                  UR                  5      5      S9   S nANjS nAf[         a-  n[        SST SU 3S/ [        R                  QUS9   S nANS nAff = f)Nr}  constant fold exceptionattempted to run function  with arguments 7Encountered exception when attempting to constant fold.r  r  r  r  from_exc)r  	Exceptionr   rb   listmapr7   r-  r}  r3   r   r   
DYNAMO_BUGr5   r  )r   r}  ra  rg   resr  rR   s         rZ   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!%c*:*A*A388&L!M
 ? ($=&@DTUYTZ$[(a"A$5$@$@"A%(s1   A =A A 
C
?BC
#CC
c                 0  > [        X5      (       ao   T" U Vs/ s H  o3R                  5       PM     sn0 UR                  5        VVs0 s H  u  pEXER                  5       _M     snnD6n[        R                   " U W5      $ g s  snf s  snnf ! [         a-  n[	        SST SU 3S/ [
        R                  QUS9   S nANUS nAf[         aI  n[        [        U5      U [        [        [        R                  UR                  5      5      S9   S nANS nAff = f)Nr  r  r  r  r  r  )r$   r  r   r3   r   r   r  r  r   rb   r  r  r7   r-  r}  r5   r  )	r   r}  ra  rg   r  r  r  r  rR   s	           rZ   r  r    s   4TBB"$BF!G$Q"6"6"8$!G# KQ,,.#"JX$!A';';'=$=.#"#C(  /44R==- C "H#"  C ,(A*DRDHXY]X^(_,e&E(9(D(D&E),  ) 4 $S	 "%)#.>.E.Esxx*P%Qs?   B BB B$B B 
D#B??D?DDc                    > U  Vs/ s H  oR                  5       PM     nn[        SSTR                   ST ST 3STR                   SU ST S3STR                   SU S	TR                   S
3SS/S9  g s  snf )Nz Failed to trace builtin operatorzbuiltin r  z4Dynamo does not know how to trace builtin operator `z` with argument types z (has_kwargs rf  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   r.  )r}  r  real_arg_typesr  rR   r  s      rZ   call_unimplemented_v2<BuiltinVariable._make_handler.<locals>.call_unimplemented_v2  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      $ r`   r^  )r   r}  ra  r  s      rZ   r   r    s    ,A$,Gr]   c                 :   > T" XU5      nU(       a  U$ T" U5        g r`   r^  )r   r}  ra  r  r  r   s       rZ   builtin_dispatch7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s    Rv.I%d+r]   c                 P   > T H  nU" XU5      nU(       d  M  Us  $    T" U5        g r`   r^  )r   r}  ra  rR   r  r  rT  s        rZ   r  r    s-    "BBf-Br!	 # &d+r]   r5  )lazyr  rP   rl   r  isclassrQ  r  GeneratorExitr[  r~   r   r   rI   r  _handle_insert_op_in_graphr7  rt   rX  rr   r.  r   rk   )rR   r  r  r  r  r  r  r  r  r  r  r  r   rT  r  r  s   ```     @@@@@@@@rZ   _make_handlerBuiltinVariable._make_handler-  s   -b!+-E9EEE  ??2r9%% ]"G+G" 10""$$("""y|Y-E-EFF##I..555 > >? y>Qz,@@PiPN!^$)#1  LM&  34seBKK=$94@, ,B OO-.((**GYGGG": :0>4 OO12	  x=AGG]a!JW, ,  , ,  r]   r   rN   c           
      X   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J	n	J
n
  U	" XU5      (       a  UR                  (       df  [        US   [        5      (       d?  U R                  U;   a  XR                     nOXpR                     nUS   nUS   US'   XS'   OXpR                     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[,        ;   a4  [        US   [.        R0                  5      (       a  [,        U   US   US   /p.U[2        R4                  L aO  [        US   [6        5      (       a7  [8        R:                  US   [.        R0                  R                  S5      US   /p.[=        X#5      (       a_  [?        S	 U 5       5      (       dH  UR@                  RB                  " S
[E        U5      /[G        X#5      Q76 nU" [.        RH                  UU5      $ U[2        RJ                  L aK  [M        U5      S:X  a<  [        US   [.        R                  5      (       a  US   RO                  USUSS  U5      $ UR@                  RB                  " S
U/[G        X#5      Q76 n[?        S U 5       5      (       a  U" [P        UU5      $ [S        X#5      (       a^  U RU                  X#5      u  nnU" U0 UD6n[?        S [V        RX                  " X#R	                  5       5       5       5      nU" [Z        UUUUS9$ []        S U 5       5      (       a  [6        R                  " UUS 5      $ U[2        R^                  L a8  [        US   [.        RZ                  5      (       a  US   Ra                  5       US'   U" UU5      $ ! [b         a6    [e        SSU  SU SU 3SU R                   S3/ [f        Rh                  QS9   g f = f)Nr2   )r   wrap_fx_proxy_cls)SourcelessBuilder)BUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPcan_dispatch_torch_functiondispatch_torch_functionr   r   )	unique_id)invoke_and_store_as_constantc              3   Z   #    U  H!  n[        U5      [        R                  :H  v   M#     g 7fr`   )rb   r   rI   rf   r  s     rZ   rh   =BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>D  s#      BAE#S	Y555s   )+r   __eq__c              3   B   #    U  H  n[        U[        5      v   M     g 7fr`   ra   rF   r  s     rZ   rh   r  ]  s     E:c#344r  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7fr`   ra   r   rJ   need_unwrapre   s     rZ   rh   r  g  s-      "C!!Y%J%JK "AMMC   #<<)	raw_valuer  c              3   B   #    U  H  n[        U[        5      v   M     g 7fr`   ra   rH   re   s     rZ   rh   r  t  s     BTZ?33Tr  z,unimplemented builtin op on tensor argumentszpartial tensor op: r  z3Dynamo does not know how to trace builtin operator z with tensor argumentsr  )5r   r   r  r  r   r  torch_functionr  r  r  r  exportra   rI   rR   r-  r  bytecode_transformationr  rB  r  r.  IN_PLACE_DESUGARING_MAPr   r7   r~   r   rH   rD  selectr#   rl   r   r   r.   r/   NumpyNdarrayVariabler   rt   r   rF   r%   r  r  r  rJ   rk   r   r  NotImplementedErrorr   r   r  )r   r   r}  ra  r   r  r  r  r  r  r  functmpfn_varrR   r  r  proxy_args_kwargsr   r  s                         rZ   r  *BuiltinVariable._handle_insert_op_in_graph  s   =$**CDC6==?CC 	/	
 	
 'r88 99!$q'>::ww";;8A7@q'C"1gDG!G3GG<Dww&--b7F*2tDDWWe	33TDVD?C3Ibkk2D  ,,Q332 2 326a$q'8JDX%%%*T!Wo*N*N
 LLQ!2299!<Q  (55c BAEB ? ? 		..#*2. 't4 ))G)GUSS hkk!INtAw	(@(@AA
 Aw**2xab6JJ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/ / #1g88:DG$R//" 	F-dV1TF!F8DQRVRYRYQZZpq6)556		s;   <O) ?DO) AO) ,AO) 8A-O) &.O) AO) )=P)(P)call_function_handler_cacher}  r5   ra  dict[str, VariableTracker]c           	         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" 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r`   rb   re   s     rZ   rh   0BuiltinVariable.call_function.<locals>.<genexpr>       4t!d1ggt   Tc              3   8   #    U  H  n[        U5      v   M     g 7fr`   r  re   s     rZ   rh   r    r  r  )r   r  rR   r  rP  r  rb   rm   )	r   r   r}  ra  r  r  keyr   rg   s	            rZ   r   BuiltinVariable.call_function  s     17@anF@77;4t4;d;C7754t45C2266s;>B>P>P404a$q'40$v,? D,,S1G r(( A 1s   C%'C+
c                 P	  > U R                   [        L a  US:X  a  [        U5      S:X  d   e[        U5      S:X  d   eUu  pVnUR                  5       n[	        U[
        5      (       aQ  UR                  R                  R                  U5      (       a'  UR                  5       (       a  UR                  XU5      $ US:X  GaL  U R                   [        L aL  [        U5      S:X  a=  [        U5      S:X  d   eUR                  R                  R                  XS   USS  5      $ U R                   [        L a  [        U5      S:X  a{  U(       dt  [        0 [        [        5       S9n[	        US   [        5      (       a  US   R                   [        L a  U$ UR                  R                  R                  U US   USS  5      $ U R                   [         L a  [        U5      S:X  a  US   R#                  U5      (       a  U(       d  [	        US   [        5      (       aG  US   R                   [         L a1  US   R%                  U5      n	[&        R(                  " U	[        5       S9$ UR                  R                  R                  U US   USS  5      $ U R                   [*        L ao  [-        / [        5       S9n
[	        US   [        5      (       a  US   R                   [*        L a  U
$ UR                  R                  R                  U US   USS  5      $ U R                   [        L a  US:X  a  [&        R.                  " S 5      $ U R                   [        L a%  US	:X  a  [        R0                  " U[        /UQ70 UD6$ U R                   [        L a  [3        U R                   U5      nU[4        ;   a  [	        US   [&        R6                  5      (       a#  US   R8                  R;                  XUSS  U5      $ [	        US   [&        R                  5      (       a  US   R;                  XUSS  U5      $ U R                   [<        L a`  [        U5      S:  aQ  [3        U R                   U5      nU[>        ;   a1  [	        US   [.        5      (       a  US   R;                  XUSS  U5      $ [@        TU ]u  XX45      $ )
N__setattr__   r   __new__r2   r  r   r`  fromkeys)!rR   r9  rt   r  ra   rK   r   r	  is_attribute_mutationis_python_constantmethod_setattr_standardtrack_new_user_defined_objectdictr:   r4   rP   tupler  r   r   rE   r  rB   r7   call_custom_dict_fromkeysrr   r'   UserDefinedDictVariable_dict_vtr   r{   r0   r_  )r   r   rg  r}  ra  r  name_varvaldict_vt	init_argslist_vtresolved_fnr  s               rZ   r   BuiltinVariable.call_method  s    77f!6t9>!>v;!###!%C3++-C3 9::II**@@EE//11222EE9ww& SY!^6{a'''yy--KKq'48  ww$3t9>&+BDTDVWd1g77DGJJ$<N"N yy--KKGH  5 ING33B77d1g77DGJJ%<O $Q ; ;B ?I$22!1A1C  yy--KKGH  ww$&r9I9KLd1g77DGJJ$<N"Nyy--KKGH  77f!3--d3377d?tz1"<<RWWPVWW77d?!$''40Kl*d1gy'H'HII7++77$qr(FSSQ)D)DEE7..rab6JJ77c>c$i1n!$''40Kk)d1g'7887..rab6JJw"2T::r]   c           	      h   [        U[        [        R                  45      (       a  [        U[        R                  5      (       a  UR	                  US/ 0 5      nOUnU R
                  [        L a  [        O[        nSSK	J
n  U" UUR                  R                  SUUR                  5       40 5      S9$ g )Nitemr   r   r   r   r  )ra   rH   r   rI   r   rR   rs   r   r
   torch._dynamo.variables.builderr   r   r   ro  )r   r   r  r2  fn_r   s         rZ   _call_int_floatBuiltinVariable._call_int_float  s     cOY-E-EFGG#y7788r62r:!WW^'CE ii,,#]]_&	  Hr]   c                 H   [        U[        5      (       a  [        UR                  [        R                  5      (       a  U$ [        UR                  [        R                  [        R                  45      (       d   e[        R                  " XR                  5       S:g  5      $ g Nr   )
ra   rH   sym_numrD  SymBoolr-   SymIntSymFloatr-  ro  )r   r   r  s      rZ   	call_boolBuiltinVariable.call_bool  st     c?++ #++u}}55

 #++enn'EFFFF"))"lln.ABB ,r]   c                    [        U[        R                  5      (       a0  [        R                  R	                  [        UR                  5      S9$ [        U[        R                  5      (       GaF  [        UR                  S5      (       a  UR                  R                  nOW[        UR                  S5      (       a  UR                  R                  nO%[        S[        U5      S/ [        R                  QS9  [        UR                  5      R                  [         R                  L a#   [        R                  R	                  W" 5       S9$ [%        W5      (       a$  [        SS[        UR                  5       S	3S
/S9  g UR&                  n [        R                  " U5      nUR/                  XR/0 5      $ [        U[        R0                  45      (       af  [3        UR4                  5      S:X  a  UR6                   nO"SR9                  S UR4                   5       5      n[        R                  R	                  US9$ g ! ["         a     g f = f! [(         a   n[*        R-                  SU5         S nAg S nAff = f)N)rY   __str__rh  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 UserFunctionVariable: %sr   , c              3   @   #    U  H  oR                  5       v   M     g 7fr`   )r  )rf   r   s     rZ   rh   +BuiltinVariable.call_str.<locals>.<genexpr>`  s     !K(Q"6"6"8"8(s   )ra   r   r   r7   r-  r{   rR   rK   hasattrrY   rA  rh  r   r   
USER_ERRORrb   r9  AttributeErrorr,   __func__r  r  r  r  r/  rt   r}  r0  join)r   r   r  
str_methodbound_methoduser_func_variabler  rY   s           rZ   call_strBuiltinVariable.call_str,  s   cI::<<--443svv;4GGiAACCsyy),, YY..
J// YY//
 IH W9-889	 CII&&&..8$55<<:<<PP 1<< N#'		?"33h i;<	  *22)2)G)G)U& 556H%QSTTi99;<<388}!<<.		!K#((!KK--4454AA =3 & $ & KK KQOs*   *!H= I =
I
	I

I7I22I7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 )Nr2   r   r   )rt   has_force_unpack_var_sequenceforce_unpack_var_sequence_call_min_max_seq_call_min_max_binary)r   r   r}  r   s       rZ   _call_min_maxBuiltinVariable._call_min_maxc  s    t9>d1gCCBGGG55b9E))"44Y!^,,Ra$q'BBY]))"33 r]   c                     [        U5      S:  d   e[        U5      S:X  a  US   $ [        R                  " [        R                  " U R                  U5      U5      $ Nr   r2   )rt   	functoolsreducepartialrT  )r   r   r   s      rZ   rS  !BuiltinVariable._call_min_max_seql  sM    5zA~~u:?8O	 1 1$2K2KR PRWXXr]   c                 	   Ub  Uc  g U R                  X#5      (       Gaj  [        U[        R                  5      (       d  X2p2[        U[        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;                  XU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      (       aO  [        U[H        5      (       a9  U R                  UR=                  5       UR=                  5       5      n[I        U5      $ g g )Nr2   r  r   r3  r   rv   ru   c              3   v   #    U  H/  n[        U[        R                  [        R                  45      v   M1     g 7fr`   )ra   r   rJ   r7   )rf   r  s     rZ   rh   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r`   r  )rf   r+  s     rZ   rh   r`    s     KFSz#'788Fr  c              3   |   #    U  H2  n[        U[        R                  5      (       d  M$  UR                  v   M4     g 7fr`   r  re   s     rZ   rh   r`    s-      "#!!Y%J%JK "AMM#r  )%r  ra   r   rI   rF   TorchInGraphFunctionVariablerD  r   r   rH   r   r  rb   r   r   rR   r/   r"  r  numpyNumpyVariableclipclampru   maximumrv   minimumrk   rl   from_tensor_variabler  r   rJ   sym_maxsym_minr-  r7   )r   r   r   r   r  nprR   ra  r;  np_fntorch_fnraw_braw_resr  py_fnr  rY   s                    rZ   rT  $BuiltinVariable._call_min_max_binarys  s   9	 A!!a!9!9::1a!9!9:::: !-..::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 $E** 2Q,r]   r  c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  U/ 0 5      $ )N__abs__rP   rr   r   r7   r-  )r   r   r  
abs_methods       rZ   call_absBuiltinVariable.call_abs  D    $W-;;&--i892

 ''B33r]   c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  U/ 0 5      $ )N__pos__rv  )r   r   r  
pos_methods       rZ   call_posBuiltinVariable.call_pos  rz  r]   c                     [        U[        R                  5      (       a  [        SSS/ S9  [	        U5      n[
        R                  " U5      n[        R                  R                  U5      $ )Nzunsupported index(Tensor)rB  z;Dynamo does not support tracing builtin index() on a Tensorr  )	ra   r   rI   r   r*   r~   r   r7   r-  )r   r   r  constant_values       rZ   
call_indexBuiltinVariable.call_index  sZ    c933443Y	 3!,))00@@r]   c                     [        [        5      R                  X[        R                  " S5      /0 5      nUR                  XU5      $ )N	__round__rv  )r   r   r  r}  ra  round_methods         rZ   
call_roundBuiltinVariable.call_round  sB    &w/==&--k:;R
 ))"F;;r]   c                     [        U0 5      (       a  [        R                  " U5      $ U R                  " U6 (       a(  [	        S U 5       5      n[        R                  " U5      $ g )Nc              3   r   #    U  H-  n[         R                  R                  [        U5      5      v   M/     g 7fr`   )r   r7   r-  r*   r  s     rZ   rh   -BuiltinVariable.call_range.<locals>.<genexpr>  s-      PT	**11,s2CDDPTs   57)r$   r   RangeVariable_dynamic_argsr&  r   r   r}  s      rZ   
call_rangeBuiltinVariable.call_range  s[    (r22**400& PT D **400r]   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r`   r  re   s     rZ   rh   0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s     @4a:a114r  c              3   B   #    U  H  n[        U[        5      v   M     g 7fr`   r  re   s     rZ   rh   r    s      H
4CqJq/**Or  )rl   r   r|  s      rZ   r  BuiltinVariable._dynamic_args  s7    @4@@ 
C H
4:MMOH
 E
 	
r]   c                 .    [         R                  " U5      $ r`   )r   SliceVariabler  s      rZ   
call_sliceBuiltinVariable.call_slice  s    &&t,,r]   c           
      ~    SSK Jn  U" UUR                  R                  " SU R                  /[        X#5      Q76 5      $ r   )r   r   r   r   rR   r/   )r   r   r}  ra  r   s        rZ   
_dyn_proxyBuiltinVariable._dyn_proxy  s=    *II""+<T+J
 	
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ar  [        UR                  5      (       GdW  [        U[        5      (       a4  [        UR                  R                  [        R                   5      5        GO[#        USS5      (       aY  [        U[$        5      (       aD  ['        U[(        5      (       d/  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  rU   F)ra   r   IteratorVariabler  r  r@   cls_forrR   r4   r  rU   r    rD   r   rV   r   TUPLE_ITERATOR_LENrr   r:   r-   r?   r   guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHr  r   r   r   r  r}  ra  rX   s         rZ   _call_iter_tuple_list%BuiltinVariable._call_iter_tuple_list  s    c9#=#=>>>>t.v.??27777((009;.0  ((,,zzz"4SZZ"@"@c#899!

--l.M.MN
  Xu55&s,=>> &sK 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 7 -r]   c                     [         R                  R                  U R                  5      nU" [	        UR                  U5      5      [        5       S9$ r  )r   r@   r  rR   r  rR  r4   r  s         rZ   _call_iter_tuple_generator*BuiltinVariable._call_iter_tuple_generatorG  sB    ((009..r23*,
 	
r]   c                 v   [        U[        R                  5      (       aP  [        R                  R	                  U R
                  5      nU" [        UR                  U5      5      [        5       S9$ [        U[        R                  5      (       a  U R                  " X/UQ70 UD6$ U R                  " X/UQ70 UD6$ r  )ra   r   r  r@   r  rR   r  rR  r4   LocalGeneratorObjectVariabler  r  r  s         rZ   _call_tuple_list BuiltinVariable._call_tuple_listN  s    c95566,,44TWW=CS22267.0  YCCDD222LTLVLL--bGGGGr]   c                     [        U[        R                  5      (       a  UnOU R                  " X/UQ70 UD6nUc  UR	                  USX45      $ U$ )N__iter__)ra   r   r  r  r   )r   r   r  r}  ra  rets         rZ   	call_iterBuiltinVariable.call_iterZ  sU    c95566C ,,RFtFvFC; ??2z4@@
r]   c           	         SSK JnJn  SSKJn  [        U[        R                  UUU45      (       a  [        R                  R                  S5      $ [        U[        5      (       a2  [        R                  R                  [        UR                  5      5      $ [        U[        [        [        [        [         ["        45      (       a  [        R                  R                  S5      $ g )Nr2   )r   FunctoolsPartialVariabler   TF)rB  r   r  rC  r   ra   r   r   r7   r-  rL   rn   rY   rH   rI   rB   rE   rA   )r   r   r  r   r  r   s         rZ   call_callableBuiltinVariable.call_callablek  s    Q/22(( 	
 
 --44T::011--44Xcii5HII $

 

 --44U;;

r]   c                 R    [        U5      S:X  a  US   $ [        SSU SU 3SS/S9  g )	Nr   r2   zbad args to builtin cast()z	got args r  z0Dynamo expects exactly 2 args to builtin cast().z3Ensure your call to cast() has exactly 2 arguments.r  )rt   r   )r   r  r}  ra  s       rZ   	call_castBuiltinVariable.call_cast  s:    t9>7N0vQvh/JHI		
r]   c                 @    [         R                  " U[        /UQ70 UD6$ r`   )rP   call_custom_dictr%  r   r   r}  ra  s       rZ   	call_dictBuiltinVariable.call_dict  s    //DJ4J6JJr]   c                     U R                  [        R                  " U [        R                  5      [        R                  " X5      /UQU5      $ r`   )r  r5   r  r   construct_dict)r   user_clsr}  ra  s       rZ   r   BuiltinVariable.call_custom_dict  sD    --!!"i&>&>?""20848
 	
r]   c                    U[         [        [        1;   d   eU(       aG  U[        L d   e[        U5      S:X  a  [        U5      S:X  a  SU;   d   e/ UQUR	                  S5      P7n[        U5      S:X  a  [        [        S5      e[        U5      S:X  a  / UQ[        R                  " S 5      P7n[        U5      S:X  d   eUu  pEU[        La  [        O[        n[        U[         5      (       aW  UR                  5        Vs/ s H  n[        R                  " U5      PM     nnU" [         R                  XE5      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 )Nr2   rY   r   z,fromkeys expected at least 1 argument, got 0r   r  c              3   8   #    U  H  n[        U5      v   M     g 7fr`   )r>   )rf   r  s     rZ   rh   <BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     04a;q>>4r  zfailed to call dict.fromkeys()z.fromkeys(): r  zFailed to call 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   rt   popr   r  r7   r-  r:   r;   ra   keysr   r4   rQ  rR  rk   r   r.  )	r   r  r}  ra  r  rY   DictVariableTyper  r  s	            rZ   r'  )BuiltinVariable.call_custom_dict_fromkeys  s    D+{;;;;{***t9>c&kQ&67f;LLL/T/6::g./Dt9>I'UVVt9>9T9+22489D4yA~~
!)!<BU 	 c4  7:xxzBz!#**1-zCB#c)8CSCU  ..r22004D04000'MM$."2"4  	4(()tfAfXF)(*;*;)< =0 0 ;/
	
 Cs     Gc           
      d   U(       a   eU(       d  [        / [        5       S9$ [        U5      S:w  a1  [        [        U[
        R                  " S[        U5       S35      /S9  US   n[        U[        R                   5      (       a  UR                  [        5       S9$ UR                  U5      (       a#  UR                  U5      n[        U[        5       S9$ [        U[        R                  5      (       a  [        UR                  [        5      (       ax  UR                  US5      n[        U[        R                   5      (       aG  UR#                  XbU5      n[        U[         5      (       a  U$ [%        [&        5      R)                  X5      $ [        [        U[
        R                  " S5      /S9  g )	Nr  r2   z&set() takes 1 positional argument but  were givenr  r   r  z!failed to construct builtin set())r?   r4   rt   r   r  r7   r-  ra   r   clonerQ  rR  rK   rY   r   var_getattrUserMethodVariabler  rP   setcall_set)r   r   r}  ra  r  r   iter_fnouts           rZ   r  BuiltinVariable.call_set  sh   zr1A1CDDt9>$$++@T;W 1gc9001199+;+=9>>..r2211"5Eu4D4FGGY@@AAjIIxG
 G
 oob*5G'9#?#?@@44WFKc;//J&s+44R== "))*MNO	
r]   c           
         U(       a   eU(       d  [        / 5      $ [        U5      S:w  a1  [        [        U[        R
                  " S[        U5       S35      /S9  US   n[        U[        R                   5      (       a/  [        UR                   Vs/ s H  oUR                  PM     sn5      $ UR                  U5      (       a  UR                  U5      n[        U5      $ [        [        U[        R
                  " S5      /S9  g s  snf )Nr2   z,frozenset() takes 1 positional argument but r  r  r   z'failed to construct builtin frozenset())r=   rt   r   r  r7   r-  ra   r   	set_itemsvtr  r   )r   r   r}  ra  r  rg   r   s          rZ   call_frozensetBuiltinVariable.call_frozenset  s    z$R((t9>$$++Fs4ykQ\] 1gc96677$CMM%BMqddM%BCC((,,++B/E$U++ "))*STU	
	 &Cs   Dc                    U(       a  [        U5      S:X  a  SU;   d   eUR                  SS5      nU Vs/ s H,  nUR                  U5      (       a  UR                  U5      OUPM.     nn[        R
                  " X$[        5       S9$ s  snf )Nr2   strictF)r  r  )rt   r  r  r   r   ZipVariabler4   )r   r   r}  ra  r  r  s         rZ   call_zipBuiltinVariable.call_zip
  s    v;!#F(:::He, 
 ,/+F+Fr+J+JC##B'PSS 	 
 $$/?/A
 	
	
s   3Bc                      US   R                  USUSS  U5      $ ! [         a1  n[        [        U5      U[	        UR
                  5      S9   S nAg S nAff = f)Nr   __len__r2   r  )r   rH  r   rb   r  r}  )r   r   r}  ra  r  s        rZ   call_lenBuiltinVariable.call_len  sS    	E7&&r9d12hGG 	E$T!WbtAFF|D	Es    
A'AAc                 6    US   R                  USUSS  U5      $ )Nr   __getitem__r2   r   r  s       rZ   call_getitemBuiltinVariable.call_getitem  s#    Aw""2}d12hGGr]   c           	        ^  TR                  5       nUR                  5       n[        T[        R                  5      (       a9  TR                  b,  U4S jn[        R                  R                  U" TU5      5      $ [        T[        R                  5      (       aL  [        TR                  [        R                  5      (       a#  [        SST SU S3S	/ [        R                   QS9  [        T[        R                  5      (       a]  S
UR"                  R$                  ;   aC  [        R                  R                  UR"                  R'                  UTR                  5      5      $ [        T[        R(                  5      (       a   [        R                  " [        WU5      5      $ [        U[*        5      (       d  [-        [/        US
S 5      5      (       a  U4nO[0        R2                  S:  a,  [        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                  R                  U5      $ ! [         a*    [        SST SU S3ST 3/ [        R                  QS9   GNf = f! [>         a    WW;   n Ngf = f)Nz6builtin isinstance() cannot determine type of argumentzisinstance(rC  rf  z=Dynamo doesn't have a rule to determine the type of argument r  c                 p   >^ U4S jm[        U5      [        L a  [        U4S jU 5       5      $ T" U5      $ )Nc                 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)r1   ro  nodemetar   rD  nn	parameter	Parameterra   rQ  python_typedtype)tyexample_valdtypesr  s      rZ   
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..r]   c              3   4   >#    U  H  nT" U5      v   M     g 7fr`   r^  )rf   r  r  s     rZ   rh   NBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>A  s     D"z"~~s   )rb   r&  rl   )
tensor_vartensor_typer  r  s     @rZ   _tensor_isinstance;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance.  s3    /" $-DDDD%k22r]   z<isinstance() called on user defined object with C extensionszeUser-defined object with C extensions can have torch.Tensor attributes; intentionally graph breaking.__instancecheck__)r  
   c              3   |   #    U  H2  n[        U[        5      =(       d    [        [        US S5      5      v   M4     g7f)r  N)ra   rb   rn   rr   )rf   tps     rZ   rh   2BuiltinVariable.call_isinstance.<locals>.<genexpr>j  s5      8
% r4 THWR9Ld-S$TT%s   :<z?isinstance() arg 2 must be a type, a tuple of types, or a unionr  )!r  r	  r   r   r  r  ra   r   rI   r  r7   r-  rK   rY   typesMemberDescriptorTyper  r  r   r  !UserDefinedExceptionClassVariablerb   rn   rr   sysversion_info	UnionType__args__r&  rk   r   r  rQ  )r   r   r  isinstance_typer  r  isinstance_type_tupler+  s     `     rZ   call_isinstanceBuiltinVariable.call_isinstance  s   	(H *<<>c933449N3. --44"38 
 c9>>??JIIu11E
 E
 V%cU"_,=Q?<6)556 sI??@@#'@'@'I'II--44));;OSYYW  c9FFGG#**:h+PQQ ot,,O%8$?1
 1
 &5$6!(ZU__.
 .
 %4$<$<!//C 8
%8
 5
 5
 %4!$U
	4 X'<=C ))0055C # 	P%cU"_,=Q?[\_[`a5)445		~  	433C	4s#   J  J7  0J43J47K	K	c           	           UR                  5       nUR                  5       n[
        R                  " [        WW5      5      $ ! [         a'    [        SSU SU S3SS/[        R                  QS9   NPf = f)z,Checks if first arg is subclass of right argz(issubclass() with non-constant argumentszissubclass(rC  rf  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r  )r  r	  r   r   rG  r   r7   rQ  )r   r   left_tyright_ty
left_ty_pyright_ty_pys         rZ   call_issubclassBuiltinVariable.call_issubclass  s    	 335J"557K ))*Z*MNN # 		B%gYb
!<U9&11			s    A .A32A3c                 .    [         R                  " X#5      $ r`   )r   SuperVariabler   r   r   r   s       rZ   
call_superBuiltinVariable.call_super  s    &&q,,r]   c                      UR                  U5      $ ! [         aI  n[        U[        R                  5      (       a$  UR                  5         UR                  S   s S nA$ e S nAff = fr9  )next_variabler   ra   r   r@   r  r   )r   r   r  exs       rZ   	call_nextBuiltinVariable.call_next  sX    	$$R(( 	#y99::$$&yy|#		s     
A&=A!A& A!!A&c                    UR                  5       (       aj  UR                  5       n[        U[        R                  5      (       a*  [        R
                  " [        UR                  U5      5      $ UR                  X5      $ g r`   )	r"  r  ra   r   rP   r7   rF  rR   call_obj_hasattr)r   r   r  attrrg  s        rZ   call_hasattrBuiltinVariable.call_hasattr  sd    ""$$**,D#y8899 11'#&&$2GHH''11	 %r]   c                     U Vs/ s H,  nUR                  U5      (       a  UR                  U5      OUPM.     nn[        R                  " X#[	        5       S9$ s  snf r  )r  r   r   MapVariabler4   )r   r   rR   seqsr  s        rZ   call_mapBuiltinVariable.call_map  sc     
 ,/+F+Fr+J+JC##B'PSS 	 
 $$R=M=OPP	
s   3Ac                     UR                  U5      (       a  UR                  U5      OUn[        R                  " X#[	        5       S9$ r  )r  r   r   FilterVariabler4   )r   r   rR   r  s       rZ   call_filterBuiltinVariable.call_filter  s<    -0-H-H-L-Lc%%b)RU''?O?QRRr]   r  r*  c                    UR                  5       (       d  [        SSU SU SU S3SS/S9  UR                  5       n[        U[        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b?  U R                  XU5      nUR                  5       S;   d   eUR                  5       (       d  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
[        R.                  " XS9$ US:X  a!  [(        R*                  " XR0                  U5      $ US:X  a   [2        R4                  " UR6                  5      $ [        U[        R:                  5      (       a  UR=                  X5      $ [        U[        R                  [        R>                  [        R2                  [        R@                  [        RB                  [        RD                  45      (       Ga@  [        U[        RD                  5      (       af  [G        URH                  RJ                  [L        RN                  5      (       a3  [P        RR                  (       a  US;   a  [        SSU 3SU S3SU S3/S9  [        U[        5      (       a  URT                  RV                  RX                  S   n[        U[Z        R\                  5      (       aR  [_        U5      (       aB  UR`                  (       a  [P        Rb                  (       d  [        SSS/ [d        Rf                  QS9   UR=                  X5      $ [        U[        Rj                  5      (       a  [m        URH                  U5      n[        U[Z        Rn                  Rp                  [Z        Rn                  Rr                  45      (       aB  [Z        Rt                  Rv                  Ry                  U5      (       a  [        Rj                  " XS9$ U[z        ;   a  [        Rh                  " X%US9$ g [        U[|        5      (       a  UR~                  (       d  XRRH                  R                  ;  a  [m        URH                  U5      nOURH                  R                  U   n[P        R                  (       a&  UR                  R                  URH                  X]5        [(        R*                  " XU5      $ [        U[        R                  5      (       a0  US;   a*  [2        R4                  " [m        UR                  U5      5      $  UR=                  X5      $ s  sn
n	f ! [8         a     GNf = f! [8         a    [        Rh                  " X%US9s $ f = f! [8         a    [        Rh                  " X%US9s $ f = f)Nz)getattr() with non-constant name argumentzgetattr(rC  rf  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 mutation)TF>   __base__	__bases__	__flags__r7  rT   r6  r8  )assertRaisesRegexassertNotWarnsassertWarnsRegexassertDictEqualassertSequenceEqual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.r  zAttempted to wrap sparse TensorrB  z-torch.compile does not support sparse Tensors)r.  rt  )Gr"  r   r  ra   rI   r   r	  r!  r   r  is_state_mutatedhas_pending_mutationhas_pending_mutation_of_attr	load_attrr"  rU   r   rb   	enumerater7  r5   r  r   rE   r6  r7   r-  r8  r	  r   r  NamedTupleVariableDistributedVariabler   rK   rQ  rY   r  unittestTestCaser   enable_trace_unittestr  r  r  rD  Tensorr   r  capture_sparse_computer   r  r  rc  rr   _opsOpOverloadPacket
OpOverload_dynamotrace_rulesis_aten_op_or_tensor_methodr&   r   is_torchr   replay_record_enabledexec_recorderrecord_module_accessr-   r   rR   )r   r   r  r*  defaultrg  hasattr_varrU   rY   r  r   
tuple_argsfake_valmembers                 rZ   call_getattrBuiltinVariable.call_getattr  s    **,,C"3%r(2gYa@XJK	 **, c>**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113}DDD1133<
3::t <99..0eT**{*
 )2%//(B	& )C ,11 "v'J-2J )C	 # &  )66zQQz).44RPP{*/66uGG c95566??2,,((,,**--2233

 

 3	 C CDDsyy22H4E4EFF00 !=:4&A"UVZU[[] ^24& 9= =	 #~..99>>..?x66%h//YYf.K.K$ A "$S> 1 = =>	Kr00 YCCDDSYY-F44ejj6K6KL --++GGOO ==fTT// 006JJ 0[))||t99+=+== D1++D1++  55ciiN"((V<<C7788T F
 >
 $**73664+@AAKr00& ' n ' K 006JJK< ' K 006JJKsU   ;AY5 >5Y/3Y5 
&Y5 1%Y5 "Z Z+ /Y5 5
Z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aI  UR                  5       (       Ga3  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al  UR&                  c  [!        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         [.        R0                  " 5          U" UUR                  R2                  " S[.        R4                  R6                  /[9        X$/0 5      Q76 5      n	S S S 5        S S S 5        S n
UR                  R3                  SU
W	R;                  5       40 5        U
" UR;                  5       R<                  R>                  S   5        U	$ US;   a  SnO+[A        U5      (       a  [!        SSU SU SU S3SSU S3/S
9  UR                  R                  RC                  X%U5        U$ [        U[        RD                  5      (       GaE  UR                  RG                  5       (       d  [I        S5      eUR                  5       (       a  [        U[        R                  5      (       a  [K        UR;                  5       R<                  U5      n URM                  XR                  5       5      n[        U[        R                  5      (       ar  [K        UR;                  5       R<                  U5      n[R        RT                  " URV                  S5      nXL a)  U[.        RX                  RZ                  R\                  L a  U$ UR_                  U5        g g s  snf ! , (       d  f       GN== f! , (       d  f       GNG= f! [N        [P        4 a    S n Nf = f)Nr  r2   r   requires_gradz!setattr() on Tensor.requires_gradzsetattr(rC  rf  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` regionr   c                     U R                   nUS:  a  US-
  n[        R                  R                  R	                  U 4U45        U $ rX  )_versionrD  _C	_autograd_unsafe_set_version_counter)rg   versions     rZ   _lower_version_count_by_1?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1  s>    "#**"Q;&-kG**FFtgZX r]   r  )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?Can't inplace modify module params/buffers inside HigherOrderOp)0ra   r   PlacementVariablerD  rK   NestedUserFunctionVariabler/  r   r   r	  r!  r"  r  rI   r   r   r   r   r  rU   tracked_fakesremovedynamo_disable_gradrD  no_gradr   rI  set_r/   ro  r  r  r+   
store_attrr   is_root_tracerr   r)   r  rH  r   r  getattr_staticmodule_typer  Moduler  convert_to_unspecialized)r   r   r  r*  r+  rg  r   tf	to_remover  re  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rZ   call_setattrBuiltinVariable.call_setattrU  s	    ++,,3344++	
 	
 ??2}xorJJII""88==++--..0D#y77882 ?*$ C"*3%r$r#a @%l ? 1 = => V^ zz)($L&.se2dV2cU!$D)P!M#	" &(YY%<%<!%<r		SZZ@W%<  ! (		//66r: ( -R0%--/+II22 / % 1 1 "3C:r!B 3B0! 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++--,U  **,,Y--2 2 &4CLLN4G4G%L"'"%//"6Q6Q6S"TK k9+C+CDD)78L8L8N8S8SUW)X& #*"8"8-"XK*@'588??+F+FF**((,7 9}! 3B/00F '(>? '"&K'sC   Q;Q<Q#A	QQ#	Q5 
Q 	Q##
Q25R
	R
c                 ,    UR                  USU/0 5      $ )N__delattr__r   )r   r   r  r*  s       rZ   call_delattrBuiltinVariable.call_delattr  s     r=8*bAAr]   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_namerB  rI  )r  r	  r   r   INVALID_INPUTr{   rU   r!   ra   r   rK   
cls_sourcerD  rI  r   install_global_by_idr   r   r5   r  )r   r   r  py_typeerrorrU   rg  s          rZ   	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 r`   )r  r  reversedr   r   rE   )r   r   r  r   s       rZ   call_reversedBuiltinVariable.call_reversed		  sC    &&r**#"9"9""=>?E**511 +r]   c                     UR                  U5      (       ab  [        U[        R                  5      (       dB  [        R                  " UR                  U5      [        5       S9nUR                  US/ U5        U$ g g )Nr  sort)rQ  ra   r   rI   rB   rR  r4   r   )r   r   r  ra  list_vars        rZ   call_sortedBuiltinVariable.call_sorted	  su     ,,R00)):
 :
 !----b1.0H   VR8O:
0r]   c                     [        U[        5      (       a8  [        R                  " U[        R                  " UR                  5       5      S S9$ g )Nr:  )ra   rH   r-  r~   r   ro  r   r   r   s      rZ   call_negBuiltinVariable.call_neg	  s?    a))"))qzz|,  r]   c                 x    UR                  5       n[        U5      n[        R                  R	                  XSU5      $ r`   )r  r{   r   StringFormatVariabler-  )r   r   _format_stringr}  ra  format_strings         rZ   call_formatBuiltinVariable.call_format)	  s3    &99;M*--44]&QQr]   c                 b   [        U5      S:  at  [        US   [        R                  5      (       aR  US   nUR                  R                  UR                  5      n[        R                  R                  [        U5      5      $ [        U5      S:X  a  [        US   [        R                  [        R                  45      (       a  US   R                  (       a5  [        US   R                  R                  [        R                   5      5        [        US   R"                  5      n[        R                  R                  U5      $ [        U5      S:X  a.  [        US   [$        5      (       a  US   nUR'                  U5      $ [)        US   [        R*                  5      (       a5  [        R                  R                  [        US   R,                  5      5      $ [)        US   [        R.                  5      (       a5  [        R                  R                  [        US   R"                  5      5      $ [)        US   [        R0                  5      (       a5  [        R                  R                  [        US   R2                  5      5      $ [5        S[7        U5      SU 3S/[8        R:                  QS9  g )Nr   r2   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  )rt   ra   r   r   r   r*  r+  r7   r-  idr   rK   rU   r   rV   r   ID_MATCHrY   rI   call_idr-   r   rR   SkipFunctionVariabler  
fake_valuer   r{   r   r  )r   r   r}  nn_mod_variabler   constant_resulttensor_variables          rZ   r  BuiltinVariable.call_id.	  s	   t9q=ZQ1K1KLL"1gO))))/*D*DEC--44RW==Y!^
G//1T1TU!
 !
 Aw~~d1gnn778M8MNO a/O--44_EEY!^
47N C C"1gO"**2..DGY;;<<--44RQ

^DDDGY;;<<--44RQ5FGGDGY??@@--44RQ8J8J5KLL4D	STXSYZ8 '22		r]   c                 F    [        SSU S3SS/[        R                  QS9  g )Nzcopy.deepcopy()zcopy.deepcopy(rf  z'Dynamo does not support copy.deepcopy()zAvoid calling copy.deepcopy()r  )r   r   r  )r   r   rg   s      rZ   call_deepcopyBuiltinVariable.call_deepcopyP	  s2    %$QCq)A/"..		
r]   c                 2   SSK Jn  SSKJn  U R                  nU[
        R                  [
        R                  4;   a  [        U[        5      =(       ap    [        U[        5      =(       aY    [        [        UR                  5       R                  5      5      [        [        UR                  5       R                  5      5      :H  nU[
        R                  L a  [        R                  " U5      $ [        R                  " U(       + 5      $ Xe;  aB  [!        SUR"                   SU SU S3SUR"                   S	U SU 3/ [$        R&                  QS
9  [        U[        5      (       a{  [        U[        5      (       af  UR(                  =(       a    UR(                  bF  UR(                  UR(                  :w  a,   [*        R,                  " UR(                  UR(                  5        [        U[        5      (       a  UOUnUR2                  R5                  SXbR                  5       UR                  5       40 5      n	U" [7        U5      UU	5      $ ! [.         aF    [!        SUR"                   SU SU S3SU SU SUR"                   S3/ [$        R0                  QS
9   Nf = f)Nr2   r^  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opre  rC  rf  *Dynamo does not support the comparison op z with Tensor arguments r  z8failed to broadcast when attempting Tensor comparison opz.Dynamo was unable to broad cast the arguments z, when attempting to trace the comparison op .r   )r   r  r   r  rR   r~   r"  is_notra   rI   r  r(   ro  r  r7   r-  r   r.  r   r  sizerD  broadcast_shapesRuntimeErrorrG  r   r   rb   )
r   r   r1  r2  r  r  r  	is_result
tensor_clsr  s
             rZ   r:  'BuiltinVariable._comparison_with_tensor[	  s=   .AWW(,,0040 Iun5I1$--/2F2FGH01A1F1FGHI  X\\!'..y99'..9}==::;;-qbq9H V))-b96)556 t^,,5.11)uzz6		UZZ'
&&tyy%**= (n==T5
		&&R--/5>>3C!Db
 !
 	
    V!{{m1TF"UG1="PQUPVVXY^X_ `BBD++a!Q9-889s   4+I AJJc           
         SSK Jn  U R                  nXT;  aB  [        SUR                   SU SU S3SUR                   SU SU 3/ [
        R                  QS	9  [        U[        R                  5      (       a%  [        R                  " U" [        5       S 5      5      $ UR                  R                  S
XRR                  5       UR                  5       40 5      n[        R                   " UUS S9$ )Nr2   r  z!unsupported SymNode comparison opre  rC  rf  r  z with SymNode arguments r  r   r  )r   r  rR   r   r.  r   r  ra   r   r   r7   r9  r   r   ro  rH   r-  )r   r   r1  r2  r  r  r  s          rZ   r6  (BuiltinVariable._comparison_with_symnode	  s    AWW:;;;-qbq9H V**.r%:6)556 eY??@@--b4.@AA		&&R--/5>>3C!Db
 %%
 	
r]   c           
         [        U[        5      (       a  [        U[        5      (       a  g [        U[        [        45      (       af  [        U[        [        45      (       aK  [        R                  " UUR                  R
                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        US5      (       a=  [        US5      (       a+  [        [        UR                  UR                  -  5      5      $ g g )Nr   r  r  )ra   r7   rH   r-  r   r   r~   r   r/   rF  r?   r  r  r  s       rZ   	call_and_BuiltinVariable.call_and_	  s    a)**z!=M/N/Na/+;<==*!12C
 C
 #))		&&#X]]5Fvr5R   1k""wq+'>'>tAKK!++$=>?? (?"r]   c           
      F   [        U[        5      (       a  [        U[        5      (       a  g [        U[        [        45      (       af  [        U[        [        45      (       aK  [        R                  " UUR                  R
                  " S[        R                  /[        X#/0 5      Q76 S S9$ [        US5      (       a<  [        US5      (       a+  [        [        UR                  UR                  -  5      5      $ [        U[        5      (       a  UR                  USU/0 S9$ g )Nr   r  r  __or__)r}  ra  )ra   r7   rH   r-  r   r   r~   r   r/   rF  r?   r  r  r:   r   r  s       rZ   call_or_BuiltinVariable.call_or_	  s    a)**z!=M/N/Na/+;<==*!12C
 C
 #))		&&#X\\4Eqfb4Q   1k""wq+'>'>tAKK!++$=>??a*++==XQC=CCr]   c           
         [        U[        5      (       aK  [        R                  " UUR                  R                  " S[
        R                  /[        U/0 5      Q76 S S9$ [        U[        5      (       a  UR                  n[        U[        [        45      (       a,  [        R                  " [        UR                  5      S:H  5      $ g )Nr   r  r   )ra   rH   r-  r   r   r~   r   r/   r<   dv_dictrB   r:   r7   rt   r   r  s      rZ   	call_not_BuiltinVariable.call_not_	  s    a))"))		&&#X]]5FsB5O   a)**		Aa,(9:;;#**3qww<1+<==r]   r   r   c                 ,    UR                  USU/0 5      $ )N__contains__r   r  s       rZ   call_containsBuiltinVariable.call_contains	  s     }}R!b99r]   r   )r   N)rx  rM   r5  )r}  zlist[VariableTracker]ra  r  r   r5   )r   rN   r  r5   r`   )kr.  rt  __qualname____firstlineno____doc__r9  	_SENTINELr5   _nonvar_fieldsclassmethodr[   staticmethodrY  cacher   r   r   r%  r   r&  r  r{   r   rM  rX  r[  r`  rh  r  ro  ry  r~  r  r  r  r  r  rb   rm   r  r  r  r   __annotations__r   r   r6  call_int
call_floatr>  rN  rU  rS  rT  call_mincall_maxrx  r~  r  r  r  r  r  r  r  r  r  r  
call_tuple	call_listr  r  r  r  r'  r  r  r  r  r  r  r  r  r  r"  r'  r+  rZ  rz  r~  r  r  r  r  r  r  r  r:  r6  r  	call_iandr  call_iorr  r  __static_attributes____classcell__)r  s   @rZ   rP   rP      s    I		'	'N
 ) ) __?  ?B: __*  *X __#TfuT#Yf0E%EFF #  #J __J  JX 	 	54# 4"J13 
 



 H T$Z H T H  H TMr 	  fck')S/)*
 	
	
" 
)#) ()) -	)
 
)(Y; &	Y;
 -Y; 
Y;v* H JC$5Bn4Ya+F HH44A<	

-
 04,),\

H "J I<:	
K 
 
 +
#+
 +
Z"
H
4

EHd6LO(-3 / 2QS \K#\K \K "	\K|R-#R- R- "	R-
 R-hB#B B "	B:3 :/ :02 7 2o 2
#  "	"R
 D	
3
j
6@$ I, H$:):.=:BQ: :r]   rP   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)Nr2   )GradModeVariableF)rB  r  r-  enterexit)r   r  gmvs      rZ   rk  rk  	  sC     "

!
!"e
,C		"s   AA AAA)r  
contextlibrY  r  r  loggingrc   r~   r  r  typingrF  collectionsr   r   collections.abcr   r   r   r   r	   rD  r
   r   torch._subclasses.meta_utilsr   torch.utils._python_dispatchr   rB  r   r   r   r   r  r   r   r   r   r   r   r   guardsr   r   replay_recordr   rU   r   r   r   r    r!   utilsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   baser3   r4   r5   constantr7   ctx_managerr8   r9   dictsr:   r;   r<   r=   r>   r?   listsr@   rA   rB   rC   rD   rE   r   rF   rG   rH   rI   rJ   rE  rK   rL   torch._dynamo.codegenrM   torch._dynamo.symbolic_convertrN   	getLoggerr.  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   r  Any_HandlerCallbackrb   r&  _TrackersTyper   cmp_eqr   cmp_ner   cmp_ltr   cmp_ler   cmp_gtr   cmp_ger  rP   contextmanagerrk  r^  r]   rZ   <module>r     sk  *        
    0 . 1 1  $ 6 F > >   1 '     $ Y X & 6    I /D! MM8<<MM8<<MM8<<))x''MM8<<h&&hoohooMM8<<MM8==LL(,,MM8<< " fjj&**5F  d?+U43H#3M-NNOKK!!KK!!KK!!KK!!KK!!KK!! W%:o W%:tJ  r]   