
    i                       U d 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	Z	ddl
Z
ddlZddlmZ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 ddlZddlmZmZ ddlmZ ddl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-m.Z. d
dl/m0Z0m1Z1 d
dl2m3Z3 d
dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d
dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQmRZR ddlSmTZTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ ddl`maZambZbmcZcmdZdmeZemfZfmgZg ddlhmiZimjZj ddlkmlZlmmZmmnZnmoZompZp ddlqmrZrmsZsmtZtmuZu erddlvmwZw ddlxmyZy  ej                  e{      Z|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(                  ej*                  iZede
j(                  e
j(                  geRdz  f   ZeeeR   eeeR   df   f   Zej6                  e%j8                  ej:                  e%j<                  ej>                  e%j@                  ejB                  e%jD                  ejF                  e%jH                  ejJ                  e%jL                  iZej                  ej                  ejP                  ej                  ej                  ej                  ej                  ej>                  ejF                  ejJ                  ejB                  ej:                  ej6                  ej                   ej                  ej                  ej                  ej                  ej
                  ej                  ej                  ej                  fZej"                  ej&                  ej*                  ej                   ej(                  ej$                  fZejV                  fZej                  ej                  ej                  ej                  ejZ                  fZej^                  ej`                  ejb                  ejd                  ejf                  fZi aeedef   edef   f   ed<   i aeedef   edef   f   ed<   d%d Z G d! d"eR      Zejv                  d#dde
jx                  d   fd$       Zy)&a\  
Built-in function and type variable tracking for TorchDynamo's symbolic execution.

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

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

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

These variable trackers ensure that built-in Python operations are correctly
handled during symbolic execution, either by executing them directly when safe
or by creating appropriate graph nodes when needed.
    N)defaultdictOrderedDict)CallableIterableKeysViewSequence)AnycastLiteralTYPE_CHECKINGUnion)	sym_floatsym_int)is_sparse_any)BaseTorchFunctionMode)is_traceable_wrapper_subclass   )configgraph_break_hints	polyfills	variables)ObservedAttributeErrorObservedUserStopIterationraise_observed_exceptionunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_sourceSource
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_argscmp_name_to_op_mappingdict_methodsextract_fake_example_valuefrozenset_methodsget_fake_valueguard_if_dynis_tensor_getset_descriptoris_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargsraise_args_mismatchset_methodsstr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorValueMutationNewVariableTracker)CONSTANT_VARIABLE_NONEConstantVariableEnumVariable)ConstDictVariableDefaultDictVariableDictKeysVariableDictViewVariableFrozensetVariableis_hashableOrderedSetClassVariableSetVariable)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableTupleIteratorVariableTupleVariable)EventVariableStreamVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslatorr]   .BUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPreturnc                  B  	
 t        t              dkD  ry d  G fddt              } t        j                  d      t        j                  d      	t        j                  dt        j
                        t        j                  dt        j
                        
 |        5  fdt        ffdt        f	fdt        f
fd	t        ffd
t        fg}|D ]!  \  }}|D ]  } ||       J t        |<    # 	fdt        f
fdt        ffdt        fg}t        j                  t        j                  t        j                  h}|D ]3  \  }}|D ])  }||v r ||       J t        |   k7  s!t        |<   + 5 	 d d d        y # 1 sw Y   y xY w)Nr   c                   X    e Zd ZdZ	 	 d
dedef   dedee   deeef   dz  def
 fd	Z	y)8populate_builtin_to_tensor_fn_map.<locals>.GetMethodModez
        Mode to extract the correct methods from torch function invocations
        (Used to get the correct torch.Tensor methods from builtins)
        Nfunc.typesargskwargsr`   c                 $    |xs i }| ||i |S N )selfrd   re   rf   rg   most_recent_funcs        p/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builtin.py__torch_function__zKpopulate_builtin_to_tensor_fn_map.<locals>.GetMethodMode.__torch_function__   s$     \rF#(((    )rj   N)
__name__
__module____qualname____doc__r   r	   r   dictstrrn   )rl   s   rm   GetMethodModerc      s_    	 #%,0
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	)ro   rv   r;   )dtypec                      |       S ri   rj   )oinp0s    rm   <lambda>z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qw ro   c                      |       S ri   rj   ry   inp0_ints    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    q{ ro   c                      |       S ri   rj   )ry   rz   inp1s    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qt} ro   c                      |       S ri   rj   )ry   r~   inp1_ints    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    q8, ro   c                      | d      S Nr   rj   r}   s    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    q1~ ro   c                      | d      S Nr;   rj   )ry   r   s    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    !At* ro   c                      | d      S r   rj   )ry   r   s    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>      qH~ ro   c                      | d      S r   rj   r}   s    rm   r{   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  r   ro   )lenr^   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemr_   )rv   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsrz   r~   r   r   rl   s          @@@@@rm   !populate_builtin_to_tensor_fn_mapr      s   
#$q( 	26)- )$ ::a=D::a=Dzz!5;;/Hzz!5;;/H	  E'"J/$g.,k:%'9:N
 "4 	@Hg @'333/?(,@	@ % &{3%'9:O
 //8#3#3X5E5EF!4 	EHg E<'333#'?'CC4D-b1E	E3 E  E  Es   'CF>FFc                   
    e Zd ZU dZ e       Zdhej                  Zede	de
dd fd       Zeej                  deede	f      fd              Zdefd	Zeej                  deede	f      fd
              Zeej                  deedef   eee   edef   f   f   fd              Zeej                  deedef   eeeee   ef   ef      f   fd              Zedede	f   dee   dedee   dz  fd       ZdefdZde	de	ddf fdZ defdZ!de	fdZ"de	f fdZ#ddZ$dededefdZ%dedefdZ&dee   defdZ'dededefdZ(ede)e   deeef   deee	   eee	f   f   fd       Z*de)e   deeef   defd Z+edede	f   dee   d!eded"eedf   eeef   gedz  f   fd#       Z,d$d"de	defd%Z-d$d"de)e   deeef   dedz  fd&Z.i Z/eeedf   ed"e)e   eeef   gef   f   e0d'<   d$d"de)e   deeef   defd(Z1d$d"d)edee   deeef   def
 fd*Z2d$d"d+ededz  fd,Z3e3Z4e3Z5d$d"d+ededz  fd-Z6d$d"d+ededz  fd.Z7d$d"d+ededz  fd/Z8d$d"dededz  fd0Z9d$d"d1e)e   defd2Z:d$d"d3edz  d4edz  dedz  fd5Z;e9Z<e9Z=d$d"d+edefd6Z>d$d"d+edefd7Z?d$d"d+edefd8Z@d$d"d+edededef
d9ZAd$d"dededz  fd:ZBdededefd;ZCd$d"dedefd<ZDd$d"de	de	defd=ZE	 dd$d"d>edz  dedededz  f
d?ZFd$d"d>edededef
d@ZG	 dd$d"d>edz  dedededz  f
dAZHd$d"d>edededef
dBZIeHZJeHZKd$d"d+ededz  fdCZLdDe	dedededz  fdEZMd$d"d+ededz  fdFZNd$d"dededefdGZOed$d"dHedededef
dI       ZPed$d"dHedededef
dJ       ZQd$d"dededefdKZRd$d"dededefdLZSd$d"dededefdMZTd$d"dededefdNZUd$d"dededefdOZVd$d"d+edPedefdQZWd$d"dRedSedefdTZXd$d"d3ed4edefdUZYd$d"dedefdVZZd$d"d>edWededz  fdXZ[d$d"dedYededef
dZZ\d$d"ded[edefd\Z]d$d"d)edefd]Z^	 dd$d"d>ed^ed_edz  dedz  f
d`Z_d$d"d>ed^edaededz  f
dbZ`d$d"d>ed^edefdcZad$d"d>edefddZbd$d"d>ededz  fdeZcd$d"d>edededz  fdfZdd$d"d3ededz  fdgZed$d"dhedededef
diZfd$d"dedefdjZgd$d"dkedefdlZhd$d"dmednedefdoZid$d"dmednedefdpZjd$d"d3ed4ededz  fdqZkd$d"d3ed4ededz  fdrZld$d"d3ed4ededz  fdsZmd$d"d3ed4ededz  fdtZnd$d"d3ed4ededz  fduZod$d"d3ed4ededz  fdvZpd$d"d3ed4ededz  fdwZqd$d"d3ed4ededz  fdxZrd$d"d3ededz  fdyZsd$d"d3ed4edefdzZtdeud{   fd|Zvdewfd}Zxd~edefdZy xZzS )BuiltinVariablea  
    A VariableTracker that represents a built-in value (functions and operators).
    A lot of the code here assumes it will be a function object.

    The BuiltinVariable class wraps Python built-in functions (like len, isinstance, etc.)
    and operators (like +, -, *, etc.) to enable symbolic execution during tracing. This allows
    Dynamo to properly handle these operations when converting Python code to FX graphs while
    maintaining correct semantics and enabling optimizations.
    fnvaluesourcer`   c                 f    t        |j                  t        j                                | ||      S Nr   )r    
