
    a,j                       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 ddlZddlmZ ddlmZ ddlmZ d	d
lmZm Z m!Z!m"Z" d	dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d	dl+m,Z,m-Z- d	dl.m/Z/ d	dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d	dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK ddlLmMZMmNZNmOZOmPZP ddlQmRZRmSZS ddlTmUZUmVZVmWZWmXZXmYZY ddlZm[Z[ ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc ddldmeZe ddlfmgZgmhZhmiZi ddljmkZkmlZlmmZmmnZnmoZo ddlpmqZqmrZrmsZsmtZt erddlumvZv ddlwmxZx  ejy        ez          Z{ej|        ej}        ej~        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        iZe eddh          e eddh          e eddh          iZeeee         f         ed <   ej        d!k    r ed"h          ee<   ed#e
j        e
j        gePdz  f         ZeeP         eeeP         d$f         z  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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~        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ZeWeXeiesfZeeeP         d$f         ed%<   i aeed$ef         ed$ef         f         ed&<   i aeed$ef         ed$ef         f         ed'<   d6d)Z G d* d+eP          Z G d, d-e¦          Z G d. d/e¦          Z G d0 d1e¦          Z G d2 d3e¦          Zej        d4d#d(e
j        d         fd5            ZdS )7a\  
Built-in function and type variable tracking for TorchDynamo's symbolic execution.

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

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

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

These variable trackers ensure that built-in Python operations are correctly
handled during symbolic execution, either by executing them directly when safe
or by creating appropriate graph nodes when needed.
    N)defaultdictOrderedDict)CallableIterableKeysViewSequence)AnycastTYPE_CHECKING)is_sparse_any)BaseTorchFunctionMode)is_traceable_wrapper_subclass   )configgraph_break_hints	polyfills	variables)ObservedAttributeErrorObservedUserStopIterationraise_observed_exceptionunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_sourceSource
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_argscmp_name_to_op_mappingdict_methodsextract_fake_example_valuefrozenset_methodsget_fake_valueguard_if_dynis_tensor_getset_descriptoris_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargsraise_args_mismatchset_methodsspecialize_symnodestr_methodstensortype_to_dtype   )#AsPythonConstantNotImplementedErrorNO_SUCH_SUBOBJValueMutationNewVariableTracker)ConstantVariableFakeIdVariable)ConstDictVariableDefaultDictVariableDictItemsVariableDictKeysVariableDictViewVariableis_hashable)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableTupleIteratorVariableTupleVariable)NullVariable)FrozensetVariableOrderedSetClassVariableSetVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)MutableMappingVariableUserDefinedDictVariableUserDefinedObjectVariableUserDefinedVariable)	PyCodegen)InstructionTranslator__new__
from_bytesfromhexhex"_BUILTIN_CONSTANT_FOLDABLE_METHODS      from_numberr[   ._SET_LIKE_OP_SUPPORTBUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPreturnc                  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kwargsrh   c                      |pi }| ||i |S Nrl   )selfrm   rn   ro   rp   most_recent_funcs        _/var/www/html/banglarbhumi/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((((    )rl   N)
__name__
__module____qualname____doc__r   r	   r   dictstrrv   )rt   s   ru   GetMethodModerk      s        	 	 #%,0
	) 
	)38$
	) 
	) 3-	
	)
 cNT)
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	)rw   r~   r8   )dtypec                      |           S rr   rl   )oinp0s    ru   <lambda>z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    qqww rw   c                      |           S rr   rl   r   inp0_ints    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    qq{{ rw   c                      |           S rr   rl   )r   r   inp1s    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    qqt}} rw   c                      |           S rr   rl   )r   r   inp1_ints    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    qq8,, rw   c                      | d          S Nr   rl   r   s    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    qq1~~ rw   c                      | d          S Nr8   rl   )r   r   s    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>  s    !!At** rw   c                      | d          S r   rl   )r   r   s    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>"      qqH~~ rw   c                      | d          S r   rl   r   s    ru   r   z3populate_builtin_to_tensor_fn_map.<locals>.<lambda>#  r   rw   )lenrf   r   torchonesint32un_ops
un_int_opsbin_opsbin_int_opstensor_and_int_opsoperatormatmulimatmulgetitemrg   )r~   setups_and_oplistssetup_fnop_listoprsetups_and_oplistsrskipsr   r   r   r   rt   s          @@@@@ru   !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dZeed<   edededd fd            Z	defdZ
ddZdddedefdZdddedefdZdefdZdefdZdedefdZdS )BaseBuiltinVariablea  
    Common base class for all builtin variable trackers (BuiltinVariable,
    DictBuiltinVariable, IterBuiltinVariable, and future specialized builtins).

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

    Specialized subclasses (e.g. DictBuiltinVariable) set `_fn` as a class
    attribute. BuiltinVariable stores the callable on the instance as `self.fn`
    and overrides as_python_constant / reconstruct / var_getattr accordingly.
    N_fnvaluesourcerh   c                 r    t          |                    t          j                              | |          S Nr   r   
