
    sg0A                    z   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlZd dlmZmZ d dlmZ ddlmZmZ dd	lmZmZmZmZmZ dd
lm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZU erd dlVmWZW  ej                  eY      ZZej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  iZt G d de9      Zue j                  d        Zwy)    N)defaultdictOrderedDict)KeysView)DictListTYPE_CHECKING)	sym_floatsym_int)is_traceable_wrapper_subclass   )config	variables)AttributeMutationErrorunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceis_constant_source
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_args#does_not_override_dict_iter_methodsextract_fake_example_valueget_fake_valueguard_if_dynis_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargstensortype_to_dtype   )MutableLocalVariableTrackerConstantVariable)EventVariableStreamVariable)ConstDictVariableDefaultDictVariableDictViewFrozensetVariableis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)UserDefinedObjectVariableUserDefinedVariable)InstructionTranslatorc                   8    e Zd Z e       Zdhej                  Zed        Ze	 e
j                  d      d               Zd Ze	 e
j                  d      d               Ze	 e
j                  d      d               Ze	 e
j                  d      d               Ze	d	        Zd
 ZdX fdZdefdZd Z fdZd Zd Zd Zd Zd Ze	d        Zd Ze	dee    de!fd       Z"dYdZ#i Z$	 	 	 	 	 	 	 	 dZdZ%	 	 	 	 	 	 d[ fdZ&dYdZ'e'Z(e'Z)dYd Z*dYd!Z+dYd"Z,dYd#Z-e+Z.e+Z/d\d%Z0d\d&Z1d\d'Z2dYd(Z3dYd)Z4d* Z5dYd+Z6dYd,Z7	 d]	 dYd-Z8d]d.Z9dYd/Z:e9Z;e9Z<dYd0Z=d1 Z>dYd2Z?e	dYd3       Z@e		 	 dYd4       ZAdYd5ZBdYd6ZCdYd7ZDdYd8ZEdYd9ZFdYd:ZGdYd;ZHdYd<ZIddd$efd=ZJdYd>ZKdYd?ZLdYd@ZMefdYdAZNef	 dYdBZO	 d]dddCedDefdEZPdddCedDedFefdGZQdddCedDefdHZRdddCefdIZSdddCefdJZTdddCefdKZUdYdLZVdYdMZWdYdNZXdYdOZYdYdPZZdYdQZ[dYdRZ\dYdSZ]dYdTZ^dddUedVefdWZ_ xZ`S )^BuiltinVariablefnc                 f    t        |j                  t        j                                | ||      S )N)source)r   
make_guardr   BUILTIN_MATCH)clsvaluerG   s      R/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builtin.pycreate_with_sourcez"BuiltinVariable.create_with_sourcei   s(    f''(B(BCD5((    Nc                  .   h t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        t        t         t"        t"        j$                  t&        t(        t*        j                   t*        j,                  t*        j.                  t*        j0                  t*        j2                  t*        j4                  t*        j                  t*        j6                  t*        j8                  t*        j:                  t*        j<                  t*        j>                  t*        j@                  t*        jB                  t*        jD                  t*        jF                  t*        jH                  t*        jJ                  t*        jL                  t*        jN                  t*        jP                  t*        jR                  t*        jT                  t*        jV                  t*        jX                  t*        jZ                  t*        j\                  t*        j^                  t*        j`                  t*        jb                  t*        jd                  t*        jf                  t*        jh                  t*        jj                  t*        jl                  } ddl7m8} | js                   |jt                                | js                  d tv        jx                  ju                         D               | S )Nr(   )r<   c              3   h   K   | ]*  }t        |t        t        j                              s'| , y wN)
isinstancetypemathsqrt.0xs     rL   	<genexpr>z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>   s!     W
1d499o8V1Ws   (22)=absallanyboolcallablechrdivmodfloatgetattrintlenmaxminordpowreprroundstrformatsumrS   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tensorr<   updatevaluesrT   __dict__)fnsr<   s     rL   _constant_fold_functionsz(BuiltinVariable._constant_fold_functionsn   sL   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245

Wdmm224WW
rN   c                 :    | j                   | j                         v S rQ   )rE   r   selfs    rL   can_constant_fold_throughz)BuiltinVariable.can_constant_fold_through   s    ww$77999rN   c                     h t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                   t         j"                  t         j$                  t         j&                  t         j(                  t         j*                  t         j,                  t         j.                  t         j0                  t         j2                  t         j4                  t         j6                  t         j8                  t         j:                  t         j<                  t         j>                  t         j@                  t         jB                  t         jD                  t         jF                  t         jH                  t         jJ                  t         jL                  t         jN                  } | S rQ   )(rn   rZ   ro   rp   rq   rs   rh   rt   ru   rv   rw   rx   ry   ltgtgeleneeqrz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    rL   _fx_graph_functionsz#BuiltinVariable._fx_graph_functions   sQ   (
LL(
LL(
 LL(
 MM	(

 OO(
 LL(
 LL(
 OO(
 (
 (
 LL(
 LL(
 KK(
 KK(
 KK(
  KK!(
" KK#(
$ KK%(
& LL'(
( )(
*   +(
, OO-(
. OO/(
0 MM1(
2 LL3(
4 LL5(
6 MM7(
8 MM9(
: ;(
< =(
> ?(
@ MMA(
B MMC(
D MME(
F G(
H I(
J MMK(
L MMM(
N LLO(
R 
rN   c                     t         j                  g dt         j                  ft         j                  g dt         j                  ft         j
                  g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                  ft        g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                   ft         j"                  g d	t         j$                  fi
} | S )
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__)rn   ry   r   rz   r   rt   r   rw   r   rv   r   rx   r   rh   r   r}   r   r~   r   r   s    rL   _binopszBuiltinVariable._binops   s    
 LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<  '
> 
rN   c            
         ddl m} m} ddlmm ddlm ddlm	 ddl
m ddlmmm i }t         j#                         j%                         D ]!  \  }\  }}g ||<   g ||<   |\  }}}||dfd	
}	||   j'                  t(        f|	f       ||   j'                  t(        f|	f       |d
	 dd}
||   j'                  t(        f|
f       ||   j'                  t(        f|
f       |ddd}||   j'                  t*        t(        f|f       ||   j'                  t(        t*        f|f       ||   j'                  t*        t(        f|f       ||   j'                  t(        t*        f|f       $ dd}dd}t,        t,        f|ft.        t.        f|ft.        t0        f|ft0        t.        fd ft2        t4        t0        t6        ffd ft4        t4        fd fg}|t8        j:                     j=                  |       dd}t2        t(        f|ft.        t.        f|ft.        t0        f|fg}|t8        j>                     j=                  |       dd}t2        t0        f|ft.        t0        f|ft0        t2        f|ft0        t.        f|fg}|t8        j@                     j=                  |       t,        t.        f|| ff
d}tC        jD                         D ]   }tG        |      sJ ||vsJ  ||      ||<   " |S )Nr(   )DictKeysr4   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariabler@   rA   )forward_namereverse_namec                p    t        |      r|j                  | ||gi       S |j                  | ||gi       S rQ   )rR   call_method)txabr   r   rA   s        rL   user_defined_handlerz=BuiltinVariable._binop_handlers.<locals>.user_defined_handler%  s>    , a!45==\A3CC==\A3CCrN   )r   c                ,    |j                  | ||gi       S rQ   r   )r   r   r   r   s       rL   user_defined_inplace_handlerzEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handlerG  s     }}RsB??rN   rE   c          
      p    ddl m}  ||  | j                  j                  d|gt	        ||gi              S Nr(   wrap_fx_proxycall_function)builderr   outputcreate_proxyr&   )r   r   r   rE   r   s        rL   dynamic_handlerz8BuiltinVariable._binop_handlers.<locals>.dynamic_handlerT  sA    2$*BII**'.?A.K rN   c                 R    t        g |j                  |j                  |             S rQ   )r:   itemsunpack_var_sequencer   r   r   s      rL   tuple_add_handlerz:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerp  s'     !G177!GQ-B-B2-F!GHHrN   c                 R    t        g |j                  |j                  |             S rQ   )r8   r   r   r   s      rL   size_add_handlerz9BuiltinVariable._binop_handlers.<locals>.size_add_handlers  s'     F!'' FA,A,A",E FGGrN   c                 R    t        g |j                  |       |j                        S rQ   )r:   r   r   r   s      rL   <lambda>z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s'    :a++B/:!'':" rN   c                 f    t        g |j                  |j                  |       t                     S Nmutable_local)r7   r   r   r)   r   s      rL   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s+    :agg: 5 5b 9:,." rN   c                 T     t        |      g |j                  |j                        S rQ   )rS   r   r   s      rL   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s$    a)=177)=QWW)=!> rN   c                     |j                   r|j                  |       sy |j                  |       }| j                  j                  j                  |       |j                  j                  |       |S rQ   )r   has_unpack_var_sequencer   r   side_effectsmutationr   extend)r   r   r   seqs       rL   list_iadd_handlerz:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  sV    ??!*C*CB*G''+CII""++A.GGNN3HrN   c                     t        |t              r||}}|j                  |j                  |j	                         z  t                     S )N)r   r   )rR   r,   	__class__r   as_python_constantr)   )r   lstconsts      rL   expand_list_likez9BuiltinVariable._binop_handlers.<locals>.expand_list_like  sF    #/0"CU==ii%":":"<<*n !  rN   c                 >  
  d fd}t         t         f|fg} j                         v r  t               d        j                  j	                  d      rdfd}|}|}ndddt         ffd}dddt         ffd	}t
        t        t        t        f}|j                  |t         f|ft         |f|fg       d fd
}d fd}d fd}	d fd}
 j                  j	                  d      r|}n|
}t               }|j                  t        ft        ff fdff fdff|ft        j                  t        j                  f|ff|	ff|ff|ft        t        t         ft        t        t         ff|ft
        t        f|j                  ft        t
        f|j                  ft        t        f|j                   ft        t        f|j                   fg        j                  j	                  d      r#d fd}|j#                  t        t        f|f       |S )Nr   rB   c                 P    t         |j                  |j                              S rQ   )r,   rK   r   r   r   ops      rL   compare_by_valuezYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  s    '177AGG(<==rN   is_c                     t              S rQ   r+   r   r   r   none_results      rL   neverzNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.never  s    /<<rN   r   c                 l    |j                   |j                   du s|j                   du rt              S y NTFrK   r,   r   s      rL   obj_op_nonezTBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.obj_op_none  5     77?aggoEAQ#3K#@@ BRrN   r   c                 l    |j                   |j                   du s|j                   du rt              S y r  r  r   s      rL   none_op_objzTBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.none_op_obj  r  rN   c                 4    t        j                  | ||      S rQ   )r5   list_comparer   leftrightr   s      rL   list_compare_nocheckz]BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.list_compare_nocheck  s    '44RT5IIrN   c                     t        |      t        |      urt        j                   d| d| d       t        j                  | ||      S )N(, ))rS   r   __name__r5   r  r  s      rL   list_compare_checkz[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.list_compare_check  sQ    :T&  "R[[M4&5'"CD'44RT5IIrN   c                 P    t         |j                  |j                              S rQ   )r,   	set_itemsr  s      rL   compare_set_itemszZBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_set_items	  s    '4>>5??(KLLrN   c                 J    |j                  | dj                   d|gi       S )N__)r   r  r  s      rL   compare_via_methodz[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_via_method  s)    ''bR,@5'2NNrN   c                 P    t         |j                  |j                              S rQ   )r,   rE   r   s      rL   r   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>  s    )9"QTT144.)I rN   c                     t         | j                  j                  |j                        | j                  j                  |j                                    S rQ   )r,   r   get_submodule
