
    9i                       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 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-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lSmTZT ddlUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ ddl]m^Z^m_Z_m`Z`maZambZbmcZc ddldmeZemfZf ddlgmhZhmiZimjZjmkZkmlZl ddlmmnZnmoZompZpmqZq erddlrmsZs ddltmuZu  ejv        ew          Zxejy        ejz        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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j        ej~        ej        ej        ej        ej        ejz        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jy        ej{        fZej        ej        ej        ej        ej        ej        fZej        fZej        ej        ej        ej        ej        fZej        ej        ej        ej        ej        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j        d#dde
j        d         fd$            ZdS )&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TYPE_CHECKINGUnion)	sym_floatsym_int)is_sparse_any)BaseTorchFunctionMode)is_traceable_wrapper_subclass   )configgraph_break_hints	polyfills	variables)AttributeMutationErrorObservedAttributeErrorObservedUserStopIterationraise_observed_exceptionunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_sourceSource
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_argscmp_name_to_op_mappingdict_methodsextract_fake_example_valuefrozenset_methodsget_fake_valueguard_if_dynis_tensor_getset_descriptoris_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargsraise_args_mismatchset_methodsstr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorValueMutationNewVariableTrackerConstantVariable)ConstDictVariableDefaultDictVariableDictKeysVariableDictViewVariableFrozensetVariableis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)EventVariableStreamVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslatorrZ   .BUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPreturnc                  P  	
 t          t                    dk    rd S 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 ]9\  }}|D ]1}||v r ||           J t          |         k    r