make_guardr   BUILTIN_MATCH)clsr   r   s      rm   create_with_sourcez"BuiltinVariable.create_with_source/  s(    f''(B(BCD5((ro   .c                  :   h t         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,        j0                  t,        j2                  t,        j4                  t,        j6                  t,        j                  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                  t,        jn                  } ddl8m9} | ju                   |jv                                | ju                  d tx        jz                  jw                         D               | S )Nr;   )rT   c              3   h   K   | ]*  }t        |t        t        j                              s'| , y wri   )
isinstancetypemathsqrt.0xs     rm   	<genexpr>z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>u  s!     W
1d499o8V1Ws   (22)>absallanyboolcallablechrcomplexdivmodfloatgetattrintr   maxminordpowreprroundru   formatsumr   r   posnegnot_truthinvertmulr   floordivtruedivmodaddsubr   length_hintlshiftrshiftand_or_xoripowimulr   	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrT   updatevaluesr   __dict__)fnsrT   s     rm   _constant_fold_functionsz(BuiltinVariable._constant_fold_functions4  sX   :(
:(
:(
 :(
 	:(

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

2+2245

Wdmm224WW
ro   c                 :    | j                   | j                         v S ri   )r   r   rk   s    rm   can_constant_fold_throughz)BuiltinVariable.can_constant_fold_throughx  s    ww$77999ro   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 ri   )(r   r   r   r   r   r   r   r   r   r   r   r   r   ltgtgeleneeqr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    rm   _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-(
. 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 
ro   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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__)__xor____rxor____ixor__)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    rm   _binopszBuiltinVariable._binops  s     LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<   LL>M/U
> 
ro   c                     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dd	d
t         dt         dt"        dt"        dt         ffd}| |   j%                  t         f|f       | |   j%                  t         f|f       |ddd	d
t         dt         dt"        dt         f
d}| |   j%                  t         f|f       | |   j%                  t         f|f       |ddd	d
t         dt         dt&        dt(        f   dt         f
d}	| |   j%                  t*        t         f|	f       | |   j%                  t         t*        f|	f       | |   j%                  t*        t         f|	f       | |   j%                  t         t*        f|	f        dd	d
t,        dt         dt         fd}
dd	d
t,        dt         dt         fd}t.        t.        f|ft.        t0        f|ft0        t.        f|ft0        t0        f|
ft0        t2        f|
ft2        t0        fd ft4        t,        t2        t6        ffd ft,        t,        fd fg}| t8        j:                     j=                  |       dd	d
t,        dt         dt(        fd}t4        t         f|ft0        t0        f|
ft0        t2        f|
fg}| t8        j>                     j=                  |       dd	dt         dt         dt         fd}t4        t2        f|ft0        t2        f|ft2        t4        f|ft2        t0        f|fg}| t8        j@                     j=                  |       dt&        dt(        f   dtB        tD        tD        tF        tF        f   tH        f      ffd }tK        jL                         D ]   }tO        |      sJ || vsJ  ||      | |<   " | S )!Nr;   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariablerZ   r[   )forward_namereverse_nametxr]   abr  r   r`   c                p    t        |      r|j                  | ||gi       S |j                  | ||gi       S ri   )r   call_method)r!  r"  r#  r  r   r[   s        rm   user_defined_handlerz=BuiltinVariable._binop_handlers.<locals>.user_defined_handler  s>    , a!45==\A3CC==\A3CCro   )r  c                ,    |j                  | ||gi       S ri   r%  )r!  r"  r#  r  s       rm   user_defined_inplace_handlerzEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB??ro   r   r   .c          
      p    ddl m}  ||  | j                  j                  d|gt	        ||gi              S Nr;   wrap_fx_proxycall_function)builderr.  outputcreate_proxyr6   )r!  r"  r#  r   r.  s        rm   dynamic_handlerz8BuiltinVariable._binop_handlers.<locals>.dynamic_handler+  sC     3$*BII**'.?A.K ro   c                 R    t        g |j                  |j                  |             S ri   )rP   itemsunpack_var_sequencer!  r"  r#  s      rm   tuple_add_handlerz:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerM  s)     !!G177!GQ-B-B2-F!GHHro   c                 R    t        g |j                  |j                  |             S ri   )rN   r5  r6  r7  s      rm   size_add_handlerz9BuiltinVariable._binop_handlers.<locals>.size_add_handlerR  s)       F!'' FA,A,A",E FGGro   c                 R    t        g |j                  |       |j                        S ri   )rP   r6  r5  r7  s      rm   r{   z1BuiltinVariable._binop_handlers.<locals>.<lambda>y  s/    ..r2" ro   c                 f    t        g |j                  |j                  |       t                     S Nmutation_type)rL   r5  r6  r=   r7  s      rm   r{   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s-    :agg: 5 5b 9:"2"4" ro   c                 T     t        |      g |j                  |j                        S ri   )r   r5  r7  s      rm   r{   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s.    a" ro   c                     |j                         s|j                  |       sy |j                  |       }| j                  j                  j                  |       |j                  j                  |       |S ri   )is_immutablehas_unpack_var_sequencer6  r1  side_effectsmutationr5  extend)r!  r"  r#  seqs       rm   list_iadd_handlerz:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  s[     ~~q'@'@'D''+CII""++A.GGNN3Hro   lstconstc                    t        |t              s|j                         r||}}	 t        |t              sJ |j                  |j                  |j                         z  t                     S # t        $ rL}t        t        |      | t        t        t        j                  |j                                     Y d }~y d }~ww xY w)N)r5  r?  rf   )r   rJ   is_python_constant	__class__r5  as_python_constantr=   MemoryErrorr   r   listmapr@   createrf   )r!  rI  rJ  excs       rm   expand_list_likez9BuiltinVariable._binop_handlers.<locals>.expand_list_like  s     c#349O9O9Q"CU!#'7888}}))e&>&>&@@"2"4 %    (Ic"2"9"9388DE s   AA. .	C7AB>>Cr   c                    
 dddt         dt         dt         f fd}t        t        f|fg} t        v rt        t        f|ft        t        f|fg}t	               }|j                  t        t         f|j                  ft         t        f|j                  fg       dddt         dt         dt         f fd}|j                  t         t         f|f       |S t        t        f|fg} j                         v r j                  j                  d      rg  t               d       
dddt         dt         dt         f
fd	}|}|}t        t        t        t        f}|j                  |t        f|ft        |f|fg       t	               }|j                  t        ft        ff fd
ff fd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	       dddt         dt         dt         d z  f fd}	|j                  t         t         f|	f       |S )Nr!  r]   r"  r#  r`   c                    	 t         |j                  |j                              S # t        $ rL}t        t	        |      | t        t        t         j                  |j                                     Y d }~y d }~ww xY w)NrL  )	r@   r   	TypeErrorr   r   rQ  rR  rS  rf   )r!  r"  r#  rT  r   s       rm   compare_by_valuezYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  sc    +Bqww,@AA  ,S	!#&6&=&=sxx"HI s   %) 	A>AA99A>c                 d    | j                  t        j                  | t                 ||gi       S ri   )inline_user_function_returnr>   buildpolyfill_fn_mappingr!  r"  r#  r   s      rm   handlerzPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handler  s8     99'--b2Eb2IJQPQFTV ro   is_c                     t              S ri   )r@   )r!  r"  r#  none_results      rm   neverzNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.never  s     ,K88ro   c                 P    t         |j                  |j                              S ri   )r@   r   r^  s      rm   r{   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda><  s    -=bqttn-M ro   c                     t         | j                  j                  |j                        | j                  j                  |j                                    S ri   )r@   r1  get_submodule
module_keyr^  s      rm   r{   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>C  sA    -= "$&II$;$;ALL$I$&II$;$;ALL$I!". ro   leftrightc                 R   t        |      t        |      ur"t        j                  j                  dk7        S ||u rt        j                   ||            S t	        |t
        j                        rJt	        |t
        j                        r0t        j                   |j                  |j                              S t	        |t
        j                        rPt	        |t
        j                        r5|j                  |j                  urt        j                   ||            S y y y )Nr`  )
r   r@   rS  rp   r4   r   ObjectVariabler   ExceptionVariableexc_type)r!  rh  ri  r   s      rm   	handle_iszRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_isl  s     Dze4/66r{{e7KLLu}/66r$GGdI$<$<=&y77C  066r$**ekk7RSStY%@%@A"5)*E*EF MM?/66r$GG @ G Bro   )r>   r@   r]  rA   r   rF  rU   _comparison_with_symnodeappendr   rp   
startswithobjectrV   rJ   rB   rR   rQ   _comparison_with_tensor)r   rY  resultop_varr_  rc  obj_op_nonenone_op_objtypes_that_are_never_nonern  rb  r  r  r  r  rZ   r[   r  r  s   `         @rm   create_cmp_op_handlersz?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s-   
+
0?
DS
 
( $%568HIJ  ((
 '(89;KL"L13CD
 ), -o>";;
 -o>";;	/4CHW$ A7KL(*:;=MNOF3::<<AWAWB !409/94C9HW9$9
 $# ##$$',%%	-)  78HI'
 ./HI'	 ), "6 G!5 G N !1 0 78QR,
 67OP, "0@P Q!/@P Q - ,_="::
 -n="::
 -o>";;
 -o>";;_35nH/H)H +H %t+	H, A9MNMro   )(	functionsr  r  	nn_moduler  r   r  r   r  user_definedr  rZ   r[   r   r  r5  r>   ru   rp  r   r	   rU   rJ   rN   rP   r@   rL   rK   r   r   rF  r   r   rQ  tuple_TrackersType_HandlerCallbackrT   r   r   )op_handlersr   magic_method_namesin_place_opr  r   inplace_namer&  r)  r3  r8  r:  list_like_addition_handlersrH  list_like_iadd_handlersrU  list_like_expansion_handlersry  r  r  r  r  rZ   r[   r  r  s                     @@@@@@@@rm   _binop_handlerszBuiltinVariable._binop_handlers  s   $ 	N/:,	
 	
 -/ $$&,,.Z	 
- KO')K$7I4L, %1$0D+D"D #D
 "D "D !D6 O""%79MN O""!#679MN %1@+@"@ #@
 "@ !@ $++%79UV $++!#679UV *,+" #
 S#X& !  O""!?3_E O""!?3_E
 $++!?3_E $++!?3_EqZ	~	I'	I,<	IAP	I	I
	H'	H,<	HAP	H	H$ |, 
 }- 
 - 
 .!
  01!
 "=1 !%'79MN	 "#34W4
 	$z 	HLL!(()DE
	'
	,<
	AP
	
	 /!
 .!
  01!.
 	HMM"))*AB	'	.=	FU		0 ,-/?@-.0@A-/?@.0@A	
 	% 	HLL!(()EFr	c"r	%m]:;=MMNOr	 r	h +113 	9BB<<[(((4R8KO	9
 ro   r   a_typeb_typeNc                     t         j                         j                  |       }|y g }|D ]3  \  \  }}}t        ||      st        ||      s#|j	                  |       5 |S ri   )r   r  get
issubclassrp  )r   r  r  handlersmatchestype1type2r_  s           rm   _find_binop_handlerz#BuiltinVariable._find_binop_handler  si     #22488<'/ 	(#NUEG&%(Z-Fw'	( ro   c                 :    | j                   | j                         v S ri   )r   r   r   s    rm   can_insert_in_graphz#BuiltinVariable.can_insert_in_graph  s    ww$22444ro   rg   c                 2    t        |   di | || _        y )Nrj   )super__init__r   )rk   r   rg   rN  s      rm   r  zBuiltinVariable.__init__  s    "6"ro   c                     | j                   d}n| j                   j                  }| j                  j                   d| dS )NNone())r   rp   rN  )rk   names     rm   __repr__zBuiltinVariable.__repr__  s=    77?D77##D..))*!D633ro   c                     | j                   S ri   r*  r   s    rm   rO  z"BuiltinVariable.as_python_constant  s    wwro   c                     t         t        j                   t        t        j                  t        t        j
                  i}| j                  |v r|| j                     S t        | !         S ri   )	r   r   r   int64r   float64r   r  as_proxy)rk   DTYPErN  s     rm   r  zBuiltinVariable.as_proxy  sO    %**5==

 77e>!w!!ro   c                     | j                   j                  }| j                   j                  dk(  sJ ||j                  j                  vsJ d       |j                  |j                  |d             y )Nbuiltinszshadowed globalT)r   )r   rp   rq   r!  	f_globalsappend_outputcreate_load_global)rk   codegenr  s      rm   reconstructzBuiltinVariable.reconstruct  se    wwww!!Z///7::///B1BB/g8848HIro   rf   c                     t        ||      S ri   )r(   rk   rf   rg   s      rm   constant_argszBuiltinVariable.constant_args  s    "400ro   c                 x    d}|D ]2  }t        |t        j                        r y|xs |j                         }4 |S NF)r   r   GetAttrVariable	is_tensor)rk   rf   