module_keyr   s      rL   r   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>#  sA    )9 "		 7 7 E "		 7 7 E* rN   c                 v    t        |      t        |      ur"t        j                  j                  dk7        S y )Nr   )rS   r,   creater  r  s      rL   	handle_iszRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_isT  s4     Dze4/66r{{e7KLL 5rN   r   rB   )r,   r   objectr  
startswithr>   r=   r5   r/   r   rD   r   r.   r-   r*   _comparison_with_tensor_comparison_with_symnodeappend)r   r   resultr  r  r	  types_that_are_never_noner  r  r  r  compare_user_definedop_varr"  r  r   r   r   r   r@   rA   r   has_set_itemssize_or_tupler   s   `             @rL   create_cmp_op_handlersz?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s   > )*:;=MNOF3::<< 40;;))%0= #(K"'KA3A;KAA3A8HA ##$$',%%	-)  78HI'
 ./HI'	JJMO {{%%e,'7$'9$$R(FMM 2?C1?C J -, $]35IJ"33Y5O5OP* $]35FG24MN,
 23KL, ,]<LM+]<LM ) (966
 ).966
 )/:77
 )/:77k9;z {{%%e,M A9MNMrN   r#  )$dictsr   r4   	functionsr   r   	nn_moduler   r   r   torchr   user_definedr   r@   rA   rD   r   r   r(  r*   r=   r8   r:   r,   r7   r5   r6   rn   ry   r   r   rt   r<   r   r^   )r   r4   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   r@   rA   r   r-  r.  r   s                       @@@@@@@@@@rL   _binop_handlerszBuiltinVariable._binop_handlers  s    	1M/:,	
 	
  $$&,,.P	 
- KO')K$7I4L, *)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]P	j	I	H |, 
 .!
  01!
 "=1 !%'79MN "#34>?#'
#H 	HLL!(()DE	 /!
 .!
  01!#
 	HMM"))*AB	 ,-/?@-.0@A-/?@.0@A	(
$ 	HLL!(()EF%}5$h/R	 R	h +113 	9BB<<[(((4R8KO	9
 rN   c                     t         j                         j                  |       }|y g }|D ]3  \  \  }}}t        ||      st        ||      s#|j	                  |       5 |S rQ   )rD   r<  get
issubclassr(  )r   a_typeb_typehandlersmatchestype1type2handlers           rL   _find_binop_handlerz#BuiltinVariable._find_binop_handlere  sg    "22488<'/ 	(#NUEG&%(Z-Fw'	( rN   c                 :    | j                   | j                         v S rQ   )rE   r   r   s    rL   can_insert_in_graphz#BuiltinVariable.can_insert_in_graphq  s    ww$22444rN   returnc                 2    t        |   di | || _        y )N )super__init__rE   )r   rE   kwargsr   s      rL   rN  zBuiltinVariable.__init__t  s    "6"rN   c                     | j                   d}n| j                   j                  }| j                  j                   d| dS )NNoner  r  )rE   r  r   )r   names     rL   __str__zBuiltinVariable.__str__x  s=    77?D77##D..))*!D633rN   c                     | j                   S rQ   r   r   s    rL   r   z"BuiltinVariable.as_python_constant  s    wwrN   c                     t         t        j                   t        t        j                  t        t        j
                  i}| j                  |v r|| j                     S t        | !         S rQ   )	r]   r3  rc   int64ra   float64rE   rM  as_proxy)r   DTYPEr   s     rL   rX  zBuiltinVariable.as_proxy  sO    %**5==

 77e>!w!!rN   c                     | j                   j                  }| j                   j                  dk(  sJ ||j                  j                  vsJ d       |j                  |j                  |dd             y )Nbuiltinszshadowed globalFT)ry   )rE   r  
__module__r   	f_globalsappend_outputcreate_load_global)r   codegenrR  s      rL   reconstructzBuiltinVariable.reconstruct  sg    wwww!!Z///7::///B1BB/g88u$8OPrN   c                     t        ||      S rQ   )r   r   argsrO  s      rL   constant_argszBuiltinVariable.constant_args  s    "400rN   c                     d}|D ]<  }t        |t        j                        r y|xs t        |t        j                        }> |S NF)rR   r   GetAttrVariabler>   )r   rd  
any_tensorargs       rL   tensor_argszBuiltinVariable.tensor_args  sJ    
 	QC#y889#Pz#y7O7O'PJ	Q rN   c                     d}|D ]<  }t        |t        j                        r y|xs t        |t        j                        }> |S rg  )r?  r   rh  r>   )r   	arg_typesri  arg_types       rL   tensor_args_typez BuiltinVariable.tensor_args_type  sJ    
! 	VH(I$=$=>#Uz(I<T<T'UJ	V rN   c                    g }g }t        j                  ||j                               D ]?  }t        |t        j
                        r|j                  |       /|j                  |       A t        d |D              xr  | j                  | S )Nc              3   b   K   | ]'  }|j                   t        |j                         nd ) y wrg  )rG   r   )rW   ts     rL   rY   zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s0      
 -.HH,@qxx(eK
s   -/)		itertoolschainr   rR   r   r>   r(  r[   re  )r   rd  rO  rk  non_tensor_argsis         rL   python_and_tensor_constant_onlyz/BuiltinVariable.python_and_tensor_constant_only  s    v}}7 	*A!Y556""1%&&q)		*
  
 
 
 3 !d  /2	3rN   c                     | D cg c]  }|j                          c}|j                         D ci c]  \  }}||j                          c}}fS c c}w c c}}w rQ   )r   r   )rd  rO  rX   kvs        rL   unwrap_unspec_args_kwargsz)BuiltinVariable.unwrap_unspec_args_kwargs  sV    0451$$&528,,.8