t          |<   2:	 d d d            d S # 1 swxY w Y   d S )Nr   c                   l    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	dS )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                      |pi }| ||i |S Nra   )selfrb   rc   rd   re   most_recent_funcs        R/var/www/icac/venv/lib/python3.11/site-packages/torch/_dynamo/variables/builtin.py__torch_function__zKpopulate_builtin_to_tensor_fn_map.<locals>.GetMethodMode.__torch_function__   s)     \rF#4((((    )ra   N)
__name__
__module____qualname____doc__r   r	   r   dictstrrk   )ri   s   rj   GetMethodModer`      s        	 	 #%,0
	) 
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	)rl   rs   r;   )dtypec                      |           S rg   ra   )oinp0s    rj   <lambda>z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qqww rl   c                      |           S rg   ra   rv   inp0_ints    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qq{{ rl   c                      |           S rg   ra   )rv   rw   inp1s    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qqt}} rl   c                      |           S rg   ra   )rv   r{   inp1_ints    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qq8,, rl   c                      | d          S Nr   ra   rz   s    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>   s    qq1~~ rl   c                      | d          S Nr;   ra   )rv   r}   s    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    !!At** rl   c                      | d          S r   ra   )rv   r   s    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>      qqH~~ rl   c                      | d          S r   ra   rz   s    rj   rx   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  r   rl   )lenr[   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemr\   )rs   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsrw   r{   r}   r   ri   s          @@@@@rj   !populate_builtin_to_tensor_fn_mapr      s   
#$$q(( 	26) ) ) ) ) ) )- ) ) )$ :a==D:a==Dz!5;///Hz!5;///H	  E  E'""""J/$$$$$g.,,,,,k:%%%%'9:N
 "4 	@ 	@Hg @ @'333/?(,,@ %$$$ &%%%{3%%%%'9:O
 /8#3X5EF!4 	E 	EHg E E<<'333#'?'CCC4D-b1E	E3 E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  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         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/Z6dd0Z7d&d$d-ededz  fd1Z8d&d$dededz  fd2Z9d&d$d3e)e         defd4Z:d&d$d5edz  d6edz  dedz  fd7Z;e9Z<e9Z=d&d$d-edefd8Z>d&d$d-edefd9Z?d&d$d-edefd:Z@d&d$d-edededef
d;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
dAZFd&d$d@edededef
dBZG	 dd&d$d@edz  dedededz  f
dCZHd&d$d@edededef
dDZIeHZJeHZKd&d$d-ededz  fdEZLdFe	dedededz  fdGZMd&d$d-ededz  fdHZNd&d$dededefdIZOed&d$dJedededef
dK            ZPed&d$dJedededef
dL            ZQd&d$dededefdMZRd&d$dededefdNZSd&d$dededefdOZTd&d$dededefdPZUd&d$dededefdQZVd&d$d-edRedefdSZWd&d$dTedUedefdVZXd&d$d5ed6edefdWZYd&d$dedefdXZZd&d$d@edYededz  fdZZ[d&d$ded[ededef
d\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daedz  dedz  f
dbZ_d&d$d@ed`edcededz  f
ddZ`d&d$d@ed`edefdeZad&d$d@edefdfZbd&d$d@ededz  fdgZcd&d$d@edededz  fdhZdd&d$d5ededz  fdiZed&d$djedededef
dkZfd&d$dedefdlZgd&d$dmedefdnZhd&d$doedpedefdqZid&d$doedpedefdrZjd&d$d5ed6ededz  fdsZkd&d$d5ed6ededz  fdtZld&d$d5ed6ededz  fduZmd&d$d5ed6ededz  fdvZnd&d$d5ed6ededz  fdwZod&d$d5ed6ededz  fdxZpd&d$d5ed6ededz  fdyZqd&d$d5ed6ededz  fdzZrd&d$d5ededz  fd{Zsd&d$d5ed6edefd|Ztd} Zud~ Zvd Zw xZxS )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                 t    t          |                    t          j                              | ||          S Nr   )r    
make_guardr   BUILTIN_MATCH)clsr   r   s      rj   create_with_sourcez"BuiltinVariable.create_with_source.  s6    f''(BCCDDDs5((((rl   .c                  V   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,          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,          j.        t,          j/        t,          j0        t,          j1        t,          j2        t,          j3        t,          j4        t,          j5        t,          j6        t,          j7        } ddl8m9} | :                     |j;                               | :                    d tx          j=        ;                                D                        | S )Nr;   )rQ   c              3   h   K   | ]-}t          |t          t          j                            )|V  .d S rg   )
isinstancetypemathsqrt.0xs     rj   	<genexpr>z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>t  s9      WW
1d49oo8V8VW1WWWWWWrl   )>absallanyboolcallablechrcomplexdivmodfloatgetattrintr   maxminordpowreprroundrr   formatsumr   r   posnegnot_truthinvertmulr   floordivtruedivmodaddsubr   length_hintlshiftrshiftand_or_xoripowimulr   	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrQ   updatevaluesr   __dict__)fnsrQ   s     rj   _constant_fold_functionsz(BuiltinVariable._constant_fold_functions3  s,   :(
:(
:(
 :(
 	:(

 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
 :(
  !:(
" #:(
$ %:(
& ':(
( J):(
* +:(
, -:(
. L/:(
0 L1:(
2 L3:(
4 M5:(
6 N7:(
8 O9:(
: L;:(
< L=:(
> O?:(
@ A:(
B C:(
D LE:(
F LG:(
H LI:(
J K:(
L  M:(
N OO:(
P OQ:(
R MS:(
T LU:(
V LW:(
X MY:(
Z M[:(
\ ]:(
^ _:(
` a:(
b Mc:(
d Me:(
f Mg:(
h i:(
j k:(
l Mm:(
n Mo:(
p Lq:(
r Ns:(
v 	544444

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

WWdm2244WWWWWW
rl   c                 8    | j         |                                 v S rg   )r   r   rh   s    rj   can_constant_fold_throughz)BuiltinVariable.can_constant_fold_throughw  s    w$779999rl   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           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'        } | S rg   )(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    rj   _fx_graph_functionsz#BuiltinVariable._fx_graph_functionsz  s   (
L(
L(
 L(
 M	(

 O(
 L(
 L(
 O(
 (
 (
 L(
 L(
 K(
 K(
 K(
  K!(
" K#(
$ K%(
& L'(
(  )(
* O+(
, O-(
. M/(
0 L1(
2 L3(
4 M5(
6 M7(
8 9(
: ;(
< =(
> ?(
@ MA(
B MC(
D ME(
F G(
H I(
J MK(
L MM(
N LO(
R 
rl   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    rj   _binopszBuiltinVariable._binops  s    L>>>NL>>>NL>>>N???! BBB"  L>>>N555x}EL>>>NO<<<  O<<<  L>>>M/U
> 
rl   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                                                                          D ]\  }\  }}g | |<   g | |<   |\  }}}||ddd	d
t           dt           dt"          dt"          dt           ffd}| |                             t           f|f           | |                             t           f|f           |ddd	d
t           dt           dt"          dt           f
d}| |                             t           f|f           | |                             t           f|f           |ddd	d
t           dt           dt&          dt(          f         dt           f
d}	| |                             t*          t           f|	f           | |                             t           t*          f|	f           | |                             t*          t           f|	f           | |                             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                                     |           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                                     |           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                                      |           dt&          dt(          f         dtB          tD          tD          tF          tF          f         tH          f                  ffd }tK          j&                    D ]'}tO          |          sJ || vsJ  ||          | |<   (| S )!Nr;   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariablerW   rX   )forward_namereverse_nametxrZ   abr  r  r]   c                    t          |          r|                    | ||gi           S |                    | ||gi           S rg   )r   call_method)r  r  r   r  r  rX   s        rj   user_defined_handlerz=BuiltinVariable._binop_handlers.<locals>.user_defined_handler  sM    , a!455 D==\A3CCC==\A3CCCrl   )r  c                4    |                     | ||gi           S rg   r"  )r  r  r   r  s       rj   user_defined_inplace_handlerzEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB???rl   r   r   .c          
      j    ddl m}  ||  | j        j        d|gt	          ||gi           R            S Nr;   wrap_fx_proxycall_function)builderr+  outputcreate_proxyr6   )r  r  r   r   r+  s        rj   dynamic_handlerz8BuiltinVariable._binop_handlers.<locals>.dynamic_handler*  sa     322222$}*BI*'.?A.K.K    rl   c                 X    t          g |j        |                    |                     S rg   )rM   itemsunpack_var_sequencer  r  r   s      rj   tuple_add_handlerz:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerL  s-     !!G17!GQ-B-B2-F-F!GHHHrl   c                 X    t          g |j        |                    |                     S rg   )rK   r2  r3  r4  s      rj   size_add_handlerz9BuiltinVariable._binop_handlers.<locals>.size_add_handlerQ  s-       F!' FA,A,A",E,E FGGGrl   c                 X    t          g |                    |           |j                  S rg   )rM   r3  r2  r4  s      rj   rx   z1BuiltinVariable._binop_handlers.<locals>.<lambda>x  s5    ..r22" " rl   c                 t    t          g |j        |                    |           t                                S Nmutation_type)rJ   r2  r3  r=   r4  s      rj   rx   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s;    :ag: 5 5b 9 9:"2"4"4" " " rl   c                 N     t          |          g |j        |j                  S rg   )r   r2  r4  s      rj   rx   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s1    a" " rl   c                     |                                 s|                    |           sd S |                    |           }| j        j                            |           |j                            |           |S rg   )is_immutablehas_unpack_var_sequencer3  r.  side_effectsmutationr2  extend)r  r  r   seqs       rj   list_iadd_handlerz:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  su     ~~ q'@'@'D'D t''++CI"++A...GNN3Hrl   lstconstc                    t          |t                    s|                                r||}}	 t          |t                    sJ |                    |j        |                                z  t                                S # t          $ rT}t          t          |          | t          t          t          j        |j                                       Y d }~d S d }~ww xY w)N)r2  r<  rd   )r   rH   is_python_constant	__class__r2  as_python_constantr=   MemoryErrorr   r   listmapr@   createrd   )r  rF  rG  excs       rj   expand_list_likez9BuiltinVariable._binop_handlers.<locals>.expand_list_like  s    c#344 (9O9O9Q9Q ("CU!#'788888}})e&>&>&@&@@"2"4"4 %       (IIc"2"938DDEE         s   AB 
C!A	CC!r   c                 N   
 dddt           dt           dt           f fd}t          t          f|fg} t          v rt          t          f|fg}t                     }|                    t
          t           f|j        ft           t
          f|j        fg           dddt           dt           dt           f fd}|                    t           t           f|f           |S t          t          f|fg}                                 v r j	        
                    d          r  t                      d           
dddt           dt           dt           f
fd	}|}|}t          t
          t          t          f}|                    |t          f|ft          |f|fg           t                     }|                    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}	|                    t           t           f|	f           |S )Nr  rZ   r  r   r]   c                    	 t           |j        |j                            S # t          $ rT}t          t	          |          | t          t          t           j        |j                                       Y d }~d S d }~ww xY w)NrI  )	r@   r   	TypeErrorr   r   rN  rO  rP  rd   )r  r  r   rQ  r   s       rj   compare_by_valuezYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  s    +BBqw,@,@AAA    ,S		!#&6&=sx"H"HII         s   "& 
BA	A??Bc                 r    |                      t          j        | t                             ||gi           S rg   )inline_user_function_returnr>   buildpolyfill_fn_mappingr  r  r   r   s      rj   handlerzPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handler  s=     99'-b2Eb2IJJQPQFTV  rl   is_c                 "    t                    S rg   r?   )r  r  r   none_results      rj   neverzNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.never  s     ,K888rl   c                 J    t           |j        |j                            S rg   )r@   r   r[  s      rj   rx   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>8  s    -=bbqtnn-M-M rl   c                     t           | j                            |j                  | j                            |j                                      S rg   )r@   r.  get_submodule
module_keyr[  s      rj   rx   zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>?  sK    -= "$&I$;$;AL$I$I$&I$;$;AL$I$I!" !". . rl   leftrightc                    t          |          t          |          urt          j        j        dk              S ||u rt          j         ||                    S t	          |t
          j                  rFt	          |t
          j                  r,|j        |j        urt          j         ||                    S d S )Nr]  )r   r@   rP  rm   r4   r   ExceptionVariableexc_type)r  re  rf  r   s      rj   	handle_iszRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_ish  s     Dzze44/6r{e7KLLLu}}/6rr$GGGtY%@AAH"5)*EFFH !M??/6rr$GGG4rl   )r>   r@   rZ  r   rC  rR   _comparison_with_symnodeappendr   rm   
startswithobjectrS   rH   rA   rO   rN   _comparison_with_tensor)r   rV  resultop_varr\  r`  obj_op_nonenone_op_objtypes_that_are_never_nonerj  r_  r  r  r  r  rW   rX   r  r  s   `         @rj   create_cmp_op_handlersz?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s   
+
0?
DS
 
 
 
 
 
 
( $%568HIJ  ((( -.>?AQRS(,, -o>";
 -o>";	  /4CHW$      A7KLLL(*:;=MNOF3::<<<<AWAWB B< !b4009/94C9HW9$9 9 9 9 9 9
 $# ##$$',%%	-)  78HI'
 ./HI'	   ),, "6 G!5 G NMMM !1 0    78QR,
 67OP, "0@P Q!/@P Q - ,_=":
 -n=":
 -o>";
 -o>";_35 5 5n / )  +  %t+	           & A9MNNNMrl   )(	functionsr  r  	nn_moduler  r   r  r   r  user_definedr  rW   rX   r   r  r2  r>   rr   rl  r   r	   rR   rH   rK   rM   r@   rJ   rI   r   r   rC  r   r   rN  tuple_TrackersType_HandlerCallbackrQ   r   r   )op_handlersr   magic_method_namesin_place_opr  r  inplace_namer#  r&  r0  r5  r7  list_like_addition_handlersrE  list_like_iadd_handlersrR  list_like_expansion_handlersru  r  r  r  r  rW   rX   r  r  s                     @@@@@@@@rj   _binop_handlerszBuiltinVariable._binop_handlers  s   $ 	NMMMMMMM//////::::::,,,,,,	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 -/ $$&&,,..Z	 Z	 
- KO')K$7I4L, %1$0D D D+D"D #D
 "D "D !D D D D D D6 O""%79MN   O""!#679MN   %1@ @ @+@"@ #@
 "@ !@ @ @ @ $++%79UV   $++!#679UV   *,  +" #
 S#X& !     O""!?3_E   O""!?3_E  
 $++!?3_E   $++!?3_E   	I'	I,<	IAP	I	I 	I 	I 	I
	H'	H,<	HAP	H	H 	H 	H 	H$ |, 
 }- 
 - 
 .!
  01!
 "=1  !%'79MN 	 "#34 W4
 	$z 	HL!(()DEEE
	'
	,<
	AP
	
	 
	 
	 
	 /!
 .!
  01!.
 	HM"))*ABBB	'	.=	FU		 	 	 	0 ,-/?@-.0@A-/?@.0@A	
 	% 	HL!(()EFFFl	c"l	%m]:;=MMNOl	 l	 l	 l	 l	 l	 l	 l	 l	 l	 l	 l	 l	\ +133 	9 	9BB<<[((((44R88KOOrl   r   a_typeb_typeNc                     t                                                               |           }|d S g }|D ]=\  \  }}}t          ||          r%t          ||          r|                    |           >|S rg   )r   r  get
issubclassrl  )r   r  r  handlersmatchestype1type2r\  s           rj   _find_binop_handlerz#BuiltinVariable._find_binop_handler  s     #224488<<4'/ 	( 	(#NUEG&%(( (Z-F-F (w'''rl   c                 8    | j         |                                 v S rg   )r   r   r   s    rj   can_insert_in_graphz#BuiltinVariable.can_insert_in_graph  s    w$224444rl   re   c                 H     t                      j        di | || _        d S )Nra   )super__init__r   )rh   r   re   rK  s      rj   r  zBuiltinVariable.__init__  s+    ""6"""rl   c                 R    | j         d}n| j         j        }| j        j         d| dS )NNone())r   rm   rK  )rh   names     rj   __repr__zBuiltinVariable.__repr__  s6    7?DD7#D.)33D3333rl   c                     | j         S rg   r'  r   s    rj   rL  z"BuiltinVariable.as_python_constant  s	    wrl   c                     t           t          j         t          t          j        t          t          j        i}| j        |v r|| j                 S t                                                      S rg   )	r   r   r   int64r   float64r   r  as_proxy)rh   DTYPErK  s     rj   r  zBuiltinVariable.as_proxy  sP    %*5=

 7e>!ww!!!rl   codegenrY   c                     | j         j        }| j         j        dk    sJ ||j        j        vs
J d            |                    |                    |d                     d S )Nbuiltinszshadowed globalT)r   )r   rm   rn   r  	f_globalsappend_outputcreate_load_global)rh   r  r  s      rj   reconstructzBuiltinVariable.reconstruct  sn    ww!Z////7:////1B///g8848HHIIIIIrl   rd   c                 "    t          ||          S rg   )r(   rh   rd   re   s      rj   constant_argszBuiltinVariable.constant_args  s    "4000rl   c                 z    d}|D ]5}t          |t          j                  r dS |p|                                }6|S NF)r   r   GetAttrVariable	is_tensor)rh   rd   
any_tensorargs       rj   tensor_argszBuiltinVariable.tensor_args  sL    
 	7 	7C#y899 uu#6s}}JJrl   	arg_typesc                     d}|D ];}t          |t          j                  r dS |pt          |t          j                  }<|S r  )r  r   r  rS   )rh   r  r  arg_types       rj   tensor_args_typez BuiltinVariable.tensor_args_type  sS    
! 	V 	VH(I$=>> uu#Uz(I<T'U'UJJrl   c                 "   g }g }t          j        ||                                          D ]A}|                                r|                    |           ,|                    |           Bt          d |D                       o	 | j        | S )Nc              3   P   K   | ]!}|j         t          |j                   ndV  "d S r  )r   r%   )r   ts     rj   r   zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  sM       
 
 -.H,@qx(((e
 
 
 
 
 
rl   )	itertoolschainr   r  rl  r   r  )rh   rd   re   r  non_tensor_argsis         rj   python_and_tensor_constant_onlyz/BuiltinVariable.python_and_tensor_constant_only  s     v}}77 	* 	*A{{}} *""1%%%%&&q)))) 
 
 
 
 
 
 
 3 !d /2	3rl   c                 V    d | D             d |                                 D             fS )Nc                 6    g | ]}|                                 S ra   rL  r   s     rj   
<listcomp>z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<listcomp>  s$    5551$$&&555rl   c                 >    i | ]\  }}||                                 S ra   r  r   kvs      rj   
<dictcomp>z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<dictcomp>  s7     8
 8
 8
*.!QAq##%%8
 8
 8
rl   )r2  )rd   re   s     rj   unwrap_unspec_args_kwargsz)BuiltinVariable.unwrap_unspec_args_kwargs  sC     65555 8
 8
28,,..8
 8
 8
 
 	
rl   c                 J    |                                  ot          ||          S rg   )r   r*   r  s      rj   has_constant_handlerz$BuiltinVariable.has_constant_handler  s/     --// 
4Q&5
 5
 	
rl   
has_kwargsrZ   c           	      ^   	
 ddl m t                     g t          fdD                       rfdS t	          j                   rZt           t                    s	 t          u r<dddt          t                   dt          t          t          f         d	t          f fd
}|S                                 rf t          j        u r t          d         t           j                  r8                              rj        S r                    j                   t+                    dk    ryswt          j         gR  

snbt+          
          dk    r
\  	                    	fd           n2dddt.          dt.          d	t.          f
fd}                    |           t1          d j         d           rTdddt          t                   dt          t          t          f         d	t          d z  f fd}                    |                                           rt7          d D                       r@s>dddt          t                   dt          t          t          f         d	t          d z  f fd}n=dddt          t                   dt          t          t          f         d	t          d z  f fd}                    |           dt          t                   d	d f fdt+                    dk    rfdS t+                    dk    rC\  dddt          t                   dt          t          t          f         d	t          d z  ffd}n>dddt          t                   dt          t          t          f         d	t          d z  ffd}|S )Nr;   )LazyVariableTrackerc              3   8   K   | ]}t          |          V  d S rg   )r  )r   r  r  s     rj   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>  s.      EEaz!011EEEEEErl   c                 F                         | d |D             |          S )Nc                 6    g | ]}|                                 S ra   realizer   r  s     rj   r  zCBuiltinVariable._make_handler.<locals>.<lambda>.<locals>.<listcomp>  s     ///QQYY[[///rl   )r,  )r  rd   re   objs      rj   rx   z/BuiltinVariable._make_handler.<locals>.<lambda>  s-    C,=,=//$///- - rl   r  rZ   rd   re   r]   c                     t           u rEt          d |D                       s,t          dt          |          dg t          j                   t          j        ||          S )Nc              3      K   | ]?}|                                 o&t          |                                t                    V  @d S rg   )rJ  r   rL  rr   r   s     rj   r   zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>	  s^       4 4 ((**Vz!:N:N:P:PRU/V/V4 4 4 4 4 4rl   zassert with non-string messagez1Dynamo only supports asserts with string messagesgb_typecontextexplanationhints)AssertionErrorr   r   rr   r   SUPPORTABLEr   rh  )r  rd   re   r   s      rj   create_exception_class_objectzDBuiltinVariable._make_handler.<locals>.create_exception_class_object  s    
 '' 4 4!4 4 4 1 1' " @ #D		$W> 1 =>	    !22tVDDDrl   r   r   c                      | g|R  S rg   ra   )r  rd   _binop_handlers      rj   rx   z/BuiltinVariable._make_handler.<locals>.<lambda>+  s    MM"4Lt4L4L4L rl   r  c                 0    D ]} || g|R  }|r|c S d S rg   ra   )r  rd   r  r   rvbinop_handlerss        rj   call_binop_handlersz:BuiltinVariable._make_handler.<locals>.call_binop_handlers.  sB     - & &R]T]]] &#%III&4rl   call_c                     	  | g|R i |S # t           $ r 	  t          j                  j        | g|R i |  # t           $ rn}                    ||          }|sLt
                              d|           t          dd d| d| dj         g t          j
                   Y d }~nd }~ww xY wY nCt          $ r7}                    ||          }|s |                                 Y d }~nd }~ww xY wd S )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  )rU  inspect	signaturebindr  logwarningr   rm   r   	DIFFICULTr   remove_from_stats)	r  rd   re   er  rQ  r   r  self_handlers	         rj   call_self_handlerz8BuiltinVariable._make_handler.<locals>.call_self_handler=  s   
,'<<T<<<V<<<    <),77<RQ$QQQ&QQQ   %   /2/G/Gf/U/U,3 KK S , !  
 *(L(Z<(Z(Z4(Z(ZRX(Z(Z,k^`^i,k,k&D(9(C&D	     # , , ,+.+C+CD&+Q+Q(/ ))++++++++, tsB    
C;#>C;
B6A$B1,C;1B66C;;	C;-C66C;c              3   @   K   | ]}t          |t                    V  d S rg   )r  r@   r   s     rj   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>g  s-      GGJq"233GGGGGGrl   c                    	  d |D              }n# t           $ rS}t          t          |          | t          t	          t
          j        |j                                       Y d }~n@d }~wt          $ r0}t          dd d| dg t          j        |           Y d }~nd }~ww xY wt          j        | |          S )Nc                 6    g | ]}|                                 S ra   r  r   s     rj   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>s  s$    CCCa2244CCCrl   rI  constant fold exceptionattempted to run function  with arguments 7Encountered exception when attempting to constant fold.r  r  r  r  from_exc)	Exceptionr   r   rN  rO  r@   rP  rd   r<   r   r   
DYNAMO_BUGr>   rY  r  rd   re   resrQ  r   s        rj   constant_fold_handlerz<BuiltinVariable._make_handler.<locals>.constant_fold_handlerk  s%    bCCdCCC %   0 II!%c*:*A38&L&L!M!M        
 ?   %$=$[$[$[UY$[$[(a"A$5$@"A%(         +0S999s!    
B(A	A++B(8&B##B(c                    t          ||          r	  d |D             i d |                                D             }n# t          $ r0}t          dd d| dg t          j        |           Y d }~ncd }~wt          $ rS}t          t          |          | t          t          t          j        |j                                       Y d }~nd }~ww xY wt          j        | |          S d S )	Nc                 6    g | ]}|                                 S ra   r  r   s     rj   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>  s$    !G!G!GQ!"6"6"8"8!G!G!Grl   c                 >    i | ]\  }}||                                 S ra   r  r  s      rj   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<dictcomp>  s7     #" #" #"BF!QAq';';'='=#" #" #"rl   r  r  r  r  r  rI  )r*   r2  r<   r   r   r  r  r   r   rN  rO  r@   rP  rd   r>   rY  r  s        rj   r  z<BuiltinVariable._make_handler.<locals>.constant_fold_handler  sm    5T6BB >"$"!G!G$!G!G!G##" #"JP,,..#" #" #"# #CC  C   )(A(_R(_(_Y](_(_,e&E(9(D&E),          )   4 $S		 "%)#.>.Esx*P*P%Q%Q          /4R===4s$   .A 
C&A77CA	CCc                     d | D             }t          ddj         d d dj         d| d dd	j         d| d
j         dddg           d S )Nc                 6    g | ]}|                                 S ra   )python_type_namer   r  s     rj   r  zMBuiltinVariable._make_handler.<locals>.call_unimplemented.<locals>.<listcomp>  s$    EEEc2244EEErl   z 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  )r   rm   )rd   real_arg_typesr  r   r  s     rj   call_unimplementedz9BuiltinVariable._make_handler.<locals>.call_unimplemented  s    EEEEEN:I2;IIIIZIIRSUS^ R R'5R RDNR R Rdbk d dQ_ d dTVT_d d de8     rl   c                      |          S rg   ra   )r  rd   re   r  s      rj   rx   z/BuiltinVariable._make_handler.<locals>.<lambda>  s    ,>,>t,D,D rl   c                 @     | ||          }|r|S  |           |S rg   ra   )r  rd   re   r  r  r\  s       rj   builtin_dispatchz7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s;    
 WRv.. I""4(((	rl   c                 R    d }D ]} || ||          }|r|c S  |           |S rg   ra   )r  rd   re   r  r   r  r  s        rj   r	  z7BuiltinVariable._make_handler.<locals>.builtin_dispatch  sX    
 " " "BBf--B "!			"""4(((	rl   )lazyr  r   r   r  isclassr  r  GeneratorExitr   r>   rq   rr   r  r   r   r   rS   r  _handle_insert_op_in_graphrl  r   r  r	   r   rm   r   r   )r   r  r  r  r  r  r  r	  r  r  r  r  r\  r  r  r  s   ```     @@@@@@@@rj   _make_handlerzBuiltinVariable._make_handler  s"    	.-----b!!+-EEEE9EEEEE 	     ?2 	1r9%%	1
 ]""E+E/E S/12E !	E E E E E E$ 10""$$ 	@("""y|Y-EFF # ##I.. @55 @ >??? y>>Qz,@PiPPPN! 5^$$))#1  L L L LMMMM / 7: ?B              3444s$9BK$9$94@@ (	/$+$/$ S/12$ !4'	$ $ $ $ $ $ $ $L OO-...((** C	3GGYGGGGG@ "@ 
:/:"?3: !o!56: %t+	: : : : : : :: / "?3  !o!56  %t+	           @ OO1222	Xo%> 	4 	 	 	 	 	 	 	 	  x==ADDDDD]]a!JW	+	/	 S/12	 !4'		 	 	 	 	 	 	 	+/ S/12 !4'	        rl   r  c                 4   t          |          dk    r.t          dd|  d| d| j         dg t          j                   t          |          dk    sJ 	 |d                             |d	          S # t          $ r t          t          |           Y d S 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   rU  rh   r  rd   s      rj   	call_varszBuiltinVariable.call_vars  s    t99>>K.....mRVRYmmm6)56	    4yyA~~~~	47&&r:666% 	4 	4 	4$Y333333	4s   A4 4BBc           
         ddl m}m} |r# | j        g ||                                R  sd S ddl m} ddlm}m}  ||||          r|j	        st                       |d                                         sL| j        t          v rt          | j                 }	nt          | j                 }	|d         }
|d         |d<   |
|d<   nt          | j                 }	n| j        }	|                    ||	          } |||||          S | j        }	  | j        |i |r)ddlm} ddlm}  ||| ||j                  ||          S |t,          v r=t/          |d         t0          j                  rt,          |         }|d         |d         g}|t4          j        u rUt/          |d         t8                    r:t:          j        }|d         t0          j                            d          |d         g}t?          ||          r_tA          d	 |D                       sF |j!        j"        d
tG          |          gtI          ||          R  } |t0          j%        ||          S |t4          j&        u r`tO          |          dk    rM|d                                         r3|d         (                    |dtS          |dd                    |          S  |j!        j"        d
|gtI          ||          R  }tA          d |D                       r |tT          ||          S tW          ||          rt| ,                    ||          \  }} ||i |}tA          d t[          j.        ||                                          D                       } |t^          ||||          S ta          d |D                       rt9          j        ||d           S |t4          j1        u rLt/          |d         t0          j/                  r,tS          |          }|d         2                                |d<    |||          S # tf          $ r5 ti          dd|  d| d| d| j         dg tj          j6                   Y d S 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   B   K   | ]}t          |          t          u V  d S rg   )r   rS   r  s     rj   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>:  sF       B B03S		^+B B B B B Brl   r,  __eq__c              3   @   K   | ]}t          |t                    V  d S rg   r   rP   r  s     rj   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>O  s-      EE:c#344EEEEEErl   c              3   X   K   | ]%}t          |t          j                  |j        V  &d S rg   r   r   rT   need_unwrapr   s     rj   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>Y  K       " "!!Y%JKK"M" " " " " "rl   )	raw_valuer"  c              3   @   K   | ]}t          |t                    V  d S rg   r   rR   r   s     rj   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>f  s,      BBZ?33BBBBBBrl   z,unimplemented builtin op on tensor argumentszpartial tensor op: r  r  z with tensor argumentsr  )7r-  r+  r  r  r   r  torch_functionr  r  exportr   r  r   r\   r[   rP  r  bytecode_transformationr  rv  r  rm   IN_PLACE_DESUGARING_MAPr   r   r@   r   r   rR   r   selectr)   r   r.  r/  r5   r6   NumpyNdarrayVariabler   r   r"  rN  rP   r+   r  r  r  rT   r   r   rL  NotImplementedErrorr   r   r  )rh   r  rd   re   r+  r  r  r  r  rb   tmpfn_varr   r  r  proxy_args_kwargsr$  r"  s                       rj   r  z*BuiltinVariable._handle_insert_op_in_graph  s    	>======= 	*$*CDC6==??CCC 	4 	/.....XXXXXXXX '&r488 	E 9 1333Aw((** =w";;;8A7@q'C"1gDG!DGG3DG<DDw&--b$77F**2vtVDDDWc	3t3TDVDD ??????CCCCCC33IIbk22D&   ,,,Q32 2, -R0Qa)X%%%*T!Wo*N*N% \G.55a88G (f55 	Tc B B7;B B B ? ? 	T /	.#*2.. 'tV44   )()GUSSSX[  SYY!^^Q8I8I8K8K^ Aw**2xd122hPPP*BI* #400  E
 EEEEEEE !0(($  
 *$77 0!%!?!?f!M!MwB111	! " "&_T6==??CC" " "   )(/' +    BBTBBBBB 
0&-b%>>> )))jGYB/ /)  ::D"1g88::DG$}R///" 	 	 	FDdDDTDDFDDqRVRYqqq6)56	      	s;   
5P,  DP, A-P, AP, BP, .P, A%P, ,;Q+*Q+call_function_handler_cachec                 p   |r6d |                                 D             }| j        gd |D             dR }n| j        gd |D             R }| j                            |          }|s=|                     | j        d |D             t          |                    x| j        |<   }|J  ||||          S )Nc                 >    i | ]\  }}||                                 S ra   r  r  s      rj   r  z1BuiltinVariable.call_function.<locals>.<dictcomp>  s&    @@@Aa@@@rl   c              3   4   K   | ]}t          |          V  d S rg   r   r   s     rj   r   z0BuiltinVariable.call_function.<locals>.<genexpr>  (      44!d1gg444444rl   Tc              3   4   K   | ]}t          |          V  d S rg   r7  r   s     rj   r   z0BuiltinVariable.call_function.<locals>.<genexpr>  r8  rl   c                 ,    g | ]}t          |          S ra   r7  r   s     rj   r  z1BuiltinVariable.call_function.<locals>.<listcomp>  s    000a$q''000rl   )r2  r   r3  r  r  r   )rh   r  rd   re   keyr\  s         rj   r,  zBuiltinVariable.call_function  s      	6@@@@@F7;44t444;d;;CC7544t44455C266s;; 	>B>P>P004000$v,,? ? D,S1G """wr4(((rl   r  c                    | j         t          u r|dk    rt          |          dk    sJ t          |          dk    sJ |\  }}}|                                }t	          |t
                    rJ|j        j                            |          r+|	                                r|
                    |||          S |dk    ro| j         t          u rWt          |          dk    rDt          |          dk    sJ |j        j                            | |d         |dd                    S | j         t          u rt          |          dk    r|st          i t          t                                }t	          |d         t                    r|d         j         t          u r|S |j        j                            | |d         |dd                    S | j         t           u rt          |          dk    r|d                             |          r|st	          |d         t                    rQ|d         j         t           u r=|d                             |          }	t'          j        |	t                                S |j        j                            | |d         |dd                    S | j         t*          u r}t-          g t                                }
t	          |d         t                    r|d         j         t*          u r|
S |j        j                            | |d         |dd                    S | j         t.          t0          fv rt          |          dk    r| j         t.          u r|dv s|d	k    rt2          j        d
k    r|d         	                                r	 t7          | j         |          } ||d                                                   }t&          j                            |          S # t>          t@          f$ rS}tC          tE          |          |t+          tG          t:          j        |j$                                       Y d }~nd }~ww xY w| j         t          u r|dk    rt'          j        d           S | j         t          u r!|dk    rt          j%        |t          g|R i |S | j         t          u rt7          | j         |          }|tL          v rt	          |d         t&          j'                  r+|d         j(        )                    |||dd          |          S t	          |d         t&          j                  r&|d         )                    |||dd          |          S | j         tT          u rt7          | j         |          }|tV          v rt	          |d         t&          j,                  r+|d         j-        )                    |||dd          |          S t	          |d         t&          j.                  r&|d         )                    |||dd          |          S | j         t^          u rdt7          | j         |          }|t`          v rFt	          |d         t&          j1                  r&|d         )                    |||dd          |          S | j         td          u rrt          |          dk    r_t7          | j         |          }|tf          v rAt	          |d         t:                    r&|d         )                    |||dd          |          S | j         t.          u rvt          |          dk    rct	          |d         t:                    rHt;          j         t7          t.          |          |d                                                             S ti                      )                    ||||          S )N__setattr__   r   __new__r;   r;  r   )fromhexhexfrom_numberr>     rI  r  fromkeys)5r   rn  r   r  r   rW   r.  rA  is_attribute_mutationrJ  method_setattr_standardtrack_new_user_defined_objectrq   rA   r=   r   ry  has_force_unpack_var_sequenceforce_unpack_var_sequencer   rM   rN  rJ   r   r   sysversion_infor   rL  r@   rP  OverflowError
ValueErrorr   r   rO  rd   call_custom_dict_fromkeysr-   rV   _dict_vtr"  setr8   UserDefinedSetVariable_set_vtrG   	frozensetr/   rE   rr   r9   r  )rh   r  r  rd   re   r  name_varvaldict_vt	init_argslist_vtr   r  r  resolved_fnrK  s                  rj   r"  zBuiltinVariable.call_method  sw    7f!6!6t99>>>>v;;!####!%C3++--C3 9::FI*@@EEF //11F
 222xEEE9w&  SYY!^^6{{a''''y-KK$q'48   w$3t99>>&>+BDTDVDVWWWd1g77 #DGJ$<N<N"N y-KKGH   5  IINNG99"== # # d1g77 DGJ%<O<O $Q A A" E EI$2!1A1C1C    y-KKGH   w$&r9I9K9KLLLd1g77 #DGJ$<N<N"Ny-KKGH   Gw'''D		QE!!d.@&@&@M))c.>'.I.I Aw))++ 
	 $//B"T!W7799::C$5<<SAAA%z2   ,Q!#&6&=qv"F"FGG         7f!3!3-d3337d??tz11"<RWWWWPVWWW7d??!$'400Kl**d1gy'HII K7+77D$qrr(FSSSQ)DEE K7..r4abb6JJJ7c>>!$'400Kk))d1gy'GHH K7?66r4abb6RRRQ)>?? K7..r4abb6JJJ7i!$'400K///d1gy'BCC K7..r4abb6JJJ7c>>c$ii1nn!$'400Kk))d1g'788 K7..r4abb6JJJ7eD		Q$q'#344 '.(GE4((a)C)C)E)EFF   ww""2tT6:::s   AO3 3QA	QQr  c           	      p   |                                 st          |t                    r|                                 r|                    |dg i           }n|}| j        t
          u rt          nt          }ddlm	}  |||j
                            d||                                fi                     S d S )Nitemr   r*  r,  r  r0  )r  r   rR   r"  r   r   r   r   torch._dynamo.variables.builderr+  r.  r/  r  )rh   r  r  r\  fn_r+  s         rj   _call_int_floatzBuiltinVariable._call_int_float"  s    
 ==?? 	jo>> 	}} r62r::!W^^''CEEEEEE =i,,#]]__&	     trl   c                 "   t          |t                    ryt          |j        t          j                  r|S t          |j        t          j        t          j        f          sJ t          j        ||	                                dk              S d S r   )