make_guardr   BUILTIN_MATCHclsr   r   s      ru   create_with_sourcez&BaseBuiltinVariable.create_with_source@  s4    f''(BCCDDDs&!!!!rw   c                     | j         S rr   )r   rs   s    ru   as_python_constantz&BaseBuiltinVariable.as_python_constantE  s	    xrw   codegenrZ   c                     |                                  j        }||j        j        vs
J d            |                    |                    |d                     d S )Nshadowed globalTadd)r   rx   tx	f_globalsappend_outputcreate_load_globalrs   r   names      ru   reconstructzBaseBuiltinVariable.reconstructH  sb    &&((17:////1B///g8848HHIIIIIrw   r   r[   r   c                     | j         ot          | j         |          }t          | j        |d           }t	          j        | ||t          |          nd |          S )Npy_typer   )r   r   getattrr   r   GetAttrVariabletype)rs   r   r   r   attrs        ru   var_getattrzBaseBuiltinVariable.var_getattrM  s`    >DK!>!>txt,,($d.>T


DQW
 
 
 	
rw   c                 l    t          j        |t          |                                 |                    S rr   )r<   buildhasattrr   )rs   r   r   s      ru   call_obj_hasattrz$BaseBuiltinVariable.call_obj_hasattrT  s-     $R1H1H1J1JD)Q)QRRRrw   c                     dS )NTrl   r   s    ru   is_python_hashablez&BaseBuiltinVariable.is_python_hashableY  s    trw   c                 D    t          |                                           S rr   )hashr   r   s    ru   get_python_hashz#BaseBuiltinVariable.get_python_hash\  s    D++--...rw   otherc                 |    t          |t                    o'|                                 |                                u S rr   )
isinstancer   r   rs   r   s     ru   is_python_equalz#BaseBuiltinVariable.is_python_equal_  s:    %!455 
##%%)A)A)C)CC	
rw   r   rZ   rh   N)rx   ry   rz   r{   r   r	   __annotations__classmethodr"   r   r   r   r}   r<   r   r=   r   boolr   intr   objectr   rl   rw   ru   r   r   1  sK        
 
 COOO"s "F "?T " " " ["C    J J J J

5 
S 
_ 
 
 
 
S)S14S	S S S S
D    / / / / /
V 
 
 
 
 
 
 
rw   r   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 e ee!eh          Z"e e	         e#d<   de	de	ddf fdZ$defdZ%de	fdZ&de	fdZ'de	f fdZ(dd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$Z0e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'            Z1d(d&de	defd)Z2d(d&dedefd*Z3ed(d&defd+            Z4d(d&de.e         deeef         dedz  fd,Z5i Z6eeedf         ed&e.e         eeef         gef         f         e#d-<   d(d&de.e         deeef         defd.Z7d(d&d/edee         deeef         def
 fd0Z8d(d&d1ededz  fd2Z9d(d&d1ededz  fd3Z:d(d&d1ededz  fd4Z;d(d&d1ededz  fd5Z<d(d&d1ededz  fd6Z=d(d&dededz  fd7Z>d(d&d8e.e         defd9Z?d(d&d:edz  d;edz  dedz  fd<Z@e>ZAe>ZBd(d&d1edefd=ZCd(d&d1edefd>ZDd(d&d1edefd?ZEd(d&d1edededef
d@ZFd(d&dededz  fdAZGdededefdBZHd(d&dedefdCZId(d&de	de	defdDZJ	 dd(d&dEedz  dedededz  f
dFZKd(d&dEedededef
dGZL	 dd(d&dEedz  dedededz  f
dHZMeMZNd(d&d1ededz  fdIZOdJe	dedededz  fdKZPd(d&d1ededz  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&d1edRedefdSZWd(d&dTedUedefdVZXd(d&d:ed;edefdWZYd(d&dedefdXZZd(d&dEe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&dEed`edaedz  dedz  f
dbZ_d(d&dEed`edcededz  f
ddZ`d(d&dEed`edefdeZad(d&dEedefdfZbd(d&dEededz  fdgZcd(d&dEedededz  fdhZdd(d&d:e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&d:ed;ededz  fdsZkd(d&d:ed;ededz  fdtZld(d&d:ed;ededz  fduZmd(d&d:ed;ededz  fdvZnd(d&d:ed;ededz  fdwZod(d&d:ed;ededz  fdxZpd(d&d:ed;ededz  fdyZqd(d&d:ed;ededz  fdzZrd(d&d:ededz  fd{Zsd(d&d:ed;edefd|Ztd}edefd~Zu xZvS )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.
    fnr   r   rh   c                 t    t          |                    t          j                              | ||          S r   r   r   s      ru   r   z"BuiltinVariable.create_with_sourcev  s6    f''(BCCDDDs5((((rw   .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 )Nr8   )rR   c              3   h   K   | ]-}t          |t          t          j                            )|V  .d S rr   )r   r   mathsqrt.0xs     ru   	<genexpr>z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>  s9      WW
1d49oo8V8VW1WWWWWWrw   )>absallanyr   callablechrcomplexdivmodfloatr   r   r   maxminordpowreprroundr}   formatsumr   r   posnegnot_truthinvertmulr   floordivtruedivmodr   subr   length_hintlshiftrshiftand_or_xoripowimulr   	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorrR   updatevaluesr   __dict__)fnsrR   s     ru   _constant_fold_functionsz(BuiltinVariable._constant_fold_functions{  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
rw   c                 8    | j         |                                 v S rr   )r   r  r   s    ru   can_constant_fold_throughz)BuiltinVariable.can_constant_fold_through  s    w$779999rw   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 rr   )(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    ru   _fx_graph_functionsz#BuiltinVariable._fx_graph_functions  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 
rw   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    ru   _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
> 
rw   c                  	   ddl m ddlm ddlm ddlm ddl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(          t*          f|ft*          t(          f|ft*          t*          f|
ft*          t,          f|
ft,          t*          fd ft.          t&          t,          t0          ffd ft&          t&          fd fg}| t2          j                                     |           dd	d
t&          dt          dt"          fd}t.          t          f|ft*          t*          f|
ft*          t,          f|
fg}| t2          j                                     |           dd	dt          dt          dt          fd}t.          t,          f|ft*          t,          f|ft,          t.          f|ft,          t*          f|fg}| t2          j                                     |           dt           dt"          f         dt<          t>          t>          t@          t@          f         tB          f                  ffd }tE          j#                    D ]'}tI          |          sJ || vsJ  ||          | |<   (| S )!Nr8   )BaseUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)rY   )forward_namereverse_namer   r[   abrO  rP  rh   c                    t          |          r|                    | ||gi           S |                    | ||gi           S rr   )r   call_method)r   rQ  rR  rO  rP  rY   s        ru   user_defined_handlerz=BuiltinVariable._binop_handlers.<locals>.user_defined_handler;  sM    , a!455 D==\A3CCC==\A3CCCrw   )rO  c                4    |                     | ||gi           S rr   rT  )r   rQ  rR  rO  s       ru   user_defined_inplace_handlerzEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler]  s     }}RsB???rw   r   r   .c          
      j    ddl m}  ||  | j        j        d|gt	          ||gi           R            S Nr8   wrap_fx_proxycall_function)builderr]  outputcreate_proxyr2   )r   rQ  rR  r   r]  s        ru   dynamic_handlerz8BuiltinVariable._binop_handlers.<locals>.dynamic_handlern  sa     322222$}*BI*'.?A.K.K    rw   c                 X    t          g |j        |                    |                     S rr   )rL   itemsunpack_var_sequencer   rQ  rR  s      ru   tuple_add_handlerz:BuiltinVariable._binop_handlers.<locals>.tuple_add_handler  s-     !!G17!GQ-B-B2-F-F!GHHHrw   c                 X    t          g |j        |                    |                     S rr   )rJ   rd  re  rf  s      ru   size_add_handlerz9BuiltinVariable._binop_handlers.<locals>.size_add_handler  s-       F!' FA,A,A",E,E FGGGrw   c                 X    t          g |                    |           |j                  S rr   )rL   re  rd  rf  s      ru   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s5    ..r22" " rw   c                 t    t          g |j        |                    |           t                                S Nmutation_type)rH   rd  re  r;   rf  s      ru   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s;    :ag: 5 5b 9 9:"2"4"4" " " rw   c                 N     t          |          g |j        |j                  S rr   )r   rd  rf  s      ru   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  s1    a" " rw   c                     |                                 s|                    |           sd S |                    |           }| j        j                            |           |j                            |           |S rr   )is_immutablehas_unpack_var_sequencere  r`  side_effectsmutationrd  extend)r   rQ  rR  seqs       ru   list_iadd_handlerz:BuiltinVariable._binop_handlers.<locals>.list_iadd_handler  su     ~~ q'@'@'D'D t''++CI"++A...GNN3Hrw   lstconstc                    t          |t                    s|                                r||}}	 t          |t                    sJ |                    |j        |                                z  t                                S # t          $ r<}t          t          |          | t          |j                             Y d }~d S d }~ww xY w)N)rd  rn  ro   )r   rF   is_python_constant	__class__rd  r   r;   MemoryErrorr   r   listro   )r   rx  ry  excs       ru   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ch         s   AB 
C	1CC	r   c           	         
 dddt           dt           dt           f fd}t          t          f|fg} t          v rt          t          f|f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 rR j	        
                    d          r7  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          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   r[   rQ  rR  rh   c                     	 t          j        |  |j        |j                            S # t          $ r<}t	          t          |          | t          |j                             Y d }~d S d }~ww xY w)Nr{  )r<   r   r   	TypeErrorr   r   r  ro   )r   rQ  rR  r  r   s       ru   compare_by_valuezYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_value  s    *0RR5I5IJJJ    ,S		!#(^^         s   (, 
A21A--A2c                 r    |                      t          j        | t                             ||gi           S rr   )inline_user_function_returnr<   r   polyfill_fn_mapping)r   rQ  rR  r   s      ru   handlerzPBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handlerE  s=     99'-b2Eb2IJJQPQFTV  rw   is_c                 .    t          j        |           S rr   r<   r   )r   rQ  rR  none_results      ru   neverzNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.neverW  s     +0[AAArw   leftrightc                     ddl m}  |||          }|d S |                                }t          j        | j        dk    r|n|           S )Nr8   )vt_identity_comparer  )object_protocolr  r   r<   r   rx   )r   r  r  r  resultis_samer   s         ru   	handle_iszRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_is  sq    
 EDDDDD00u==F~#t$7799G*0r{e';';GGW  rw   )r<   r=   r  r   ru  rS   _comparison_with_symnodeappendr  rx   
startswithr   rT   rF   r?   _comparison_with_tensor)r   r  r  op_varr  r  obj_op_nonenone_op_objtypes_that_are_never_noner  r  rN  rJ  rL  rY   rM  s   `         @ru   create_cmp_op_handlersz?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers  s7   
+
0?
DS
 
 
 
 
 
 
( $%568HIJ  (((
 '(89;KL ),, -o>";
 -o>";	  /4CHW$      A7KLLL(*:;=MNOF3::<<<<AWAWB B< !b400B/B4CBHWB$B B B B B B
 $# ##$$',%%	-)  78HI'
 ./HI'	   ),, ,_=":
 -n=":
 -o>";
 -o>";  */) + %t+	      A9MNNNMrw   )%	functionsrJ  	nn_modulerL  r  rM  r   rN  user_definedrY   r   rH  rd  r<   r}   r  r   r	   rS   rF   rJ   rL   r=   rH   rG   r   r   ru  r  r   r  tuple_TrackersType_HandlerCallbackrR   r  r   )op_handlersr   magic_method_namesin_place_oprO  rP  inplace_namerU  rX  rb  rg  ri  list_like_addition_handlersrw  list_like_iadd_handlersr  list_like_expansion_handlersr  rN  rJ  rL  rY   rM  s                     @@@@@ru   _binop_handlerszBuiltinVariable._binop_handlers  s   $ 	877777//////::::::,,,,,,555555 -/ $$&&,,..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H	c"H	%m]:;=MMNOH	 H	 H	 H	 H	 H	 H	 H	 H	 H	T +133 	9 	9BB<<<[((((44R88KOOrw   r   a_typeb_typeNc                     t                                                               |           }|d S g }|D ]=\  \  }}}t          ||          r%t          ||          r|                    |           >|S rr   )r   r  get
issubclassr  )r   r  r  handlersmatchestype1type2r  s           ru   _find_binop_handlerz#BuiltinVariable._find_binop_handler  s     #224488<<4'/ 	( 	(#NUEG&%(( (Z-F-F (w'''rw   c                 8    | j         |                                 v S rr   )r   r(  r   s    ru   can_insert_in_graphz#BuiltinVariable.can_insert_in_graph  s    w$224444rw   MUST_USE_SPECIALIZEDrp   c                 v    || j         vsJ d|d             t                      j        di | || _        d S )Nz!Use the specialized VT class for z9, not BuiltinVariable. E.g. DictBuiltinVariable for dict.rl   )r  super__init__r   )rs   r   rp   r}  s      ru   r  zBuiltinVariable.__init__  s_    22222 2 2 2 322 	""6"""rw   c                 R    | j         d}n| j         j        }| j        j         d| dS )NNone())r   rx   r}  )rs   r   s     ru   __repr__zBuiltinVariable.__repr__  s6    7?DD7#D.)33D3333rw   c                     | j         S rr   rY  r   s    ru   r   z"BuiltinVariable.as_python_constant  	    wrw   c                     | j         S rr   rY  r   s    ru   get_real_python_backed_valuez,BuiltinVariable.get_real_python_backed_value  r  rw   c                     t           t          j         t          t          j        t          t          j        i}| j        |v r|| j                 S t                                                      S rr   )	r   r   r   int64r   float64r   r  as_proxy)rs   DTYPEr}  s     ru   r  zBuiltinVariable.as_proxy  sP    %*5=

 7e>!ww!!!rw   r   rZ   c                     | j         j        }| j         j        dk    sJ ||j        j        vs
J d            |                    |                    |d                     d S )Nbuiltinsr   Tr   )r   rx   ry   r   r   r   r   r   s      ru   r   zBuiltinVariable.reconstruct  sn    ww!Z////7:////1B///g8848HHIIIIIrw   ro   c                 "    t          ||          S rr   )r$   rs   ro   rp   s      ru   constant_argszBuiltinVariable.constant_args  s    "4000rw   c                 z    d}|D ]5}t          |t          j                  r dS |p|                                }6|S NF)r   r   r   	is_tensor)rs   ro   
any_tensorargs       ru   tensor_argszBuiltinVariable.tensor_args  sL    
 	7 	7C#y899 uu#6s}}JJrw   	arg_typesc                     d}|D ];}t          |t          j                  r dS |pt          |t          j                  }<|S r  )r  r   r   rT   )rs   r  r  arg_types       ru   tensor_args_typez BuiltinVariable.tensor_args_type  sS    
! 	V 	VH(I$=>> uu#Uz(I<T'U'UJJrw   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     ru   r   zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>  sM       
 
 -.H,@qx(((e
 
 
 
 
 
rw   )	itertoolschainr  r  r  r   r  )rs   ro   rp   r  non_tensor_argsis         ru   python_and_tensor_constant_onlyz/BuiltinVariable.python_and_tensor_constant_only  s     v}}77 	* 	*A{{}} *""1%%%%&&q)))) 
 
 
 
 
 
 
 3 !d /2	3rw   c                 V    d | D             d |                                 D             fS )Nc                 6    g | ]}|                                 S rl   r   r   s     ru   
<listcomp>z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<listcomp>  s$    5551$$&&555rw   c                 >    i | ]\  }}||                                 S rl   r  r   kvs      ru   
<dictcomp>z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<dictcomp>  s7     8
 8
 8
*.!QAq##%%8
 8
 8
rw   )rd  )ro   rp   s     ru   unwrap_unspec_args_kwargsz)BuiltinVariable.unwrap_unspec_args_kwargs  sC     65555 8
 8
28,,..8
 8
 8
 
 	
rw   c                 J    |                                  ot          ||          S rr   )r  r&   r  s      ru   has_constant_handlerz$BuiltinVariable.has_constant_handler  s/     --// 
4Q&5
 5
 	
rw   
has_kwargsr[   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t4          t                   dt          t          t          f         d	t          d z  f fd}                    |                                           rt9          d D                       r@s>dddt4          t                   dt          t          t          f         d	t          d z  f fd}n=dddt4          t                   dt          t          t          f         d	t          d z  f fd}                    |           dt4          t                   d	d f fdt+                    dk    rfdS t+                    dk    rC\  dddt4          t                   dt          t          t          f         d	t          d z  ffd}n>dddt4          t                   dt          t          t          f         d	t          d z  ffd}|S )Nr8   )LazyVariableTrackerc              3   8   K   | ]}t          |          V  d S rr   )r  )r   r  r  s     ru   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>"  s.      EEaz!011EEEEEErw   c                 F                         | d |D             |          S )Nc                 6    g | ]}|                                 S rl   realizer   r  s     ru   r  zCBuiltinVariable._make_handler.<locals>.<lambda>.<locals>.<listcomp>$  s     ///QQYY[[///rw   )r^  )r   ro   rp   objs      ru   r   z/BuiltinVariable._make_handler.<locals>.<lambda>#  s-    C,=,=//$///- - rw   r   r[   ro   rp   rh   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 rr   )r|  r   r   r}   r   s     ru   r   zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>4  s^       4 4 ((**Vz!:N:N:P:PRU/V/V4 4 4 4 4 4rw   zassert with non-string messagez1Dynamo only supports asserts with string messagesgb_typecontextexplanationhints)AssertionErrorr   r   r}   r   SUPPORTABLEr   ExceptionVariable)r   ro   rp   r   s      ru   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Drw   r   r   c                      | g|R  S rr   rl   )r   ro   _binop_handlers      ru   r   z/BuiltinVariable._make_handler.<locals>.<lambda>V  s    MM"4Lt4L4L4L rw   r  c                 0    D ]} || g|R  }|r|c S d S rr   rl   )r   ro   r  r   rvbinop_handlerss        ru   call_binop_handlersz:BuiltinVariable._make_handler.<locals>.call_binop_handlersY  sB     - & &R]T]]] &#%III&4rw   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  )r  inspect	signaturebindr  logwarningr   rx   r   	DIFFICULTr   remove_from_stats)	r   ro   rp   er  r  r   r  self_handlers	         ru   call_self_handlerz8BuiltinVariable._make_handler.<locals>.call_self_handlerh  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 rr   )r  r=   r   s     ru   r   z0BuiltinVariable._make_handler.<locals>.<genexpr>  s-      GGJq"233GGGGGGrw   c                 P   	  d |D              }n# t           $ r;}t          t          |          | t          |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 rl   r  r   s     ru   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>  s$    CCCa2244CCCrw   r{  constant fold exceptionattempted to run function  with arguments 7Encountered exception when attempting to constant fold.r  r  r  r  from_exc)	Exceptionr   r   r  ro   r9   r   r   
DYNAMO_BUGr<   r   r   ro   rp   resr  r   s        ru   constant_fold_handlerz<BuiltinVariable._make_handler.<locals>.constant_fold_handler  s    bCCdCCC %   0 II!%ch        
 ?   %$=$[$[$[UY$[$[(a"A$5$@"A%(         +0S999s     
B1AB &BBc                    t          ||          r	  d |D             i d |                                D             }n# t          $ r0}t          dd d| dg t          j        |           Y d }~nKd }~wt          $ r;}t          t          |          | t          |j
                             Y d }~nd }~ww xY wt          j        | |          S d S )	Nc                 6    g | ]}|                                 S rl   r  r   s     ru   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>  s$    !G!G!GQ!"6"6"8"8!G!G!Grw   c                 >    i | ]\  }}||                                 S rl   r  r  s      ru   r  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<dictcomp>  s7     #" #" #"BF!QAq';';'='=#" #" #"rw   r  r  r  r  r  r{  )r&   rd  r9   r   r   r"  r!  r   r   r  ro   r<   r   r#  s        ru   r%  z<BuiltinVariable._make_handler.<locals>.constant_fold_handler  s]    5T6BB >"$"!G!G$!G!G!G##" #"JP,,..#" #" #"# #CC  C   )(A(_R(_(_Y](_(_,e&E(9(D&E),          )   4 $S		 "%)#(^^          /4R===4s#   .A 
B?&A77B?1B::B?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 rl   )python_type_namer   r  s     ru   r  zMBuiltinVariable._make_handler.<locals>.call_unimplemented.<locals>.<listcomp>  s$    EEEc2244EEErw   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   rx   )ro   real_arg_typesr  r   r  s     ru   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     rw   c                      |          S rr   rl   )r   ro   rp   r.  s      ru   r   z/BuiltinVariable._make_handler.<locals>.<lambda>  s    ,>,>t,D,D rw   c                 @     | ||          }|r|S  |           |S rr   rl   )r   ro   rp   r  r.  r  s       ru   builtin_dispatchz7BuiltinVariable._make_handler.<locals>.builtin_dispatch  s;    
 WRv.. I""4(((	rw   c                 R    d }D ]} || ||          }|r|c S  |           |S rr   rl   )r   ro   rp   r  r   r.  r  s        ru   r1  z7BuiltinVariable._make_handler.<locals>.builtin_dispatch  sX    
 " " "BBf--B "!			"""4(((	rw   )lazyr  r   r   r  isclassr  BaseExceptionGeneratorExitr  r<   r|   r}   r  r   r   r   rT   r  _handle_insert_op_in_graphr  r   r  r	   r   rx   r   r  r   )r   r  r  r  r
  r  r%  r1  r  r  r	  r.  r  r  r  r  s   ```     @@@@@@@@ru   _make_handlerzBuiltinVariable._make_handler  s    	.-----b!!+-EEEE9EEEEE 	     ?2 	1r=))	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-...((** A	3GGYGGGGG> "> 
:/:"?3: !o!56: %t+	: : : : : : :8 / "?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'	        rw   r   c                    t          |          dk    r|                     |          S t          |          dk    sJ 	 |d                             |d          S # t          $ r t	          t
          |           Y d S w xY w)Nr   r8   r  )r   _call_frame_locals_snapshotr   r   r   r  rs   r   ro   s      ru   	call_varszBuiltinVariable.call_vars  s    t99>>33B7774yyA~~~~	47&&r:666% 	4 	4 	4$Y333333	4s   A A>=A>c                 |    t          |          dk    rt          t          |           |                     |          S r   )r   r   r  r:  r;  s      ru   call_localszBuiltinVariable.call_locals  s7     t99>>$Y333//333rw   c                 6   t          | j        j                  t          |                                           z  }t          |                                           }i }| j                                        D ]\  }}||vr
||v r| j        j                            |          }t          
                    t          |          st          |t          j                  rh||t          j        |          <   t#          |t$          t'                                S rl  )setf_codeco_varnamescell_and_freevarssymbolic_localsrd  r`  rs  	load_cellr   __instancecheck__rM   r   r   DeletedVariabler=   creater?   r|   r;   )r   frame_local_namesrC  frame_localsr   r   s         ru   r:  z+BuiltinVariable._call_frame_locals_snapshot  s   	 566R=Q=Q=S=S9T9TT 4 4 6 677-3355 		@ 		@KD%,,,(((	.88??%%lE:: jy0? ?  :?L)06677 *,,
 
 
 	
rw   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 rVt/          |d         t8                    r;t:          j        }|d         t0          j                             |d          |d         g}tC          ||          r_tE          d	 |D                       sF |j#        j$        d
tK          |          gtM          ||          R  } |t0          j'        ||          S |t4          j(        u r`tS          |          dk    rM|d                                         r3|d         *                    |dtW          |dd                    |          S  |j#        j$        d
|gtM          ||          R  }tE          d |D                       r |tX          ||          S t[          ||          rt| .                    ||          \  }} ||i |}tE          d t_          j0        ||                                          D                       } |tb          ||||          S te          d |D                       rt9          j        ||d           S |t4          j3        u rLt/          |d         t0          j1                  r,tW          |          }|d         4                                |d<    |||          S # tj          $ r5 tm          dd|  d| d| d| j         dg tn          j8                   Y d S w xY w)Nr8   )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 rr   )r   rT   r,  s     ru   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>z  sF       B B03S		^+B B B B B Brw   r^  __eq__c              3   @   K   | ]}t          |t                    V  d S rr   r   rQ   r,  s     ru   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  s-      EE:c#344EEEEEErw   c              3   X   K   | ]%}t          |t          j                  |j        V  &d S rr   r   r   rU   need_unwrapr   s     ru   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  K       " "!!Y%JKK"M" " " " " "rw   )	raw_valuerY  c              3   @   K   | ]}t          |t                    V  d S rr   r   rS   r   s     ru   r   z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>  s,      BBZ?33BBBBBBrw   z,unimplemented builtin op on tensor argumentszpartial tensor op: r  z3Dynamo does not know how to trace builtin operator z with tensor argumentsr  )9r_  r]  rL  r  r  rN  torch_functionrO  rP  exportr   r  r   rg   rf   rH  r  bytecode_transformationrQ  r  rR  rx   IN_PLACE_DESUGARING_MAPr   r   r=   r   r   rS   r   selectr<   r   r%   r   r`  ra  r1   r2   NumpyNdarrayVariabler&  r   rT  r  rQ   r'   r  r  r  rU   r   r  r   NotImplementedErrorr   r   r  )rs   r   ro   rp   r]  rL  rN  rO  rP  rm   tmpfn_varr   rQ  rR  proxy_args_kwargsr[  rY  s                       ru   r7  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-33B::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 rl   r  r  s      ru   r  z1BuiltinVariable.call_function.<locals>.<dictcomp>  s&    @@@Aa@@@rw   c              3   4   K   | ]}t          |          V  d S rr   r   r   s     ru   r   z0BuiltinVariable.call_function.<locals>.<genexpr>  (      44!d1gg444444rw   Tc              3   4   K   | ]}t          |          V  d S rr   rn  r   s     ru   r   z0BuiltinVariable.call_function.<locals>.<genexpr>  ro  rw   c                 ,    g | ]}t          |          S rl   rn  r   s     ru   r  z1BuiltinVariable.call_function.<locals>.<listcomp>  s    000a$q''000rw   )rd  r   rj  r  r8  r   )rs   r   ro   rp   keyr  s         ru   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(((rw   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    r>| j         t          u rWt          |          dk    rDt          |          dk    sJ |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 |t&                              | j         d          v rt+          d	 |D                       rt+          d
 |                                D                       r	 t/          | j         |          }	 |	d |D             i d |                                D             }
t3          j        ||
          S # t6          $ r;}t9          t;          |          |t=          |j                             Y d }~nd }~ww xY w| j         t          u r%|dk    rt           j         !                    d           S | j         tD          u rt/          | j         |          }|tF          v rt	          |d         t           j$                  r:|d         j%        J |d         j%        &                    |||dd          |          S t	          |d         t           j'                  r&|d         &                    |||dd          |          S | j         tP          u rdt/          | j         |          }|tR          v rFt	          |d         t           j*                  r&|d         &                    |||dd          |          S | j         tV          u rrt          |          dk    r_t/          | j         |          }|tX          v rAt	          |d         t@                    r&|d         &                    |||dd          |          S | j         tZ          u rwt          |          dk    rdt	          |d         t@                    rIt3          j        | t/          tZ          |          |d         .                                                    S |dk    r-t          |          dk    r|sddl/m0}  |||d                   S tc                      &                    ||||          S )N__setattr__rb   r   r\   r8   r   rm  rl   c              3   >   K   | ]}|                                 V  d S rr   r|  r   rQ  s     ru   r   z.BuiltinVariable.call_method.<locals>.<genexpr>	  s.      88a1''))888888rw   c              3   >   K   | ]}|                                 V  d S rr   rv  r  s     ru   r   z.BuiltinVariable.call_method.<locals>.<genexpr>	  sG       A A+,$$&&A A A A A Arw   c              3   >   K   | ]}|                                 V  d S rr   r  rw  s     ru   r   z.BuiltinVariable.call_method.<locals>.<genexpr>  s.      ??Q!..00??????rw   c                 >    i | ]\  }}||                                 S rl   r  r  s      ru   r  z/BuiltinVariable.call_method.<locals>.<dictcomp>  s*    PPPA1a2244PPPrw   r{  r  __len__generic_len)2r   r   r   r  r   rX   r`  rs  is_attribute_mutationr|  method_setattr_standardtrack_new_user_defined_objectr  has_force_unpack_var_sequencer   force_unpack_var_sequencer   rL   r;   r`   r  r   r  r   rd  r<   r   r!  r   r   r  ro   r=   rH  r@  r4   UserDefinedSetVariable_base_vtrT  rP   	frozensetr+   rN   r}   r6   r   r   r  r}  r  )rs   r   r   ro   rp   r  name_varval	init_argsr   r$  r  resolved_fnr}  r}  s                 ru   rT  zBuiltinVariable.call_method  s    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  
 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   599$'2FFFF88488888 S A A06A A A > >  $//B"??$???PPPPP C +0S999    ,Q!!&\\         7f!3!3-44T:::7c>>!$'400Kk))d1gy'GHH K7+7777+77D$qrr(FSSS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 &,,t,,T!W-G-G-I-IJJ   9Ta 544444;r47+++ww""2tT6:::s   %AJ= =
L1K==Lr  c                 &    ddl m}  |||          S )Nr8   )generic_int)r  r  )rs   r   r  r  s       ru   call_intzBuiltinVariable.call_intD  s(     	100000{2s###rw   c                 &    ddl m}  |||          S )Nr8   )generic_float)r  r  )rs   r   r  r  s       ru   
call_floatzBuiltinVariable.call_floatK  s(     	322222}R%%%rw   c                 &    ddl m}  |||          S )Nr8   )generic_bool)r  r  )rs   r   r  r  s       ru   	call_boolzBuiltinVariable.call_boolR  s(     	211111|B$$$rw   c                    t          |t          j        t          j        f          r	 t	          d |j        D                       }n# t          $ r Y dS w xY wt          |          dk    r|j        j	         d}n<t          |          dk    r|j        j	         d|d         d}n|j        j	         |}t          j        ||          S t          |t          j                  r|j        j        }t          |j                  j        t           j        u r,t          j        ||          }|                    |g i           S t%          |          r*t'          dd	t          |j                   d
dg           n4|j        }t          j        ||          }|                    ||gi           S t          |t          j                  rLt          |j                  j        t          j        u r't          j        |t-          |j                            S t          |t.          t0          t2          t4          t6          f          r't          j        ||                                          S dS )z&Handle repr() on user defined objects.c              3   >   K   | ]}|                                 V  d S rr   r  rw  s     ru   r   z,BuiltinVariable.call_repr.<locals>.<genexpr>c  s.      "L"La1#7#7#9#9"L"L"L"L"L"Lrw   Nr   z()r8   r  r  z4Attempted to call repr() method implemented in C/C++ z6 has a C/C++ based repr method. This is not supported.zWrite the repr method in Pythonr  )r   r   r  "UserDefinedExceptionObjectVariabler  ro   rd  r   exc_typerx   r<   r   rX   r   r  r   r   r^  r/   r   __func__UserDefinedClassVariabler   rI   r?   r@   rO   rC   
debug_repr)rs   r   r  
const_argsr   repr_methodfn_vtbound_methods           ru   	call_reprzBuiltinVariable.call_reprZ  sg    ()*VW
 
 	4""L"L38"L"L"LLL