*.!QAq##%%8
 
 	
5 8
s
   AAc                 >    | j                         xr t        ||      S rQ   )r   r   rc  s      rL   has_constant_handlerz$BuiltinVariable.has_constant_handler  s%    --/ 
4Q&5
 	
rN   rm  
has_kwargsc                 8   	
 ddl m} ddlm	 t	               g t        	fd|D              rfdS t        j                         rt         t              r
	 	 d fd}|S j                         ri t        j                  u rt        |d   t        j                        r:j                  |      rj                   S |rj#                  j                          t%        |      dk(  rY|sWt	        j&                   g| sn>t%              dk(  r\  
j#                  
fd	       ndfd
}j#                  |       t)        d j*                   d       rdfd}j#                  |       j-                         r@|j.                  t1        d |D              r
|sd fd}nd fd}j#                  |       d j*                   d| d| t%              dk(  rfdS t%              dk(  r\  dfd}|S dfd}|S )Nr(   SourcelessBuilder)LazyVariableTrackerc              3   6   K   | ]  }t        |        y wrQ   )r?  )rW   rr  r  s     rL   rY   z0BuiltinVariable._make_handler.<locals>.<genexpr>  s     Eaz!01Es   c                 l    j                  | |D cg c]  }|j                          c}|      S c c}w rQ   )r   realize)r   rd  rO  rz  objs       rL   r   z/BuiltinVariable._make_handler.<locals>.<lambda>  s-    C,=,=$/QQYY[/- /s   1
c                 |    t         u rt        d |D              st        d       t        j                  |fi |S )Nc              3      K   | ]:  }t        |t        j                        xr t        |j                  t               < y wrQ   )rR   r   r,   rK   rk   rV   s     rL   rY   zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>  s?      4  q)"<"<= 1"177C014s   A Azassert with non-string message)AssertionErrorr[   r   r   ExceptionVariable)r   rd  rO  rE   s      rL   create_exception_class_objectzDBuiltinVariable._make_handler.<locals>.create_exception_class_object  sF     ' 4 "4 1
 ""BC 222tFvFFrN   r   r   c                      | g| S rQ   rL  )r   rd  _binop_handlers      rL   r   z/BuiltinVariable._make_handler.<locals>.<lambda>  s    M"4Lt4L rN   c                 2    D ]  } || g| }|s|c S  y rQ   rL  )r   rd  r  rE   rvbinop_handlerss        rL   call_binop_handlersz:BuiltinVariable._make_handler.<locals>.call_binop_handlers  s'    , &]T]#%I&rN   call_c           
         	  | g|i |}||S y # t         $ r 	  t        j                        j                  | g|i |  # t         $ rP}j	                  ||      }|s1t
        j                  d|       t        d d| d|        Y d }~Y y Y d }~Y y d }~ww xY wt        $ r/}j	                  ||      }|s |j                          Y d }~y d }~ww xY w)Nz1incorrect arg count %s %s and no constant handlerzinvalid handler args  )
	TypeErrorinspect	signaturebindr}  logwarningr   r   remove_from_stats)	r   rd  rO  r)  er}  excr  self_handlers	          rL   call_self_handlerz8BuiltinVariable._make_handler.<locals>.call_self_handler  s   ,)">t>v>F)% *  <)),7<<RQ$Q&Q  % 
/2/G/Gf/U,3KK S , !
 *"7~QtfAfX V   4
 # ,+.+C+CD&+Q(/))++,sD    	C)AC	B!?BCCB!!C,%CCc              3   <   K   | ]  }t        |t                y wrQ   )r?  r,   rV   s     rL   rY   z0BuiltinVariable._make_handler.<locals>.<genexpr>   s     GJq"23G   c                     	  |D cg c]  }|j                          c} } |       S c c}w # t        $ r!}t        dt        |              Y d }~3d }~ww xY wNzconstant fold exception: )r   	Exceptionr   ri   )r   rd  rO  rX   resr  r   rE   s         rL   constant_fold_handlerz<BuiltinVariable._make_handler.<locals>.constant_fold_handler$  sh    O >BCa224C
 #2s++	 D$ O%(A$s)&MNNOs    2 -2 2 	AAAc                 J   t        ||      r^	  	|D cg c]  }|j                          c}i |j                         D ci c]  \  }}||j                          c}}} |       S y c c}w c c}}w # t        $ r!}t	        dt        |              Y d }~:d }~ww xY wr  )r   r   r   r  r   ri   )
r   rd  rO  rX   ry  rz  r  r  r   rE   s
           rL   r  z<BuiltinVariable._make_handler.<locals>.constant_fold_handler0  s    4T6BS"$BF!GQ!"6"6"8!G# KQ,,.#"BF!QAq';';'=$=#"#C  'r3// C "H#"  ) S),Ed3i[*QRRSs3   A8 A-A8 A2A8 -A8 8	B"BB"z	builtin: r  c                      t              S rQ   r   )rd  	error_msgs    rL   r   z/BuiltinVariable._make_handler.<locals>.<lambda>B  s    y!9 rN   c                 8     | ||      }|r|S t               y rQ   r  )r   rd  rO  r  r  rF  s       rL   builtin_dispatchz7BuiltinVariable._make_handler.<locals>.builtin_dispatchF  s!    Rv.Ii(rN   c                 J    D ]  } || ||      }|s|c S  t               y rQ   r  )r   rd  rO  rE   r  r  rB  s        rL   r  z7BuiltinVariable._make_handler.<locals>.builtin_dispatchN  s2    " "BBf-B!	" i(rN   r#  )r   r  lazyr  rD   r\   r  isclassr?  r  rI  rn   r{   r   r>   ro  _handle_insert_op_in_graphr(  rd   rG  rb   r  r   r!  r[   )rE   rm  r~  r  r  r  r  r  r  r  r  r  r   r  rF  rB  r  r  s   `        @@@@@@@@@rL   _make_handlerzBuiltinVariable._make_handler  s   .-b!E9EE  ??2:b)#<