r   rR   sym_numr   SymBoolr4   SymIntSymFloatrP  r  rh   r  r  s      rj   	call_boolzBuiltinVariable.call_bool=  s~    
 c?++ 	C #+u}55 

 #+en'EFFFFF")"cllnn.ABBB trl   c                 \   t          |t          j                  r|j        j        }t          |j                  j        t          j        u r,t          j        ||          }|	                    |g i           S |j
        }t          j        ||          }|	                    ||gi           S dS )z&Handle repr() on user defined objects.N)r   r   rW   r   r  r   rn  r>   rY  r,  __func__)rh   r  r  repr_methodfn_vtbound_methods         rj   	call_reprzBuiltinVariable.call_reprR  s    c9>?? 	:),KCI'6?::'-b+>>**2r2666  +3'-b,??**2ub999	: 	:rl   c                    t          |t          j                  r2t          j                            t          |j                            S t          |t          j                  rkt          |j	        d          r|j	        j
        }nNt          |j	        d          r|j	        j        }n,t          dt          |          dg t          j                   t          |j	                  j
        t           j
        u r:	 t          j                             |                      S # t"          $ r Y d S w xY wt%          |          r*t          ddt          |j	                   d	d
g           n|j        }	 t)          j        ||          }n-# t,          $ r  t.                              dd           Y d S w xY w|                    ||gi           S t          |t          j        f          ret7          |j                  dk    r	|j         }n$d                    d |j        D                       }t          j                            |          S d S )N)r   __str__r  z+failed to call str() on user defined objectz5User defined object has no __str__ or __repr__ methodr  z0Attempted to a str() method implemented in C/C++ z5 has a C/C++ based str method. This is not supported.zWrite the str method in Pythonz%Failed to create UserFunctionVariableT)exc_infor   , c              3   >   K   | ]}|                                 V  d S rg   r  )r   r  s     rj   r   z+BuiltinVariable.call_str.<locals>.<genexpr>  s.      !K!KQ!"6"6"8"8!K!K!K!K!K!Krl   )r   r   r  r@   rP  rr   r   rW   hasattrr   ro  r  r   r   
USER_ERRORr   rn  AttributeErrorr3   ri  r>   rY  r  r  r  r,  rh  r   rd   ri  join)rh   r  r  
str_methodrl  user_func_variabler   s          rj   call_strzBuiltinVariable.call_stra  sh    cI:<< 5	B-443sv;;4GGGiACC 3	Bsy),,  Y.

