
    Ph                     @   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 d dlZd dlmZmZ ddlmZmZmZ ddlmZmZmZmZmZ ddlmZmZ dd	lmZ dd
l m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZI ddlJmKZK  ej                  eM      ZNe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Zhd Zi G d de5      Zje j                  d        Zly)    N)defaultdictOrderedDict)DictList)	sym_floatsym_int   )configpolyfill	variables)AttributeMutationErrorunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceis_constant_source
TypeSource)build_checkpoint_variablecheck_constant_argscheck_numpy_ndarray_argscheck_unspec_python_argsextract_fake_example_valueget_fake_valueguard_if_dynis_utils_checkpointistypenumpy_operator_wrapperproxy_args_kwargstensortype_to_dtype   )MutableLocaltypestrVariableTracker)ConstantVariable)EventVariableStreamVariable)ConstDictVariableDefaultDictVariableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)FakeItemVariableSymNodeVariableUnspecializedPythonVariable)UserDefinedVariablec                 F    fd}t        t        |       d|  |_        |S )zPCreate a BuiltinVariable.call_{name} method that inlines through polyfill.{name}c                 P    |j                  t        j                        ||      S N)inline_user_function_returnr   UserFunctionVariable)selftxargskwargsfns       jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/variables/builtin.pycall_fnz$_polyfill_call_impl.<locals>.call_fnN   s(    --**2.f
 	
    call_)getattrr   __name__)namerD   rB   s     @rC   _polyfill_call_implrJ   K   s)    

 
4	 Btf~GNrE   c                   6    e Zd Ze ej
                  d      d               Zd Ze ej
                  d      d               Ze ej
                  d      d               Z	e ej
                  d      d               Z
ed        Zd Z fd	Zd
 Zd Zd Z fdZd Zd Zd Zd Zed        Z	 	 	 	 	 	 dC fdZ	 	 	 	 	 	 dC fdZd Zd Zd ZeZeZdDdZd Zd Z d Z!d Z"dEdZ#e#Z$e#Z%e#Z&e#Z'd Z(d Z)d  Z*ed!        Z+ed"        Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7dEd.Z8	 dEd/e9d0e9fd1Z:d/e9d0e9d2e9fd3Z;d/e9d0e9fd4Z<d/e9fd5Z=d/e9fd6Z>d/e9fd7Z?d8 Z@d9 ZAd: ZBd; ZCd< ZDd= ZEd> ZFd? ZGd@ ZHeEZIeEZJeEZKeEZLeEZMeEZNeEZOeEZP eQdA      ZR eQdB      ZS xZTS )FBuiltinVariableNc                  v   h t         t        t        t        t        t
        t        t        t        t        t        t        t        t        t        t        t         t         j"                  t$        t&        t(        j*                  t(        j,                  t(        j.                  t(        j0                  t(        j                  t(        j2                  t(        j4                  t(        j6                  t(        j8                  t(        j:                  t(        j<                  t(        j>                  t(        j@                  t(        jB                  t(        jD                  t(        jF                  t(        jH                  t(        jJ                  t(        jL                  t(        jN                  t(        jP                  t(        jR                  t(        jT                  t(        jV                  t(        jX                  t(        jZ                  t(        j\                  t(        j^                  t(        j`                  t(        jb                  t(        jd                  t(        jf                  } | ji                  d tj        jl                  jo                         D               | S )Nc              3   h   K   | ]*  }t        |t        t        j                              s'| , y wr;   )