any_tensorargs       rm   tensor_argszBuiltinVariable.tensor_args  sA    
 	7C#y889#6s}}J	7 ro   	arg_typesc                     d}|D ]<  }t        |t        j                        r y|xs t        |t        j                        }> |S r  )r  r   r  rV   )rk   r  r  arg_types       rm   tensor_args_typez BuiltinVariable.tensor_args_type  sJ    
! 	VH(I$=$=>#Uz(I<T<T'UJ	V ro   c                    g }g }t        j                  ||j                               D ]5  }|j                         r|j	                  |       %|j	                  |       7 t        d |D              xr  | j                  | S )Nc              3   b   K   | ]'  }|j                   t        |j                         nd ) y wr  )r   r%   )r   ts     rm   r   zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  s0      
 -.HH,@qxx(eK
s   -/)	itertoolschainr   r  rp  r   r  )rk   rf   rg   r  non_tensor_argsis         rm   python_and_tensor_constant_onlyz/BuiltinVariable.python_and_tensor_constant_only  s     v}}7 	*A{{}""1%&&q)		*
  
 
 
 3 !d  /2	3ro   c                     | D cg c]  }|j                          c}|j                         D ci c]  \  }}||j                          c}}fS c c}w c c}}w ri   )rO  r5  )rf   rg   r   kvs        rm   unwrap_unspec_args_kwargsz)BuiltinVariable.unwrap_unspec_args_kwargs  sX     1551$$&528,,.8
*.!QAq##%%8
 
 	
5 8
s
   AAc                 >    | j                         xr t        ||      S ri   )r   r*   r  s      rm   has_constant_handlerz$BuiltinVariable.has_constant_handler  s'     --/ 
4Q&5
 	
ro   
has_kwargsr]   c           	      N   	
 ddl m t               g t        fdD              rfdS t	        j
                         rJt         t              s t        u r2dddt        t        df   d	t        t        t        f   d
t        f fd}|S j                         ri t        j                  u rt        d   t         j"                        r:j%                        rj&                  S rj)                  j&                         t+              dk(  rmskt        j,                   g 

snRt+        
      dk(  r
\  	j)                  	fd       n+dddt.        dt.        d
t.        f
fd}j)                  |       t1        d j2                   d       rDdddt4        t           d	t        t        t        f   d
t        d z  f fd}j)                  |       j7                         rt9        d D              r4s2dddt4        t           d	t        t        t        f   d
t        d z  f fd}n1dddt4        t           d	t        t        t        f   d
t        d z  f fd}j)                  |       dt4        t           d
d f fdt+              dk(  rfdS t+              dk(  r8\  dddt4        t           d	t        t        t        f   d
t        d z  ffd}|S dddt4        t           d	t        t        t        f   d
t        d z  ffd}|S )Nr;   )LazyVariableTrackerc              3   6   K   | ]  }t        |        y wri   )r  )r   r  r  s     rm   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>  s     Eaz!01Es   c                 l    j                  | |D cg c]  }|j                          c}|      S c c}w ri   )r/  realize)r!  rf   rg   r  objs       rm   r{   z/BuiltinVariable._make_handler.<locals>.<lambda>  s-    C,=,=$/QQYY[/- /s   1
r!  r]   rf   .rg   r`   c                     t         u r:t        d |D              s(t        dt        |      dg t        j
                         t        j                  ||      S )Nc              3   |   K   | ]4  }|j                         xr t        |j                         t               6 y wri   )rM  r   rO  ru   r   s     rm   r   zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>  s:      4 ((*Vz!:N:N:PRU/VV4s   :<zassert with non-string messagez1Dynamo only supports asserts with string messagesgb_typecontextexplanationhints)AssertionErrorr   r   ru   r   SUPPORTABLEr   rl  )r!  rf   rg   r   s      rm   create_exception_class_objectzDBuiltinVariable._make_handler.<locals>.create_exception_class_object  s^    
 ' 4!4 1 " @ #D	$W> 1 = =>	 !222tVDDro   r   r   c                      | g| S ri   rj   )r!  rf   _binop_handlers      rm   r{   z/BuiltinVariable._make_handler.<locals>.<lambda>2  s    M"4Lt4L ro   r  c                 2    D ]  } || g| }|s|c S  y ri   rj   )r!  rf   r  r   rvbinop_handlerss        rm   call_binop_handlersz:BuiltinVariable._make_handler.<locals>.call_binop_handlers5  s.     - &]T]#%I&  ro   call_c                    	  | g|i |S # t         $ r 	  t        j                        j                  | g|i |  # t         $ rk}j	                  ||      }|sLt
        j                  d|       t        dd d| d| dj                   g t        j                         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 call to builtin op handlerzinvalid args to z:  z/Encountered TypeError when trying to handle op r  )rX  inspect	signaturebindr  logwarningr   rp   r   	DIFFICULTr   remove_from_stats)	r!  rf   rg   er  rT  r   r  self_handlers	         rm   call_self_handlerz8BuiltinVariable._make_handler.<locals>.call_self_handlerD  s   
,'<T<V<<  <)),7<<RQ$Q&Q   % /2/G/Gf/U,3KK S , !
 *(L*:<.4&PQRXQY(Z.]^`^i^i]j,k&D(9(C(C&D	 -  # ,+.+C+CD&+Q(/))++,s?    	C1)AC1	B7A B2,C12B77C1%C,,C1c              3   <   K   | ]  }t        |t                y wri   )r  r@   r   s     rm   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>n  s     GJq"23G   c                    	  |D cg c]  }|j                          c} }t        j                  |       S c c}w # t        $ rL}t        t        |      | t	        t        t        j                  |j                                     Y d }~kd }~wt        $ r0}t        dd d| dg t        j                  |       Y d }~d }~ww xY w)NrL  constant fold exceptionattempted to run function  with arguments 7Encountered exception when attempting to constant fold.r  r  r  r  from_exc)rO  	Exceptionr   r   rQ  rR  r@   rS  rf   r<   r   r   
DYNAMO_BUGr>   r\  )r!  rf   rg   r   resrT  r   s         rm   constant_fold_handlerz<BuiltinVariable._make_handler.<locals>.constant_fold_handlerr  s     >BCa224C$ +00S99# D$ 0 I!%c*:*A*A388&L!M 
 ? %$=&@DTUYTZ$[(a"A$5$@$@"A%( s.   ? :? ? 	CABC&CCc                 (   t        ||      rk	  |D cg c]  }|j                          c}i |j                         D ci c]  \  }}||j                          c}}}t        j                   |       S y c c}w c c}}w # t        $ r0}t	        dd d| dg t
        j                  |       Y d }~Vd }~wt        $ rL}t        t        |      | t        t        t        j                  |j                                     Y d }~d }~ww xY w)Nr  r  r  r  r  rL  )r*   rO  r5  r<   r   r   r  r  r   r   rQ  rR  r@   rS  rf   r>   r\  )	r!  rf   rg   r   r  r  r  rT  r   s	           rm   r  z<BuiltinVariable._make_handler.<locals>.constant_fold_handler  s    5T6B"$BF!GQ!"6"6"8!G# KQ,,.#"BF!QAq';';'=$=#"#C*  /44R==+ "H#"  C )(A*DRDHXY]X^(_,e&E(9(D(D&E),   ) 4 $S	 "%)#.>.E.Esxx*P%Q s@   B A:B A?B :B 	D&B99DADDc                     | D cg c]  }|j                          }}t        ddj                   d d dj                   d| d ddj                   d| d	j                   d
ddg       y c c}w )Nz Failed to trace builtin operatorzbuiltin r  z4Dynamo does not know how to trace builtin operator `z` with argument types z (has_kwargs r  zAvoid calling builtin `z?. Consider using an equivalent alternative function/method to `z`.zIf you are attempting to call a logging function (e.g. `print`), you can try adding it to `torch._dynamo.config.reorderable_logging_functions`.z"Please report an issue to PyTorch.r  )python_type_namer   rp   )rf   r  real_arg_typesr  r   r  s      rm   call_unimplementedz9BuiltinVariable._make_handler.<locals>.call_unimplemented  s    @DEc224EN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   A7c                      |      S ri   rj   )r!  rf   rg   r  s      rm   r{   z/BuiltinVariable._make_handler.<locals>.<lambda>  s    ,>t,D ro   c                 4     | ||      }|r|S  |       |S ri   rj   )r!  rf   rg   r  r  r_  s       rm   builtin_dispatchz7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s(    
 Rv.I"4(	ro   c                 J    d }D ]  } || ||      }|s|c S   |       |S ri   rj   )r!  rf   rg   r  r   r  r  s        rm   r  z7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s>    
 " "BBf-B!	" #4(	ro   )lazyr  r   r   r  isclassr  BaseExceptionGeneratorExitr}  r>   rt   ru   r  r   r   r   rV   r  _handle_insert_op_in_graphrp  r   r  r	   r   rp   r   r   r   )r   r  r  r  r  r  r  r  r  r  r  r  r_  r  r  r  s   ```     @@@@@@@@rm   _make_handlerzBuiltinVariable._make_handler  sS    	.b!+-E9EE  ??2r=) ]"E+EOS01E S/12E !	E$ 10""$("""y|Y-E-EF##I.555 > >? y>Qz,@@PiPN!^$)#1  LM / 7: ?B    34seBKK=$94@$+$/$ S/12$ !4'	$L OO-.((*GYGG":/:"?3: !o!56: %t+	:: / "?3  !o!56  %t+	 @ OO12	Xo%> 	4 	  x=ADD]a!JW	+	/	 S/12	 !4'		4  +/ S/12 !4'	  ro   r!  c                    t        |      dk(  r3t        dd|  d| d| j                   dg t        j                         t        |      dk(  sJ 	 |d   j                  |d	      S # t        $ r t        t        |       Y y w xY w)
Nr   z1unimplemented builtin op vars() with no argumentszvars: r  3Dynamo does not know how to trace builtin operator z with no argumentsr  r;   r   )	r   r   r   r   r  var_getattrr   r   rX  rk   r!  rf   s      rm   	call_varszBuiltinVariable.call_vars  s    t9>K av.QRVRYRYQZZlm6)556	 4yA~~	47&&r:66% 	4$Y3	4s   A( (BBc           
         ddl m}m} |r# | j                  g ||j	                          sy ddl m} ddlm}m}  ||||      r|j                  s}t                |d   j                         sL| j                  t        v rt        | j                     }	nt        | j                     }	|d   }