&   tt:!##<0444ZA%%<0EE:a=EEE<0@*@@"(U333c9>?? 	:),KCI'6?::'-b+>>**2r26660== 
:R#'	?? j j j<=	      +3'-b,??**2ub999c9=>> 	BCI'4=88&,RciAAA!#' 	
 	
 
	? #(S^^-=-=>>>ts   A 
AAc                 ^   t          |t          j        t          j        f          rt	          |j                  dk    rt          j        |d          S t	          |j                  dk    r5t          t                    
                    ||j        d         gi           S t          j        t          |j                            }t          t                    
                    ||gi           S t          |t          j                  r't          j        |t          |j                            S t          |t          j                  r`t!          |j        d          r|j        j        }nNt!          |j        d          r|j        j        }n,t)          dt          |          dg t*          j                   t/          |j                  j        t0          j        u r/	 t          j        | |                      S # t2          $ r Y d S w xY wt5          |          r*t)          d	dt/          |j                   d
dg           nc|j        }	 t          j        ||          }n-# t8          $ r  t:                              dd           Y d S w xY w|
                    ||gi           S d S )Nr   r  r8   __str__r  z+failed to call str() on user defined objectz5User defined object has no __str__ or __repr__ methodr  z0Attempted to a str() method implemented in C/C++z5 has a C/C++ based str method. This is not supported.zWrite the str method in Pythonz%Failed to create UserFunctionVariableT)exc_info)r   r   r  r  r   ro   r<   r   r   r}   r^  rL   r  UserFunctionVariabler   rX   r   r   r  r  r   r   