isinstancetypemathsqrt.0xs     rC   	<genexpr>z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>   s$     W4
1d499o8V14s   (22)8absallanyboolcallablechrdivmodfloatintlenmaxminordpowreprroundstrformatsumrP   operatorposnegnot_invertmulmatmulfloordivtruedivmodaddsubgetitemlshiftrshiftand_or_xoripowimulimatmul	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindexupdaterQ   __dict__valuesfnss    rC   _constant_fold_functionsz(BuiltinVariable._constant_fold_functionsY   s   5
5
5
 5
 	5

 5
 5
 5
 5
 5
 5
 5
 5
 5
 5
 5
  !5
" #5
$ JJ%5
& '5
( )5
* LL+5
, LL-5
. MM/5
0 OO15
2 LL35
4 LL55
6 OO75
8 95
: ;5
< LL=5
> LL?5
@ LLA5
B C5
D OOE5
F OOG5
H MMI5
J LLK5
L LLM5
N MMO5
P MMQ5
R S5
T U5
V W5
X MMY5
Z MM[5
\ MM]5
^ _5
` a5
b MMc5
d MMe5
f LLg5
h NNi5
l 	

Wdmm224WW
rE   c                 :    | j                   | j                         v S r;   )rB   r   r>   s    rC   can_constant_fold_throughz)BuiltinVariable.can_constant_fold_through   s    ww$77999rE   c                     h t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                   t         j"                  t         j$                  t         j&                  t         j(                  t         j*                  t         j,                  t         j.                  t         j0                  t         j2                  t         j4                  t         j6                  t         j8                  t         j:                  t         j<                  t         j>                  t         j@                  t         jB                  t         jD                  t         jF                  t         jH                  t         jJ                  } | S r;   )&rj   rk   rl   rm   rn   rd   ro   rp   rq   rr   rs   rt   ltgtgeleneeqru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   s    rC   _fx_graph_functionsz#BuiltinVariable._fx_graph_functions   s/   &
LL&
LL&
 MM&
 OO	&

 LL&
 LL&
 OO&
 &
 &
 LL&
 LL&
 KK&
 KK&
 KK&
 KK&
  KK!&
" KK#&
$ LL%&
& '&
( OO)&
* OO+&
, MM-&
. LL/&
0 LL1&
2 MM3&
4 MM5&
6 7&
8 9&
: ;&
< MM=&
> MM?&
@ MMA&
B C&
D E&
F MMG&
H MMI&
J LLK&
N 
rE   c                     t         j                  g dt         j                  ft         j                  g dt         j                  ft         j
                  g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                  ft        g dt         j                  ft         j                  g dt         j                  ft         j                  g dt         j                   ft         j"                  g d	t         j$                  fi
} | S )
N)__add____radd____iadd__)__sub____rsub____isub__)__mul____rmul____imul__)__truediv____rtruediv____itruediv__)__floordiv____rfloordiv____ifloordiv__)__mod____rmod____imod__)__pow____rpow____ipow__)
__lshift____rlshift____ilshift__)
__rshift____rrshift____irshift__)rj   rt   r   ru   r   ro   r}   rr   r   rq   r   rs   r   rd   r|   rw   r   rx   r   r   s    rC   _binopszBuiltinVariable._binops   s    
 LL>NLL>NLL>N?!! B""  LL>N5x}}ELL>NOO<   OO<  '
> 
rE   c                     i } t         j                         j                         D ])  \  }\  }}g | |<   g | |<   |\  }}}||fd}| |   j                  t        t
        f|f       | |   j                  t
        t        f|f       |fd}| |   j                  t        t
        f|f       | |   j                  t
        t        f|f       |fd}	| |   j                  t        t
        f|	f       | |   j                  t
        t        f|	f       | |   j                  t        t
        f|	f       | |   j                  t
        t        f|	f       , d }
d }t        t        f|ft        t        f|
ft        t        f|
ft        t        fd ft        t        fd fg}| t        j                     j                  |       d }t        t
        f|ft        t        f|
ft        t        f|
fg}| t        j                     j                  |       d	 t        t        fft        t        fft        t        ffd
ft        t        ffdfg}| t        j                      j                  |       | S )Nc                 v    t        |t              r|j                  | ||gi       S |j                  | ||gi       S r;   )rO   r8   call_method)r?   aboptionsforward_namereverse_names         rC   user_defined_handlerz=BuiltinVariable._binop_handlers.<locals>.user_defined_handler   s=    , a!45==\A3CC==\A3CCrE   c                 ,    |j                  | ||gi       S r;   r   )r?   r   r   r   r   s        rC   user_defined_inplace_handlerzEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handler  s     }}RsB??rE   c           
      r    ddl m}  ||  | j                  j                  d|gt	        ||gi        fi |S Nr%   wrap_fx_proxycall_function)builderr   outputcreate_proxyr#   )r?   r   r   r   rB   r   s         rC   dynamic_handlerz8BuiltinVariable._binop_handlers.<locals>.dynamic_handler,  sK    2$*BII**'.?A.K
  rE   c                 d    t        |j                  t        |j                  |             z   fi |S r;   )r4   itemslistunpack_var_sequencer?   r   r   r   s       rC   tuple_add_handlerz:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerI  s+     40E0Eb0I+J!JVgVVrE   c                 d    t        |j                  t        |j                  |             z   fi |S r;   )r2   r   r   r   r   s       rC   size_add_handlerz9BuiltinVariable._binop_handlers.<locals>.size_add_handlerL  s+    $q/D/DR/H*I IUWUUrE   c                 d    t        t        |j                  |             |j                  z   fi |S r;   )r4   r   r   r   r   s       rC   <lambda>z1BuiltinVariable._binop_handlers.<locals>.<lambda>a  s-    -..r23agg=+AH+rE   c                 T     t        |      |j                  |j                  z   fi |S r;   )rP   r   r   s       rC   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>g  s!    '$q'!''AGG2C*Ow*OrE   c                     |j                   r|j                  |       sy | j                  |t        t	        |j
                        t	        |j                  |             z   fi |      S r;   )mutable_localhas_unpack_var_sequencereplace_allr1   r   r   r   r   s       rC   list_iadd_handlerz:BuiltinVariable._binop_handlers.<locals>.list_iadd_handlerl  s]    ??!*C*CB*G>>MD)>)>r)B$CC rE   c                 r     |j                   d|j                  |j                         z  t               d|S )N)r   r    )	__class__r   as_python_constantr&   )r?   lstconstr   s       rC   expand_list_likez9BuiltinVariable._binop_handlers.<locals>.expand_list_like  s>     3== ii%":":"<<*n  rE   c                      | |||      S r;   r   r?   r   r   r   r   s       rC   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>      *:2q!W*MrE   c                      | |||      S r;   r   r   s       rC   r   z1BuiltinVariable._binop_handlers.<locals>.<lambda>  r   rE   )rL   r   r   appendr8   r(   r6   r2   r4   r)   r/   rj   rt   extendr1   r   ro   )op_handlersopmagic_method_namesin_place_opr   r   inplace_namer   r   r   r   r   list_like_addition_handlersr   list_like_iadd_handlerslist_like_expansion_handlersr   s                   @rC   _binop_handlerszBuiltinVariable._binop_handlers   s     $$&,,.
- KO')K$7I4L, *)D6 O""%79MN O""!#679MN
 1=@
 $++%79UV $++!#679UV
 79 	 O""!?3_E O""!?3_E
 $++!?3_E $++!?3_EY /f	W	V |, 
 .!
  01!
 "=1 "#34O-'
#6 	HLL!(()DE	 /!
 .!
  01!#
 	HMM"))*AB	 ,-/?@-.0@A!<0M
 "=1M(
$ 	HLL!(()EFrE   c                     t         j                         }| |vry ||    D ]%  \  \  }}}t        ||      st        ||      s#|c S  y r;   )rL   r   rO   )r   r   r   handlerstype1type2handlers          rC   _find_binop_handlerz#BuiltinVariable._find_binop_handler  sQ    "224X (0|#NUEG!U#
1e(< (4 rE   c                 :    | j                   | j                         v S r;   )rB   r   r   s    rC   can_insert_in_graphz#BuiltinVariable.can_insert_in_graph  s    ww$22444rE   c                 2    t        |   di | || _        y )Nr   )super__init__rB   )r>   rB   rA   r   s      rC   r   zBuiltinVariable.__init__  s    "6"rE   c                     | j                   d}n| j                   j                  }| j                  j                   d| dS )NNone())rB   rH   r   )r>   rI   s     rC   __str__zBuiltinVariable.__str__  s=    77?D77##D..))*!D633rE   c                 ,    t        | j                        S r;   )rP   rB   r   s    rC   python_typezBuiltinVariable.python_type  s    DGG}rE   c                     | j                   S r;   )rB   r   s    rC   r   z"BuiltinVariable.as_python_constant  s    wwrE   c                     t         t        j                   t        t        j                  t        t        j
                  i}| j                  |v r|| j                     S t        | !         S r;   )	rZ   torchr_   int64r^   float64rB   r   as_proxy)r>   DTYPEr   s     rC   r
  zBuiltinVariable.as_proxy  sO    %**5==

 77e>!w!!rE   c                     | j                   j                  }| j                   j                  dk(  sJ ||j                  j                  vsJ d       |j                  |dd      gS )Nbuiltinszshadowed globalFT)rt   )rB   rH   
__module__r?   	f_globalscreate_load_global)r>   codegenrI   s      rC   reconstructzBuiltinVariable.reconstruct  sb    wwww!!Z///7::///B1BB/**4D*ABBrE   c                     t        ||      S r;   )r   r>   r@   rA   s      rC   constant_argszBuiltinVariable.constant_args  s    "400rE   c                     t        d t        j                  ||j                               D              xr5 t        d t        j                  ||j                               D               S )Nc              3   P   K   | ]  }t        |t        j                           y wr;   )rO   r   TensorVariablerT   is     rC   rV   z.BuiltinVariable.tensor_args.<locals>.<genexpr>  s%      
; q)223;   $&c              3   P   K   | ]  }t        |t        j                           y wr;   )rO   r   GetAttrVariabler  s     rC   rV   z.BuiltinVariable.tensor_args.<locals>.<genexpr>  s%      
; q)334;r  )rY   	itertoolschainr   r  s      rC   tensor_argszBuiltinVariable.tensor_args  s_     
__T6==?;
 
 
  
__T6==?;
 
 
	
rE   c                     t        ||      S r;   )r   r  s      rC   unspec_python_argsz"BuiltinVariable.unspec_python_args  s    'f55rE   c                     | D cg c]  }|j                          c}|j                         D ci c]  \  }}||j                          c}}fS c c}w c c}}w r;   )r   r   )r@   rA   rU   kvs        rC   unwrap_unspec_args_kwargsz)BuiltinVariable.unwrap_unspec_args_kwargs  s^    0451$$&528,,.8
2@$!QAq##%%.8
 
 	
5 8
s
   AAc                 ~   ddl m} ddlm}m} |D cg c]  }|j                          }}|j                         D ci c]  \  }}||j                          }}}t        ||      }	 | j                  |i |}
 | j                  |i |}| j                         xr |	xs |}t        |t        t        f      sJ t        |t              sJ | j                  t         j"                  u rt        |d   t$        j&                        sd}
| j)                         r|
r| j                  t         j"                  u r1t        |d   t*              rt        |d   t$        j&                        sy	 | j                  }| j                  t,        v r:t        |d   t$        j.                        rt,        | j                     |d   |d   g}}| j                  t         j"                  u rKt        |d   t0              r8t2        j4                  |d   t$        j.                  j7                  d      |d   g}}t9        ||      ret;        d |D              sS |j<                  j>                  dtA        | j                        gtC        ||       } |t$        jD                  ||      S  |j<                  j>                  d|gtC        ||       }t;        d |D              r |tF        ||      S  | j                  |i |rl| jI                  ||      \  }} | j                  |i |}t;        d	 tK        jL                  ||jO                               D              } |tP        ||||
      S tS        d |D              rt1        j6                  ||d       S | j                  t         jT                  u r4t        |d   t$        jP                        r|d   jW                  |      |d<    |||      S | j                  t\        t^        fv rt        |d   t0        t$        j&                  f      rt        |d   t$        j&                        r|d   ja                  |dg i       }n|d   }| j                  t\        u rtb        ntd        } |||j<                  j?                  d||jg                         fi             }|S | j                  th        k(  rG|rEt        |d   |      r6t$        j.                  j7                  ti        |d   j                              S tk        |      dk(  rLtk        |      dk(  r>tl        jo                  | j                  |d   |d         }|r |||d   |d   i       }||S tq        | d| j                  jr                   d       }|r*	  tu        jv                  |      jx                  |g|i | |r	  ||g|i |}||S 	 |rt$        j.                  j7                   | j                         |D cg c]  }|j                          c}i |j                         D ci c]  \  }}||j                          c}}      S | j                  t        u r=tk        |      dkD  r/t        |d   t0              rt        t        j                  dd      t        | !  |||      S c c}w c c}}w # tX        $ r t[        d|  d| d|        Y w xY w# tz        $ r&}|st|        j                  d||       d }Y d }~Od }~ww xY w# t        $ r}|s |j                          Y d }~ed }~ww xY wc c}w c c}}w )Nr%   )r=   )r   wrap_fx_proxy_clsr   Fc              3   T   K   | ]   }t        |      t        j                  k(   " y wr;   )rP   r   r  rT   args     rC   rV   z0BuiltinVariable.call_function.<locals>.<genexpr>"  s$      FEIcDI!9!99Ts   &(r   c              3   <   K   | ]  }t        |t                y wr;   rO   r5   r*  s     rC   rV   z0BuiltinVariable.call_function.<locals>.<genexpr>2  s     IDSz#'78D   c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wr;   rO   r   r7   need_unwraprS   s     rC   rV   z0BuiltinVariable.call_function.<locals>.<genexpr><  s,      &!GA%a)N)NO !G   02)	raw_valuer1  c              3   <   K   | ]  }t        |t                y wr;   rO   r6   rS   s     rC   rV   z0BuiltinVariable.call_function.<locals>.<genexpr>I  s     FAA7r.  zpartial tensor op:  itemr?   proxy)valuer	   rF   z1incorrect arg count %s %s and no constant handlerzgCalling round() on symbolic value is not supported. You can use floor() to implement this functionalitydynamic_shape_round	case_name)I r=   r   r   r(  realizer   r   r   r"  r   rO   r   tupledictrB   rj   rv   r   r  r   r,   IN_PLACE_DESUGARING_MAPr)   r6   r  selectcreater   rY   r   r   r"   r#   NumpyNdarrayVariabler5   r&  r  r  r   r7   rX   rr   convert_to_constantNotImplementedErrorr   r_   r^   r   r   r   r
  rg   r`   rL   r   rG   rH   inspect	signaturebind	TypeErrorlogwarningr   remove_from_statsr   rf   r   r   STANDARD_LIBRARYr   r   )r>   r?   r@   rA   r=   r   r(  r%  r$  r  r   r"  has_constant_handlerrB   r9  _args_kwargsr3  r1  r7  fn_outbinop_handlerresr   excresultrU   r   s                               rC   r   zBuiltinVariable.call_function  s    	+=%)*T		T*-3\\^<^TQ!QYY[.^<+D&9&d&&774T44dEfE#==?  
// 	 $u...&$''' 77h&&&zGY--0
  K $$&8+++tAw(9:tAw	(@(@AMLWW7755*GY77;  7tww?$q'4PQ7ASB77h...:d1g3W  %||Q!2299!<Q.B ,D&9# FEIF C 3BII22'.tww7 +48E -Y-K-KRQVWW.		..# 'tV4
 IDII,( 
 -T,,d=f=%)%C%CD&%QNE7 ' :' :I"% &!*v}}!G& #K -3"+$/  FFF*11"eTBB ww("2"22zQ!F!F8 #'q'"="=b"AQ(U33 77sEl"zGoy'?'?@(
 $q'9#;#;<Aw**2vr2>Aw!WW^'Cii,,#]]_&	C J 77c>dz$q'<P'R--443tAwzz?4KK v;!D	Q+??a$q'M #BQa"=?J$%(8(8'9 :DA	/!!'*//DTDVD ( 5d5f5%!M &  --44)'')6:;da**,d;=C\\^L^TQq!..00^L  77e4y1}DG_!E!22J3	  w$Rv66o +<J ' L 3D64&&JKLX  +KKK
   (+%%''	( <Lsu   Z) Z.-D/Z4 AZ4 %A=Z4 #(Z4 AZ4 
)[ 6\
 6\4#\94[[	\!\\
	\1\,,\1c                     | j                   t        k(  r#|dk(  rt        j                  |t        g|i |S t        |   ||||      S )Nfromkeys)rB   rA  rL   call_custom_dict_fromkeysr   r   )r>   r?   rI   r@   rA   r   s        rC   r   zBuiltinVariable.call_method  sK     77d?tz1"<<RWWPVWWw"2tT6::rE   c                 "   t        |      dk(  r:|d   j                  |      r&|d   j                  |      }| j                  ||      S t        |      dk(  r| j	                  ||d   |d         S t        |      dkD  r| j                  ||      S y Nr%   r   r	   )r`   r   r   _call_min_max_seq_call_min_max_binary)r>   r?   r@   r   s       rC   _call_min_maxzBuiltinVariable._call_min_max  s    t9>d1g==bAG//3E))"e44Y!^,,Ra$q'BBY]))"d33 rE   c                     t        |      dkD  sJ t        |      dk(  r|d   S t        j                  t        j                  | j                  |      |      S Nr   r%   )r`   	functoolsreducepartialr_  )r>   r?   r   s      rC   r^  z!BuiltinVariable._call_min_max_seq  sM    5zA~~u:?8O	 1 1$2K2KR PRWXXrE   c                 r   | j                  ||      r9t        |t        j                        s||}}t        |t        j                        sJ t        |t              r5t        j
                  t        j                        j                  ||gi       }t        |t              st        |t              rLddl
m}  |t        |      | |j                  j                  d| j                  gt!        ||gi              S |j#                         rt        |t        j$                        r$dd l}t        j(                  |j*                        }n#t        j
                  t        j,                        }| j                  t.        u rd|ind|i}|j                  ||g|      }nt        |t        j$                        rIdd l}t.        |j0                  t2        |j4                  i| j                     }t        j(                  |      }nLt.        t        j0                  t2        t        j4                  i| j                     }t        j
                  |      }|j                  |||gi       }t7        d ||fD              rt9        d	 ||fD              rt        j                  j;                  |      S |j#                         r|j=                         }	n|j>                  }	| j                  t.        u rt/        |j>                  |	      }