|d   |d<   |
|d<   n t        | j                     }	n| j                  }	|j                  ||	      } |||||      S | j                  }	  | j                   |i |r(ddlm} ddlm}  ||| ||j*                        ||      S |t,        v r0t/        |d   t0        j2                        rt,        |   }|d   |d   g}|t4        j6                  u rKt/        |d   t8              r8t:        j<                  }|d   t0        j2                  j                  d      |d   g}t?        ||      r[tA        d	 |D              sI |jB                  jD                  d
tG        |      gtI        ||       } |t0        jJ                  ||      S |t4        jL                  u rDtO        |      dk(  r6|d   j                         r#|d   jQ                  |dtS        |dd        |      S  |jB                  jD                  d
|gtI        ||       }tA        d |D              r |tT        ||      S tW        ||      rb| jY                  ||      \  }} ||i |}tA        d t[        j\                  ||j	                               D              } |t^        ||||      S ta        d |D              rt9        j                  ||d       S |t4        jb                  u r>t/        |d   t0        j^                        r!tS        |      }|d   je                         |d<    |||      S # tf        $ r9 ti        dd|  d| d| d| j                   dg tj        jl                         Y y w xY w)Nr;   )r.  wrap_fx_proxy_clsSourcelessBuilder)can_dispatch_torch_functiondispatch_torch_functionr   r   )	unique_id)invoke_and_store_as_constantc              3   >   K   | ]  }t        |      t        u   y wri   )r   rV   r   r  s     rm   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>A  s       B03S	^+Bs   r/  __eq__c              3   <   K   | ]  }t        |t                y wri   r   rS   r  s     rm   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>V  s     E:c#34Er  c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wri   r   r   rW   need_unwrapr   s     rm   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>`  ,      "!!Y%J%JK MM"   02)	raw_valuer  c              3   <   K   | ]  }t        |t                y wri   r   rU   r   s     rm   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>m  s     BZ?3Br  z,unimplemented builtin op on tensor argumentszpartial tensor op: r  r  z with tensor argumentsr  )7r0  r.  r  r  r   r  torch_functionr  r  exportr   r  r   r_   r^   rS  r  bytecode_transformationr  rz  r  rp   IN_PLACE_DESUGARING_MAPr   r   r@   r   r   rU   r   selectr)   r   r1  r2  r5   r6   NumpyNdarrayVariabler   r   r%  rQ  rS   r+   r  r  r  rW   r   r   rO  NotImplementedErrorr   r   r  )rk   r!  rf   rg   r.  r  r  r  r  rd   tmpfn_varr   r  r  proxy_args_kwargsr  r  s                       rm   r  z*BuiltinVariable._handle_insert_op_in_graph  s    	>*$**CDC6==?C 	/X 'r48 9913Aw((*ww";;8A7@q'C"1gDG!DG3DGG<Dww&--b$7F*2vtVDDWWc	3t33TDVD?C3Ibkk2D&  ,,Q332 -R0Qa)X%%%*T!Wo*N \\G..55a8G (f5c B7;B ? /		..#*2. 'tV4 ))G)GUSSX[[ SY!^Q8I8I8K Aw**2xd12hPP*BII** #40E
 EEE($ 
 *$7!%!?!?f!Mw11	! "&__T6==?C"  )/' +  BTBB&--b%>> )))jGYBB/  :D"1g88:DG$R//" 	F-dV1TF!F8DQRVRYRYQZZpq6)556		s;   9O	 ?C;O	 ;AO	 AO	 A-O	 (O	 0AO	 	?P
Pcall_function_handler_cachec           	         |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                  |<   }|J  ||||      S c c}}w c c}w )Nc              3   2   K   | ]  }t        |        y wri   r   r   s     rm   r   z0BuiltinVariable.call_function.<locals>.<genexpr>       4!d1g4   Tc              3   2   K   | ]  }t        |        y wri   r0  r   s     rm   r   z0BuiltinVariable.call_function.<locals>.<genexpr>  r1  r2  )r5  r  r   r-  r  r  r   r   )	rk   r!  rf   rg   r  r  keyr_  r   s	            rm   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"
r  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 |dk(  r,| j                   t        u rKt        |      dk(  r=t        |      dk(  sJ |j                  j                  j                  | |d   |dd        S | j                   t        u rt        |      dk(  rs|sqt        i t        t                     }t	        |d   t              r|d   j                   t        u r|S |j                  j                  j                  | |d   |dd        S | j                   t         u rt        |      dk(  r|d   j#                  |      r|st	        |d   t              rH|d   j                   t         u r3|d   j%                  |      }	t'        j(                  |	t                     S |j                  j                  j                  | |d   |dd        S | j                   t*        u rlt-        g t                     }
t	        |d   t              r|d   j                   t*        u r|
S |j                  j                  j                  | |d   |dd        S | j                   t.        t0        fv rt        |      dk(  r| j                   t.        u r|dv s|d	k(  rut2        j4                  d
k\  rb|d   j                         rO	 t7        | j                   |      } ||d   j9                               }t&        j:                  j=                  |      S | j                   t        u r|dk(  rt&        jJ                  S | j                   t        u r#|dk(  rt        jL                  |t        g|i |S | j                   t        u rt7        | j                   |      }|tN        v rxt	        |d   t&        jP                        r$|d   jR                  jU                  |||dd  |      S t	        |d   t&        j                        r|d   jU                  |||dd  |      S | j                   tV        u rt7        | j                   |      }|tX        v rxt	        |d   t&        jZ                        r$|d   j\                  jU                  |||dd  |      S t	        |d   t&        j^                        r|d   jU                  |||dd  |      S | j                   t`        u rUt7        | j                   |      }|tb        v r7t	        |d   t&        jd                        r|d   jU                  |||dd  |      S | j                   tf        u rYt        |      dk\  rKt7        | j                   |      }|th        v r-t	        |d   t:              r|d   jU                  |||dd  |      S | j                   t.        u r[t        |      dk\  rMt	        |d   t:              r:t;        j<                   t7        t.        |      |d   j9                                     S tj        |   ||||      S # t>        t@        f$ rM}tC        tE        |      |t+        tG        t:        j<                  |jH                                     Y d }~Td }~ww xY w)N__setattr__   r   __new__r;   r>  r   )fromhexhexfrom_numberr7     rL  r  fromkeys)6r   rr  r   r  r   rZ   r1  rD  is_attribute_mutationrM  method_setattr_standardtrack_new_user_defined_objectrt   rB   r=   r   r}  has_force_unpack_var_sequenceforce_unpack_var_sequencer   rP   rQ  rL   r   r   sysversion_infor   rO  r@   rS  OverflowError
ValueErrorr   r   rR  rf   r?   call_custom_dict_fromkeysr-   rY   _dict_vtr%  setr8   UserDefinedSetVariable_set_vtrI   	frozensetr/   rF   ru   r9   r  )rk   r!  r  rf   rg   r  name_varvaldict_vt	init_argslist_vtr   r  r  resolved_fnrN  s                  rm   r%  zBuiltinVariable.call_method  s    77f!6t9>!>v;!###!%C3++-C3 9:II**@@E//1222xEE9ww& SY!^6{a'''yy--KK$q'48  ww$3t9>&+BDTDVWd1g7DGJJ$<N"N yy--KKGH  5 ING99"=d1g7DGJJ%<O $Q A A" EI$22!1A1C  yy--KKGH  ww$&r9I9KLd1g7DGJJ$<N"Nyy--KKGH  GGw''D	QE!d.@&@M)c.>.>'.I Aw))+	 $/BT!W779:C$55<<SAA 77f!333377d?tz1"<<RWWPVWW77d?!$''40Kl*d1gy'H'HI7++77D$qr(FSSQ)D)DE7..r4ab6JJ77c>!$''40Kk)d1gy'G'GH7??66r4ab6RRQ)>)>?7..r4ab6JJ77i!$''40K//d1gy'B'BC7..r4ab6JJ77c>c$i1n!$''40Kk)d1g'787..r4ab6JJ77eD	Q$q'#34'..(GE4(a)C)C)EF  w"2tT6::e &z2 ,Q!#&6&=&=qvv"FG s   AZ [(A[##[(r  c           	      D   |j                         st        |t              r|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*  )r  r   rU   r%  r   r   r   r   torch._dynamo.variables.builderr.  r1  r2  r  )rk   r!  r  rU  fn_r.  s         rm   _call_int_floatzBuiltinVariable._call_int_float'  s    
 ==?jo>}}r62r:!WW^'CE ii,,#]]_&	  ro   c                    |j                         r|j                  |dg i       }t        |t              r&t        |j                  t
        j                        r|S t        |t        j                        r2t        j                  j                  t        |j                              S t        j                  ||j                         dk7        S t        |t              rt        |j                  t
        j                        r|S t        |j                  t
        j                  t
        j                  f      sJ t        j                  ||j                         dk7        S y )NrU  r   )r  r%  r   rU   sym_numr   SymBoolr   r@   rS  r   r   r  r4   SymIntSymFloat)rk   r!  r  rU  s       rm   	call_boolzBuiltinVariable.call_boolB  s     ==???2vr26D$0Zemm6 $	 : :; 1188djj9IJJ"))"dmmo.BCC c?+ #++u}}5

 #++enn'EFFF"))"clln.ABB ro   c                 ~   t        |t        j                        r|j                  j                  }t        |j                        j                  t        j                  u r)t        j                  ||      }|j                  |g i       S t        |      r't        ddt        |j                         ddg       n6|j                  }t        j                  ||      }|j                  ||gi       S t        |t        j                        rat        |j                        j                  t
        j                  u r2t        j                  j                  t!        |j                              S t        |t"        t$        t&        t(        t*        f      r-t        j                  j                  |j-                               S y)z&Handle repr() on user defined objects.z4Attempted to call repr() method implemented in C/C++ z6 has a C/C++ based repr method. This is not supported.zWrite the repr method in Pythonr  N)r   r   rZ   r   r  r   rr  r>   r\  r/  r3   r   __func__r  r@   rS  r   rM   rB   rC   rH   rE   