J// 	 Y/

IHH W9-89	    CI&&.88 $5<<::<<<PPP%      44  1<< GN#'	?? i i i;<	      *2 )8)>r<)P)P&&%      KK GRVKWWW44  *77SE2FFFi9;<< 	B38}}!!<)		!K!K#(!K!K!KKK-4454AAAts$   >'D& &
D43D48F &F87F8c                    t          |          dk    rL|d                             |          r1|d                             |          }|                     ||          S t          |          dk    r#|                     ||d         |d                   S t          |          dk    r|                     ||          S d S )Nr;   r   r   )r   rI  rJ  _call_min_max_seq_call_min_max_binary)rh   r  rd   r2  s       rj   _call_min_maxzBuiltinVariable._call_min_max  s     t99>>d1gCCBGG>G55b99E))"e444YY!^^,,Ra$q'BBBYY]]))"d333trl   r2  c                     t          |          dk    sJ t          |          dk    r|d         S t          j        t          j        | j        |          |          S Nr   r;   )r   	functoolsreducepartialr}  )rh   r  r2  s      rj   r|  z!BuiltinVariable._call_min_max_seq  sS     5zzA~~~~u::??8O	 1$2KR P PRWXXXrl   r  r   c                    ||d S |                      ||          r2|                                s||}}|                                sJ t          |t                    r4t	          j        t          j                                      ||gi           }t          |t                    st          |t                    rHddl
m}  |t          |          | |j        j        d| j        gt!          ||gi           R            S |                                rt          |t          j                  rdd l}t	          j        |j                  }nt	          j        t          j                  }| j        t.          u rd|ind|i}|                    ||g|          }nt          |t          j                  r>dd l}t.          |j        t2          |j        i| j                 }	t	          j        |	          }nCt.          t          j        t2          t          j        i| j                 }
t	          j        |
          }|                    |||gi           }t7          d ||fD                       rt9          d	 ||fD                       rt          j                            |          S |                                r|                                }n|j        }| j        t.          u rt/          |j        |          }nt3          |j        |          }t9          d
 ||fD                       }t          j                             |||          S |S t          |t                    st          |t                    r`| j        t.          u rt          j!        nt          j"        } |j        j        d|gt!          ||gi           R  }t          j#        ||d           S t          |tH                    rct          |tH                    rN|                     |                                |                                          }tI          j#        |          S d S )Nr;   r  r,  r]  r   r   r   c              3   b   K   | ]*}t          |t          j        t          j        f          V  +d S rg   )r   r   rT   r@   )r   r  s     rj   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  sV       	 	  !=!2 	 	 	 	 	 	rl   c              3   @   K   | ]}t          |t                    V  d S rg   r  )r   rV  s     rj   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s-      KKSz#'788KKKKKKrl   c              3   X   K   | ]%}t          |t          j                  |j        V  &d S rg   r!  r   s     rj   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  r#  rl   )%r  r  r   rP   r   TorchInGraphFunctionVariabler   r   r,  rR   r-  r  r   r.  r/  r   r6   rJ  r,  numpyNumpyVariableclipclampr   maximumr   minimumr   r   from_tensor_variablerL  r$  rT   sym_maxsym_minrP  r@   )rh   r  r  r   r  npr   re   rp  np_fntorch_fnraw_braw_resr"  py_fnr0  r   s                    rj   r}  z$BuiltinVariable._call_min_max_binary  st    9	 4Aq!! \	2;;== !1;;==    !-.. :5<HHVVR 
 !_-- A1O1O 666666((GG0")0' +Aq6266      ##%% :a!?@@ M&&&&"099BB"?LLB(,3%eQZ))"qc6::a!?@@ J&&&& "*c2:>twGE"077BB #U]CGPH"?IIB))"q!fb99  	 	 Q	 	 	 	 	   KKQFKKKKK S$5JJ6RRR'')) (0022EEKE7c>>!!+u55GG!!+u55G! " "V" " "  
 !<QQG[  
 ?++ 	2z!_/M/M 	2%)W^^EMME*BI*):Aq62)F)F  E #)"eT:::+,, 	2A?O1P1P 	2GG$$&&$$&& E $*5111trl   c                     t          t                                        ||t          j        d          gi           }|                    |g i           S )N__abs__r   r   r,  r@   rP  )rh   r  r  
abs_methods       rj   call_abszBuiltinVariable.call_abs  S     %W--;;&-i8892
 

 ''B333rl   c                     t          t                                        ||t          j        d          gi           }|                    |g i           S )N__pos__r  )rh   r  r  
pos_methods       rj   call_poszBuiltinVariable.call_pos'  r  rl   c                     |                                 rt          dddg            t          |          }t          j        |          }t
          j                            |          S )Nzunsupported index(Tensor)rp  z;Dynamo does not support tracing builtin index() on a Tensorr  )r  r   r1   r   r   r   r@   rP  )rh   r  r  constant_values       rj   
call_indexzBuiltinVariable.call_index0  sl     ==?? 	3Y	    3!,,)00@@@rl   c                     t          t                                        ||t          j        d          gi           }|                    |||          S )N	__round__r  )rh   r  r  rd   re   round_methods         rj   
call_roundzBuiltinVariable.call_round?  sS     'w//==&-k::;R
 
 ))"dF;;;rl   c                     t          |i           rt          j        |          S  | j        | r-t	          d |D                       }t          j        |          S d S )Nc              3   n   K   | ]0}t           j                            t          |                    V  1d S rg   )r   r@   rP  r1   r  s     rj   r   z-BuiltinVariable.call_range.<locals>.<genexpr>R  sL        IL	*11,s2C2CDD     rl   )r*   r   RangeVariable_dynamic_argsry  r  s      rj   
call_rangezBuiltinVariable.call_rangeL  s|     )r22 	1*4000T& 	1  PT    D *4000trl   c                     t          d |D                       p*t          d |                                D                       S )Nc              3   @   K   | ]}t          |t                    V  d S rg   r&  r   s     rj   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>Z  s,      @@a:a11@@@@@@rl   c              3   @   K   | ]}t          |t                    V  d S rg   r&  r   s     rj   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>Z  sE       H
 H
/0Jq/**H
 H
 H
 H
 H
 H
rl   )r   r   r  s      rj   r  zBuiltinVariable._dynamic_argsY  s]    @@4@@@@@ 
C H
 H
4:MMOOH
 H
 H
 E
 E
 	
rl   c                 ,    t          j        ||          S rg   )r   SliceVariabler  s      rj   
call_slicezBuiltinVariable.call_slice^  s     &tR000rl   c           
      p    ddl m}  || |j        j        d| j        gt          ||          R            S r)  )r-  r+  r.  r/  r   r6   )rh   r  rd   re   r+  s        rj   
_dyn_proxyzBuiltinVariable._dyn_proxyc  s_     	+*****}"BI"+<T6+J+J  
 
 	
rl   r  c                 X   t          |t          j                  rJ  | j        |i |r | j        |g|R i |S t          j                            | j                  }| |g t                                S |	                    |          r|j
        rYt          |j
                  sDt          |t                    r2t          |j
                            t          j                             nt#          |dd          rUt          |t$                    r@t'          |t(          t*          f          s$|j        j                            |j
                   t          |t          j                  r2t          |j
                            t          j                             nKt          |t          j                  s1t          |j
                            t          j                              |t;          |                    |                    t                                S d S )Nr;  r   F)r   r   IteratorVariabler  r  rH   cls_forr   r=   r@  r   r%   rL   r    r   r   TUPLE_ITERATOR_LENr   rA   r4   rG   rE   r.  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHrN  r3  rh   r  r  rd   re   r   s         rj   _call_iter_tuple_listz%BuiltinVariable._call_iter_tuple_listp  s;    c9#=>>>>>4t.v.. 	8"4?27777777(0099;3.00    ((,, 	z "4SZ"@"@ c#899 !
--l.MNN   
  Xu55E&s,=>>E !'s[:K,L M ME
 	488DDD!#y'EFF  &J11,2QRR    (Y-TUU  &J11,2NOO   3S,,R0011.00    trl   c                     t           j                            | j                  } |t	          |                    |                    t                                S r:  )r   rH   r  r   rN  rJ  r=   r  s         rj   _call_iter_tuple_generatorz*BuiltinVariable._call_iter_tuple_generator  sW     (0099s..r2233*,,
 
 
 	
rl   c                    t          |t          j                  r]t          j                            | j                  } |t          |                    |                    t                                S t          |t          j	                  s*t          |t                    r'|                    |          r | j        ||g|R i |S  | j        ||g|R i |S r:  )r   r   r  rH   r  r   rN  rJ  r=   LocalGeneratorObjectVariablerW   rI  r  r  r  s         rj   _call_tuple_listz BuiltinVariable._call_tuple_list  s     c9566 	H,44TW==C3S2226677.00    YCDD 	Hs566	H11"55	H 3422sLTLLLVLLL-4-b#GGGGGGGrl   c           	      |   t          |t          j        t          j        t          j        t          j        t          j        t          j        f          r|                    |dg i           S t          j	        t          j        j                                      ||g|i           }|rt          j        |          }|S )N__iter__)r   r   rJ   r  r  rA   r  rS   r"  r  r   r  iter_r,  ObjectIteratorVariable)rh   r  r  rd   re   rets         rj   	call_iterzBuiltinVariable.call_iter  s     &'*+*(

 

 	 ??2z2r::: 0"( mBtb11   <
  6s;;Jrl   c           	         ddl m}m} ddlm} t          |t          j        |||f          rt          j        	                    d          S t          |t                    r1t          j        	                    t          |j                            S t          |t          t          t          t          t           t"          f          rt          j        	                    d          S d S )Nr;   )r  FunctoolsPartialVariabler  TF)rv  r  r  rw  r  r   r   r  r@   rP  rX   r   r   rR   rS   rJ   rM   rI   )rh   r  r  r  r  r  s         rj   call_callablezBuiltinVariable.call_callable  s     	RQQQQQQQ//////2(( 	
 
 	 -44T:::011 	-44Xci5H5HIII $

 

 	 -44U;;;4rl   r  c                 p    t          |          dk    r|d         S t          dd| d| ddg           d S )	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   )rh   r  rd   re   s       rj   	call_castzBuiltinVariable.call_cast  s\     t99>>7N0///v//JHI		
 	
 	
 	
 	
 	
rl   c                     t          |t          j                  r't          j        |t          |j                            S t          |t                    r't          j        |t          |j                            S d S rg   )	r   r   r  r>   rY  dirr   r   r   rf  s      rj   call_dirzBuiltinVariable.call_dir  sf     c9=>> 	="(S^^<<<c?++ 	:"(S[[999trl   c                8    t          j        |t          g|R i |S rg   )r   call_custom_dictrq   rh   r  rd   re   s       rj   	call_dictzBuiltinVariable.call_dict%  s'     /DJ4JJJ6JJJrl   user_clsc                   t          |          }t          |          dk    rt          |d         t          j                  rmt          |d         j        t          j                  rH| j        j        	                    |d         j                  s|d         
                    |           |d<   |                     t          j        | t          j                  t          j        | |          g||          S )Nr;   r   )rN  r   r   r   r  r  r  r.  rA  has_pending_mutationget_forwarded_dictrX  r>   rY  r   construct_dict)r  r  rd   re   	args_lists        rj   r  z BuiltinVariable.call_custom_dict.  s     JJ		NNa9Q<)BCC  9Q<+Y-OPP   I*??	!@PQQ   %Q<::2>>IaL--!"i&>??"2x00=9=
 
 	
rl   c          
      (   |t           t          t          hvr;t          d|j         d| d| d|j         d|j         dd|j         dg	           |r|t          us*t          |          d
k    st          |          d
k    sd|vr:t          | |j         ddt          |           dt          |           d           g ||                    d          R }t          |          dk    r*t          | |j         ddt          |           d           t          |          d
k    rg |t          j	        d           R }t          |          dk    r*t          | |j         ddt          |           d           |\  }}|t          urt          nt          }t          |t                     r?d |D             } |t                               ||          |t                                S |                    |           ra|                    |           }t#          d |D                       r3 |t                               ||          |t                                S t          d|j         d| d| d|j         dddg	           d S )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 argsc                 6    g | ]}t          j        |          S ra   )r@   rP  )r   r  s     rj   r  z=BuiltinVariable.call_custom_dict_fromkeys.<locals>.<listcomp>  s$    @@@q(/22@@@rl   r;  c              3   4   K   | ]}t          |          V  d S rg   )rF   r  s     rj   r   z<BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s(      00a;q>>000000rl   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.)rq   r   r   r   rm   r   r7   popr@   rP  rA   rB   r   rE  r=   rI  rJ  r   )	r  r  rd   re   r  r   DictVariableTypearg_listkeyss	            rj   rO  z)BuiltinVariable.call_custom_dict_fromkeysG  sg    D+{;;;>#,JJ4JJ&JJ\h.? \ \$\ \ \ bh/aaa     	0 ++t99>>v;;!##&((#(33334yy@@CKK@@@	   0T/6::g..//Dt99>>$///!t99###	   t99>>9T9+248899Dt99>>$///t99###	   
U!)!<!<BU 	 c4   	@@C@@@H##h...00	    ..r22 	0044D00400000 ''MM$.."2"4"4	    	4(FFtFFfFF0(*; 0 0 0 ;/
	
 
	
 
	
 
	
 
	
 
	
rl   c           
         |rJ |st          g t                                S t          |          dk    r;t          t          |t          j        dt          |           d          g           |d         }t          |t          j                   r"|	                    t                                S |
                    |          r2|                    |          }t          |t                                S t          |t          j                  rt          |j        t                    r|                    |d          }t          |t          j                  rV|                    |||          }t          |t                     r|S t'          t(                                        ||          S t          t          |t          j        d          g           d S )	Nr;  r;   z&set() takes 1 positional argument but  were givenrI  r   r  z!failed to construct builtin set())rG   r=   r   r   rU  r@   rP  r4   r   clonerI  rJ  r   rW   r   r   r  UserMethodVariablerX  r   rQ  call_set)rh   r  rd   re   r  r2  iter_fnouts           rj   r  zBuiltinVariable.call_set  s     	Er1A1C1CDDDDt99>>$$+WTWWW     1g#y,-- 	>99+;+=+=9>>>..r22 	>11"55Eu4D4F4FGGGGY@AA 	>jIxG
 G
 	> oob*55G'9#?@@ >44WdFKKc;// J&s++44R=== ")*MNNO	
 	
 	
 	
 	
 	
rl   c           
         |rJ |st          g           S t          |          dk    r;t          t          |t	          j        dt          |           d          g           |d         }t          |t          j                   rt          d |j        D                       S |	                    |          r$|
                    |          }t          |          S t          t          |t	          j        d          g           d S )Nr;   z,frozenset() takes 1 positional argument but r  rI  r   c                     g | ]	}|j         
S ra   )vtr   s     rj   r  z2BuiltinVariable.call_frozenset.<locals>.<listcomp>  s    %B%B%Bqad%B%B%Brl   z'failed to construct builtin frozenset())rE   r   r   rU  r@   rP  r4   r   	set_itemsrI  rJ  )rh   r  rd   re   r  r2  s         rj   call_frozensetzBuiltinVariable.call_frozenset  s*     	)$R(((t99>>$$+]s4yy]]]     1g#y233 	,$%B%BCM%B%B%BCCC..r22 	,11"55E$U+++ ")*STTU	
 	
 	
 	
 	
 	
rl   c                 P   |r9t          |          dk    rd|v s"t          ddt          |           d           |                    dt          j        d                    }fd|D             }t          j        ||                                t                                S )	Nr;   strictzip1 kwargs (`strict`)r  Fc                 d    g | ],}t          t                                        |gi           -S ra   )r   iterr,  )r   r  r  s     rj   r  z,BuiltinVariable.call_zip.<locals>.<listcomp>  s5    XXXC_T**88cUBGGXXXrl   r  r<  )	r   r7   r  r@   rP  r   ZipVariablerL  r=   )rh   r  rd   re   r  	iter_argss    `    rj   call_zipzBuiltinVariable.call_zip  s      	KK1$$V););#)6{{+++	   H&6&=e&D&DEEXXXXSWXXX	$,,..*,,
 
 
 	