nt3        |j>                  |	      }
t9        d
 ||fD              }t        j@                  j;                  ||
|      S |S t        |t              st        |t              rK |j                  j                  d| j                  gt!        ||gi        }t        jB                  ||d       S y )Nr%   r(  r   r8  r   rb   ra   c              3   p   K   | ].  }t        |t        j                  t        j                  f       0 y wr;   )rO   r   r7   r)   r  s     rC   rV   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s;      	  A !==!22  s   46c              3   <   K   | ]  }t        |t                y wr;   r-  )rT   vals     rC   rV   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s     KFSz#'78Fr.  c              3   h   K   | ]*  }t        |t        j                        r|j                   , y wr;   r0  rS   s     rC   rV   z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>  s,      "#!!Y%J%JK MM#r2  )"r   rO   r   r  r5   TorchVariabler  tensorr   r6   r   r(  rP   r   r   rB   r#   is_python_constantrE  numpyNumpyVariableclipclampra   maximumrb   minimumrX   rY   from_tensor_variabler   r3  r7   rD  )r>   r?   r   r   r(  nprB   rA   rX  raw_braw_resr1  r9  s                rC   r_  z$BuiltinVariable._call_min_max_binary  s   Aq!a!9!9:!1a!9!9::: !-.++ELL9GGQCQST !_-A1O6(G0"))00' +Aq626  ##%a!?!?@&"009B"00=B(,3%eQZ))"qc6:a!?!?@&rzz3

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

 ''B33rE   c                 &    | j                   | s | j                  | rt        j                  |      S  | j                  | rJ|D cg c]*  }t        j
                  j                  t        |            , }}t        j                  |      S y c c}w r;   )r"  r  r   RangeVariable_dynamic_argsr)   rD  r   )r>   r?   r@   r+  s       rC   