debug_repr)rk   r!  r  repr_methodfn_vtbound_methods         rm   	call_reprzBuiltinVariable.call_repr`  sU    c9>>?)),,KCII''6??:'--b+>**2r2660=R#'		?"33i j<=	  +33'--b,?**2ub99c9==>CII''4==8 1188ciiII!#' 	
 --44S^^5EFFro   c                    t        |t        j                        r3t        j                  j	                  t        |j                              S t        |t        j                        r@t        |j                  d      r|j                  j                  }nUt        |j                  d      r|j                  j                  }n(t        dt        |      dg t        j                         t        |j                        j                  t         j                  u r&	 t        j                  j	                                S t%              r't        ddt        |j                         d	d
g       y |j&                  }	 t)        j*                  ||      }|j3                  ||gi       S t        |t        j4                  f      rht7        |j8                        dk(  r|j:                   }n"dj=                  d |j8                  D              }t        j                  j	                  |      S y # t"        $ r Y y w xY w# t,        $ r t.        j1                  dd       Y y w xY w)N)r   __str__r  z+failed to call str() on user defined objectz5User defined object has no __str__ or __repr__ methodr  z0Attempted to a str() method implemented in C/C++ra  z5 has a C/C++ based str method. This is not supported.zWrite the str method in Pythonz%Failed to create UserFunctionVariableT)exc_infor   , c              3   <   K   | ]  }|j                           y wri   )rO  )r   r"  s     rm   r   z+BuiltinVariable.call_str.<locals>.<genexpr>  s     !KQ!"6"6"8!Kr  )r   r   r  r@   rS  ru   r   rZ   hasattrr   ri  r  r   r   
USER_ERRORr   rr  AttributeErrorr3   rb  r>   r\  r  r  r  r/  rl  r   rf   rm  join)rk   r!  r  
str_methodrf  user_func_variabler   s          rm   call_strzBuiltinVariable.call_str  s    cI::<--443svv;4GGiAACsyy), YY..
J/ YY//
IH W9-889	 CII&&&..8 $55<<:<<PP
 1<N#'		?"33h i;<	6 %  *22 )8)>)>r<)P& *77SE2FFi99;<388}!<<.		!K#((!KK--4454AAA &   & &  KK GRVKW s$   $H- ?H< -	H98H9< II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   )r   rB  rC  _call_min_max_seq_call_min_max_binary)rk   r!  rf   r5  s       rm   _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ro   r5  c                     t        |      dkD  sJ t        |      dk(  r|d   S t        j                  t        j                  | j                  |      |      S Nr   r;   )r   	functoolsreducepartialrv  )rk   r!  r5  s      rm   ru  z!BuiltinVariable._call_min_max_seq  sO     5zA~~u:?8O	 1 1$2K2KR PRWXXro   r"  r#  c                 j   ||y | j                  ||      r%|j                         s||}}|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 t        |tH              rSt        |tH              rC| j                  |j=                         |j=                               }tI        jF                  |      S y )Nr;   r  r/  rV  r   r   r   c              3   p   K   | ].  }t        |t        j                  t        j                  f       0 y wri   )r   r   rW   r@   )r   r  s     rm   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s9      	  !==!22	s   46c              3   <   K   | ]  }t        |t                y wri   r  )r   rO  s     rm   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s     KSz#'78Kr  c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wri   r  r   s     rm   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>(  r  r  )%r  r  r   rS   r   TorchInGraphFunctionVariabler   r   r/  rU   r0  r  r   r1  r2  r   r6   rM  r&  numpyNumpyVariableclipclampr   maximumr   minimumr   r   from_tensor_variablerO  r  rW   sym_maxsym_minrS  r@   )rk   r!  r"  r#  r  npr   rg   rt  np_fntorch_fnraw_braw_resr  py_fnr*  r   s                    rm   rv  z$BuiltinVariable._call_min_max_binary  sx    9	 Aq!;;=!1;;= = !-.::5<<HVVR
 !_-A1O6(G0"))00' +Aq626  ##%a!?!?@&"009B"??LB(,3%eQZ))"qc6:a!?!?@& "**c2::>twwGE"007B #U]]CGPH"??IB))"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  ?+z!_/M%)WW^EMME*BII**):Aq62)FE #))"eT::+,A?O1PGG$$&$$&E $**511ro   c                     ddl m} |j                  |t              j	                  ||t        j                  d      gi       }|j	                  |g i       S )Nr;   r  __abs__r0  r  rS  r   r/  r@   )rk   r!  r  r  
abs_methods        rm   call_abszBuiltinVariable.call_absF  U     	/ '--b':HH&--i892

 ''B33ro   c                     ddl m} |j                  |t              j	                  ||t        j                  d      gi       }|j	                  |g i       S )Nr;   r  __pos__r  )rk   r!  r  r  
pos_methods        rm   call_poszBuiltinVariable.call_posQ  r  ro   c                     |j                         rt        dddg        t        |      }t        j                  |      }t
        j                  j                  |      S )Nzunsupported index(Tensor)ra  z;Dynamo does not support tracing builtin index() on a Tensorr  )r  r   r1   r   r   r   r@   rS  )rk   r!  r  constant_values       rm   
call_indexzBuiltinVariable.call_index\  sR     ==?3Y	 3!,))00@@ro   c                     ddl m} |j                  |t              j	                  ||t        j                  d      gi       }|j	                  |||      S )Nr;   r  	__round__r  )rk   r!  r  rf   rg   r  round_methods          rm   
call_roundzBuiltinVariable.call_roundk  sU     	/ )//G<JJ&--k:;R
 ))"dF;;ro   c                     t        |i       rt        j                  |      S  | j                  | r't	        d |D              }t        j                  |      S y )Nc              3   l   K   | ],  }t         j                  j                  t        |             . y wri   )r   r@   rS  r1   r  s     rm   r   z-BuiltinVariable.call_range.<locals>.<genexpr>  s+      IL	**11,s2CD   24)r*   r   rM   _dynamic_argsr}  r
  s      rm   
call_rangezBuiltinVariable.call_rangez  s\     )r2**400T& PT D **400ro   c                 j    t        d |D              xs  t        d |j                         D              S )Nc              3   <   K   | ]  }t        |t                y wri   r   r   s     rm   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s     @a:a1@r  c              3   <   K   | ]  }t        |t                y wri   r   r   s     rm   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s      H
/0Jq/*H
r  )r   r   r  s      rm   r  zBuiltinVariable._dynamic_args  s7    @4@@ 
C H
4:MMOH
 E
 	
ro   c                 .    t        j                  ||      S ri   )r   SliceVariabler
  s      rm   
call_slicezBuiltinVariable.call_slice  s     &&tR00ro   c           
          ddl m}  || |j                  j                  d| j                  gt        ||             S r,  )r0  r.  r1  r2  r   r6   )rk   r!  rf   rg   r.  s        rm   
_dyn_proxyzBuiltinVariable._dyn_proxy  sC     	+"BII""+<T6+J
 	
ro   r  c                 @   t        |t        j                        rJ  | j                  |i |r | j                  |g|i |S t        j
                  j                  | j                        }| |g t                     S |j                  |      r|j                  rTt        |j                        s>t        |t              r3t        |j                  j                  t        j                                nt#        |dd      rUt        |t$              rEt'        |t(        t*        f      s/|j,                  j.                  j1                  |j                         t        |t        j2                        r3t        |j                  j                  t        j4                               nLt        |t        j6                        s2t        |j                  j                  t        j8                                |t;        |j=                  |            t                     S y )Nr>  r   F)r   r   IteratorVariabler  r  rJ   cls_forr   r=   rC  r   r%   rO   r    r   r   TUPLE_ITERATOR_LENr   rB   r4   rI   rF   r1  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHrQ  r6  rk   r!  r  rf   rg   r   s         rm   _call_iter_tuple_listz%BuiltinVariable._call_iter_tuple_list  s    c9#=#=>>>4t.v."4??27777((009;.0  ((,zz"4SZZ"@c#89!

--l.M.MN
  Xu5&s,=> &s[:K,L M		4488D!#y'E'EF &JJ11,2Q2QR (Y-T-TU &JJ11,2N2NO S,,R01.0  ro   c                     t         j                  j                  | j                        } |t	        |j                  |            t                     S r=  )r   rJ   r  r   rQ  rC  r=   r  s         rm   _call_iter_tuple_generatorz*BuiltinVariable._call_iter_tuple_generator  sD     ((009..r23*,
 	
ro   c                    t        |t        j                        rSt        j                  j	                  | j
                        } |t        |j                  |            t                     S t        |t        j                        s!t        |t              r(|j                  |      r | j                  ||g|i |S  | j                  ||g|i |S r=  )r   r   r  rJ   r  r   rQ  rC  r=   LocalGeneratorObjectVariablerZ   rB  r  r  r  s         rm   _call_tuple_listz BuiltinVariable._call_tuple_list  s     c9556,,44TWW=CS22267.0  YCCDs5611"524222sLTLVLL-4--b#GGGGro   c                    t        |t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        f      r|j                  |dg i       S t        j                  t        j                  j                        j                  ||g|i       }|rt        j                   |      }|S )N__iter__)r   r   rL   rM   r  rB   r  rV   rP   rE   r%  r  r   r  iter_r/  ObjectIteratorVariable)rk   r!  r  rf   rg   rets         rm   	call_iterzBuiltinVariable.call_iter  s     &&''**++**(('' 	
 ??2z2r:: 00""((mBtb1  
  66s;Jro   c           	         ddl m}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  FunctoolsPartialVariabler  TF)rz  r  r  r{  r  r   r   r  r@   rS  r[   r   r   rU   rV   rL   rP   rK   )rk   r!  r  r  r  r  s         rm   call_callablezBuiltinVariable.call_callable  s     	R/22(( 	
 --44T::01--44Xcii5HII $

 --44U;;ro   r  c                 V    t        |      dk(  r|d   S t        dd| d| ddg       y )	Nr   r;   zbad args to builtin cast()z	got args r  z0Dynamo expects exactly 2 args to builtin cast().z3Ensure your call to cast() has exactly 2 arguments.r  )r   r   )rk   r  rf   rg   s       rm   	call_castzBuiltinVariable.call_cast?  s<     t9>7N0vQvh/JHI		
ro   c                     t        |t        j                        r)t        j                  |t        |j                              S t        |t              r)t        j                  |t        |j                              S y ri   )	r   r   r  r>   r\  dirr   r   r   )rk   r!  r  s      rm   call_dirzBuiltinVariable.call_dirL  sW     c9==>"((S^<<c?+"((S[99ro   c                >    t        j                  |t        g|i |S ri   )r   call_custom_dictrt   rk   r!  rf   rg   s       rm   	call_dictzBuiltinVariable.call_dictU  s!     //DJ4J6JJro   user_clsc                   t        |      }t        |      dk(  rt        |d   t        j                        rpt        |d   j
                  t        j                        rI| j                  j                  j                  |d   j
                        s|d   j                  |       |d<   | j                  t        j                  | t        j                        t        j                  | |      g||      S )Nr;   r   )rQ  r   r   r   r  r  r  r1  rD  has_pending_mutationget_forwarded_dictr[  r>   r\  r   construct_dict)r!  r  rf   rg   	args_lists        rm   r  z BuiltinVariable.call_custom_dict^  s     J		Na9Q<)B)BC9Q<++Y-O-OPII**??	!@P@PQ
 %Q<::2>IaL--!!"i&>&>?""2x0=9=
 	
ro   c          
         |t         t        t        hvrKt        d|j                   d| d| d|j                   d|j                   dd|j                   dg	       |rq|t        us t        |      d
k7  st        |      d
k7  sd|vr3t        | |j                   ddt        |       dt        |       d       g ||j                  d      }t        |      dk(  r't        | |j                   ddt        |       d       t        |      d
k(  rg |t        }t        |      dk7  r't        | |j                   ddt        |       d       |\  }}|t        urt        nt        }t        |t               rI|D cg c]  }t        j                  |       }} |t         j                  ||      |t                     S |j!                  |       rJ|j#                  |       }	t%        d |	D              r' |t         j                  |	|      |t                     S t        d|j                   d| d| d|j                   dddg	       y c c}w )Nz$Unsupported dict type for fromkeys()z.fromkeys(): r  zFailed to call z.fromkeys() because z5 is not any type of dict, OrderedDict, or defaultdictzEnsure z0 is a type of dict, OrderedDict, or defaultdict.r  r;   r   z	.fromkeysz1 args and 1 kwargs (`value`)z
 args and  kwargsr   zat least 1 argsz argsr   z2 argsr>  c              3   2   K   | ]  }t        |        y wri   )rG   )r   r  s     rm   r   z<BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s     0a;q>0r2  zfailed to call dict.fromkeys()zo.fromkeys() because arguments could not be automatically converted to a list, or some dict key is not hashable.z(Manually convert the argument to a list.zEnsure all keys are hashable.)rt   r   r   r   rp   r   r7   popr?   rB   rC   r   r@   rS  r>  r=   rB  rC  r   )
r!  r  rf   rg   r  r   DictVariableTyper  arg_listkeyss
             rm   rH  z)BuiltinVariable.call_custom_dict_fromkeysw  s    D+{;;>#,,-]4&&J-h.?.?-@@T$$%%Z\ h//00`a  +t9>v;!#&(#(()334ykCK=@	 0T/6::g./Dt9>$$%Y/!t9+U#	 t9>2T212Dt9>$$%Y/t9+U#	 