rl   c           	          	 |d                              |dt          |dd                    |          S # t          $ r<}t          t	          |          |t          |j                             Y d }~d S d }~ww xY w)Nr   __len__r;   rI  )r"  rN  rv  r   r   rd   )rh   r  rd   re   r  s        rj   call_lenzBuiltinVariable.call_len  s    	E7&&r9d48nnfMMM 	E 	E 	E$T!WWbtAF||DDDDDDDDDD	Es   25 
A;1A66A;c           	      h    |d                              |dt          |dd                    |          S )Nr   __getitem__r;   )r"  rN  r  s       rj   call_getitemzBuiltinVariable.call_getitem	  s0     Aw""2}d48nnfMMMrl   isinstance_type_varc           	      b   	                                  }n9# t          $ r, t          dd d| dd g t          j                   Y nw xY w|                                }t          t          j                  rKj	        Ddt          dt          d	t          ffd
}t          j                             ||                    S t          t          j                  rEt          j        t"          j                  r&t          dd d| ddg t          j                   t          t          j                  rKd|j        j        v r=t          j                            |j                            |j                            S t          t          j                  r"t          j        t          ||                    S t          |t0                    st3          t5          |dd                     r|f}nkt          |t"          j                  r|j        }nIt          |t:                    rt=          d |D                       r|}nt?          t@          |dg           	 tC          ||          }n# t@          $ r ||v }Y nw xY wt          j                            |          S )Nz6builtin isinstance() cannot determine type of argumentzisinstance(rr  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        d         }t	          |          r(| t
          j        j        j        u rt          ||           S t                                          |           S t           |          }j        |v S )Nexample_value)r:   r  nodemetar   r   nn	parameter	Parameterr   r  python_typert   )r  example_valdtypesr  s      rj   