USER_ERRORr   r   AttributeErrorr/   r  r   r  r  )rs   r   r  	tuple_var
str_methodr  user_func_variables          ru   call_strzBuiltinVariable.call_str  s    ()*VW
 
 
	O 38}}!!&,R444SX!##&s++99"sx{mRPPP%3DNNCC	&s++99"yk2NNN cI:<< .	G"(S[[999iACC ,	Gsy),,  Y.

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

IHH W9-89	    CI&&.88 *0ZZ\\BBB%      44  1<< GN#'	?? i i i;<	      *2 )8)>r<)P)P&&%      KK GRVKWWW44  *77SE2FFFts$   #H   
HHI( (&JJc                    t          |          dk    rL|d                             |          r1|d                             |          }|                     ||          S t          |          dk    r#|                     ||d         |d                   S t          |          dk    r|                     ||          S d S )Nr8   r   r   )r   r  r  _call_min_max_seq_call_min_max_binary)rs   r   ro   rd  s       ru   _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trw   rd  c                     t          |          dk    sJ t          |          dk    r|d         S t          j        t          j        | j        |          |          S Nr   r8   )r   	functoolsreducepartialr  )rs   r   rd  s      ru   r  z!BuiltinVariable._call_min_max_seq  sS     5zzA~~~~u::??8O	 1$2KR P PRWXXXrw   rQ  rR  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                    rdt          |tH                    rO|                     |                                |                                          }tK          j&        ||          S d S )Nr8   rL  r^  )r   rg  r   r   r   c              3   b   K   | ]*}t          |t          j        t          j        f          V  +d S rr   )r   r   rU   r=   )r   r  s     ru   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  sV       	 	  !=!2 	 	 	 	 	 	rw   c              3   @   K   | ]}t          |t                    V  d S rr   rV  )r   r  s     ru   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>)  s-      KKSz#'788KKKKKKrw   c              3   X   K   | ]%}t          |t          j                  |j        V  &d S rr   rX  r   s     ru   r   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>6  rZ  rw   )'r  r  r   rQ   r   TorchInGraphFunctionVariabler   r  r^  rS   r_  rL  r   r`  ra  r   r2   r|  rc  numpyNumpyVariableclipclampr   maximumr   minimumr   r   from_tensor_variabler   r[  rU   sym_maxsym_minrH  r=   r<   r   )rs   r   rQ  rR  rL  npr   rp   r  np_fntorch_fnraw_braw_resrY  py_fnrg  r   s                    ru   r  z$BuiltinVariable._call_min_max_binary  sw    9	 4Aq!! _	4;;== !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   ?++ 	4z!_/M/M 	4%)W^^EMME*BI*):Aq62)F)F  E #)"eT:::+,, 	4A?O1P1P 	4GG$$&&$$&& E #(U333trw   c                     ddl m} |                    |t                                        ||t          j        |d          gi           }|                    |g i           S )Nr8   rM  __abs__r_  rN  rH  r   r^  r<   r   )rs   r   r  rN  
abs_methods        ru   call_abszBuiltinVariable.call_absT  p     	/..... '--b'::HHo+B	::;R
 

 ''B333rw   c                     ddl m} |                    |t                                        ||t          j        |d          gi           }|                    |g i           S )Nr8   rM  __pos__r  )rs   r   r  rN  