U!)!<BU 	 c4 <?@q(//2@H@#h..0 
 ..r2004D0400'MM$."2"4  	4(()tfAfXF)(*;*;)< =0 0 ;/
	
 As   Ic           
      J   ddl m} |rJ |st        g t                     S t	        |      dk7  r3t        t        |t        j                  dt	        |       d      g       |d   }t        |t        j                        r|j                  t                     S |j                  |      r&|j                  |      }t        |t                     S t        |t        j                        rt        |j                   t"              rw|j%                  |d      }t        |t        j&                        rK|j)                  |||      }t        |t              r|S |j                  |t*              j-                  ||      S t        t        |t        j                  d	      g       y )
Nr;   r  r>  z&set() takes 1 positional argument but  were givenrL  r   r  z!failed to construct builtin set())r0  r  rI   r=   r   r   rX  r@   rS  r4   r   clonerB  rC  r   rZ   r   r   r	  UserMethodVariabler[  rJ  call_set)	rk   r!  rf   rg   r  r  r5  iter_fnouts	            rm   r  zBuiltinVariable.call_set  sf    	/ zr1A1CDDt9>$$++@T;W 1g#y,,-99+;+=9>>..r211"5Eu4D4FGGY@@AjIIxG
 oob*5G'9#?#?@44WdFKc;/J(//C8AA"cJJ "))*MNO	
ro   c           
         |rJ |st        g       S t        |      dk7  r3t        t        |t	        j
                  dt        |       d      g       |d   }t        |t        j                         r-t        |j                  D cg c]  }|j                   c}      S |j                  |      r|j                  |      }t        |      S t        t        |t	        j
                  d      g       y c c}w )Nr;   z,frozenset() takes 1 positional argument but r  rL  r   z'failed to construct builtin frozenset())rF   r   r   rX  r@   rS  r4   r   	set_itemsvtrB  rC  )rk   r!  rf   rg   r  r   r5  s          rm   call_frozensetzBuiltinVariable.call_frozenset  s     z$R((t9>$$++Fs4ykQ\] 1g#y223$CMM%Bqadd%BCC..r211"5E$U++ "))*STU	
	 &Cs   C3c                    ddl m} |r,t        |      dk(  rd|v st        |ddt        |       d       |j	                  dt        j                  d            }|D cg c]*  }|j                  |t              j                  ||gi       , }}t        j                  ||j                         t                     S c c}w )	Nr;   r  strictzip1 kwargs (`strict`)r  Fr  r?  )r0  r  r   r7   r  r@   rS  iterr/  r   ZipVariablerO  r=   )rk   r!  rf   rg   r  r  r  	iter_argss           rm   call_zipzBuiltinVariable.call_zip	  s     	/K1$V);#)6{m7+	 H&6&=&=e&DE 
 $$R.<<R#K
	 
 $$,,.*,
 	
	
s   /B=c           	          	 |d   j                  |dt        |dd        |      S # t        $ r4}t        t	        |      |t        |j
                               Y d }~y d }~ww xY w)Nr   __len__r;   rL  )r%  rQ  ro  r   r   rf   )rk   r!  rf   rg   r  s        rm   call_lenzBuiltinVariable.call_len/	  sZ    	E7&&r9d48nfMM 	E$T!WbtAFF|DD	Es   "% 	A"*AA"c           	      H    |d   j                  |dt        |dd        |      S )Nr   __getitem__r;   )r%  rQ  r  s       rm   call_getitemzBuiltinVariable.call_getitem:	  s)     Aw""2}d48nfMMro   isinstance_type_varc           	      4   	 j                         }|j                         }t        t        j                        rJj                  >dt        dt        d	t        ffd
}t        j                  j                   ||            S t        t        j                        rJt        j                   t"        j$                        r&t        dd d| ddg t        j&                         t        t        j                        r[d|j(                  j*                  v rCt        j                  j                  |j(                  j-                  |j                               S t        t        j.                        rt        j                  t        |            S t        |t0              st3        t5        |dd             r|f}n_t        |t"        j6                        r|j8                  }n8t        |t:              rt=        d |D              r|}nt?        t@        |dg       	 tC              }t        j                  j                  |      S # t        $ r- t        dd d| dd g t        j                         Y pw xY w# t@        $ r v }Y gw xY w)Nz6builtin isinstance() cannot determine type of argumentzisinstance(rk  r  z=Dynamo doesn't have a rule to determine the type of argument r  
tensor_vartensor_typer`   c                     dt         dt        ffdt        |      t        u rt	        fd|D              S  |      S )Ntyr`   c                 >   | 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:   r  nodemetar   r   nn	parameter	Parameterr   r  python_typerw   )r  example_valdtypesr  s      rm   
check_typezOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_typeW	  s    !44&)lln&9&9&>&>&O9+F "ehh&8&8&B&B B
 $.k2#>>#-coo.?#DD04F99..ro   c              3   .   K   | ]  } |        y wri   rj   )r   r  r	  s     rm   r   zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>j	  s     D"z"~Ds   )r	   r   r   r}  r   )r  r  r	  r  s     @rm   _tensor_isinstancez;BuiltinVariable.call_isinstance.<locals>._tensor_isinstanceT	  sA    /3 /4 /$ $-DDDD%k22ro   z<isinstance() called on user defined object with C extensionszeUser-defined object with C extensions can have torch.Tensor attributes; intentionally graph breaking.__instancecheck__c              3   l   K   | ],  }t        |t              xs t        t        |d d             . yw)r  N)r   r   r   r   )r   tps     rm   r   z2BuiltinVariable.call_isinstance.<locals>.<genexpr>	  s6      8
 r4 THWR9Ld-S$TT8
r  z?isinstance() arg 2 must be a type, a tuple of types, or a unionrL  )"r  r'  r   r   r  rO  r   r   rV   rw   r>   r	   r   r@   rS  rZ   r   re   MemberDescriptorTyper  rN  r   r  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__r}  r   r   rX  r  )	rk   r!  r  r  r  isinstance_typer  isinstance_type_tuplerO  s	     `      rm   call_isinstancezBuiltinVariable.call_isinstanceB	  sz   	(H .@@Bc93349N3+3:=334 --44"38 
 c9>>?JIIu11E
 V%cU"_,=Q?<6)556 sI??@#'@'@'I'II--44));;OSYYW  c9FFG#**:h+PQQ ot,O%8$?1
 &5$6!9$3$<$<!/C 8
%8
 5
 %4!$U	4 X'<=C ))0055G # 	P%cU"-@,AC[\_[`a5)445	 	@  	433C	4s#   I #J 2JJJJleft_tyright_tyc           	          	 |j                         }|j                         }t        j                  t                    S # t        $ r* t        dd| d| dddgt        j                         Y Qw xY w)z,Checks if first arg is subclass of right argz(issubclass() with non-constant argumentszissubclass(rk  r  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r  )rO  r'  r   r   rn  r   r@   r  )rk   r!  r  r  