check_typezOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_type"	  s    !444&)llnn&9&>&O9+FF	E "eh&8&B B B
 $.k2#>#>>#-coo.?.?#D#DD04F9..rl   c              3   .   K   | ]} |          V  d S rg   ra   )r   r  r  s     rj   r   zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>5	  s+      DD"zz"~~DDDDDDrl   )r	   r   r   ry  r   )r  r  r  r  s     @rj   _tensor_isinstancez;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance	  sx    /3 /4 / / / / / /$ $$--DDDDDDDDDD%:k222rl   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   |   K   | ]7}t          |t                    pt          t          |d d                    V  8dS )r  N)r   r   r   r   )r   tps     rj   r   z2BuiltinVariable.call_isinstance.<locals>.<genexpr>]	  sZ       8
 8
 r4  THWR9Ld-S-S$T$T8
 8
 8
 8
 8
 8
rl   z?isinstance() arg 2 must be a type, a tuple of types, or a unionrI  )"r  r-  r   r   r  rL  r   r   rS   rt   r>   r	   r   r@   rP  rW   r   rc   MemberDescriptorTyper  rK  r   r  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__ry  r   r   rU  r  )	rh   r  r  r  r  isinstance_typer  isinstance_type_tuplerV  s	     `      rj   call_isinstancezBuiltinVariable.call_isinstance	  sL   	((HH" 	 	 	PCcCC-@CCCa\_aa5)45	     	 .@@BBc9344 	9N3+3:=33 3 3 3 3 34 -44""388  
 c9>?? 		JIu1E
 E
 		 V?c??_???<6)56    sI?@@	#'@'III-44);;OSYWW   c9FGG 	R#*:h+P+PQQQ ot,, 	O%8$??1
 1
 	 &5$6!!99 	$3$<!!// 	C 8
 8
%8
 8
 8
 5
 5
 	 %4!!$U   	4 X'<==CC 	4 	4 	433CCC	4 )00555s!    3AA-I> >JJleft_tyright_tyc           	         	 |                                 }|                                 }n7# t          $ r* t          dd| d| dddgt          j                   Y nw xY wt          j        t          ||                    S )z,Checks if first arg is subclass of right argz(issubclass() with non-constant argumentszissubclass(rr  r  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r  )rL  r-  r   r   ru  r   r@   r  )rh   r  r   r!  
left_ty_pyright_ty_pys         rj   call_issubclasszBuiltinVariable.call_issubclassz	  s    	 3355J"5577KK" 		 		 		B<g<<<<<U9&1	     		 )*Z*M*MNNNs   (+ 1AAc                 ,    t          j        ||          S rg   )r   SuperVariablerh   r  r  r   s       rj   
call_superzBuiltinVariable.call_super	  s     &q!,,,rl   c                 2   |d         }	 |                     |          S # t          $ r t          |          dk    r
|d         cY S  t          $ rF}t	          |t
          j                  r&|                                 |j        d         cY d }~S  d }~ww xY w)Nr   r   r;   )	next_variabler   r   r   r   r   rH   r  r2  )rh   r  rd   r  exs        rj   	call_nextzBuiltinVariable.call_next	  s     1g
	$$R(((( 	 	 	4yyA~~Aw 	 	 	#y9:: $$$&&&y|######		s'    %B
B:B
BBBattrc                    |                                 rk|                                }t          |t          j                  r't          j        t          |j        |                    S |                    ||          S d S rg   )	rJ  rL  r   r   r   r@   rt  r   call_obj_hasattr)rh   r  r  r.  r  s        rj   call_hasattrzBuiltinVariable.call_hasattr	  sw     ""$$ 	2**,,D#y899 I 1'#&$2G2GHHH''D111trl   seqsc                    t          j        d          }|rt          j        dk    rbt	          |          dk    rd|v s"t          ddt	          |           d           |                    dt          j        d                    }n"t          ddt	          |           d           fd	|D             }t          j        |||	                                t                      
          S )NFrC  r;   r  rO  r  r  z0 kwargsc                 h    g | ].}|                               r|                              n|/S ra   )r@  r3  )r   rD  r  s     rj   r  z,BuiltinVariable.call_map.<locals>.<listcomp>	  sP     
 
 
 ,/+F+Fr+J+JSC##B'''PS
 
 