call_rangezBuiltinVariable.call_range"  s    "4""D)-?T-?-?-F**400T&PTPT	**11,s2CDPT   **400s   /Bc                 j    t        d |D              xs  t        d |j                         D              S )Nc              3   <   K   | ]  }t        |t                y wr;   r5  rS   s     rC   rV   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>.  s     @4a:a14r.  c              3   <   K   | ]  }t        |t                y wr;   r5  rS   s     rC   rV   z0BuiltinVariable._dynamic_args.<locals>.<genexpr>.  s      H
4CqJq/*Or.  )rY   r   r  s      rC   r  zBuiltinVariable._dynamic_args-  s7    @4@@ 
C H
4:MMOH
 E
 	
rE   c                 ,    t        j                  |      S r;   )r   SliceVariable)r>   r?   r@   s      rC   
call_slicezBuiltinVariable.call_slice2  s    &&t,,rE   c           
          ddl m}  || |j                  j                  d| j                  gt        ||             S r   )r   r   r   r   rB   r#   )r>   r?   r@   rA   r   s        rC   
_dyn_proxyzBuiltinVariable._dyn_proxy5  sA    *"BII""+<T6+J
 	
rE   c                 t    | j                   |i |r | j                  |g|i |S t        |t        j                        r|S | j
                  t        k(  rt        }n)t        j                  j                  | j
                        }|,|t        u r |g t                     S  |g t                     S |j                  |      r|j                  rt        |j                        sut        |t              r3t        |j                  j!                  t"        j$                               n2t        |j                  j!                  t"        j&                               |t        u r* |t)        |j+                  |            t                     S  |t)        |j+                  |            t                     S y )Nr   )r  r  rO   r   IteratorVariablerB   setr.   r/   cls_forr&   r   sourcer   r3   r   
make_guardr   TUPLE_ITERATOR_LENLIST_LENGTHr   r   )r>   r?   objr@   rA   clss         rC   _call_iter_tuple_listz%BuiltinVariable._call_iter_tuple_list?  st   4t.v."4??27777c9556 J 77c>C,,44TWW=C;k!".. 
 "..  ((,zz"4SZZ"@c#89!

--l.M.MN "#**"7"78P8P"QRk!0045".. 
 S,,R01*n  -rE   c                     ddl m} t        |t        j                  |f      rt        j
                  j                  d      S y )Nr%   )BaseUserFunctionVariableT)	functionsr  rO   r   UserDefinedClassVariabler)   rD  )r>   r?   r+  r  s       rC   call_callablezBuiltinVariable.call_callablep  s<    7)446NO
 --44T::
rE   c                 L    t        |      dk(  r|d   S t        d| d|        y )Nr	   r%   z$unsupported args to builtin cast(): r6  )r`   r   )r>   _r@   rA   s       rC   	call_castzBuiltinVariable.call_castx  s,    t9>7N<TF!F8LMrE   c                 >    t        j                  |t        g|i |S r;   )rL   call_custom_dictrA  r>   r?   r@   rA   s       rC   	call_dictzBuiltinVariable.call_dict~  s    //DJ4J6JJrE   c                    |s|si f}t        |      dk(  sJ |d   }t        |t              rt        ||t	                     S t        |t
        j                        r|j                  |t	                     S t        |t        t        t        f      r |       }|j                  |       D ]>  }|j                  |       \  }}t        j                  |      }|j                  ||i       @ t        ||t	                     S |s+|r)t        j                  t        |      |t	                     S t        |j                   d| d|        y )Nr%   r   r  )user_clsr   z(): r6  )r`   rO   rA  r,   r&   r   cloner1   r4   r0   r   get_keyr   r   rH   )	r?   r  r@   rA   r+  r   rU   r$  r%  s	            rC   r  z BuiltinVariable.call_custom_dict  s-   ut9>!>q'C#t$(hlnUUC!<!<=yy(,.yQQ !( !
004A004DAq)11!4ALL!Q( 5 )WW&..Vx|~  	**+4vQvh?@rE   c                 .   |t         t        t        hv sJ |rB|t        u sJ t        |      dk(  rt        |      dk(  rd|v sJ g ||j	                  d      }t        |      dk(  rt        t        d      t        |      dk(  rg |t        j                  d       }t        |      dk(  sJ |\  }}|t        urt        nt        }t        |t               r' |t         j                  ||      |t                     S t        |t        t        t        t         f      rT|j#                  |       D cg c]  }|j%                  |       }} |t         j                  ||      |t                     S t'        |j(                   d| d|        y c c}w )	Nr%   r:  r   z,fromkeys expected at least 1 argument, got 0r	   r  z.fromkeys(): r6  )rA  r   r   r`   popr   rK  r)   rD  r,   r-   rO   rZ  r&   r1   r4   r0   r   r  r   rH   )	r?   r  r@   rA   r+  r:  DictVariableTyperU   keyss	            rC   r[  z)BuiltinVariable.call_custom_dict_fromkeys  s   D+{;;;;{***t9>c&kQ&67f;LLL/T/6::g./Dt9>I'UVVt9>9T9+22489D4yA~~
U!)!<BU 	 c4 #c5)8<>  !$	
 :=9P9PQS9TU9TA$,,Q/9TDU#dE*HLN  	**+=axHI	 Vs   3Fc                    |rt        |      dk(  rd|v sJ t        fd|D              r|D cg c]  }|j                         c}|j                  dd      r2t              dkD  r$t        fdD              st	        t
        d      t         D cg c]   }t        j                  t        |            " }}t        j                  |      S y c c}w c c}w )Nr%   strictc              3   @   K   | ]  }|j                          y wr;   r   )rT   rU   r?   s     rC   rV   z+BuiltinVariable.call_zip.<locals>.<genexpr>  s     ;dq((,d   Fr   c              3   R   K   | ]  }t        |      t        d          k(     yw)r   N)r`   )rT   uunpackeds     rC   rV   z+BuiltinVariable.call_zip.<locals>.<genexpr>  s$     Hx!3q6S!%55xs   $'z3zip() has one argument of len differing from others)
r`   rX   r   r  r   
ValueErrorzipr   r4   r   )r>   r?   r@   rA   r+  r7  r   r  s    `     @rC   call_zipzBuiltinVariable.call_zip  s    v;!#F(:::;d;;?CDt//3tDHzz(E*s8}q/@HxHH#"M  FI(^T^TY,,T$Z8^ET**511 <D Us   C%Cc           	         t        |      dk(  rd}nBt        |      dk(  sJ t        |d   t        j                        sJ |d   j	                         }|d   j                  |      rwt        |d   j                  |      |      D cg c]9  \  }}t        j                  t        j                  j                  |      |g      ; }}}t        j                  |      S y c c}}w r]  )
r`   rO   r   r)   r   r   	enumerater   r4   rD  )r>   r?   r@   startidxvarr   s          rC   call_enumeratezBuiltinVariable.call_enumerate  s    t9>Et9>!>d1gy'A'ABBBG..0E7**2.
 !*$q'*E*Eb*I5 Q	 !RHC ''//66s;SA !R	   **511 /s   	>C c                 6    |d   j                  |d|dd  |      S )Nr   __len__r%   r   r  s       rC   call_lenzBuiltinVariable.call_len  s#    Aw""2y$qr(FCCrE   c                 6    |d   j                  |d|dd  |      S )Nr   __getitem__r%   r   r  s       rC   call_getitemzBuiltinVariable.call_getitem  s#    Aw""2}d12hGGrE   c                    j                         }|j                         }t        t        j                        r7j
                  +fd}t        j                  j                   ||            S t        t        j                        r5t        j                  t        j                        rt        d d|        t        t        j                        r[d|j                  j                  v rCt        j                  j                  |j                  j                  |j                              S 	 t!        ||      }t        j                  j                  |      S # t"        $ r ||u }Y .w xY w)Nc                 j    fdt        |      t        u rt        fd|D              S  |      S )Nc                 v    | t         vrt        j                         |       S t         |    }j                  |v S r;   )r$   
issubclassr  dtype)tydtypesr+  s     rC   
check_typezOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_type  s9    !44)#//*;R@@04F99..rE   c              3   .   K   | ]  } |        y wr;   r   )rT   r  r  s     rC   rV   zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>  s     D"z"~s   )rP   r@  rY   )
tensor_vartensor_typer  r+  s     @rC   _tensor_isinstancez;BuiltinVariable.call_isinstance.<locals>._tensor_isinstance  s3    / $-DDDD%k22rE   z&isinstance called on UserDefinedClass r6  __instancecheck__)r  r   rO   r   r  r  r)   rD  UserDefinedObjectVariabler:  typesMemberDescriptorTyper   r   r   r  r  rK  )r>   r?   r+  isinstance_typearg_typer  rj  s     `    rC   call_isinstancezBuiltinVariable.call_isinstance  sB   ??$)<<>c93349N3 --44"38 
 c9>>?JIIu11E
 8Q>OP
 sI??@#'@'@'I'II--44));;OSYYW 	.X7C ))0055  	.o-C	.s   8E# #E32E3c                     |j                         }|j                         }t        j                  t        ||            S )z,Checks if first arg is subclass of right arg)r   r   r)   r  )r>   r?   left_tyright_tys       rC   call_issubclasszBuiltinVariable.call_issubclass  s6    ,,...0))*Wh*GHHrE   c                 .    t        j                  ||      S r;   )r   SuperVariabler>   r?   r   r   s       rC   
call_superzBuiltinVariable.call_super  s    &&q!,,rE   c                     t        |t        j                  t        j                  f      r|j	                  |      \  }}|S t        |t        j
                        r|j                  d   S y )Nr   )rO   r   r0   r  next_variablesr/   r   )r>   r?   r+  rj  	next_iters        rC   	call_nextzBuiltinVariable.call_next!  s^    )00)2L2LM
 !//3NCJY77899Q< 9rE   c                 h    |j                         r"|j                         }|j                  ||      S y r;   )rn  r   call_hasattr)r>   r?   r  attrrI   s        rC   r  zBuiltinVariable.call_hasattr*  s4    ""$**,D##B-- %rE   c                     |j                  |      rE|j                  |      D cg c]  }|j                  ||gi        }}t        j                  |      S y c c}w r;   )r   r   r   r   r4   )r>   r?   rB   seqrU   r   s         rC   call_mapzBuiltinVariable.call_map/  s\    &&r*<?<S<STV<WX<WqR%%b1#r2<WEX**511 +Xs   Ac                    t        |t        j                  t        j                  f      rit	        d |j
                  D              rM|sK|j
                  D cg c]  }|j                   }}t        j                  j                  t        |            S |j                  |      r|j                  dt        j                  j                  d            j                         }|rJ |j                  |      |d  }t        t        j                         j#                  |t        t$        j&                        t        j                  |      t        j                  j                  d      gi       S y c c}w )Nc              3      K   | ]@  }t        |t        j                        xr  t        |j                  t        t
        f       B y wr;   )rO   r   r)   r:  r_   r^   rS   s     rC   rV   z+BuiltinVariable.call_sum.<locals>.<genexpr>8  sC       #A 1i889 6qwwe56"s   AAr  r   )rO   r   r1   r4   rX   r   r:  r)   rD  ri   r   r  r   r   rL   rc  rd  r   rj   rt   )r>   r?   r  rA   rU   new_listr  r   s           rC   call_sumzBuiltinVariable.call_sum4  s8    sY33Y5L5LMN   
 ),3AH3--44S]CC&&r*JJ33::1=  "  :++B/7E"9#3#34BB#HLL1++E2..55a8
   + 4s   E/c                     |j                  |      r>|j                  |      }||d   |dd  }}n|}|D ]  }|j                  |||gi       } |S y rb  )r   r   r   )r>   r?   functioniterableinitializerr   r:  elements           rC   call_reducezBuiltinVariable.call_reduceQ  sk    ++B/004E"$Qxqru#  ..rE73CRH !L 0rE   r  name_varc                    ddl m} ddl m}m}m}m}	m}
m} ddlm	}m
} |j                         }|j                         st        d       |j                  j                  j!                  |      r'	 |j                  j                  j#                  ||      S |9| j'                  |||      }|j                         dv sJ |j                         s|S i }|j(                  rt+        |j(                  |      }||d<   nd }|d	k(  r	 |j                         }t-        |t.              rt|j0                  }|5t3        |      D cg c]  \  }}  ||t5        ||            |        }}}n|D cg c]  }  |       ||       }}t7        j8                  |fi |S 	 t-        |t6        j<                        r|j?                  ||      S t-        |t6        j@                        r3|d
k(  r-|r|j                  jB                  D ]  }|j(                  |jD                  k(  s|jF                  jH                  }|jK                         jL                  jN                  d   jH                  }d } |||      rf|S|jP                  D cg c]  }tS        |       }}tU        jV                  ||jX                        |jF                  _$        nd |jF                  _$          |||      |jF                  jH                        c S  t        d       y t        d       y t-        |t6        j@                  t6        jZ                  t6        j                  t6        j\                  t6        j^                  f      r#	 |j?                  ||      ja                  |      S t-        ||	      r@tc        |jd                  |      }|jg                  |       |jg                  |      |fi |S y t-        ||
      rytc        |jd                  |      }ti        |      r||d<   tk        di |S |jg                  |       |jg                  |      |fi |S |  |||      |      S   |       ||      S t-        ||tl        f      r_|jd                  jn                  |   }tp        jr                  r'|jt                  jw                  |jd                  ||         |||      |      S ty        ||      r*|dv r& |jz                  tc        |j|                  |            S 	 |j?                  ||      ja                  |      S # t$        $ r Y w xY wc c}}w c c}w # t:        $ r Y w xY wc c}w # t:        $ r  |||fi |cY S w xY w# t:        $ r  |||fi |cY S w xY w)Nr	   )trace_rulesr%   )r)   r  PythonModuleVariableTorchInGraphFunctionVariablerl  r=   SourcelessBuilderVariableBuilderznon-const getattr() name)TFr  	__bases__gradexample_valuec                     | ||| uS 	 | j                   |j                   k7  ry| j                         |j                         k7  ryy# t        $ r}t        t	        |             Y d }~y d }~ww xY w)NTF)shapestriderK  r   rg   )oldnewtes      rC   _grad_changedz3BuiltinVariable.call_getattr.<locals>._grad_changed  sh    "{ck'*#~ 57#&99		#9+/#&::<3::<#?+/',#, 7 !.c"g 6 67s   A !A 	A.A))A.)deviceztensor grad)r  )rH   r  r   )?r>  r  r)   r  r  r  rl  r=   r   r  r  r   rn  r   r   side_effectsis_attribute_mutation	load_attrKeyErrorr  r  r   rO   rP   r  r  r   r   r4   rG  NNModuleVariablevar_getattrr  	graphargsbaseexampler  r
  nodemetar  r_   r  zerosr  NamedTupleVariabler  r  r  rG   r:  lookupr    r   r   r   r
   replay_record_enabledexec_recorderrecord_module_accessr!   rD  rB   )r>   r?   r  r  defaultr  r)   r  r  r  rl  r=   r  r  rI   hasattr_varr   r  r:  basesr  r   
tuple_argsgraphargold_gradnew_gradr   rU   grad_shape_specializedmembers                                 rC   call_getattrzBuiltinVariable.call_getattr\  sE    	#	
 	
 	@**,**,4599!!77<yy--77TBB ++BX>K113}DDD113::

D1F &GHF;..0eT*!OOE) )2%(8&(81 JOBfa0HI!L(8 # &
 KP%P%Q&9&7&9"a&@%
%P$22:III + c9556??2t,,Y55646>
 !#		 3 3H&++5#+#3#3#8#8#&<<>#6#6#;#;O#L#Q#Q7" )8<'34<NN:"4BqCFN !7 :" 9>$:8??9" 0 0 5 9= 0 0 5:r6:8;K;K;P;PQQG !4H m,m,((,,**2233	
=r4066f6EE 9:SYY-F!!&)51{))&1&DGDD 6]+SYY-F"6*$*!0;7;;##F+71{))&1&DGDD#2r626::*(*2v662K@AYY''-F++  55ciivN.?2v.v66C-.4;U3U*#**73664+@AA=r4066f6EEq  ,&
 &Q ' F:"6 ' =&sD<G<<=: ' =&sD<G<<=sl   0%T' <U ?#T7"U *T=?U >U*!U !U0 '	T43T47U 	UUU-,U-0VVrj  c                 *	   ddl m} t        |t        j                  t        j
                  |f      r|j                  |d||gi       S |j                  j                  j                  |      r|j                         r|j                         }t        |t        j                        riddlm} |dk(  rt        d       |dk(  rMg }|j                  j                   D ]-  }	|	j"                  |j"                  k(  s|j%                  |	       / |D ]'  }	|j                  j                   j'                  |	       ) t)        |      5  t+        j,                         5   || |j                  j.                  dt*        j0                  j2                  gt5        ||gi              }
d d d        d d d        d	 }|j                  j/                  d|
j7                         fi         ||j7                         j8                  j:                  d
          |
S |j                  j                  j=                  |||       |S t        |t        j>                        r,t        dtA        |jB                        jD                          y t        |t        jF                        r0|j                  jI                         stK        d      |j                         rt        |t        j                        rtM        |j7                         j8                  |      }	 |jO                  ||j                               }t        |t        j                        rptM        |j7                         j8                  |      }tS        jT                  |jV                  d      }||u r(|t*        jX                  jZ                  jD                  u r|S |j]                  |       y t        |t        j^                  j`                        rw|jb                  rj|j                         rYt        |t        jd                        r>tg        |jh                  |j                         |j                                te        d       S y y y y # 1 sw Y   xY w# 1 sw Y   xY w# tP        $ r d }Y `w xY w)Nr%   )PlacementVariable__setattr__r   requires_gradzmutating requires_grad can introduce a new leaf from non-leaf or vice versa in the middle of the graph, which aot_autograd does not currently know how to handle. datar   c                     | j                   }|dkD  r|dz
  }t        j                  j                  j	                  | |       | S rb  )_versionr  _C	_autograd_unsafe_set_version_counter)rU   versions     rC   _lower_version_count_by_1z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1(  s:    "#**"Q;&-kG**FFq'R rE   r  z#setattr(UserDefinedObjectVariable) z?Can't inplace modify module params/buffers inside HigherOrderOp)5distributedr  rO   r   DataClassVariableCustomizedDictVariabler   r   r  r  rn  r   r  r   r   r   tracked_fakesr  r   removedynamo_disable_gradr  no_gradr   Tensorset_r#   r
  r  r  
store_attrr  rP   r:  r  r  is_root_tracerr   r   r  AttributeErrorrH  getattr_staticmodule_typennModuleconvert_to_unspecializeddictsHFPretrainedConfigVariableexportr)   setattrr  )r>   r?   r  r  rj  r  rI   r   	to_removetfrT  r(  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrs                   rC   call_setattrzBuiltinVariable.call_setattr  s    	3++00!
 ??2}xorJJII""88=++-..0D#y7782?*!n 6> !#I ii5599

2%,,R0 6 (		//66r: ( -R0%--/+2BII22 / % 1 1 "3C:r!B 3B0! II**'1)	 .clln.A.A.F.F.WX JII""--c4=JY@@A5d399o6Q6Q5RS Y77899++-,U  **,Y--2 &4CLLN4G4G%L"'"%//"h6Q6Q6S"TK k9+C+CD)78L8L8N8S8SUW)X& #*"8"8-"XK*.@@'588??+F+FF**((, Y__GGHRYY**,Y//2 GGX88:C<R<R<T (--2, NWHQ 3B/00f & '"&K's7   Q6A
Q)$Q6 R )Q3	.Q66R RRc                 N    | j                  |||t        j                               S r;   )rD  r   DeletedVariable)r>   r?   r  r  s       rC   call_delattrzBuiltinVariable.call_delattrj  s"      S(I4M4M4OPPrE   c                    ddl m}m} 	 |j                         }|j                    |       ||      S   ||t        |j                              |      S # t        $ r+}t        t        j                  t        |      d      d d }~ww xY w)Nr%   r  unknown_python_typer<  )r   r  r  r  rG  r   r   INVALID_INPUTrg   r  r   )r>   r?   r  r  r  py_typeerrors          rC   	call_typezBuiltinVariable.call_typem  s    ?	oo'G ::&$&r733>?2z#**'=>wGG # 	++E
/ 		s   A 	B
&BB
c                     |j                  |      r8t        t        |j                  |                  }t	        j
                  |      S y r;   )r   r   reversedr   r   r4   )r>   r?   r  r   s       rC   call_reversedzBuiltinVariable.call_reversed~  s@    &&r*#"9"9""=>?E**511 +rE   c                    |j                        rt        |t        j                        st	        d |j                        D              r|j                  dd       |j                  dt        j                  d            j                         }t        |      dk(  sJ r"t        |j                        fd|      }nt        |j                        d |      }t        j                  |      S y y y )	Nc              3   <   K   | ]  }|j                           y wr;   rn  rS   s     rC   rV   z.BuiltinVariable.call_sorted.<locals>.<genexpr>  s     P4OqA((*4Or.  keyreverseFr   c                 H    j                  | gi       j                         S r;   )r   r   )rU   r  r?   s    rC   r   z-BuiltinVariable.call_sorted.<locals>.<lambda>  s'    ("8"8QC#((*#+rE   )rT  rU  c                 "    | j                         S r;   )r   )rU   s    rC   r   z-BuiltinVariable.call_sorted.<locals>.<lambda>  s    !"6"6"8rE   )r   rO   r   r  rX   r   r  r)   rD  r   r`   sortedr1   )r>   r?   r  rA   rU  r   r  s    `    @rC   call_sortedzBuiltinVariable.call_sorted  s    ''+sI$<$<=PC4K4KB4OPPzz%.Hjj+2259  "  v;!###++B/+ $ ++B/8#
 ))%00+ Q > ,rE   c                     t        fd|D              r>g }|D ]"  }|j                  |j                               $ t        j                  |      S y )Nc              3   @   K   | ]  }|j                          y wr;   r  )rT   r  r?   s     rC   rV   z-BuiltinVariable.call_chain.<locals>.<genexpr>  s     ?$3s**2.$r  )rX   r   r   r   r4   )r>   r?   r@   r   r  s    `   rC   
call_chainzBuiltinVariable.call_chain  sN    ?$??ES44R89 **511	 @rE   c                    |j                  |      rut        d |D              rb|D cg c]  }|j                          }}|j                  |      }t	        t        j                  |g|       }t        j                  |      S y y c c}w )Nc              3   <   K   | ]  }|j                           y wr;   rS  rS   s     rC   rV   z.BuiltinVariable.call_islice.<locals>.<genexpr>  s      8
,0qA  "Dr.  )	r   rX   r   r   r   r  islicer   r4   )r>   r?   r  r@   rU   
const_argsr   s          rC   call_islicezBuiltinVariable.call_islice  s    ++B/C 8
,08
 5
 ;??$Q!..0$J?004E))%=*=>E**5115
/ @s   Bc                     t        |t              r9t        j                  |t        j                  |j                               d       S y )Nsym_num)rO   r6   rD  rj   rl   r
  r>   r?   r   s      rC   call_negzBuiltinVariable.call_neg  s<    a)"))qzz|,  rE   c                    t        |      dkD  rot        |d   t        j                        rR|d   }|j                  j                  |j                        }t        j                  j                  t        |            S t        d|        y )Nr   zcall_id with args )r`   rO   r   r  r   get_submodule
module_keyr)   rD  idr   )r>   r?   r@   nn_mod_variablers   s        rC   call_idzBuiltinVariable.call_id  sn    t9q=ZQ1K1KL"1gO))))/*D*DEC--44RW==.tf56rE   c                 2    t        dt        |              y )Nzcopy.deepcopy )r   re   )r>   r?   rU   s      rC   call_deepcopyzBuiltinVariable.call_deepcopy  s    tAwi01rE   c           	      
   ddl m}mmm}m}m} ddlm} ddl	m
}	m}
 | j                  fd}t        fdfD              r|	j                         v rt              r%|j                   j#                  j$                        nj'                         t              r%|j                   j#                  j$                        nj'                          j(                               S t        |      rY|	j                         vr |        t        |      s |         j(                   j                  j                              S t        |t*        f      r't        t*        |f      r |j,                  |      S t        |      r3t/              t/              k(  s |         |j,                  |      S t        t0              rKt/              t/              k(  s |         j(                   j2                  j2                              S t        |      st        |      r?ddlm} t8        j:                  u rut        |      ri j(                  t=        t?        jA                         jB                              t=        t?        jA                         jB                              k(        S |
j                         vr |        t        |      rjt        |      r^jD                  xr jD                  DjD                  jD                  k7  r+	 tG        jH                  jD                  jD                         t        |      rn} |t/        |      |      S t        tL              st        tL              rm|
j                         vr |        |j                   jO                  d	jA                         jA                         fi       }tM        j(                  ||d
      S t        |      r9t        |      r- j(                   jP                  jP                              S t        tR              rt        tR              s t        tT              rEt        tT              r5t8        jV                  u r#  jP                  jP                              S jX                  dk(  r(t/              t/              ur j(                  d      S t        tZ              r=t        tZ              r- j(                   j                  j                              S  |        y# tJ        $ r  |        Y 	w xY w)z
        Used to implement comparison operators for different types.
        For example, list1 < list2 is implemented differently from tensor1 < tensor2
        r%   )r/   r)   r  r  r  r=   )r2   )supported_const_comparison_opssupported_tensor_comparison_opsc            
      R    t        dt                d dt                      y )Nzcomparison r6  )r   r'   )leftr   rights   rC   _unimplementedz3BuiltinVariable._comparison.<locals>._unimplemented  s'    Kat1WU^<LMNrE   c              3   :   K   | ]  }t        |f        y wr;   )rO   )rT   rU   r)   r  s     rC   rV   z.BuiltinVariable._comparison.<locals>.<genexpr>  s'      &A 1/1ABC&s   rg  Nr   rc  is_F).r>  r/   r)   r  r  r  r=   listsr2   rm  rp  rq  rB   rX   r   rO   r   rh  ri  r   rD  r4   list_comparerP   r.   _underlying_itemsr   r(  rj   rw  rj  r   r
  r  sizer  broadcast_shapesRuntimeErrorr6   r   r:  r+   r*   r   rH   rL   )r>   r?   rs  rt  r/   r  r  r=   r2   rp  rq  ru  r(  
tensor_clsr9  r)   r  r   s     ``           @@@rC   _comparisonzBuiltinVariable._comparison  s   
	
 	
 	(	

 WW	O    4;;== d$45 		''8,,.  e%56 		''(8(89--/ 
 +#**2dE?;;d017>>@@ e%9: *#**2dgguxx+@AA d\=9:zM<0@
 1#00RuEEd,-:e, 0#00RuEEdK(:e, *#**4))5+B+BC  dN+z%/P2X\\!j&G.'..1$--/2F2FGH4U^^5E5J5JKLM 
 8??AA 40un5YY-5:::II+%**499ejjA ",D.!AuJ$Z   dO,
5/0R8??AA II**dmmou~~7G%H"E #))  d56:,<
 +#**2djj%+++FGG n-*UN2S4/Jum4THKK#Btzz5;;$?@@;;%Dze,.'..u55dO,E?1S*#**2dgguxx+@AAU $ %"$%s   >*U U21U2c           
      :   t        |t              rt        |t              ry t        |t        t        f      rdt        |t        t        f      rNt        j                  | |j                  j
                  dt        j                  gt        ||gi        d       S y Nr   rc  )	rO   r)   r6   rD  r   r   rj   ry   r#   r  s       rC   	call_and_zBuiltinVariable.call_and_J  s    a)*z!=M/Na/+;<=*!12C
 #))&		&&#X]]5F1vr5R   rE   c           
      :   t        |t              rt        |t              ry t        |t        t        f      rdt        |t        t        f      rNt        j                  | |j                  j
                  dt        j                  gt        ||gi        d       S y r  )	rO   r)   r6   rD  r   r   rj   rz   r#   r  s       rC   call_or_zBuiltinVariable.call_or_[  s    a)*z!=M/Na/+;<=*!12C
 #))&		&&#X\\4Eq!fb4Q   rE   c           
      4   t        |t              rMt        j                  | |j                  j                  dt
        j                  gt        |gi        d       S t        |t              r+t        j                  t        |j                        dk(        S y )Nr   rc  r   )rO   r6   rD  r   r   rj   rm   r#   r1   r)   r`   r   re  s      rC   	call_not_zBuiltinVariable.call_not_l  s    a)"))&		&&#X]]5FsB5O   a&#**3qww<1+<==rE   rX   rY   )r@   zList[VariableTracker]rA   zDict[str, VariableTracker]returnr(   )r+  r(   r;   )UrH   r  __qualname__staticmethodrc  	lru_cacher   r   r   r   r   r   r   r   r  r  r   r
  r  r  r   r"  r&  r   r   r`  r^  r_  call_mincall_maxr|  r  r  r  r  r  	call_iter
call_tuple	call_listcall_setr  r  r  r  r[  r  r  r  r  r  r  r  r  r  r  r  r  r(   r  rD  rG  rM  rP  rY  r\  ra  rf  rl  rn  r  r  r  r  call_eqcall_gtcall_ltcall_gecall_lecall_necall_is_call_is_notrJ   call_allcall_any__classcell__)r   s   @rC   rL   rL   X   s   Y8  8t: Y(  (T Y!  !F Yt  tl 
 
54"C1
6 
 

}7/}79U}7	}7~	; &		;
 -	; 
	;4YS;j HH4	

-
*X &I&J%I$H;NK A A< "J "JH22 DH,6\I- .
2
:	 LPQ=&Q=2AQ=fy.&y.2Ay.HWy.vQO Q QH H"2_ 2
1? 162272DL"" GGGGGGHK"5)H"5)HrE   rL   c              #      K   ddl m} t        j                         }|j	                  | d      }	 |j                  |        d  |j                  |        y # |j                  |        w xY ww)Nr%   )GradModeVariableF)r>  r  r  is_grad_enabledrD  enterexit)r?   r  	org_valuegmvs       rC   r.  r.    sR     "%%'I

!
!"e
,C		"s   -A-A A-A**A-)m
contextlibrc  rH  r  loggingrQ   rj   r  collectionsr   r   typingr   r   r  r   r   r>  r
   r   r   rW  r   r   r   r   r   guardsr   r   replay_recordr   r  r   r   r   r   utilsr   r   r   r   r   r   r   r    r!   r"   r#   r$   r	  r&   r'   r(   constantr)   ctx_managerr*   r+   r:  r,   r-   r.   rx  r/   r0   r1   r2   r3   r4   rm  r5   r6   r7   user_definedr8   	getLoggerrH   rL  r   rt   r   ru   r}   ro   r   rq   r   rr   r   rs   r~   r   rw   r   rx   r|   rd   r   ry   r   rz   r   r{   rB  rJ   rL   contextmanagerr.  r   rE   rC   <module>r     s           0   $ * *  1 ' N N    9 8 & 6 F F  S R -g! MM8<<MM8<<MM8<<))x''MM8<<h&&hoohooMM8<<MM8==LL(,,MM8<< "
m*o m*`1 	 	rE   