left_ty_pyright_ty_pys         rm   call_issubclasszBuiltinVariable.call_issubclass	  s    	 335J"557K ))*Z*MNN # 		B%gYb
!<U9&11			s    A 0A43A4c                 .    t        j                  ||      S ri   )r   SuperVariablerk   r!  r"  r#  s       rm   
call_superzBuiltinVariable.call_super	  s     &&q!,,ro   c                    |d   }	 |j                  |      S # t        $ r t        |      dk(  r|d   cY S  t        $ rD}t	        |t
        j                        r$|j                          |j                  d   cY d }~S  d }~ww xY w)Nr   r   r;   )	next_variabler   r   r   r   r   rJ   r  r5  )rk   r!  rf   r  exs        rm   	call_nextzBuiltinVariable.call_next	  s     1g
	$$R((( 	4yA~Aw 	#y99:$$&yy|#		s%    B	B8A>7B=A>>Battrc                     |j                         re|j                         }t        |t        j                        r)t        j
                  t        |j                  |            S |j                  ||      S y ri   )	rM  rO  r   r   r   r@   rm  r   call_obj_hasattr)rk   r!  r  r$  r  s        rm   call_hasattrzBuiltinVariable.call_hasattr	  s`     ""$**,D#y889 11'#&&$2GHH''D11ro   seqsc                    t        j                  d      }|rt        j                  dk\  rRt	        |      dk(  rd|v st        |ddt	        |       d       |j                  dt        j                  d            }nt        |ddt	        |       d       |D cg c]&  }|j                  |      r|j                  |      n|( }}t        j                  |||j                         t               	      S c c}w )
NFr<  r;   r  rR  r  r  z0 kwargsr  )r@   rS  rD  rE  r   r7   r  rC  r6  r   MapVariablerO  r=   )rk   r!  r   r(  rg   r  rG  seq_lists           rm   call_mapzBuiltinVariable.call_map	  s    "((/7*Fq(X-?'-v;-w/	  H.>.E.Ee.LM#6{m7+	 
 ,/+F+Fr+JC##B'PSS
 
 $$,,.*,	
 	
	
s   +C7rG  c                     |j                  |      r|j                  |      n|}t        j                  ||t	                     S r=  )rC  r6  r   FilterVariabler=   )rk   r!  r   rG  seq_or_lists        rm   call_filterzBuiltinVariable.call_filter
  sH     ,/+F+Fr+JC##B'PS 	 ''*,
 	
ro   c                 N   | j                   xr t        | j                   |      }| j                  t        u r9	 t	        | j                  |      }t              st        j                  |||      S t        j                  | ||      S # t
        $ r t        t
        |       Y Uw xY wr   )r   r"   r   rr  r   ro  r   r   r>   r\  r   r  )rk   r!  r  r   r   s        rm   r	  zBuiltinVariable.var_getattr
  s    >DKK!>77f=. E?&,,R??((tFCC " =(<=s   B B$#B$rN  defaultc                    |j                         st        dd| d| d| dddg       |j                         }|j                         r|dk(  rd	}|j                  j
                  j                  |      rht        |t        j                        rN|d
v rJ|j                  r>|j                  j
                  j                  |      rt        dd| d| d| ddg        |j                  j
                  j                  ||      r&|j                  j
                  j                  ||      S |=| j                  |||      }|&|j                  dd      sJ |j                         s|S |S |j                   xr t#        |j                   |      }|dv r	 |j                         }t        |t$              r|dk(  rat'        |j(                        D 	
cg c]*  \  }	}
t+        j,                  ||
|xr t/        ||	            , }}	}
t        j0                  ||      S |dk(  r!t+        j,                  ||j2                  |      S |dk(  rt5        j6                  |j8                        S t        |t        j<                        r|j?                  ||      S t        |t        j@                  t        jB                  t        j4                  t        jD                  t        jF                  t        jH                  t        jJ                  f      r!t        |t        jJ                        r]tM        |jN                  jP                  tR        jT                        r/tV        jX                  r|dv rt        dd| d| dd| dg       |j                         r|j[                         j\                  j^                  d   }t        |t`        jb                        rFte        |      r;|jf                  rtV        jh                  st        dddg tj        jl                         	 |j?                  ||      S t        |t        jr                        rtu        |jN                  |      }t        |t`        jv                  jx                  t`        jv                  jz                  f      r@t`        j|                  j~                  j                  |      rt        jr                  ||      S |t        v rt        jp                  |||      S y t        |t              r|j                  s||jN                  j                  vrtu        |jN                  |      }n|jN                  j                  |   }tV        j                  r'|j                  j                  |jN                  ||       t+        j,                  |||      S t        |t        j                        r-|dv r)t5        j6                  tu        |j                  |            S 	 |j?                  ||      S c c}
}	w # t:        $ r Y w xY w# tn        $ r  t:        $ r t        jp                  |||      cY S w xY w# t:        $ r t        jp                  |||      cY S w xY w) Nz)getattr() with non-constant name argumentzgetattr(rk  r  z:getattr() with non-constant name argument is not supportedz1Ensure the name argument of getattr() is a stringr  _gradgrad)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz,getattr() on nn.Module with pending mutationzPIntentionally graph breaking on getattr() on a nn.Module with a pending mutationTF>   __base__	__bases__	__flags__r=  r   r<  r>  )assertRaisesRegexassertNotWarnsassertWarnsRegexassertWarnszFailed to trace unittest methodzfunction: unittest.TestCase.z3Dynamo does not know how to trace unittest method `z` zAvoid calling `TestCase.z%`. Please report an issue to PyTorch.r   zAttempted to wrap sparse Tensorra  z-torch.compile does not support sparse Tensors)rp   rq   )KrM  r   rO  r  r1  rD  r?  r   r   r  is_state_mutatedr  has_pending_mutation_of_attr	load_attrr'  is_constant_matchr   r"   r   	enumerater=  r>   r\  r#   rP   r<  r@   rS  r>  r'  r  r	  rV   NamedTupleVariablerC   DistributedVariabler  rZ   r  r   rN  unittestTestCaser   enable_trace_unittestr  r  r  r   Tensorr   r"  capture_sparse_computer   SPARSE_TENSORr<   r  r  r   _opsOpOverloadPacket
OpOverload_dynamotrace_rulesis_aten_op_or_tensor_methodr,   r!   is_torchr   replay_record_enabledexec_recorderrecord_module_accessr4   r  r   )rk   r!  r  rN  r2  r  hasattr_varr   r   r  r#  
tuple_argsfake_valmembers                 rm   call_getattrzBuiltinVariable.call_getattr'
  s    **,C"3%r(2gYa@XJK	 **, ==?twD99!!77<#yFFG ,,		..CCCH! N"*3%r$r'! D%2  99!!>>sDI99))33C>>++BX>K&"44T5AAA"557"N<
3::t <99..0eT*{*
 )2%//(B	& !%1 ,11 "Av'J-2J&
 &  )66z&QQz).44RPP{*/66uGG c9556??2t,,((,,**----2233
 3	 C CDsyy22H4E4EF00 =:4&A"UVZU[[] ^24& 9= =	 }}<<>..33ODx6%h/YYf.K.K! A "$S@ 1 ? ?@	Kr400 YCCDSYY-F44ejj6K6KL--++GGO ==fVTT// 00d6JJ[)||t399+=+== D1++D1++  55ciivN"((VV<<C778T F
 >
 $**73664+@AAKr400K& ' n 7  & K 00d6JJK@ ' K 00d6JJKsT   =X /X?X %X ?#X X /Y X 	XX*YY!Y+*Y+rO  c                 	   t        |t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  f      r|j                  |d||gi       S |j                  j                  j                  |      r|j                         rs|j                         }|j                         r)ddlm} |dk(  r+t%        dd| d| d| dd	g t&        j(                  
       n|dk(  r|j*                  t%        dd| d| d| dddg
       n3|j,                  |j,                  k7  rt%        dd| d| d| dddg
       |j                  j.                  D cg c]  }|j*                  |j*                  k(  s|  }}|D ]'  }|j                  j.                  j1                  |       ) t3        |      5  t5        j6                         5   || |j                  j8                  dt4        j:                  j<                  gt?        ||gi              }	d d d        d d d        dt4        j:                  dt4        j:                  fd}
|j                  j9                  d|
	jA                         fi         |
|jA                         jB                  jD                  d          |	S |dv rd}n)tG        |      rt%        dd| d| d| ddd| dg
       |j                  j                  jI                  |||       |S t        |t        jJ                        r?|j                  jM                         s#t%        dd| ddgt&        jN                  
       |j                         rt        |t        jP                        rtS        |jA                         jB                  |      }	 |jU                  ||j                               }||j                         rptS        |jA                         jB                  |      }t[        j\                  |j^                  d      }||u r(|t4        j`                  jb                  jd                  u r|S |jg                  |       y c c}w # 1 sw Y   KxY w# 1 sw Y   PxY w# tV        tX        f$ r d }Y w xY w) Nr6  r;   r-  requires_gradz!setattr() on Tensor.requires_gradzsetattr(rk  r  zsetattr() on Tensor.requires_grad not supported. Mutating requires_grad can introduce a new leaf from non-leaf or vice versa in the middle of the graph, which AOTAutograd does not currently know how to handle.r  dataz&Failed to mutate tensor data attributezVDyanmo only supports mutating `.data` of tensor created outside `torch.compile` regionzWDon't mutate `.data` on this tensor, or move the mutation out of `torch.compile` regionz9Failed to mutate tensor data attribute to different dtypezPDyanmo only supports mutating `.data` of tensor to a new one with the same dtyper/  r   r`   c                     | j                   }|dkD  r|dz
  }t        j                  j                  j	                  | f|f       | S ry  )_versionr   _C	_autograd_unsafe_set_version_counter)r   versions     rm   _lower_version_count_by_1z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1*  s>    "#**"Q;&-kG**FFtgZX ro   r   )r4  r5  r5  zFailed to set tensor attributez6Dyanmo doesn't support setting these tensor attributeszDon't mutate attribute 'z@' on tensors, or move the mutation out of `torch.compile` regionz#nn.Module mutation in HigherOrderOpznn.Module: zPInplace modifying nn.Module params/buffers inside HigherOrderOps is not allowed.z<Remove the mutation or move it outside of the HigherOrderOp.)4r   r   rC   PlacementVariablerH  rZ   NestedUserFunctionVariablerl  TracebackVariabler%  r1  rD  r?  rM  rO  r  r0  r.  r   r   r  r   rw   tracked_fakesremovedynamo_disable_gradr   no_gradr2  rM  set_r6   r  r  r  r2   
store_attrr  is_root_tracerFUNDAMENTALrV   r0   r	  ro  r   r  getattr_staticmodule_typer  Moduler6  convert_to_unspecialized)rk   r!  r  rN  rO  r  r.  tf	to_remover  rh  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                  rm   call_setattrzBuiltinVariable.call_setattr
  s    --++,,3344++++
 ??2}xorJJII""88=++-..0D}}2 ?*! C"*3%r$r#a @%l ? 1 = => V^ zz)%$L&.se2dV2cU!$D)P!M#	 cii/%$_&.se2dV2cU!$D)J!M#	" &(YY%<%<!!		SZZ@W!I ! ( ;		//66r:; -R0 	%--/ 	+2BII22 / % 1 1 "3C:r!B	 	!U\\ !ell ! II**'1)	 .clln.A.A.F.F.WX J.. "D06 " @"*3%r$r#a @$\6tf =N N	 II""--c4=JY77899++-A)#/ rV*66	 **,Y--2 &4CLLN4G4G%L"'"%//"h6Q6Q6S"TK *{/D/D/F)78L8L8N8S8SUW)X& #*"8"8-"XK*.@@'588??+F+FF**((,A!	 	 	 	R '(>? '"&K'sC   R1R.R#A
RR# R0 R 	R##R-0SSc                 ,    |j                  |d|gi       S )N__delattr__r(  )rk   r!  r  rN  s       rm   call_delattrzBuiltinVariable.call_delattrv  s     r=8*bAAro   c                    	 |j                         }|j                  xr t        |j                        }|2t        |t        j                        r|j                  r|j                  }|t        j                  u r5|j                  j                  dt              }t!        t#        |      d      }t%        j&                  |||      S # t        $ r+}t        t        j                  t        |      d      d d }~ww xY w)Nunknown_python_type)	case_namera  rM  )r  r'  r   r   INVALID_INPUTru   r   r'   r   r   rZ   
cls_sourcer   rM  r1  install_global_by_idr"   r$   r>   r\  )rk   r!  r  py_typeerrorr   r  s          rm   	call_typezBuiltinVariable.call_type~  s    	oo'G 6
3:: 6N3	 C CD^^Fell"9911"e<DT 2H=F$$R&99' # 	++E
/ 		s   C 	C;&C66C;c                     |j                  |      r8t        t        |j                  |                  }t	        j
                  |      S y ri   )rC  rQ  reversedr6  r   rP   )rk   r!  r  r5  s       rm   call_reversedzBuiltinVariable.call_reversed  s@     &&r*#"9"9""=>?E**511ro   c                     |j                  |      r^t        |t        j                        sDt        j                  |j                  |      t                     }|j                  |dg |       |S y )Nr>  sort)rB  r   r   rV   rL   rC  r=   r%  )rk   r!  r  rg   list_vars        rm   call_sortedzBuiltinVariable.call_sorted  sh     ,,R0)):
 !----b1.0H   VR8Oro   c                    t        |t              r9t        j                  |t        j                  |j                               d       S t        |t              r0|j                  |d      j                  r|j                  |dg i       S y )Nr[  __neg__)