G+
G 10""$("""y|Y-E-EF##I.555 > >? y>Qz,@@PiPN!^$)#1  LM&  34seBKK=$94@,< OO-.((*'..G GYGG",0 OO12}Ai[*F	x=A99]a!JW)  )  rN   r   rB   c           	         ddl m}m} |r# | j                  g ||j	                          sy | j
                  }	  | j                  |i |r(ddlm} ddl	m
}  ||| ||j                        ||      S |t        v r0t        |d   t        j                        rt        |   |d   |d   g}}|t         j"                  u rKt        |d   t$              r8t&        j(                  |d   t        j                  j+                  d      |d   g}}t-        ||      r[t/        d |D              sI |j0                  j2                  dt5        |      gt7        ||       }	 |t        j8                  ||	      S  |j0                  j2                  d|gt7        ||       }	t/        d	 |D              r |t:        ||	      S t=        ||      rb| j?                  ||      \  }
} ||
i |}t/        d
 tA        jB                  ||j	                               D              } |tD        ||	||      S tG        d |D              rt%        j*                  ||	d       S |t         jH                  u r4t        |d   t        jD                        r|d   jK                  |      |d<    |||	      S # tL        $ r tO        d|  d| d|        Y y w xY w)Nr(   )r   wrap_fx_proxy_clsr   )	unique_id)invoke_and_store_as_constantr   c              3   T   K   | ]   }t        |      t        j                  k(   " y wrQ   )rS   r   r>   rW   rj  s     rL   rY   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  s&      B:=S	Y555Bs   &(r   c              3   <   K   | ]  }t        |t                y wrQ   rR   r;   r  s     rL   rY   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  s     E:c#34Er  c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wrQ   rR   r   r?   need_unwraprV   s     rL   rY   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  ,      "!!Y%J%JK MM"   02)	raw_valuer  c              3   <   K   | ]  }t        |t                y wrQ   rR   r=   rV   s     rL   rY   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  s     BZ?3Br  zpartial tensor op: r  )(r   r   r  rk  r   rE   rw  bytecode_transformationr  r1  r  r  IN_PLACE_DESUGARING_MAPrR   r   r,   rn   r{   r=   r3  selectr!  r   r\   r   r   r%   r&   NumpyNdarrayVariabler;   r   r{  rs  rt  r?   r[   rw   convert_to_constantNotImplementedErrorr   )r   r   rd  rO  r   r  rE   r  r  proxy_args_kwargsr  r  s                 rL   r  z*BuiltinVariable._handle_insert_op_in_graphW  s   =*$**CDC6==?CWWT	H3t33TDVD?C3Ibkk2D&  ,,Q332 326a$q'8JDX%%%*T!Wo*N !<<G..55a8G*D (f5c BAEB ? /		..#*2. 'tV4 ))G)GUSS*BII** #40E
 EEE($ 
 *$7!%!?!?f!Mw11	! "&__T6==?C"  )/' +  BTBB&--b%>> )))jGYBB/ #1g99"=DG$R//" 	H/vQtfAfXFG	Hs3   9J 5C;J 1AJ 9A-J '(J AJ J?>J?c           	         |rK|j                         D ci c]  \  }}||j                          }}}| j                  gd |D        d}n| j                  gd |D        }| j                  j	                  |      }|sL| j                  | j                  |D cg c]  }t        |       c}t        |            x| j                  |<   } ||||      S c c}}w c c}w )Nc              3   2   K   | ]  }t        |        y wrQ   rS   rV   s     rL   rY   z0BuiltinVariable.call_function.<locals>.<genexpr>       4!d1g4   Tc              3   2   K   | ]  }t        |        y wrQ   r  rV   s     rL   rY   z0BuiltinVariable.call_function.<locals>.<genexpr>  r  r  )r   r  rE   call_function_handler_cacher>  r  rS   r]   )	r   r   rd  rO  ry  rz  keyrF  rX   s	            rL   r   zBuiltinVariable.call_function  s     17@Aan@F@77;4t4;d;C7754t45C2266s;>B>P>P40a$q'0$v,? D,,S1G r4(( A 1s   CC
c                    | j                   t        u r|dk(  rt        |      dk(  sJ t        |      dk(  sJ |\  }}}|j                         }t	        |t
              rH|j                  j                  j                  |      r#|j                         r|j                  |||      S | j                   t        u rM|dk(  rHt        |      dk(  sJ t        |      dk(  sJ |j                  j                  j                  |d         S | j                   t        u r#|dk(  rt        j                  |t        g|i |S t        | A  ||||      S )N__setattr__   r   __new__r(   fromkeys)rE   r$  rd   r  rR   r@   r   r   is_attribute_mutationis_python_constantmethod_setattr_standard(track_object_new_from_user_defined_classdictrD   call_custom_dict_fromkeysrM  r   )	r   r   rR  rd  rO  r  name_varvalr   s	           rL   r   zBuiltinVariable.call_method  s6    77f!6t9>!>v;!###!%C3++-C3 9:II**@@E//1222xEE77f!2t9>!>v;!###99))RRQ  77d?tz1"<<RWWPVWWw"2tT6::rN   c           	      X   t        |t        t        j                  f      rt        |t        j                        r|j	                  |dg i       }n|}| j
                  t        u rt        nt        }ddl	m
}  |||j                  j                  d||j                         fi             S y )Nitemr   r   r   r   r  )rR   r=   r   r>   r   rE   rc   r
   r	   torch._dynamo.variables.builderr   r   r   rX  )r   r   rj  r  fn_r   s         rL   _call_int_floatzBuiltinVariable._call_int_float  s     cOY-E-EFG#y778r62r:!WW^'CE ii,,#]]_&	  HrN   c                    t        |t        j                        r3t        j                  j	                  t        |j                              S t        |t        j                        rt        |j                  d      r|j                  j                  }n8t        |j                  d      r|j                  j                  }nt        d       t        |j                        j                  t        j                  u r&	 t        j                  j	                                S t!              r"t        t        |j                         d       y |j"                  }	 t        j                  |      }|j+                  ||gi       S y # t        $ r Y y w xY w# t$        $ r }t&        j)                  d|       Y d }~y d }~ww xY w)NrK   rS  __repr__z5user defined object has no __str__ or __repr__ methodz has a C/C++ based str methodz)Failed to create UserFunctionVariable: %s)rR   r   r   r,   r!  rk   rE   r@   hasattrrK   rS  r  r   rS   r$  AttributeErrorr#   __func__r  r  r  inline_user_function_return)r   r   rj  
str_methodbound_methoduser_func_variabler  s          rL   call_strzBuiltinVariable.call_str  sa   cI::<--443svv;4GGiAACsyy), YY..
J/ YY//
UVCII&&&..8$55<<:<<PP 1<cii 11NOP  *22)2)G)G)U& 556H3%QSTTC D &  & KK KQOs*   >$F F 	FF	F?F::F?c                 "   t        |      dk(  r:|d   j                  |      r&|d   j                  |      }| j                  ||      S t        |      dk(  r| j	                  ||d   |d         S t        |      dkD  r| j                  ||      S y )Nr(   r   r   )rd   has_force_unpack_var_sequenceforce_unpack_var_sequence_call_min_max_seq_call_min_max_binary)r   r   rd  r   s       rL   _call_min_maxzBuiltinVariable._call_min_max$  s    t9>d1gCCBGG55b9E))"e44Y!^,,Ra$q'BBY]))"d33 rN   c                     t        |      dkD  sJ t        |      dk(  r|d   S t        j                  t        j                  | j                  |      |      S Nr   r(   )rd   	functoolsreducepartialr  )r   r   r   s      rL   r  z!BuiltinVariable._call_min_max_seq-  sM    5zA~~u:?8O	 1 1$2K2KR PRWXXrN   c                    ||y | j                  ||      r9t        |t        j                        s||}}t        |t        j                        sJ t        |t              r5t        j
                  t        j                        j                  ||gi       }t        |t              st        |t              rLddl
m}  |t        |      | |j                  j                  d| j                  gt!        ||gi              S |j#                         rt        |t        j$                        r$dd l}t        j(                  |j*                        }n#t        j
                  t        j,                        }| j                  t.        u rd|ind|i}|j                  ||g|      }nt        |t        j$                        rIdd l}t.        |j0                  t2        |j4                  i| j                     }t        j(                  |      }nLt.        t        j0                  t2        t        j4                  i| j                     }t        j
                  |      }|j                  |||gi       }t7        d ||fD              rt9        d	 ||fD              rt        j                  j;                  |      S |j#                         r|j=                         }	n|j>                  }	| j                  t.        u rt/        |j>                  |	      }
nt3        |j>                  |	      }
t9        d
 ||fD              }t        j@                  j;                  ||
|      S |S t        |t              st        |t              rs| j                  t.        u rt        jB                  nt        jD                  } |j                  j                  d|gt!        ||gi        }t        jF                  ||d       S y )Nr(   r  r   r  r   rf   re   c              3   p   K   | ].  }t        |t        j                  t        j                  f       0 y wrQ   )rR   r   r?   r,   )rW   rv  s     rL   rY   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>h  s9      	  !==!22	s   46c              3   <   K   | ]  }t        |t                y wrQ   r  )rW   r  s     rL   rY   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>r  s     KSz#'78Kr  c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wrQ   r  rV   s     rL   rY   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>~  r  r  )$rk  rR   r   r>   r;   TorchInGraphFunctionVariabler3  r   r   r=   r   r  rS   r   r   rE   r&   r  r  numpyNumpyVariableclipclampre   maximumrf   minimumr[   r\   from_tensor_variabler   r  r?   sym_maxsym_minr!  )r   r   r   r   r  nprE   rO  r)  raw_braw_resr  r  s                rL   r  z$BuiltinVariable._call_min_max_binary4  s8   9	 Aq!a!9!9:!1a!9!9::: !-.::5<<HVVR
 !_-A1O6(G0"))00' +Aq626  ##%a!?!?@&"009B"??LB(,3%eQZ))"qc6:a!?!?@&rzz3

;DGGDB"004Bu}}c5==A$''JB"??CB))"q!fb9  	 Q	 	 KQFKK$55JJ6RR'')002EKKE77c>!!++u5G!!++u5G! "V" 
 !<<QQG[ 
 ?+z!_/M"&''S.emmB*BII**&7A&CE #))"eT:: 0NrN   rj  c                     t        t              j                  ||t        j                  d      gi       }|j                  |g i       S )N__abs__rD   rb   r   r,   r!  )r   r   rj  
abs_methods       rL   call_abszBuiltinVariable.call_abs  F    $W-;;&--i892

 ''B33rN   c                     t        t              j                  ||t        j                  d      gi       }|j                  |g i       S )N__pos__r  )r   r   rj  
pos_methods       rL   call_poszBuiltinVariable.call_pos  r  rN   c                     t        |t        j                        rt        d       t	        |      }t        j                  |      }t        j                  j                  |      S )Nzunsupported index(tensor))	rR   r   r>   r   r"   rn   r   r,   r!  )r   r   rj  constant_values       rL   
call_indexzBuiltinVariable.call_index  sJ    c9334563!,))00@@rN   c                     t        t              j                  ||t        j                  d      gi       }|j                  |||      S )N	__round__r  )r   r   rj  rd  rO  round_methods         rL   
call_roundzBuiltinVariable.call_round  sF    &w/==&--k:;R
 ))"dF;;rN   c                    t        |i       rt        j                  |      S  | j                  | rJ|D cg c]*  }t        j                  j                  t        |            , }}t        j                  |      S y c c}w rQ   )r   r   RangeVariable_dynamic_argsr,   r!  r"   )r   r   rd  rj  s       rL   
call_rangezBuiltinVariable.call_range  sx    (r2**400T&PTIL	**11,s2CDD  **400s   /A<c                 j    t        d |D              xs  t        d |j                         D              S )Nc              3   <   K   | ]  }t        |t                y wrQ   r  rV   s     rL   rY   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s     @a:a1@r  c              3   <   K   | ]  }t        |t                y wrQ   r  rV   s     rL   rY   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s      H
/0Jq/*H
r  )r\   r   rc  s      rL   r"  zBuiltinVariable._dynamic_args  s7    @4@@ 
C H
4:MMOH
 E
 	
rN   c                 ,    t        j                  |      S rQ   )r   SliceVariable)r   r   rd  s      rL   
call_slicezBuiltinVariable.call_slice  s    &&t,,rN   c           
          ddl m}  || |j                  j                  d| j                  gt        ||             S r   )r   r   r   r   rE   r&   )r   r   rd  rO  r   s        rL   
_dyn_proxyzBuiltinVariable._dyn_proxy  sA    *"BII""+<T6+J
 	
rN   c                 ~   t        |t        j                        rJ  | j                  |i |r | j                  |g|i |S t        j
                  j                  | j                        }| |g t                     S |j                  |      r*|j                  rt        |j                        st        |t              r3t        |j                  j                  t        j                                nt#        |dd      r]t        |t$              rMt'        |t(              s=|j*                  j,                  j/                  |j                  j1                                t        |j                  j                  t        j2                                |t5        |j7                  |            t                     S y )Nr   rG   F)rR   r   IteratorVariabler"  r+  r5   cls_forrE   r)   r   rG   r   r9   r   rH   r   TUPLE_ITERATOR_LENrb   r/   r$   r4   r   guard_on_key_orderry   rR  SEQUENCE_LENGTHlistr   r   r   r  rd  rO  rJ   s         rL   _call_iter_tuple_listz%BuiltinVariable._call_iter_tuple_list  sY    c9#=#=>>>4t.v."4??27777((009;*n  ((,zz"4SZZ"@c#89!

--l.M.MN
  Xu5&s,=> &sK 8		44889JK!#**"7"78T8T"UVS,,R01*n ! -rN   c                 
   t        |t        j                        rSt        j                  j	                  | j
                        } |t        |j                  |            t                     S  | j                  ||g|i |S r   )
rR   r   r-  r5   r.  rE   r2  r  r)   r4  r3  s         rL   _call_tuple_listz BuiltinVariable._call_tuple_list  sr    c9556,,44TWW=CS22267*n 
 .4--b#GGGGrN   c                     t        |t        j                        r|}n | j                  ||g|i |}||j	                  |d||      S |S )N__iter__)rR   r   r-  r4  r   )r   r   r  rd  rO  rets         rL   	call_iterzBuiltinVariable.call_iter  sX    c9556C -$,,RFtFvFC; ??2z4@@
rN   c           	         ddl m} ddlm} t	        |t
        j                  ||f      rt
        j                  j                  d      S t	        |t              r2t
        j                  j                  t        |j                              S t	        |t        t        t        t        t        t         f      rt
        j                  j                  d      S y )Nr(   )r   r   TF)r1  r   r2  r   rR   r   r   r,   r!  rA   r^   rK   r=   r>   r7   r:   r6   )r   r   rj  r   r   s        rL   call_callablezBuiltinVariable.call_callable  s    7/22( 
 --44T::01--44Xcii5HII $

 --44U;;

rN   c                 L    t        |      dk(  r|d   S t        d| d|        y )Nr   r(   z$unsupported args to builtin cast(): r  )rd   r   )r   r  rd  rO  s       rL   	call_castzBuiltinVariable.call_cast(  s,    t9>7N<TF!F8LMrN   c                 >    t        j                  |t        g|i |S rQ   )rD   call_custom_dictr  r   r   rd  rO  s       rL   	call_dictzBuiltinVariable.call_dict.  s    //DJ4J6JJrN   c                 8    ddl m} |s|si f}t        |      dk(  sJ |d   }t        |t              rt        ||t                     S t        |t        j
                        r|j                  |t                     S t        |t        t        t        t        j                  f      r9t	         fd|j                         D              }t        ||t                     S t        |t        j                        rzt        t!        |j"                              rx j$                  j&                  j)                  |      rt+        |j,                   d| d| d	       t	        |j"                  j/                               }|j1                   |      S |j3                   d
      }t        |t        j4                        st+        |j,                   d| d|         j7                  |||      }	t        |	t
              r|	S t9        |      j;                   ||	      S |sX|rV|j/                         D 
ci c]  \  }
}t=        j0                  |
      | }}
}t        j
                  ||t                     S t+        |j,                   d| d|        y c c}}
w )Nr(   r  r   r   )user_clsr   c              3   @   K   | ]  }|j                          y wrQ   )r  )rW   rX   r   s     rL   rY   z3BuiltinVariable.call_custom_dict.<locals>.<genexpr>G  s$       //3s   z
.items(): r  z - object is mutatedr   z(): )r   r  rd   rR   r  r/   r)   r   cloner7   r:   r6   r-  r  MutableMappingVariabler   rS   rK   r   r   has_pending_mutationr   r  r   r!  var_getattrr   r  rD   r@  r,   )r   rD  rd  rO  r  rj  r   new_dictfunc_varoutry  rz  s   `           rL   r@  z BuiltinVariable.call_custom_dict1  sG   .ut9>!>q'C#t$(hlnUUC!<!<=yy(,.yQQ !(..	   ::2>  )WWC!A!AB 7tCIIG yy--BB3G%'001D66(J^_  $CIIOO$56H,33BAA"r7;H%h	0N0NO%):):(;:dV1VH&UV884PC!#'89"
*84EEb(TWXX&?E||~Ntq!%,,Q/2NEN..  	**+4vQvh?@	 Os   5 Jc                 \   |t         t        t        hv sJ |rB|t        u sJ t        |      dk(  rt        |      dk(  rd|v sJ g ||j	                  d      }t        |      dk(  rt        t        d      t        |      dk(  rg |t        j                  d       }t        |      dk(  sJ |\  }}|t        urt        nt        }t        |t               rW|j                         D cg c]  }t        j                  |       }} |t         j                  ||      |t                     S |j                  |       rJ|j!                  |       }t#        d |D              r' |t         j                  ||      |t                     S t%        |j&                   d| d	|        y c c}w )
Nr(   rK   r   z,fromkeys expected at least 1 argument, got 0r   r   c              3   2   K   | ]  }t        |        y wrQ   )r3   )rW   rz  s     rL   rY   z<BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     0a;q>0r  z.fromkeys(): r  )r  r   r   rd   popr   r  r,   r!  r/   r0   rR   keysr  r)   r  r  r[   r   r  )	r   rD  rd  rO  rj  rK   DictVariableTypery  rP  s	            rL   r  z)BuiltinVariable.call_custom_dict_fromkeysi  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~~
U!)!<BU 	 c4 7:xxzB!#**1-BCB#c5)8<>  ..r2004D0400'MM$.  	**+=axHI Cs   +F)c                    |rJ |st        g t                     S t        |      dk(  sJ |d   }t        |t        j                         r|j                  t                     S |j                  |      r&|j                  |      }t        |t                     S t        |t        j                        rt        |j                  t              r|j                  |d      }t        |t        j                        rD|j                  |||      }t        |t               r|S t        t              j!                  ||      S t#        d| d|        y t#        d| d|        y )Nr   r(   r   r8  zset(): r  )r4   r)   rd   rR   r   rF  r  r  r@   rK   r   rI  UserMethodVariabler  rD   setcall_setr   )r   r   rd  rO  rj  r   iter_fnrL  s           rL   rU  zBuiltinVariable.call_set  s-   zr@@4yA~~1gc900199<>9::..r211"5EuLNCCY@@AjIIxG
 oob*5G'9#?#?@44WdFKc;/J&s+44R==vQvh78GD66(34rN   c                 d   |rJ |st        g       S t        |      dk(  sJ |d   }t        |t        j                         r-t        |j                  D cg c]  }|j
                   c}      S |j                  |      r|j                  |      }t        |      S t        d| d|        y c c}w )Nr(   r   zfrozenset(): r  )	r2   rd   rR   r   r  vtr   r   r   )r   r   rd  rO  rj  rX   r   s          rL   call_frozensetzBuiltinVariable.call_frozenset  s    z$R((4yA~~1gc9667$CMM%Bqadd%BCC((,++B/E$U++M$q9: &Cs   B-c                     |rt        |      dk(  rd|v sJ |j                  dd      }|D cg c]&  }|j                  |      r|j                  |      n|( }}t	        j
                  ||t                     S c c}w )Nr(   strictF)r[  r   )rd   rO  r   r   r   ZipVariabler)   )r   r   rd  rO  r[  rj  s         rL   call_zipzBuiltinVariable.call_zip  s    v;!#F(:::He, 
 ,/+F+Fr+JC##B'PSS
 
 $$T&WW	
s   +A:c                 6    |d   j                  |d|dd  |      S )Nr   __len__r(   r   rA  s       rL   call_lenzBuiltinVariable.call_len  s#    Aw""2y$qr(FCCrN   c                 6    |d   j                  |d|dd  |      S )Nr   __getitem__r(   r   rA  s       rL   call_getitemzBuiltinVariable.call_getitem  s#    Aw""2}d12hGGrN   c           	      6   	 j                         }|j                         }t	        t
        j                        r7j                  +fd}t
        j                  j                   ||            S t	        t
        j                        r5t	        j                  t        j                        rt        d d|        t	        t
        j                        r[d|j                  j                  v rCt
        j                  j                  |j                  j!                  |j                              S 	 t#        |      }t
        j                  j                  |      S # t        $ r t        d d| d        Y qw xY w# t$        $ r |u }Y Rw xY w)Nzisinstance(r  z): can't determine type of c                 j    fdt        |      t        u rt        fd|D              S  |      S )Nc                 >   | t         vr~j                         j                  j                  d   }t	        |      r2| t
        j                  j                  j                  u rt        ||       S t        j                         |       S t         |    }j                  |v S )Nexample_value)r'   rX  nodemetar   r3  nn	parameter	ParameterrR   r?  python_typedtype)tyexample_valdtypesrj  s      rL   
check_typezOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_type  s    !44&)lln&9&9&>&>&O9+F "ehh&8&8&B&B B
 $.k2#>>#-coo.?#DD04F99..rN   c              3   .   K   | ]  } |        y wrQ   rL  )rW   ro  rr  s     rL   rY   zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>  s     D"z"~Ds   )rS   tupler\   )
tensor_vartensor_typerr  rj  s     @rL   _tensor_isinstancez;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance  s3    /" $-DDDD%k22rN   z&isinstance called on UserDefinedClass r  __instancecheck__)rm  r  r   r   rR   r   r>   rn  r,   r!  r@   rK   typesMemberDescriptorTyper   r   rx  r?  r  )r   r   rj  isinstance_typern  rw  r  s     `    rL   call_isinstancezBuiltinVariable.call_isinstance  s}   	(H *<<>c93349N3. --44"38 
 c9>>?JIIu11E
 8Q>OP
 sI??@#'@'@'I'II--44));;OSYYW 	.X7C ))0055q # 	cU"_$55PQTPUV	l  	.o-C	.s#   E$ 9F $FFFFc                     	 |j                         }|j                         }t        j                  t                    S # t        $ r t        d| d|        Y ;w xY w)z,Checks if first arg is subclass of right argz+call_issubclass args not constant left_ty: z, right_ty: )r   r  r   r   r,   r?  )r   r   left_tyright_ty
left_ty_pyright_ty_pys         rL   call_issubclasszBuiltinVariable.call_issubclass  sh    	 335J"557K ))*Z*MNN # 	=gYlS[R\]	s    A AAc                 .    t        j                  ||      S rQ   )r   SuperVariabler   r   r   r   s       rL   
call_superzBuiltinVariable.call_super  s    &&q!,,rN   c                     	 |j                  |      S # t        $ rD}t        |t        j                        r$|j                          |j                  d   cY d }~S  d }~ww xY w)Nr   )next_variabler   rR   r   r5   r  r   )r   r   rj  exs       rL   	call_nextzBuiltinVariable.call_next  sU    	$$R(( 	#y99:$$&yy|#		s     	A 8AA AA c                     |j                         re|j                         }t        |t        j                        r)t        j
                  t        |j                  |            S |j                  ||      S y rQ   )	r  r   rR   r   rD   r,   r  rE   call_hasattr)r   r   r  attrrR  s        rL   r  zBuiltinVariable.call_hasattr  s`    ""$**,D#y889 11'#&&$2GHH##B--	 %rN   c                     |D cg c]&  }|j                  |      r|j                  |      n|( }}t        j                  ||t	                     S c c}w r   )r   r   r   MapVariabler)   )r   r   rE   seqsr   s        rL   call_mapzBuiltinVariable.call_map  s]     
 ,/+F+Fr+JC##B'PSS
 
 $$R\^LL	
s   +Ac                     |j                        r@|j                        }	 t        t        fd|            }t	        j
                  |      S y # t        $ r Y y w xY w)Nc                 H    j                  | gi       j                         S rQ   r   r   )rX   rE   r   s    rL   r   z-BuiltinVariable.call_filter.<locals>.<lambda>+  s!    ""2"22sB"?"R"R"T rN   )r   r   r2  filterr   r:   r  )r   r   rE   r   seq_unpackedr   s    ``   rL   call_filterzBuiltinVariable.call_filter%  sj    &&r*2226L	T$ !..u55 + ' s   -A 	A! A!c                 h   t        |t        j                  t        j                  f      rt	        d |j
                  D              r|| j                  u r9t        j                  j                  t        d |j
                  D                    S t        |t        j                        ret        |j                  t        t        f      rEt        j                  j                  t        d |j
                  D        |j                              S |j                  |      r|| j                  u rt        j                  j                  d      }|j                  |      }t        t         j"                        j%                  |t        t&        j(                        t        j                  |      |gi       S y )Nc              3      K   | ]@  }t        |t        j                        xr  t        |j                  t        t
        f       B y wrQ   )rR   r   r,   rK   rc   ra   rV   s     rL   rY   z+BuiltinVariable.call_sum.<locals>.<genexpr>5  sE      V
  q)445 2177S%L12V
s   AAc              3   4   K   | ]  }|j                     y wrQ   r  rV   s     rL   rY   z+BuiltinVariable.call_sum.<locals>.<genexpr><  s     3A3   c              3   4   K   | ]  }|j                     y wrQ   r  rV   s     rL   rY   z+BuiltinVariable.call_sum.<locals>.<genexpr>B  s     4Q4r  )startr   )rR   r   r7   r:   r[   r   	_SENTINELr,   r!  rm   rK   rc   ra   r  r  rD   r  r  r   rn   ry   )r   r   r   r  r   s        rL   call_sumzBuiltinVariable.call_sum3  s]   cI22I4K4KLMRU V
 YYV
 S

 & 1188333  %!;!;<c5\B !11884#))4EKKH  ,,R0&!2299!<11"5E"9#3#34BB#HLL1++E2
  	 1rN   c                     |j                  |      rJ|j                  |      }|| j                  u r|d   |dd  }}n|}|D ]  }|j                  |||gi       } |S y r  )r  r  r  r   )r   r   functioniterableinitialr   rK   elements           rL   call_reducezBuiltinVariable.call_reduceR  sz     11"566r:E$..($Qxqru  I ..rE73CRHIL 6rN   r  r  c                 	   ddl m} ddl m}m}m}m}	 ddlm}
m} |j                         }|j                         st        d       |j                  j                  j                  |      r^t        |t         j"                        rD|dv r@|j$                  r4|j                  j                  j'                  |      rt        d|d	       |j                  j                  j)                  ||      r&|j                  j                  j+                  ||      S |9| j-                  |||      }|j                         d
v sJ |j                         s|S i }|j.                  rt1        |j.                  |      }||d<   nd }|dv r	 |j                         }t        |t2              r|dk(  rx|j4                  }|5t7        |      D cg c]  \  }}  ||t9        ||            |        }}}n|D cg c]  }|
j;                  ||       }}t!        j<                  |fi |S |dk(  r/|j>                  }|  |||      |      S |
j;                  ||      S |dk(  r |j:                  |j@                        S t        |t         jD                        r|jG                  ||      S t        |t         jH                  t         jJ                  t         j                  t         jL                  t         jN                  t         jP                  f      r	 |jG                  ||      S t        ||      rptS        |jT                  |      }t        |tV        jX                  jZ                  tV        jX                  j\                  f      r|j_                  |      r	 ||fi |S y y t        |t`              r|jb                  s||jT                  jd                  vrtS        |jT                  |      }n|jT                  jd                  |   }tf        jh                  r'|jj                  jm                  |jT                  ||       |  |||      |      S |
j;                  ||      S to        ||	      r*|dv r& |j:                  tS        |jp                  |            S 	 |jG                  ||      S c c}}w c c}w # tB        $ r Y ?w xY w# tB        $ r  |||fi |cY S w xY w# tB        $ r  |||fi |cY S w xY w)Nr   )trace_rulesr(   )r,   rh  r  r   r  VariableBuilderznon-const getattr() name)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz4pending mutation on nn module, so graph breaking at z call)TFrG   >   __base__	__bases__	__flags__r  r  r  )r  r\  )9 r  r,   rh  r  r   r   r  r  r   r  r   r   r   r  rR   r   UnspecializedNNModuleVariableis_state_mutatedrH  has_pending_mutation_of_attr	load_attrr  rG   r   rS   r  	enumerater   r!  r:   r  r  r  r   rI  r>   NamedTupleVariableDistributedVariabler   r@   rb   rK   r3  _opsOpOverloadPacket
OpOverloadis_aten_op_or_tensor_methodr   is_torchr   r   replay_record_enabledexec_recorderrecord_module_accessr$   rE   )r   r   r  r  defaultr  r,   rh  r  r   r  r  rR  hasattr_varoptionsrG   rK   basesrv  r   
tuple_argsbasemembers                          rL   call_getattrzBuiltinVariable.call_getattr_  s    	#	
 	
 	@**,**,4599!!77<#yFFG ,,		..CCCH!NthV[\ 99!!>>sDI99))33C>>++BX>K113}DDD113::

D1F &GHF99..0eT*{* %!- -6e,<*$(Aq !NM&!4L Ma P*J * JO*DE 1 8 8Q ?*J *  )66zMWMMz)$~~!-#>?2v#>t#DD077DAA{*6/66uGG c9556??2t,,((,,**--2233

=r400 9:SYY-F44ejj6K6KL99&A3FFgFF B [)||t399+=+== D1++D1++  55ciivN!2r626::(//F;;C-.4;U3U*#**73664+@AA=r400{*
* ' $ ' =&sD<G<<=8 ' =&sD<G<<=sg   AR& #R%R& -R!R& !R&  R&  R& R6 	S R& &	R32R36SSS%$S%r  c                 	   t        |t        j                  t        j                  t        j                  f      r|j                  |d||gi       S |j                  j                  j                  |      r|j                         r|j                         }t        |t        j                        riddlm} |dk(  rt        d       |dk(  rMg }|j                  j                  D ]-  }|j                   |j                   k(  s|j#                  |       / |D ]'  }|j                  j                  j%                  |       ) t'        |      5  t)        j*                         5   || |j                  j,                  dt(        j.                  j0                  gt3        ||gi              }	d d d        d d d        d }
|j                  j-                  d|
	j5                         fi         |
|j5                         j6                  j8                  d	          |	S |j                  j                  j;                  |||       |d
k(  r'|j                  j                  j;                  |d|       |S t        |t        j                        r,t        dt=        |j>                        j@                          y t        |t        jB                        r0|j                  jE                         stG        d      |j                         rt        |t        j                        rtI        |j5                         j6                  |      }	 |jK                  ||j                               }t        |t        j                        rptI        |j5                         j6                  |      }tO        jP                  |jR                  d      }||u r(|t(        jT                  jV                  j@                  u r|S |jY                  |       y t        |t        jZ                  j\                        rw|j^                  rj|j                         rYt        |t        j`                        r>tc        |jd                  |j                         |j                                ta        d       S y y y y # 1 sw Y   xY w# 1 sw Y   xY w# tL        $ r d }Y `w xY w)Nr  r(   r   requires_gradzmutating requires_grad can introduce a new leaf from non-leaf or vice versa in the middle of the graph, which aot_autograd does not currently know how to handle. datar   c                     | j                   }|dkD  r|dz
  }t        j                  j                  j	                  | |       | S r  )_versionr3  _C	_autograd_unsafe_set_version_counter)rX   versions     rL   _lower_version_count_by_1z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1  s:    "#**"Q;&-kG**FFq'R rN   rg  _gradgradz#setattr(UserDefinedObjectVariable) z?Can't inplace modify module params/buffers inside HigherOrderOp)3rR   r   CustomizedDictVariablePlacementVariabler@   r   r   r   r  r  r   r>   r   r   r   tracked_fakesrG   r(  removedynamo_disable_gradr3  no_gradr   Tensorset_r&   rX  rh  ri  
store_attrrS   rK   r  r   is_root_tracerr   r!   rI  r  r  getattr_staticmodule_typerj  Moduleconvert_to_unspecializedr0  HFPretrainedConfigVariableexportr,   setattrr  )r   r   r  r  r  rR  r   	to_removetfrL  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rL   call_setattrzBuiltinVariable.call_setattr  s    00++33
 ??2}xorJJII""88=++-..0D#y7782?*!n 6> !#I ii55 199

2%,,R01 ( ;		//66r:; -R0 	%--/ 	+2BII22 / % 1 1 "3C:r!B	 	! II**'1)	 .clln.A.A.F.F.WX JII""--c4=w		&&11#vsCJY@@A5d399o6Q6Q5RS Y77899++-,U  **,Y--2 &4CLLN4G4G%L"'"%//"h6Q6Q6S"TK k9+C+CD)78L8L8N8S8SUW)X& #*"8"8-"XK*.@@'588??+F+FF**((, Y__GGHRYY**,Y//2 GGX88:C<R<R<T (--2, NWHW	 	 	 	l & '"&K's7   R*"A
R,R* R7 R'	"R**R47SSc                 N    | j                  |||t        j                               S rQ   )r  r   DeletedVariable)r   r   r  r  s       rL   call_delattrzBuiltinVariable.call_delattr_  s$       S(I4M4M4OPPrN   c                 "   ddl m}m} 	 |j                         }|j                  |j                  ||      S   ||t        |j                              |      S # t        $ r+}t        t        j                  t        |      d      d d }~ww xY w)Nr(   r  unknown_python_type)	case_name)r   r  r  rm  r  r   r   INVALID_INPUTrk   rG   r!  r   )r   r   r  r  r  py_typeerrors          rL   	call_typezBuiltinVariable.call_typeg  s    ?	oo'G ::$++B88>?2z#**'=>wGG # 	++E
/ 		s   A 	B#&B		Bc                     |j                  |      r8t        t        |j                  |                  }t	        j
                  |      S y rQ   )r   r2  reversedr   r   r:   )r   r   r  r   s       rL   call_reversedzBuiltinVariable.call_reversedx  s@    &&r*#"9"9""=>?E**511 +rN   c                    |j                        rt        |t        j                        s|j	                        }t        d |D              sy |j                  dd       |j                  dt        j                  d            j                         }t        |      dk(  sJ rt        |fd|      }nt        |d |      }t        j                  |      S y y )	Nc              3   <   K   | ]  }|j                           y wrQ   )r  rV   s     rL   rY   z.BuiltinVariable.call_sorted.<locals>.<genexpr>  s     @!q++-@r  r  reverseFr   c                 H    j                  | gi       j                         S rQ   r  )rX   r  r   s    rL   r   z-BuiltinVariable.call_sorted.<locals>.<lambda>  s'    ("8"8QC#((* rN   )r  r  c                 "    | j                         S rQ   )r   )rX   s    rL   r   z-BuiltinVariable.call_sorted.<locals>.<lambda>  s    !"6"6"8 rN   )r  rR   r   r>   r  r[   rO  r,   r!  r   rd   sortedr7   )r   r   r  rO  unpackedr  r   r  s    `     @rL   call_sortedzBuiltinVariable.call_sorted}  s    ,,R0)):
 44R8H@x@@zz%.Hjj+2259  "  v;!###+ $ 8#
 ))%003:
0rN   c                     t        |t              r9t        j                  |t        j                  |j                               d       S y )Nsym_num)rR   r=   r!  rn   rp   rX  r   r   r   s      rL   call_negzBuiltinVariable.call_neg  s<    a)"))qzz|,  rN   c                 d    |j                         }t        j                  j                  |||      S rQ   )r   r   StringFormatVariabler!  )r   r   _format_stringrd  rO  format_strings         rL   call_formatzBuiltinVariable.call_format  s+    &99;--44]D&QQrN   c                    t        |      dkD  rot        |d   t        j                        rR|d   }|j                  j                  |j                        }t        j                  j                  t        |            S t        |      dk(  rt        |d   t        j                        rlt        |d   j                  j                  t        j                               t        |d   j                         }t        j                  j                  |      S t        |      dk(  r)t        |d   t"              r|d   }|j%                  |      S t'        d|        y )Nr   r(   zcall_id with args )rd   rR   r   r   r   r  r  r,   r!  idr@   r   rG   rH   r   ID_MATCHrK   r>   call_idr   )r   r   rd  nn_mod_variablerx   constant_resulttensor_variables          rL   r  zBuiltinVariable.call_id  s   t9q=ZQ1K1KL"1gO))))/*D*DEC--44RW==Y!^
GY88!
 $q'..33L4I4IJK a/O--44_EEY!^
47N C"1gO"**2...tf56rN   c                 2    t        dt        |              y )Nzcopy.deepcopy )r   ri   )r   r   rX   s      rL   call_deepcopyzBuiltinVariable.call_deepcopy  s    tAwi01rN   c           	      J   ddl m} ddlm} | j                  }|t
        j                  t
        j                  fv rt        |t              xrk t        |t              xrY t        t        |j                         j                              t        t        |j                         j                              k(  }|t
        j                  u rt        j                  |      S t        j                  |       S ||vrt!        |j"                   d| d| d       t        |t              rnt        |t              r^|j$                  xr |j$                  D|j$                  |j$                  k7  r+	 t'        j(                  |j$                  |j$                         t        |t              r|n|}|j,                  j/                  d||j                         |j                         fi       }	 |t1        |      ||	      S # t*        $ r! t!        |j"                   d| d| d       Y w xY w)Nr(   r  %supported_tensor_comparison_op_valuesr  r  r  r   )r   r  r   r  rE   rn   r   is_notrR   r>   r  r    rX  rh  r,   r!  r   r  sizer3  broadcast_shapesRuntimeErrorr   r   rS   )
r   r   r  r  r  r  r   	is_result
tensor_clsr  s
             rL   r&  z'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}==::R[[M4&5';<t^,5.1)uzz6		UZZ'A&&tyy%**= (n=T5
		&&R$--/5>>3C!Db
 !
 	
   AQtfBugQ?@As   +*G8 8'H"!H"c                    ddl m} | j                  }||vrt        |j                   d| d| d       |j
                  j                  d||j                         |j                         fi       }t        j                  ||d       S )Nr(   r  r  r  r  r   r  )
r   r  rE   r   r  r   r   rX  r=   r!  )r   r   r  r  r  r   r  s          rL   r'  z(BuiltinVariable._comparison_with_symnode  s    AWW::R[[M4&5';<		&&R$--/5>>3C!Db
 %%
 	
rN   c           
         t        |t              rt        |t              ry t        |t        t        f      rdt        |t        t        f      rNt        j                  | |j                  j
                  dt        j                  gt        ||gi        d       S t        |d      r8t        |d      r+t        t        |j                  |j                  z              S y y Nr   r  r  )rR   r,   r=   r!  r   r   rn   r   r&   r  r4   r2  r  r  s       rL   	call_and_zBuiltinVariable.call_and_  s    a)*z!=M/Na/+;<=*!12C
 #))&		&&#X]]5F1vr5R   1k"wq+'>tAKK!++$=>?? (?"rN   c           
         t        |t              rt        |t              ry t        |t        t        f      rdt        |t        t        f      rNt        j                  | |j                  j
                  dt        j                  gt        ||gi        d       S t        |d      r7t        |d      r+t        t        |j                  |j                  z              S y r"  )rR   r,   r=   r!  r   r   rn   r   r&   r  r4   r2  r  r  s       rL   call_or_zBuiltinVariable.call_or_  s    a)*z!=M/Na/+;<=*!12C
 #))&		&&#X\\4Eq!fb4Q   1k"wq+'>tAKK!++$=>??rN   c           
      x   t        |t              rMt        j                  | |j                  j                  dt
        j                  gt        |gi        d       S t        |t              r|j                  }t        |t        t        f      r+t        j                  t        |j                        dk(        S y )Nr   r  r   )rR   r=   r!  r   r   rn   rq   r&   r1   dv_dictr7   r/   r,   rd   r   r  s      rL   	call_not_zBuiltinVariable.call_not_  s    a)"))&		&&#X]]5FsB5O   a"		Aa,(9:;#**3qww<1+<==rN   r   r   c                 ,    |j                  |d|gi       S )N__contains__r   r  s       rL   call_containszBuiltinVariable.call_contains-  s     }}R!b99rN   )rJ  Nr#  )r   rB   rd  List[VariableTracker]rO  Dict[str, VariableTracker]rJ  r*   )rd  r,  rO  r-  rJ  r*   )r   rB   rj  r*   rQ   )ar  r\  __qualname__r$  r  r*   _nonvar_fieldsclassmethodrM   staticmethodr  	lru_cacher   r   r   r   r<  rG  rI  rN  rk   rS  r   rX  ra  re  rk  ro  rw  r{  r}  r   rS   r]   r  r  r  r   r   r  call_int
call_floatr  r  r  r  call_mincall_maxr  r  r  r  r#  r"  r)  r+  r4  r6  r:  
call_tuple	call_listr<  r>  rB  r@  r  rU  rY  r]  r`  rc  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r'  r#  r%  r(  r+  __classcell__)r   s   @rL   rD   rD   b   s%   I		'	'N
 ) ) Y?  ?B: Y*  *X Y!  !F YZ  Zx
 	 	54 4"Q13 
 



 V T$Z V T V  V p[Hz #%)#) &) -	)
 
)&; &	;
 -; 
;8* H J%UN4YZ;x HH44A<	

-
 04!)!FH "J I<8NK 5A 5An J#J J@54;XDH;6z
O-3 / .M @I @ HQ)$ ~=#~= ~= "	~=@~.#~. ~. "	~.
 ~.@Q#Q Q "	QH3 H/ H"2 7 2o 2
15 1O 1:R7"2'
R
"@$&$:):.=:BQ:rN   rD   c              #      K   ddl m} t        j                         }|j	                  | d      }	 |j                  |        d  |j                  |        y # |j                  |        w xY ww)Nr(   )GradModeVariableF)r  r;  r3  is_grad_enabledr!  enterexit)r   r;  	org_valuegmvs       rL   r  r  3  sR     "%%'I

!
!"e
,C		"s   -A-A A-A**A-)x
contextlibr  r  rs  loggingrT   rn   ry  collectionsr   r   collections.abcr   typingr   r   r   r3  r	   r
   torch.utils._python_dispatchr   r  r   r   r  r   r   r   r   r   guardsr   r   replay_recordr   rG   r   r   r   r   utilsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r  r)   r*   constantr,   ctx_managerr-   r.   r0  r/   r0   r1   r2   r3   r4   listsr5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r4  r@   rA   torch._dynamo.symbolic_convertrB   	getLoggerr  r  r   ry   r   rz   r   rt   r   rv   r   rw   r   rx   r   r   r}   r   r~   r   rh   r   r   r   r   r   r   r  rD   contextmanagerr  rL  rN   rL   <module>rP     s           0 $ , ,  $ F    1 ' N N    0 & 6    I D g! MM8<<MM8<<MM8<<))x''MM8<<h&&hoohooMM8<<MM8==LL(,,MM8<< "N:o N:b> 	 	rN   