pos_methods        ru   call_poszBuiltinVariable.call_pos_  r  rw   c                 J    t          |          }|                    |          S rr   )r5   nb_index_implrs   r   r  s      ru   
call_indexzBuiltinVariable.call_indexj  s%    
 !%%  $$$rw   c                     ddl m} |                    |t                                        ||t          j        |d          gi           }|                    |||          S )Nr8   rM  	__round__r  )rs   r   r  ro   rp   rN  round_methods          ru   
call_roundzBuiltinVariable.call_roundr  sp     	/..... )//G<<JJo+B<<=r
 
 ))"dF;;;rw   c                     t          |i           rt          j        |          S  | j        | r/t	          fd|D                       }t          j        |          S d S )Nc              3   \   K   | ]&}t          j        t          |                    V  'd S rr   )r<   r   r-   )r   r  r   s     ru   r   z-BuiltinVariable.call_range.<locals>.<genexpr>  s8      VV#.r<3D3DEEVVVVVVrw   )r&   r   rI   _dynamic_argsr  r;  s    ` ru   
call_rangezBuiltinVariable.call_range  ss     )r22 	1*4000T& 	1VVVVQUVVVVVD*4000trw   c                     t          d |D                       p*t          d |                                D                       S )Nc              3   @   K   | ]}t          |t                    V  d S rr   r]  r   s     ru   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  s,      @@a:a11@@@@@@rw   c              3   @   K   | ]}t          |t                    V  d S rr   r]  r   s     ru   r   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>  sE       H
 H