r   rU   rS  r   r   r  rZ   r&  r   r%  rk   r!  r"  s      rm   call_negzBuiltinVariable.call_neg  sv     a)"))qzz|,  q34""2y177==YB77 ro   _format_stringc                 z    |j                         }t        |      }t        j                  j	                  |||      S ri   )rO  ru   r   StringFormatVariablerS  )rk   r!  r  rf   rg   format_strings         rm   call_formatzBuiltinVariable.call_format  s7     '99;M*--44]D&QQro   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                  t        j                  f      r|d   j                  rt        |d   t        j                        r6t        |d   j                  j                  t        j                                n5t        |d   j                  j                  t        j"                               t        |d   j$                        }t        j                  j                  |      S t        |      dk(  r7|d   j'                         r$t)        t*        |d         }|j-                  |      S t/        |d   t        j0                        r5t        j                  j                  t        |d   j2                              S t/        |d   t        j4                        r5t        j                  j                  t        |d   j$                              S t/        |d   t        j6                        r5t        j                  j                  t        |d   j8                              S t;        dt=        |      d| dgt>        j@                         y )Nr   r;   zid() with unsupported argsz5Dynamo doesn't know how to trace id() call with args zkSupported args are Tensors, and functions/nn.Modules/user-defined objects from outside the compiled region.r  )!r   r   r   r  r1  rf  rg  r@   rS  idr  rZ   r   r    r   r   CLASS_MATCHID_MATCHr   r  r
   rV   call_idr4   r  r   SkipFunctionVariabler  
fake_valuer   ru   r   r  )rk   r!  rf   nn_mod_variabler   constant_resulttensor_variables          rm   r  zBuiltinVariable.call_id  s5    t9q=ZQ1K1KL"1gO))))/*D*DEC--44RW==Y!^
G//1T1TU!
 Aw~~d1gy'I'IJ!$q'..";";L<T<T"UV!$q'..";";L<Q<Q"RS a/O--44_EEY!^Q 1 1 3">47;O"**2..DGY;;<--44RQ

^DDDGY;;<--44RQ5FGGDGY??@--44RQ8J8J5KLL4D	STXSYZ8 '22		ro   r   c                 L    t        dd| dddgt        j                         y )Nzcopy.deepcopy()zcopy.deepcopy(r  z'Dynamo does not support copy.deepcopy()zAvoid calling copy.deepcopy()r  )r   r   r  )rk   r!  r   s      rm   call_deepcopyzBuiltinVariable.call_deepcopy  s4     	%$QCq)A/"..		
ro   rh  ri  c                    ddl m} ddlm} | j                  }|t
        j                  t
        j                  fv r|j                         xrk |j                         xrY t        t        |j                         j                              t        t        |j                         j                              k(  }|t
        j                  u rt        j                  |      S t        j                  |       S ||vrEt        d|j                    d| d| dd|j                    d	| d| g t"        j$                  
       t'        |t(              rnt'        |t(              r^|j*                  xr |j*                  D|j*                  |j*                  k7  r+	 t-        j.                  |j*                  |j*                         |j                         r|n|}|j4                  j7                  d||j                         |j                         fi       }	 |t9        |      ||	      S # t0        $ rI t        d|j                    d| d| dd| d| d|j                    dg t"        j2                  
       Y w xY w)Nr;   r~  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opr  rk  r  *Dynamo does not support the comparison op z with Tensor arguments r  z8failed to broadcast when attempting Tensor comparison opz.Dynamo was unable to broad cast the arguments z, when attempting to trace the comparison op .r/  )r0  r  r   r  r   r   r`  is_notr  r  r.   r  r  r@   rS  r   rp   r   r  r   rV   sizer   broadcast_shapesRuntimeErrorrn  r1  r2  r   )
rk   r!  rh  ri  r  r  r   	is_result
tensor_clsr*  s
             rm   rs  z'BuiltinVariable._comparison_with_tensor  s;    	/AWW(,,00  IOO%I1$--/2F2FGH01A1F1FGHI  X\\!'..y99'..9}==:::;;-qbq9H V))-b96)556 t^,5.1)uzz6		UZZ'
&&tyy%**= "^^-T5
		&&R$--/5>>3C!Db
 !
 	
   V!{{m1TF"UG1="PQUPVVXY^X_ `BBD++a!Q9-889s   *H AI10I1c           
         ddl m} | j                  }||vrEt        d|j                   d| d| dd|j                   d| d| g t
        j                  	       t        |t        j                        r$t        j                   |t               d             S |j                  j                  d
||j                         |j                         fi       }t        j                   ||d       S )Nr;   r  z!unsupported SymNode comparison opr  rk  r  r  z with SymNode arguments r  r/  r  )r   r  r   r   rp   r   r  r   r   r  r@   rr  r1  r2  r  rU   rS  )rk   r!  rh  ri  r  r   r*  s          rm   ro  z(BuiltinVariable._comparison_with_symnode;  s     	BWW::;;;-qbq9H V**.r%:6)556 eY??@--b4.@AA		&&R$--/5>>3C!Db
 %%
 	
ro   c           
         t        |t              rt        |t              ry |j                         r^|j                         rNt        j                  | |j
                  j                  dt        j                  gt        ||gi        d       S t        |t        t        t        f      r|j                  |d|gi       S y )Nr/  r  r  )r   r@   is_symnode_likerU   rS  r1  r2  r   r   r6   rD   rI   rZ   r%  r  s       rm   call_xorzBuiltinVariable.call_xorX  s     a)*z!=M/N1#4#4#6"))&		&&#X\\4Eq!fb4Q   {,EF
 ==YR88ro   c                 d    t        |t        t        t        f      r|j	                  |d|gi       S y )Nr  r   rD   rI   rZ   r%  r  s       rm   	call_ixorzBuiltinVariable.call_ixorn  1     a*K9RST==Z!b99ro   c                 d    t        |t        t        t        f      r|j	                  |d|gi       S y )Nr   r  r  s       rm   call_subzBuiltinVariable.call_subu  s1     a*K9RST==YR88ro   c                 d    t        |t        t        t        f      r|j	                  |d|gi       S y )Nr   r  r  s       rm   	call_isubzBuiltinVariable.call_isub|  r  ro   c           
         t        |t              rt        |t              ry |j                         r^|j                         rNt        j                  | |j
                  j                  dt        j                  gt        ||gi        d       S t        |t        t        t        f      r|j                  |d|gi       S y )Nr/  r  __and__)r   r@   r  rU   rS  r1  r2  r   r   r6   rD   rI   rZ   r%  r  s       rm   	call_and_zBuiltinVariable.call_and_  s     a)*z!=M/N1#4#4#6"))&		&&#X]]5F1vr5R   a*K9RST==YR88ro   c           
         t        |t              rt        |t              ry |j                         r^|j                         rNt        j                  | |j
                  j                  dt        j                  gt        ||gi        d       S t        |t        t        t        f      r|j                  |d|gi       S y )Nr/  r  __iand__)r   r@   r  rU   rS  r1  r2  r   r   r6   rD   rI   rZ   r%  r  s       rm   	call_iandzBuiltinVariable.call_iand  s     a)*z!=M/N1#4#4#6"))&		&&#X]]5F1vr5R   a*K9RST==Z!b99ro   c           
         t        |t              rt        |t              ry |j                         r^|j                         rNt        j                  | |j
                  j                  dt        j                  gt        ||gi        d       S t        |t        t        t        t        t        t        f      r|j!                  |d|gi       S y )Nr/  r  __or__)r   r@   r  rU   rS  r1  r2  r   r   r6   rB   rD   rX   rI   rY   rZ   r%  r  s       rm   call_or_zBuiltinVariable.call_or_  s     a)*z!=M/N1#4#4#6"))&		&&#X\\4Eq!fb4Q   ! &')

 ==XsB77 ro   c           
         t        |t              rt        |t              ry |j                         r^|j                         rNt        j                  | |j
                  j                  dt        j                  gt        ||gi        d       S t        |t        t        t        t        t        f      r|j                  |d|gi       S y )Nr/  r  __ior__)r   r@   r  rU   rS  r1  r2  r   r   r6   rB   rD   rX   rI   rZ   r%  r  s       rm   call_iorzBuiltinVariable.call_ior  s     a)*z!=M/N1#4#4#6"))&		&&#X\\4Eq!fb4Q   ! &)	
 ==YR88 ro   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   )r   rU   rS  r1  r2  r   r   r6   rE   dv_dictrL   rB   r@   r   r5  r  s      rm   	call_not_zBuiltinVariable.call_not_  s     a)"))&		&&#X]]5FsB5O   a)*		Aa,(9:;#**3qww<1+<==ro   c                 ,    |j                  |d|gi       S )N__contains__r(  r  s       rm   call_containszBuiltinVariable.call_contains  s     }}R!b99ro   Tc                      y)NTrj   r   s    rm   is_python_hashablez"BuiltinVariable.is_python_hashable  s    ro   c                 ,    t        | j                        S ri   )hashr   r   s    rm   get_python_hashzBuiltinVariable.get_python_hash  s    DGG}ro   otherc                 j    t        |t        j                        xr | j                  |j                  u S ri   )r   r   r   r   )rk   r  s     rm   is_python_equalzBuiltinVariable.is_python_equal  s'    %!:!:;S588@SSro   )r  r\   r`   Nri   ){rp   rq   rr   rs   rr  	_SENTINELr>   _nonvar_fieldsclassmethodr	   r&   r   staticmethodrz  cacherJ  r   r   r   r   r   rt   r}  rQ  ru   r  r   r~  r  r  r  r  r  r  rO  r  r  r  r  r  r  r   r  r  r  r  r  r-  __annotations__r/  r%  rY  call_int
call_floatr_  rg  rs  rw  ru  rv  call_mincall_maxr  r  r  r  r  r  r  r  r  r  r  r  
call_tuple	call_listr  r  r  r  r  rH  r  r  r  r  r  r  r  r  r#  r'  r,  r0  r	  r^  r~  r  r  r  r  r  r  r  r  rs  ro  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  __classcell__)rN  s   @rm   r   r     s<    I		'	'N
 )s )F )?P ) ) __@c(38*<&= @  @D:4 : __*Xc3h%7!8 *  *X __#TfuT#Yf0E%EFF #  #J __yTf)!# !	"	
		 y  yv S#X(,_(=GK		$	& 5T 53 # $ 4# 4C "# "J1? 1o 1RV 1 T $t*  3$30?3	3 
'
15c?6J1K
	tCy$sCx.(	)
 

_-
7;C<P7Q
	
 q S#Xq +/:q CGq 	#/3&'o%&	

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

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

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

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

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

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

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

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

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

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