rl   r  )r@   rP  rK  rL  r   r7   r  r   MapVariablerL  r=   )rh   r  r   r2  re   r  seq_lists    `     rj   call_mapzBuiltinVariable.call_map	  s%    "(// 	7**Fq((X-?-?'-v;;///	    H.>.Ee.L.LMM#6{{+++	  
 
 
 

 
 
 $,,..*,,	
 
 
 	
rl   rD  c                     |                     |          r|                    |          n|}t          j        ||t	                                S r:  )r@  r3  r   FilterVariabler=   )rh   r  r   rD  seq_or_lists        rj   call_filterzBuiltinVariable.call_filter	  s^     ,/+F+Fr+J+JSC##B'''PS 	 '*,,
 
 
 	
rl   c                 F   | j         ot          | j         |          }| j        t          u ra	 t	          | j        |          }n%# t
          $ r t          t
          |           Y nw xY wt          |          st          j	        |||          S t          j        | ||          S r   )r   r"   r   rn  r   rv  r   r   r>   rY  r   r  )rh   r  r  r   r   s        rj   r  zBuiltinVariable.var_getattr	  s    >DK!>!>7f=..! = = =(<<<<<= E?? @&,R???(tFCCCCs   A A$#A$rU  defaultc           
         |                                 st          dd| d| d| dddg           |                                }|                                r|dk    rd	}j        j                            |          rat          |t          j	                  rG|d
v rC|j
        r<j        j                            |          rt          dd| d| d| ddg            j        j                            ||          r j        j                            ||          S |J|                     ||          }|/|                    dd          sJ |                                s|S n|S |j        ot#          |j        |          |dv r	 |                                }t          |t$                    r}|dk    r7fdt'          |j                  D             }t          j        |          S |dk    rt-          j        |j                  S |dk    rt3          j        |j                  S n# t8          $ r Y nw xY wt          |t          j                  r|                    |          S t          |t          j        t          j         t          j        t          j!        t          j"        t          j#        f          rHt          |t          j#                  rStI          |j%        j&        tN          j(                  r/tR          j*        r#|dv rt          dd| d| dd| dg           |                                r|+                                j,        j-        d         }	t          |	t\          j/                  rAta          |	          r2j1        rtR          j2        st          dddg tf          j4                   	 |                    |          S # tj          $ r  t8          $ r t          j6        ||          cY S w xY wt          |t          j7                  rtq          |j%        |          }
t          |
t\          j9        j:        t\          j9        j;        f          r:t\          j<        j=        >                    |
          rt          j7        |
          S |t~          v rt          j6        ||          S d S t          |t                    r|jA        s||j%        jB        vrtq          |j%        |          }
n|j%        jB        |         }
tR          jC        r!jD        E                    |j%        ||
           t-          j        |
          S t          |t          jG                  r+|d v r't3          j        tq          |jH        |                    S 	 |                    |          S # t8          $ r t          j6        ||          cY S w xY w)!Nz)getattr() with non-constant name argumentzgetattr(rr  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__rH  c           
      b    g | ]+\  }}t          j        |ot          |                    ,S ra   )r>   rY  r#   )r   r  r   r   r  s      rj   r  z0BuiltinVariable.call_getattr.<locals>.<listcomp>0
  sR     & & & !%1 ,1 "Av'J-2J2J & & &rl   r   rG  rI  )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 Tensorrp  z-torch.compile does not support sparse Tensors)rm   rn   )IrJ  r   rL  r  r.  rA  rF  r   r   r  is_state_mutatedr  has_pending_mutation_of_attr	load_attrr1  is_constant_matchr   r"   r   	enumeraterH  rM   r>   rY  rG  r@   rP  rI  r-  r  r  rS   NamedTupleVariableDistributedVariabler  rW   r  r   rK  unittestTestCaser   enable_trace_unittestr  r  r  r   Tensorr   r(  capture_sparse_computer   r  r<   r  r  r   _opsOpOverloadPacket
OpOverload_dynamotrace_rulesis_aten_op_or_tensor_methodr,   r!   is_torchr   replay_record_enabledexec_recorderrecord_module_accessr4   r  r   )rh   r  r  rU  r=  r  hasattr_varr   
tuple_argsfake_valmemberr   s    `         @rj   call_getattrzBuiltinVariable.call_getattr	  s    **,, 	C@3@@(@@g@@@XJK	    **,, ==?? 	twD9!77<< 	#yFGG   , 	.CCCHH " N D3 D D$ D D' D D D%2     9!>>sDII 	?9)33C>>>++BX>>K&"44T5AAAAA"5577 #"N# <
3:t < <999..00eT** H{**& & & & & )2%/(B(B	& & &
  )6z&QQQQz)).4RPPP{**/6uGGG&    c9566 W	K??2t,,,(,*-23

 

 U	K 3	 CDDsy2H4EFF 0   =A4AA ^VZ ^ ^ ^=4 = = =	    }} <<>>.3ODx66
%h//
  Y
 /5.K

 " A "$S> 1 =>	   Kr40006    & K K K 0d6JJJJJJKYCDD 	KSY--F4ej6KL  -+GGOO !=fVTTTT/// 0d6JJJJt[)) 	K| 2t39+=== D11+D1+ O 55civNNN"(VV<<<C788 		KT F
 >
 >
 $*7364+@+@AAAKr4000& K K K 0d6JJJJJJKsC   A%H9 8 H9 H9 9
IIO# #+PP*W   !W$#W$rV  c                    t          t          j        t          j        t          j        t          j        t          j        f          r                    |d||gi           S |j        j	        
                              rq|                                r\|                                }                                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
           n.j        |j        k    rt!          dd d| d| dddg
           fd|j        j        D             }|D ]!}|j        j                            |           "t/          |          5  t1          j                    5   || |j        j        dt0          j        j        gt;          |gi           R            }	d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   dt0          j        dt0          j        fd}
|j                            d|
|	                                fi             |
                                j        j         d                    |	S |dv rd}n1tC          |          r"t!          dd d| d| ddd| dg
           |j        j	        "                    ||           |S t          t          j#                  rJ|j        $                                stK          d          |                                rt          |t          j&                  rtO          |                                j        |          }	 (                    ||                                          }n# tR          tT          f$ r d }Y nw xY w|s|                                r_tO          |                                j        |          }tW          j,        j-        d          }||u r|t0          j.        j/        j0        u r|S 1                    |           d S )Nr=  r;   r*  requires_gradz!setattr() on Tensor.requires_gradzsetattr(rr  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 dtypec                 4    g | ]}|j         j         k    |S ra   r   )r   tfr  s     rj   r  z0BuiltinVariable.call_setattr.<locals>.<listcomp>
  s.     ! ! !!	SZ@W@W@W@W@Wrl   r,  r   r]   c                 x    | j         }|dk    r|dz
  }t          j        j                            | f|f           | S r  )_versionr   _C	_autograd_unsafe_set_version_counter)r   versions     rj   _lower_version_count_by_1z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1
  s?    "#*"Q;;&-kG*FFtgZXXX rl   r
  )r?  r@  r@  zFailed to set tensor attributez6Dyanmo doesn't support setting these tensor attributeszDon't mutate attribute 'z@' on tensors, or move the mutation out of `torch.compile` regionz?Can't inplace modify module params/buffers inside HigherOrderOp)2r   r   PlacementVariablerT  rW   NestedUserFunctionVariablerh  r"  r.  rA  rF  rJ  rL  r  r-  r+  r   r   r  r   rt   tracked_fakesremovedynamo_disable_gradr   no_gradr/  rY  set_r6   r  r  r  r2   
store_attrr  is_root_tracerr   rS   r0   r  rv  r   r  getattr_staticmodule_typer  Moduler=  convert_to_unspecialized)rh   r  r  rU  rV  r  r+  	to_removern  r  ru  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs     `            rj   call_setattrzBuiltinVariable.call_setattr
  s    +,34+	
 	
 V	- ??2}xorJJJI"88==K	-++--K	- ..00D}} g222222 ?**! C @3 @ @$ @ @# @ @ @%l ? 1 =>     V^^ z)%$L$Ds$D$Dd$D$Dc$D$D$D)P!M#	 	 	 	 	 ci//%$_$Ds$D$Dd$D$Dc$D$D$D)J!M#	 	 	 	 ! ! ! !%'Y%<! ! !I ( ; ;	/66r:::: -R00 	 	%-// 	 	+m2BI2 / % 1 "3C:r!B!B   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!U\ !el ! ! ! ! I**'1)	   .-cllnn.A.F.WXXX J... "DD066  " @ @3 @ @$ @ @# @ @ @$\Nt N N N	    I"--c4===JY788 	-9++-- ,U   **,, +Y-2 2 + &4CLLNN4G%L%L"'"%//"h6Q6Q6S6S"T"TKK&(>? ' ' '"&KKK' *{/D/D/F/F*)78L8L8N8N8SUW)X)X& #*"8-"X"XK*.@@@'58?+FFF**((,,,tsH   H2>G<0H<H 	 HH 	HHH(N6 6OOc                 4    |                     |d|gi           S )N__delattr__r%  )rh   r  r  rU  s       rj   call_delattrzBuiltinVariable.call_delattr7  s     r=8*bAAArl   c                    	 |                                 }n<# t          $ r/}t          t          j        t          |          d          d d }~ww xY w|j        ot          |j                  }|(t          |t          j
                  r|j        r|j        }|t          j        u r=|j                            dt                    }t!          t#          |          d          }t%          j        |||          S )Nunknown_python_type)	case_namerp  rY  )r  r-  r   r   INVALID_INPUTrr   r   r'   r   r   rW   
cls_sourcer   rY  r.  install_global_by_idr"   r$   r>   rY  )rh   r  r  py_typeerrorr   r  s          rj   	call_typezBuiltinVariable.call_type?  s    	oo''GG" 	 	 	+E

/   		 6
3: 6 6N3	 CDD   ^Fel""911"e<<DT 2 2H==F$R&999s    
A*AAc                     |                     |          rCt          t          |                    |                              }t	          j        |          S d S rg   )r@  rN  reversedr3  r   rM   )rh   r  r  r2  s       rj   call_reversedzBuiltinVariable.call_reversedY  sS     &&r** 	2#"9"9""="=>>??E*5111trl   c                    |                     |          rit          |t          j                  sOt          j        |                    |          t                                }|                    |dg |           |S d S )Nr;  sort)rI  r   r   rS   rJ   rJ  r=   r"  )rh   r  r  re   list_vars        rj   call_sortedzBuiltinVariable.call_sorteda  s     ,,R00 	):
 :
 	 !---b11.00  H   VR888Otrl   c                 6   t          |t                    r;t          j        |t          j        |                                          d           S t          |t                    r3|                    |d          j        r|	                    |dg i           S d S )Nrb  __neg__)
r   rR   rP  r   r   r  rW   r0  r   r"  rh   r  r  s      rj   call_negzBuiltinVariable.call_negs  s     a)) 	")qzz||,,    q344	8""2y117	8 ==YB777 trl   _format_stringc                     |                                 }t          |          }t          j                            |||          S rg   )rL  rr   r   StringFormatVariablerP  )rh   r  r  rd   re   format_strings         rj   call_formatzBuiltinVariable.call_format  s=     '99;;M**-44]D&QQQrl   c                 `   t          |          dk    rst          |d         t          j                  rS|d         }|j                            |j                  }t          j                            t          |                    S t          |          dk    rt          |d         t          j
        t          j        f          r|d         j        rt          |d         t          j
                  r8t          |d         j                            t          j                             n7t          |d         j                            t          j                             t          |d         j                  }t          j                            |          S t          |          dk    rJ|d                                         r0t)          t*          |d                   }|                    |          S t/          |d         t          j                  r7t          j                            t          |d         j                            S t/          |d         t          j                  r7t          j                            t          |d         j                            S t/          |d         t          j                  r7t          j                            t          |d         j                            S t;          dt=          |          d| dgt>          j                    d S )Nr   r;   zid() with unsupported argsz5Dynamo doesn't know how to trace id() call with args zkSupported args are Tensors, and functions/nn.Modules/user-defined objects from outside the compiled region.r  )!r   r   r   r  r.  rc  rd  r@   rP  idr  rW   r   r    r   r   CLASS_MATCHID_MATCHr   r  r
   rS   call_idr4   r  r   SkipFunctionVariabler  
fake_valuer   rr   r   r  )rh   r  rd   nn_mod_variabler   constant_resulttensor_variables          rj   r  zBuiltinVariable.call_id  s    t99q==ZQ1KLL="1gO)))/*DEEC-44RWW===YY!^^
G/1TU!
 !
^ Aw~ Td1gy'IJJ T!$q'.";";L<T"U"UVVVV!$q'.";";L<Q"R"RSSS a//O-44_EEEYY!^^Q 1 1 3 3^">47;;O"**2...DGY;<< 	-44RQ
^^DDDDGY;<< 	-44RQ5F5FGGGDGY?@@ 	-44RQ8J5K5KLLL4D		ZTXZZ8 '2		 	 	 	 	 	rl   r   c                 N    t          dd| dddgt          j                   d S )Nzcopy.deepcopy()zcopy.deepcopy(r  z'Dynamo does not support copy.deepcopy()zAvoid calling copy.deepcopy()r  )r   r   r  )rh   r  r   s      rj   call_deepcopyzBuiltinVariable.call_deepcopy  sL     	%)Q)))A/".		
 	
 	
 	
 	
 	