/0Jq/**H
 H
 H
 H
 H
 H
rw   )r   r  r  s      ru   r  zBuiltinVariable._dynamic_args  s]    @@4@@@@@ 
C H
 H
4:MMOOH
 H
 H
 E
 E
 	
rw   c                 ,    t          j        ||          S rr   )r   SliceVariabler;  s      ru   
call_slicezBuiltinVariable.call_slice  s     &tR000rw   c           
      p    ddl m}  || |j        j        d| j        gt          ||          R            S r[  )r_  r]  r`  ra  r   r2   )rs   r   ro   rp   r]  s        ru   
_dyn_proxyzBuiltinVariable._dyn_proxy  s_     	+*****}"BI"+<T6+J+J  
 
 	
rw   r  c                 N   t          |t          j                  rJ  | j        |i |r | j        |g|R i |S t          j                            | j                  }| |g t                                S |	                    |          r|j
        rTt          |j
                  s?t          |t                    r2t          |j
                            t          j                             nt#          |dd          rPt          |t$          t          j        t          j        f          r$|j        j                            |j
                   t          |t          j                  r2t          |j
                            t          j                             nKt          |t          j                  s1t          |j
                            t          j                              |t9          |                    |                    t                                S d S )Nrm  r   F)r   r   IteratorVariabler  r  rF   cls_forr   r;   rr  r   r!   rK   r   r   r   TUPLE_ITERATOR_LENr   r?   OrderedSetVariableDictKeySetVariabler`  guard_on_key_orderr   MappingProxyVariableMAPPING_KEYS_CHECKUnspecializedNNModuleVariableSEQUENCE_LENGTHr  re  rs   r   r  ro   rp   r   s         ru   _call_iter_tuple_listz%BuiltinVariable._call_iter_tuple_list  s5    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    sHe44 E-%8%8: : 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    trw   c                     t           j                            | j                  } |t	          |                    |                    t                                S rl  )r   rF   r  r   r  r  r;   r  s         ru   _call_iter_tuple_generatorz*BuiltinVariable._call_iter_tuple_generator  sW     (0099s..r2233*,,
 
 
 	
rw   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 rl  )r   r   r  rF   r  r   r  r  r;   LocalGeneratorObjectVariablerX   r  r  r  r  s         ru   _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Grw   c           	         ddl m}m} ddlm} t          |t          j        |||f          rt          j        	                    d          S t          |t                    r't          j        |t          |j                            S t          |t          t          t           t"          t$          t&          f          rt          j        	                    d          S d S )Nr8   )rJ  FunctoolsPartialVariablerK  TF)r  rJ  r  r  rL  r   r   r  r=   rH  rY   r<   r   r   r   rS   rT   rH   rL   rG   )rs   r   r  rJ  r  rL  s         ru   call_callablezBuiltinVariable.call_callable  s     	RQQQQQQQ//////2(( 	
 
 	 -44T:::011 	"(Xci-@-@AAA $

 

 	 -44U;;;4rw   r  c                 p    t          |          dk    r|d         S t          dd| d| ddg           d S )	Nr   r8   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   )rs   r  ro   rp   s       ru   	call_castzBuiltinVariable.call_cast  s\     t99>>7N0///v//JHI		
 	
 	
 	
 	
 	
rw   c                    t          |t          j                  r't          j        |t          |j                            S t          |t                    r't          j        |t          |j                            S |	                                r4t          j        |t          |
                                                    S d S rr   )r   r   r  r<   r   dirr   r   r   r|  r   r  s      ru   call_dirzBuiltinVariable.call_dir+  s     c9=>> 	="(S^^<<<c?++ 	:"(S[[999!!## 	L"(S1G1G1I1I-J-JKKKtrw   c                    ddl m} |rJ |st          g t                                S t	          |          dk    r)t          t          |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                  r]|                    |||          }t          |t                    r|S |                    |t(                                        ||          S t          t          |d	g           d S )
Nr8   rM  rm  z&set() takes 1 positional argument but  were givenr{  r   __iter__z!failed to construct builtin set())r_  rN  rP   r;   r   r   r  r0   r   cloner  r  r   rX   r   r   r   UserMethodVariabler  rH  r@  call_set)	rs   r   ro   rp   rN  r  rd  iter_fnouts	            ru   r  zBuiltinVariable.call_set7  s    	/.....z 	Er1A1C1CDDDDt99>>$Us4yyUUUV   
 1g#y,-- 	K99+;+=+=9>>>..r22 	K11"55Eu4D4F4FGGGGY@AA 	KjIxG
 G
 	K oob*55G'9#?@@ K44WdFKKc;// J(//C88AA"cJJJ 56	
 	
 	
 	
 	
 	
rw   c                    |rJ |st          g           S t          |          dk    r)t          t          |dt          |           dg           |d         }t	          |t
          j                   rt          d |j        D                       S |                    |          r$|                    |          }t          |          S t          t          |dg           d S )Nr8   z,frozenset() takes 1 positional argument but r  r{  r   c                     g | ]	}|j         
S rl   )vtr   s     ru   r  z2BuiltinVariable.call_frozenset.<locals>.<listcomp>p  s    %B%B%Bqad%B%B%Brw   z'failed to construct builtin frozenset())	rN   r   r   r  r0   r   	set_itemsr  r  )rs   r   ro   rp   r  rd  s         ru   call_frozensetzBuiltinVariable.call_frozenset]  s    z 	)$R(((t99>>$Y3t99YYY    1g#y233 	,$%B%BCM%B%B%BCCC..r22 	,11"55E$U+++ ;<	
 	
 	
 	
 	
 	
rw   c                 `   ddl m |r9t          |          dk    rd|v s"t          ddt          |           d           |                    dt          j        d                    }fd|D             }t          j        ||	                                t                      	          S )
Nr8   rM  strictzip1 kwargs (`strict`) kwargsFc                 r    g | ]3}                     t                                        |gi           4S rl   )rH  iterr^  )r   r  rN  r   s     ru   r  z,BuiltinVariable.call_zip.<locals>.<listcomp>  sM     
 
 
 $$R..<<R#KK
 
 
rw   r  rn  )r_  rN  r   r3   popr=   rH  r   ZipVariabler   r;   )rs   r   ro   rp   r  	iter_argsrN  s    `    @ru   call_zipzBuiltinVariable.call_zipz  s     	/..... 	KK1$$V););#)6{{+++	   H&6&=e&D&DEE
 
 
 
 

 
 
	 $,,..*,,
 
 
 	
rw   c                 2    ddl m}  |||d                   S )Nr8   r|  r   )r  r}  )rs   r   ro   rp   r}  s        ru   call_lenzBuiltinVariable.call_len  s,     	100000{2tAw'''rw   c                 @    ddl m}  |||d         |d                   S )Nr8   )
vt_getitemr   )r  r  )rs   r   ro   rp   r  s        ru   call_getitemzBuiltinVariable.call_getitem  s2     	0/////z"d1gtAw///rw   isinstance_type_varc           	      (   	                                  }n9# t          $ r, t          dd d| dd g t          j                   Y nw xY w|                                }t          t          j                  rAj	        :d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                  rAd|j        j        v r3t          j        ||j                            |j                            S t          t          j                  r#t          j        |t          ||                    S t          |t.                    st1          t3          |dd                     r|f}nkt          |t           j                  r|j        }nIt          |t8                    rt;          d |D                       r|}nt=          t>          |dg           	 tA          ||          }n# t>          $ r ||v }Y nw xY wt          j        ||          S )Nz6builtin isinstance() cannot determine type of argumentzisinstance(, r  z=Dynamo doesn't have a rule to determine the type of argument r  
tensor_vartensor_typerh   c                     dt           dt          ffdt          |          t          u rt	          fd|D                       S  |          S )Ntyrh   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)r7   r  nodemetar   r   nn	parameter	Parameterr   r  python_typer   )r$  example_valdtypesr  s      ru   
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..rw   c              3   .   K   | ]} |          V  d S rr   rl   )r   r$  r/  s     ru   r   zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>  s+      DD"zz"~~DDDDDDrw   )r	   r   r   r  r   )r!  r"  r/  r  s     @ru   _tensor_isinstancez;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance  sx    /3 /4 / / / / / /$ $$--DDDDDDDDDD%:k222rw   z<isinstance() called on user defined object with C extensionszeUser-defined object with C extensions can have torch.Tensor attributes; intentionally graph breaking.rF  c              3   |   K   | ]7}t          |t                    pt          t          |d d                    V  8dS )rF  N)r   r   r   r   )r   tps     ru   r   z2BuiltinVariable.call_isinstance.<locals>.<genexpr>  sZ       8
 8
 r4  THWR9Ld-S-S$T$T8
 8
 8
 8
 8
 8
rw   z?isinstance() arg 2 must be a type, a tuple of types, or a unionr{  )!r,  rd  r   r   r"  r   r   r   rT   r   r<   r	   r   r   rX   r   rn   MemberDescriptorTyper  r}  r  rF  !UserDefinedExceptionClassVariabler   r   r   	UnionType__args__r  r   r   r  r  )	rs   r   r  r  r  isinstance_typer1  isinstance_type_tupler  s	     `      ru   call_isinstancezBuiltinVariable.call_isinstance  s<   	((HH" 	 	 	PCcCC-@CCCa\_aa5)45	     	 .@@BBc9344 	W9N3+3:=33 3 3 3 3 34 #(-?-?_-U-UVVV c9>?? 		JIu1E
 E
 		 V?c??_???<6)56    sI?@@	#'@'III"();;OSYWW  
 c9FGG 	T"(Z/-R-RSSS 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$R---s!    3AAI+ +I<;I<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(r   r  z7issubclass() with non-constant arguments not supported.z#Make sure your arguments are types.r  )r   rd  r   r   r  r<   r   r  )rs   r   r;  r<  
left_ty_pyright_ty_pys         ru   call_issubclasszBuiltinVariable.call_issubclass	  s    	 3355J"5577KK" 		 		 		B<g<<<<<U9&1	     		 $RJ)L)LMMMs   (+ 1AAc                 ,    t          j        ||          S rr   )r   SuperVariablers   r   rQ  rR  s       ru   
call_superzBuiltinVariable.call_super-	  s     &q!,,,rw   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   r8   )	next_variabler   r   r   r   r   rF   r  rd  )rs   r   ro   r  exs        ru   	call_nextzBuiltinVariable.call_next2	  s     1g
	$$R(((( 	 	 	4yyA~~Aw 	 	 	#y9:: $$$&&&y|######		s'    %B
B:B
BBBr   c                     |                                 r*|                                }|                    ||          S d S rr   )r|  r   r   )rs   r   r  r   r   s        ru   call_hasattrzBuiltinVariable.call_hasattrB	  sD     ""$$ 	2**,,D''D111trw   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 )NFra   r8   r  mapr  r  z0 kwargsc                 h    g | ].}|                               r|                              n|/S rl   )rr  re  )r   rv  r   s     ru   r  z,BuiltinVariable.call_map.<locals>.<listcomp>d	  sP     
 
 
 ,/+F+Fr+J+JSC##B'''PS
 
 
rw   r  )r=   rH  sysversion_infor   r3   r  r   MapVariabler   r;   )rs   r   r   rK  rp   r  seq_lists    `     ru   call_mapzBuiltinVariable.call_mapJ	  s%    "(// 	7**Fq((X-?-?'-v;;///	    H.>.Ee.L.LMM#6{{+++	  
 
 
 

 
 
 $,,..*,,	
 
 
 	
rw   rv  c                     |                     |          r|                    |          n|}t          j        ||t	                                S rl  )rr  re  r   FilterVariabler;   )rs   r   r   rv  seq_or_lists        ru   call_filterzBuiltinVariable.call_filtero	  s^     ,/+F+Fr+J+JSC##B'''PS 	 '*,,
 
 
 	
rw   c                    | j         ot          | j         |          }|dk    r t          j        || j        j        |          S | j        t          u ra	 t          | j        |          }n%# t          $ r t          t          |           Y nw xY wt          |          st          j        |||          S t          | j        |d           }t          j        | ||t          |          nd |          S )Nrx   r   )r   r   r<   r   r   rx   r   r   r  r   r   r   r   r   )rs   r   r   r   r   r   s         ru   r   zBuiltinVariable.var_getattr{	  s    >DK!>!>:"(TW-=vFFF7f=..! = = =(<<<<<=E?? @&,R???twd++($d.>T


DQW
 
 
 	
s   A( (B
	B
r  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t-          j        |j                  S n# t4          $ 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"                  rStG          |j$        j%        tL          j'                  r/tP          j)        r#|dv rt          dd| d| dd| dg           |                                r|*                                j+        j,        d         }	t          |	tZ          j.                  rAt_          |	          r2j0        rtP          j1        st          dddg td          j3                   	 |                    |          S # th          $ r  t4          $ r t          j5        ||          cY S w xY wt          |t          j6                  r	 to          |j$        |          }
n$# tp          $ r ts          tp                      w xY wt          |
tZ          j:        j;        tZ          j:        j<        f          r:tZ          j=        j>        ?                    |
          rt          j6        |
          S |t          v r%t          j5        ||t%          |
                     S d S t          |t                    r|jB        s||j$        jC        vrto          |j$        |          }
n|j$        jC        |         }
tP          jD        r!jE        F                    |j$        ||
           t-          j        |
          S 	 |                    |          S # t4          $ r t          j5        ||          cY S w xY w)!Nz)getattr() with non-constant name argumentzgetattr(r   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__rd  c           
      b    g | ]+\  }}t          j        |ot          |                    ,S rl   )r<   r   r   )r   r  rR  r   r   s      ru   r  z0BuiltinVariable.call_getattr.<locals>.<listcomp>	  sR     & & & !%1 ,1 "Av'J-2J2J & & &rw   r   rc  re  )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 Tensorr  z-torch.compile does not support sparse Tensorsr   )Gr|  r   r   r  r`  rs  r~  r   r   r  is_state_mutatedhas_pending_mutationhas_pending_mutation_of_attr	load_attrrJ  is_constant_matchr   r   r   	enumeraterd  rL   r<   r   rc  re  rd  rL  r   rT   r=   r@   DistributedVariabler  rX   r  r   r}  unittestTestCaser   enable_trace_unittestr  r'  r(  r   Tensorr   r_  capture_sparse_computer   SPARSE_TENSORr9   r   r  r   r  r   _opsOpOverloadPacket
OpOverload_dynamotrace_rulesis_aten_op_or_tensor_methodr(   r   is_torchr  replay_record_enabledexec_recorderrecord_module_access)rs   r   r  r  rY  r   hasattr_varr   
tuple_argsfake_valmemberr   s    `         @ru   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** J{**& & & & & )2%/(B(B	& & &
  )6z&QQQQz)).4RPPP{**.4RIII&    c9566 Y	K??2t,,,(*--23

 

 W	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 D11!   (<<< 4ej6KL  	-+GGOO	 !=fVTTTT/// 0tF||F    t[)) 	K| 2t39+=== D11+D1+ O 55civNNN"(VV<<<Kr4000& K K K 0d6JJJJJJKsO   A%H: 8 H: H: :
IIO$ $+PP0Q !Q'V0 0!WWr  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#                  r^|j        $                                s#t!          dd dd gt"          j%        
           |                                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 )!Nrt  r8   r\  requires_gradz!setattr() on Tensor.requires_gradzsetattr(r   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 rl   r   )r   tfr  s     ru   r  z0BuiltinVariable.call_setattr.<locals>.<listcomp>w
  s.     ! ! !!	SZ@W@W@W@W@Wrw   r^  r   rh   c                 x    | j         }|dk    r|dz
  }t          j        j                            | f|f           | S r  )_versionr   _C	_autograd_unsafe_set_version_counter)r   versions     ru   _lower_version_count_by_1z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1
  s?    "#*"Q;;&-kG*FFtgZXXX rw   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#nn.Module mutation in HigherOrderOpznn.Module: zPInplace modifying nn.Module params/buffers inside HigherOrderOps is not allowed.z<Remove the mutation or move it outside of the HigherOrderOp.)2r   r   r@   rX   NestedUserFunctionVariabler  TracebackVariablerT  r`  rs  r~  r|  r   r  r_  r]  r   r   r  r   r   tracked_fakesremovedynamo_disable_gradr   no_gradra  ru  set_r2   r  r'  r(  r.   
store_attrrL  is_root_tracerFUNDAMENTALrT   r,   r   r  r   r  getattr_staticmodule_typer)  Modulert  convert_to_unspecialized)rs   r   r  r  r  r   r]  	to_remover  r  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs     `            ru   call_setattrzBuiltinVariable.call_setattr3
  s    -34++	
 	
 \	- ??2}xorJJJI"88==Q	-++--Q	- ..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++-- 	A/#// rV*6	    **,, +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!(O
 
O O c                 4    |                     |d|gi           S )N__delattr__rW  )rs   r   r  r  s       ru   call_delattrzBuiltinVariable.call_delattr
  s     r=8*bAAArw   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_namer  ru  )r,  rd  r   r   INVALID_INPUTr}   r   r#   r   r   rX   
cls_sourcer   ru  r`  install_global_by_idr   r    r<   r   )rs   r   r  r   errorr   r   s          ru   	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 rr   )rr  r  reversedre  r   rL   )rs   r   r  rd  s       ru   call_reversedzBuiltinVariable.call_reversed
  sS     &&r** 	2#"9"9""="=>>??E*5111trw   c                    |                     |          rit          |t          j                  sOt          j        |                    |          t                                }|                    |dg |           |S d S )Nrm  sort)r  r   r   rT   rH   r  r;   rT  )rs   r   r  rp   list_vars        ru   call_sortedzBuiltinVariable.call_sorted  s     ,,R00 	):
 :
 	 !---b11.00  H   VR888Otrw   c                 6   t          |t                    r;t          j        |t          j        |                                          d           S t          |t                    r3|                    |d          j        r|	                    |dg i           S d S )Nsym_num__neg__)
r   rS   rH  r   r   r  rX   r   r   rT  )rs   r   rQ  s      ru   call_negzBuiltinVariable.call_neg  s     a)) 	")qzz||,,    q344	8""2y117	8 ==YB777 trw   _format_stringc                     |                                 }t          |          }t          j                            |||          S rr   )r   r}   r   StringFormatVariablerH  )rs   r   r  ro   rp   format_strings         ru   call_formatzBuiltinVariable.call_format(  s=     '99;;M**-44]D&QQQrw   c                    t          |          dk    rit          |d         t          j                  rI|d         }|j                            |j                  }t          j        |t          |                    S t          |          dk    rJ|d         
                                r0t          t          |d                   }|                    |          S t          |d         t          j                  r-t          j        |t          |d         j                            S t          |          dk    r|d         }t          |t          j        t          j        f          r|j        r}t          |t          j                  r2t)          |j                            t,          j                             n1t)          |j                            t,          j                             |                                }|t4          ur"t          j        |t          |                    S t7          t          |                    S t9          dt;          |          d| dgt<          j                   d S )Nr   r8   zid() with unsupported argsz5Dynamo doesn't know how to trace id() call with args zkSupported args are Tensors, and functions/nn.Modules/user-defined objects from outside the compiled region.r  ) r   r   r   rL  r`  get_submodule
module_keyr<   r   idr  r
   rT   call_idr0   r  
fake_valuer  rX   r   r   r   r   CLASS_MATCHID_MATCHr  r:   r>   r   r}   r   r  )rs   r   ro   nn_mod_variabler  tensor_variabler  real_vals           ru   r  zBuiltinVariable.call_id3  s'    t99q==ZQ1KLL="1gO)))/*DEEC"(RWW555YY!^^Q 1 1 3 3^">47;;O"**2...DGY?@@ 	"(RQ0B-C-CDDDYY!^^q'C67  T : T!#y'IJJ T%cj&;&;L<T&U&UVVVV%cj&;&;L<Q&R&RSSS7799H~--&,RH>>>!"S''***4D		ZTXZZ8 '2		 	 	 	 	 	rw   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  )rs   r   r   s      ru   call_deepcopyzBuiltinVariable.call_deepcopy]  sL     	%)Q)))A/".		
 	
 	
 	
 	
 	
rw   r  r  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 )Nr8   r  %supported_tensor_comparison_op_valuesz unsupported Tensor comparison opr  r   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_  rL  r  r  r   r   r  is_notr  r  r*   r  r'  r<   r   r   rx   r   r  r   rT   sizer   broadcast_shapesRuntimeErrorr  r`  ra  r   )
rs   r   r  r  rL  r  r   	is_result
tensor_clsrg  s
             ru   r  z'BuiltinVariable._comparison_with_tensorj  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\!!&,R;;;&,RY???::::;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                    r|n|}t          |t          t          t          f          s+t          j        | |t                      d                     S |j                            d
||                                |                                fi           }t          j        ||d           S )Nr8   r  z!unsupported SymNode comparison opr  r   r  r  z with SymNode arguments r  r^  r  )r  r  r   r   rx   r   r  r   rS   r=   rT   r<   r   r   r`  ra  r  rH  )rs   r   r  r  r  r   non_symnoderg  s           ru   r  z(BuiltinVariable._comparison_with_symnode  sV    	BAAAAAW:::;;9999999: : :*.: :27: :6)56     *$@@Jeed/+;^L
 
 	A #(RR$-?-?@@@	&&R$--//5>>3C3C!Db
 
 %
 
 
 	
rw   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                    r|                    |d|gi           S d S )Nr^  r  rE  )r   r=   is_symnode_likerS   rH  r`  ra  r   r
  r2   re   rT  rC  s       ru   call_xorzBuiltinVariable.call_xor  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X\4Eq!fb4Q4Q       a-.. 	9==YR888trw   c                 b    t          |t                    r|                    |d|gi           S d S )NrG  r   re   rT  rC  s       ru   	call_ixorzBuiltinVariable.call_ixor  6     a-.. 	:==Z!b999trw   c                 b    t          |t                    r|                    |d|gi           S d S )Nr-  r  rC  s       ru   call_subzBuiltinVariable.call_sub  s6     a-.. 	9==YR888trw   c                 b    t          |t                    r|                    |d|gi           S d S )Nr/  r  rC  s       ru   	call_isubzBuiltinVariable.call_isub  r  rw   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                    r|                    |d|gi           S d S )Nr^  r  __and__)r   r=   r  rS   rH  r`  ra  r   r  r2   re   rT  rC  s       ru   	call_and_zBuiltinVariable.call_and_  s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X]5F1vr5R5R       a-.. 	9==YR888trw   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                    r|                    |d|gi           S d S )Nr^  r  __iand__)r   r=   r  rS   rH  r`  ra  r   r  r2   re   rT  rC  s       ru   	call_iandzBuiltinVariable.call_iand   s     a)** 	z!=M/N/N 	4 	1#4#4#6#6 	")&	&#X]5F1vr5R5R       a-.. 	:==Z!b999trw   c           
         t          |t                    rt          |t                    rd S 	 |                                }|                                }t          |t                    r-t          |t                    rt	          j        |||z            S n# t          $ r Y nw xY w|                                rW|                                rCt          j	        | |j
        j        dt          j        gt          ||gi           R  d           S t          |g t          t           t"          t$          R           r|                    |d|gi           S d S )Nr^  r  __or__)r   r=   r   r   r<   r   rd  r  rS   rH  r`  ra  r   r	  r2   re   r?   rV   rW   rT  )rs   r   rQ  rR  a_constb_consts         ru   call_or_zBuiltinVariable.call_or_  s    a)** 	z!=M/N/N 	4	**,,G**,,G'4(( DZ-F-F D&,R71BCCC" 	 	 	D	  	1#4#4#6#6 	")&	&#X\4Eq!fb4Q4Q       %! ' (	 
 
 	8 ==XsB777 ts   A)B 
B&%B&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          |g t          t          t          R           r|                    |d|gi           S d S )Nr^  r  __ior__)r   r=   r  rS   rH  r`  ra  r   r  r2   re   r?   rV   rT  rC  s       ru   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 trw   c           
         t          |t                    rBt          j        | |j        j        dt
          j        gt          |gi           R  d           S t          |t                    r|j	        }t          |t          t          t          f          r+t          j        |t          |j                  dk              S t          |t"                    r1|                     ||          }t          j        ||j                   S d S )Nr^  r  r   )r   rS   rH  r`  ra  r   r   r2   rC   dv_dictrH   r?   rP   r<   r   r   rd  rX   r  r   )rs   r   rQ  bool_results       ru   	call_not_zBuiltinVariable.call_not_\  s    a)) 	")&	&#X]5FsB5O5O       a)** 		Aa,(9;GHH 	@"(S\\Q->???a233 	D..Q//K"(1B-BCCCtrw   c                 4    |                     |d|gi           S )N__contains__rW  rC  s       ru   call_containszBuiltinVariable.call_containss  s     }}R!b999rw   r   c                 R    t          |t          j                  o| j        |j        u S rr   )r   r   r   r   r   s     ru   r   zBuiltinVariable.is_python_equalx  s#    %!:;;S58@SSrw   r   rr   )wrx   ry   rz   r{   r   	_SENTINELr<   _nonvar_fieldsr   r	   r"   r   staticmethodr  cacher@  r   r  r   r  r(  r|   r  r  r}   rH  r   r  r  r  r  r  r  r  r  r   r  r  r   r  r  r   r  r  r  r  r   r  r  r8  r<  r>  r:  r7  rj  r^  rT  r  r  r  r  r  r  r  r  call_mincall_maxr  r  r  r  r  r  r  r  r  r  r  
call_tupler  r  r  r  r  r  r  r  r:  r@  rD  rH  rJ  rS  rW  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   __classcell__r}  s   @ru   r   r   e  s          I		'N
 )s )F )?P ) ) ) [) _@c(38*<&= @ @ @ _ \@D:4 : : : : _*Xc3h%7!8 * * * _ \*X _#TfuT#Yf0E%EFF # # # _ \#J _KTf)!# !	"	
		 K K K _ \KZ S#X(,_(=GK		$	&   \5T 5 5 5 5
 ,59dD$5G+H+H)C.HHH3 # $      4# 4 4 4 4C    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
	
 
 
 
 o S#Xo +/:o CGo 	#!o%&	

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

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

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

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

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

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

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

 "#
 
#
 #
 #
 #
J

)

/>

ET

	

 

 

 


5 
S 
_ 
 
 
 
, +/eK eK#eK eK "	eK
 !4'eK 
4	eK eK eK eKNd#d d "	d
 d 
4	d d d dLB#B B "	B
 
B B B B:):0?:	: : : :4)0?	4	   #  "	
 
4	   $).=	4	   &	R#	R (	R 		R
 "	R 
	R 	R 	R 	R()(2A(	( ( ( (T
)
.=
	
 
 
 
5
)5
1@5
IX5
	5
 5
 5
 5
n"
)"
1@"
IX"
	"
 "
 "
 "
H).=BQ	4	   &).=BQ	4	   ).=BQ	4	   ).=BQ	4	   ).=BQ	4	   &).=BQ	4	   $+)+.=+BQ+	4	+ + + +Z).=BQ	4	   :).=	4	   .:):.=:BQ:	: : : :
TV T T T T T T T T Trw   r   c                       e Zd ZdZeZefdededdf fdZde	fdZ
dd	d
ee         dee	ef         defdZdd	de	d
ee         dee	ef         def
 fdZedd	ded
ededef
d            Zedd	ded
ededef
d            Z xZS )DictBuiltinVariablez4Variable tracker for the `dict` builtin constructor.r   rp   rh   Nc                 P    |t           u sJ  t                      j        di | d S Nrl   )r|   r  r  rs   r   rp   r}  s      ru   r  zDictBuiltinVariable.__init__  3    }}}}""6"""""rw   c                     dS )NzDictBuiltinVariable()rl   r   s    ru   r  zDictBuiltinVariable.__repr__      &&rw   r   r[   ro   c                 8    t          j        |t          g|R i |S rr   )r  call_custom_dictr|   )rs   r   ro   rp   s       ru   r^  z!DictBuiltinVariable.call_function  s'     #3BNtNNNvNNNrw   r   c                    |dk    rt          |          dk    rq|sot          i t          t                                }t	          |d         t
                    r|S |j        j                            | |d         |dd                    S |dk    rt          j	        |t          g|R i |S t          t          |d           }||t          v rt	          |d         t          j                  r:|d         j        J |d         j                            |||dd          |          S t	          |d         t                    r&|d                             |||dd          |          S t!                                          ||||          S )Nr\   r8   rm  r   fromkeys)r   r?   r|   r;   r   r  r`  rs  r  call_custom_dict_fromkeysr   r)   r   rW   r  rT  r  )rs   r   r   ro   rp   dict_vtr  r}  s          ru   rT  zDictBuiltinVariable.call_method  s    94yyA~~f~+BDTDVDVWWWd1g':;; #"Ny-KK$q'48   :&@D  #)   dD$//"{l'B'B$q'9#DEE GAw'333Aw'33Bd122hOOODG%677 GAw**2tT!""XvFFFww""2tT6:::rw   user_clsc                    t          |          }|                     t          j        | t          j                  t          j        | |          g||          S rr   )r  r  r<   r   r   construct_dict)r   r  ro   rp   	args_lists        ru   r  z$DictBuiltinVariable.call_custom_dict  sU     JJ	--!"i&>??"2x00=9=
 
 	
rw   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                     rA f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  r8   r   z	.fromkeysz1 args and 1 kwargs (`value`)z
 args and r  r   zat least 1 argsz argsr   z2 argsc                 :    g | ]}t          j        |          S rl   r  )r   r  r   s     ru   r  zADictBuiltinVariable.call_custom_dict_fromkeys.<locals>.<listcomp>  s&    BBB-b!44BBBrw   rm  c              3   4   K   | ]}t          |          V  d S rr   rD   r  s     ru   r   z@DictBuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>  s(      00a;q>>000000rw   zfailed to call dict.fromkeys()zo.fromkeys() because arguments could not be automatically converted to a list, or some dict key is not hashable.z(Manually convert the argument to a list.zEnsure all keys are hashable.)r|   r   r   r   rx   r   r3   r  r=   rH  r?   r@   r   r  r;   r  r  r   )	r   r  ro   rp   r  r   DictVariableTypearg_listkeyss	   `        ru   r  z-DictBuiltinVariable.call_custom_dict_fromkeys  sn    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   	BBBBcBBBH##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 ;/
	
 
	
 
	
 
	
 
	
 
	
rw   )rx   ry   rz   r{   r|   r   r   r	   r  r}   r  r   r<   r^  r  rT  r   r  r  r  r  s   @ru   r  r  |  s       >>
C%) # #d #S #T # # # # # #'# ' ' ' 'O#O 'O S/)*	O
 
O O O O;#; ; ?#	;
 S/)*; 
; ; ; ; ; ;> 
#

 	

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

 "P
 
P
 P
 P
 \P
 P
 P
 P
 P
rw   r  c                   x     e Zd ZdZeZefdededdf fdZdefdZ	dd	d
e
e         deeef         defdZ xZS )IterBuiltinVariablez(Variable tracker for the `iter` builtin.r   rp   rh   Nc                 P    |t           u sJ  t                      j        di | d S r
  )r  r  r  r  s      ru   r  zIterBuiltinVariable.__init__  r  rw   c                     dS )NzIterBuiltinVariable()rl   r   s    ru   r  zIterBuiltinVariable.__repr__  r  rw   r   r[   ro   c                    |st          dddg t          j                   |^}}|s|st          |t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        t          f	          r|                    |dg i           S t	          j        t           j        j                                      ||g|i           }|rt	          j        |          }|S )Nziter() with no argumentsziter()z%iter() requires at least one argumentr  r  )r   r   r  r   r   rH   rI   r  r?   rL  rT   rL   r  rC   rT  r  r   r  iter_r^  ObjectIteratorVariable)rs   r   ro   rp   r  restrets          ru   r^  z!IterBuiltinVariable.call_function  s     	2 C5)45	    
d
 	;	; *+./.,+6$
 	;$ ??2z2r::: ,$
 

-SL4L"
-
- 	  	8 2377C
rw   )rx   ry   rz   r{   r  r   r	   r  r}   r  r   r<   r|   r^  r  r  s   @ru   r   r     s        22
C$( # #c #C #D # # # # # #'# ' ' ' '.#. '. S/)*	.
 
. . . . . . . .rw   r   c            
            e Zd ZdZeZefdededdf fdZde	fdZ
dd	d
ee         dee	ef         defdZdd	de	d
ee         dee	ef         def
 fdZ xZS )ListBuiltinVariablez4Variable tracker for the `list` builtin constructor.r   rp   rh   Nc                 P    |t           u sJ  t                      j        di | d S r
  )r  r  r  r  s      ru   r  zListBuiltinVariable.__init__T  r  rw   c                     dS )NzListBuiltinVariable()rl   r   s    ru   r  zListBuiltinVariable.__repr__X  r  rw   r   r[   ro   c                 "   ddl m} |r|d         nd }t          |t          j        t          j        f          s%t          ||          rR|                    |          r=t          t          |	                    |                    t                                S |t          g t                                S |                    |          r|j        rHt          |j                  s3t          |t                    r2t          |j                            t"          j                             nt          |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          |                    |                    t                                S d |D             }t?          dd| dd	| g t@          j!        
           d S )Nr8   )rX   r   rm  c                 6    g | ]}t          |          j        S rl   )r   rx   rw  s     ru   r  z5ListBuiltinVariable.call_function.<locals>.<listcomp>  s!    444!T!WW%444rw   zFailed to trace list()zlist(r  zADynamo does not know how to construct a list from argument types r  )"r  rX   r   r   r  r  r  rH   r  r  r;   rr  r   r!   rK   r   r   r   r  r?   r0   rP   rN   r`  r  r   r  r  r  r  re  r   r   r  )rs   r   ro   rp   rX   r  r  s          ru   r^  z!ListBuiltinVariable.call_function[  s    	<;;;;;'d1gg4),i.TU
 
 		 s566		 11"55			  S2226677.00   
 ;2B2D2DEEEE&&r** 	z "4SZ"@"@ c#899 !
--l.MNN    "#'899 E&k+<=C C 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    S,,R0011.00   
 54t444	,(I(((g\egg2%12		
 	
 	
 	
 	
 	
rw   r   c                 T   |dk    r~t          |          dk    rk|sit          g t                                }t          |d         t                    r|S |j        j                            | |d         |dd                    S t                      	                    ||||          S )Nr\   r8   rm  r   )
r   rH   r;   r   r)  r`  rs  r  r  rT  )rs   r   r   ro   rp   list_vtr}  s         ru   rT  zListBuiltinVariable.call_method  s     94yyA~~f~&r9I9K9KLLLd1g':;; #"Ny-KK$q'48   ww""2tT6:::rw   )rx   ry   rz   r{   r  r   r   r	   r  r}   r  r   r<   r|   r^  rT  r  r  s   @ru   r)  r)  O  s'       >>
C%) # #d #S #T # # # # # #'# ' ' ' '6
#6
 '6
 S/)*	6

 
6
 6
 6
 6
p;#; ; ?#	;
 S/)*; 
; ; ; ; ; ; ; ; ; ;rw   r)  r   c              #      K   ddl m} |                    | d          }	 |                    |            d V  |                    |            d S # |                    |            w xY w)Nr8   )GradModeVariableF)r  r1  rH  enterexit)r   r1  gmvs      ru   r  r    sq      """"""

!
!"e
,
,C		"s   A A')rh   N)r{   
contextlibr  r  r  loggingr   r   rO  rn   typingrr  collectionsr   r   collections.abcr   r   r   r   r	   r
   r   r   torch._subclasses.meta_utilsr   torch.overridesr   torch.utils._python_dispatchr   r  r   r   r   r   r  r   r   r   r   r   r   r   guardsr   r   replay_recordr   r   r   r   r    r!   r"   r#   utilsr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   baser9   r:   r;   r<   constantr=   r>   dictsr?   r@   rA   rB   rC   hashablerE   listsrF   rG   rH   rI   rJ   rK   rL   miscrM   setsrN   rO   rP   r  rQ   rR   rS   rT   rU   r  rV   rW   rX   rY   torch._dynamo.codegenrZ   torch._dynamo.symbolic_convertr[   	getLoggerrx   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
  ra  r   r  r   r   r`   r|   r   r}   r   rP  r   r  r  r  r&  cmp_eqr%  cmp_ner!  cmp_ltr$  cmp_ler"  cmp_gtr#  cmp_ger  r   r   r   r   r   r   r   r   r   r   r   r  r   re   rf   rg   r   r   r   r  r   r)  contextmanagerIteratorr  rl   rw   ru   <module>rR     sv	    *                 



    0 0 0 0 0 0 0 0 B B B B B B B B B B B B + + + + + + + + + +  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 ' ' ' ' ' '                                                          ,            7 6 6 6 6 6 6 6              " ! ! ! ! !                        I I I I I I I I I I                          E//////DDDDDDg!! M8<M8<M8<)x'M8<h&hohoM8<M8=L(,M8< " I|,	-	-))Y-
.
.	99i'((B "Dy~)=$>   
 w2;)]O2L2L&w/ fj&*57MM  _%d?.CS.H(II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
 	; eD1367    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1
 1
 1
 1
 1
/ 1
 1
 1
hT,T T,T T,T T,T T,T) T,T T,T T,TnXS
 S
 S
 S
 S
- S
 S
 S
l: : : : :- : : :zT; T; T; T; T;- T; T; T;p 3 8M      rw   