rl   re  rf  c                    ddl m} ddlm} | j        }|t
          j        t
          j        fv r|                                o{|                                ogt          t          |                                j                            t          t          |                                j                            k    }|t
          j        u rt          j        |          S t          j        |           S ||vr;t          d|j         d| d| dd|j         d	| d| g t"          j        
           t'          |t(                    rt'          |t(                    r|j        o|j        }|j        |j        k    rm	 t-          j        |j        |j                   nL# t0          $ r? t          d|j         d| d| dd| d| d|j         dg t"          j        
           Y nw xY w|                                r|n|}|j                            d||                                |                                fi           }	 |t9          |          ||	          S )Nr;   r  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opr  rr  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,  )r-  r  r   r  r   r   r]  is_notr  r  r.   r  r  r@   rP  r   rm   r   r  r   rS   sizer   broadcast_shapesRuntimeErrorru  r.  r/  r   )
rh   r  re  rf  r  r  r   	is_result
tensor_clsr0  s
             rj   ro  z'BuiltinVariable._comparison_with_tensor  s    	/.....AAAAAAW(,000   IOO%%I1$--//2FGGHH01A1A1FGGHHI  X\!!'.y999'.9}===::::;99999999 9 9)-9 9169 96)56    t^,,	5.11	 )uz6	UZ''
&ty%*====   V!{==T==U===!QQU !Q !QY^ !Q !QBD+!Q !Q !Q9-89      "^^--8TT5
	&&R$--//5>>3C3C!Db
 
 ! 
 
 	
s   =F AG&%G&c           
         ddl m} | j        }||vr;t          d|j         d| d| dd|j         d| d| g t
          j        	           t          |t          j	                  r*t          j
         |t                      d                     S |j                            d
||                                |                                fi           }t          j        ||d           S )Nr;   r  z!unsupported SymNode comparison opr  rr  r  r  z with SymNode arguments r  r,  r  )r   r  r   r   rm   r   r  r   r   r  r@   rn  r.  r/  r  rR   rP  )rh   r  re  rf  r  r   r0  s          rj   rk  z(BuiltinVariable._comparison_with_symnode  s0    	BAAAAAW:::;;9999999: : :*.: :27: :6)56    eY?@@ 	B-bb4.@.@AAA	&&R$--//5>>3C3C!Db
 
 %
 
 
 	
rl   c           
         t          |t                    rt          |t                    rd S |                                rW|                                rCt          j        | |j        j        dt          j        gt          ||gi           R  d           S t          |t          t          t          f          r|                    |d|gi           S d S )Nr,  r  r  )r   r@   is_symnode_likerR   rP  r.  r/  r   r   r6   rC   rG   rW   r"  r(  s       rj   call_xorzBuiltinVariable.call_xor  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X\4Eq!fb4Q4Q       {,EF
 
 	9 ==YR888trl   c                 |    t          |t          t          t          f          r|                    |d|gi           S d S )Nr  r   rC   rG   rW   r"  r(  s       rj   	call_ixorzBuiltinVariable.call_ixor/  >     a*K9RSTT 	:==Z!b999trl   c                 |    t          |t          t          t          f          r|                    |d|gi           S d S )Nr   r  r(  s       rj   call_subzBuiltinVariable.call_sub6  s>     a*K9RSTT 	9==YR888trl   c                 |    t          |t          t          t          f          r|                    |d|gi           S d S )Nr   r  r(  s       rj   	call_isubzBuiltinVariable.call_isub=  r  rl   c           
         t          |t                    rt          |t                    rd S |                                rW|                                rCt          j        | |j        j        dt          j        gt          ||gi           R  d           S t          |t          t          t          f          r|                    |d|gi           S d S )Nr,  r  __and__)r   r@   r  rR   rP  r.  r/  r   r   r6   rC   rG   rW   r"  r(  s       rj   	call_and_zBuiltinVariable.call_and_D  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X]5F1vr5R5R       a*K9RSTT 	9==YR888trl   c           
         t          |t                    rt          |t                    rd S |                                rW|                                rCt          j        | |j        j        dt          j        gt          ||gi           R  d           S t          |t          t          t          f          r|                    |d|gi           S d S )Nr,  r  __iand__)r   r@   r  rR   rP  r.  r/  r   r   r6   rC   rG   rW   r"  r(  s       rj   	call_iandzBuiltinVariable.call_iandW  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X]5F1vr5R5R       a*K9RSTT 	:==Z!b999trl   c           
         t          |t                    rt          |t                    rd S |                                rW|                                rCt          j        | |j        j        dt          j        gt          ||gi           R  d           S t          |t          t          t          t          t          t          f          r|                    |d|gi           S d S )Nr,  r  __or__)r   r@   r  rR   rP  r.  r/  r   r   r6   rA   rC   rU   rG   rV   rW   r"  r(  s       rj   call_or_zBuiltinVariable.call_or_i  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X\4Eq!fb4Q4Q       ! &')

 

 	8 ==XsB777 trl   c           
         t          |t                    rt          |t                    rd S |                                rW|                                rCt          j        | |j        j        dt          j        gt          ||gi           R  d           S t          |t          t          t          t          t          f          r|                    |d|gi           S d S )Nr,  r  __ior__)r   r@   r  rR   rP  r.  r/  r   r   r6   rA   rC   rU   rG   rW   r"  r(  s       rj   call_iorzBuiltinVariable.call_ior  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X\4Eq!fb4Q4Q       ! &)	
 	
 
	9 ==YR888 trl   c           
      x   t          |t                    rBt          j        | |j        j        dt
          j        gt          |gi           R  d           S t          |t                    r|j	        }t          |t          t          f          r*t          j        t          |j                  dk              S d S )Nr,  r  r   )r   rR   rP  r.  r/  r   r   r6   rD   dv_dictrJ   rA   r@   r   r2  r  s      rj   	call_not_zBuiltinVariable.call_not_  s     a)) 	")&	&#X]5FsB5O5O       a)** 		Aa,(9:;; 	>#*3qw<<1+<===trl   c                 4    |                     |d|gi           S )N__contains__r%  r(  s       rj   call_containszBuiltinVariable.call_contains  s     }}R!b999rl   c                     dS )NTra   r   s    rj   is_python_hashablez"BuiltinVariable.is_python_hashable  s    trl   c                 *    t          | j                  S rg   )hashr   r   s    rj   get_python_hashzBuiltinVariable.get_python_hash  s    DG}}rl   c                 R    t          |t          j                  o| j        |j        u S rg   )r   r   r   r   )rh   others     rj   is_python_equalzBuiltinVariable.is_python_equal  s#    %!:;;S58@SSrl   )r  rY   r]   N)r  rZ   rg   )yrm   rn   ro   rp   rn  	_SENTINELr>   _nonvar_fieldsclassmethodr	   r&   r   staticmethodr  cacherQ  r   r   r   r   r   rq   ry  rN  rr   r  r   rz  r{  r  r  r  r  r  rL  r  r  r  r  r  r  r   r  r  r  r  r  r3  __annotations__r,  r"  r`  call_int
call_floatrg  rm  rz  r~  r|  r}  call_mincall_maxr  r  r  r  r  r  r  r  r  r  r  r  
call_tuple	call_listr  r  r  r  r  rO  r  r  r  r  r  r  r%  r)  r-  r1  r7  r;  r  ri  r  r  r  r  r  r  r  r  r  ro  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__)rK  s   @rj   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 _sTf)!# !	"	
		 s s s _ \sj S#X(,_(=GK		$	&   \5T 5 5 5 53 # $      4# 4 4 4 4C    "# " " " " " "J J J J1? 1o 1RV 1 1 1 1 T    $t*     3$30?3	3 3 3 3 
'
15c?6J1K
	tCy$sCx.(	)
 
 
 \

_-
7;C<P7Q
	
 
 
 
 q S#Xq +/:q CGq 	#_%o%&	

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

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

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

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

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

 "R
 
R
 R
 R
 \R
h'
#'
 '
 "	'

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

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

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

 "#
 
#
 #
 #
 #
J

)

/>

ET

	

 

 

 

D5 DS D_ D D D D& +/cK cK#cK cK "	cK
 !4'cK 
4	cK cK cK cKJ^#^ ^ "	^
 ^ 
4	^ ^ ^ ^@B#B B "	B
 
B B B B:):0?:	: : : :4)0?	4	   #  "	
 
4	   $).=	4	   &	R#	R (	R 		R
 "	R 
	R 	R 	R 	R%)%2A%	% % % %N
)
.=
	
 
 
 
5
)5
1@5
IX5
	5
 5
 5
 5
n
)
1@
IX
	
 
 
 
:).=BQ	4	   ,).=BQ	4	   ).=BQ	4	   ).=BQ	4	   ).=BQ	4	   &).=BQ	4	   $ ) .= BQ 	4	       D).=BQ	4	   >).=	4	   (:):.=:BQ:	: : : :
    T T T T T T Trl   r   r  c              #      K   ddl m} |                    | d          }	 |                    |            d V  |                    |            d S # |                    |            w xY w)Nr;   )GradModeVariableF)rp  r  rP  enterexit)r  r  gmvs      rj   rz  rz    sq      """"""

!
!"e
,
,C		"s   A A')r]   N)rp   
contextlibr  r  r  loggingr   r   rK  rc   typingrV  collectionsr   r   collections.abcr   r   r   r   r	   r
   r   r   r   r   r   torch._subclasses.meta_utilsr   torch.overridesr   torch.utils._python_dispatchr   rp  r   r   r   r   rQ  r   r   r   r   r   r   r   r   guardsr   r    replay_recordr!   r   r"   r#   r$   r%   r&   r'   utilsr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   baser<   r=   r>   constantr@   dictsrA   rB   rC   rD   rE   rF   rG   listsrH   rI   rJ   rK   rL   rM   streamsrN   rO   r   rP   rQ   rR   rS   rT   rx  rU   rV   rW   rX   torch._dynamo.codegenrY   torch._dynamo.symbolic_convertrZ   	getLoggerrm   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   ry  rz  r   cmp_eqr   cmp_ner   cmp_ltr   cmp_ler   cmp_gtr   cmp_gerZ  r   r   r   r   r   r   r   r   r   r   r   r   r   r[   rq   r  r\   r   r   contextmanagerIteratorrz  ra   rl   rj   <module>r     s    *                 



    0 0 0 0 0 0 0 0 B B B B B B B B B B B B 2 2 2 2 2 2 2 2 2 2 2 2  $ $ $ $ $ $ $ $ 6 6 6 6 6 6 1 1 1 1 1 1 F F F F F F > > > > > > > > > > > >	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 1 0 0 0 0 0 0 0 ' ' ' ' ' '                                                        * Y X X X X X X X X X & & & & & &                                 3 2 2 2 2 2 2 2                          E//////DDDDDDg!! M8<M8<M8<)x'M8<h&hohoM8<M8=L(,M8< " fj&*57MM  d?+U43H#3M-NNOK!K!K!K!K!K!  LLOLLKKKKKKLMMMMM-4 MLLMML o
 OO  LLLM
 JL $xS18CH3EEF K K K KM 4c 2HS#X4F FG L L L>E >E >E >EBm.T m.T m.T m.T m.To m.T m.T m.T`] 3 8M      rl   