o
    "i%                    @   sD  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/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZK ddlLmMZMmNZN eOePZQejRejSejTejUejVejWejXejYejZej[ej\ej]ej^ej^ej_ej`ejaejbejcejdejeejfejgejhejiejjiZkdd ZlG dd de3Zme jndd ZodS )    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)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_argsextract_fake_example_valueget_fake_valueguard_if_dynistypenumpy_operator_wrapperproxy_args_kwargstensortype_to_dtype   )MutableLocalVariableTrackerConstantVariable)EventVariableStreamVariable)ConstDictVariableDefaultDictVariableDictViewis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)UserDefinedObjectVariableUserDefinedVariablec                    s&    fdd}t t|  d|  |_|S )zPCreate a BuiltinVariable.call_{name} method that inlines through polyfill.{name}c                    s   | t ||S N)inline_user_function_returnr   UserFunctionVariableselftxargskwargsfn ]/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/torch/_dynamo/variables/builtin.pycall_fn[   s   z$_polyfill_call_impl.<locals>.call_fncall_)getattrr
   __name__)namerH   rF   rD   rG   _polyfill_call_implX   s   
rM   c                       s  e Zd Ze ZdhejZedd Ze	e
ddd Zdd Ze	e
dd	d
 Ze	e
ddd Ze	e
ddd Ze	dd Zdd Z fddZdd Zdd Zdd Z fddZdd Zdd  Zd!d" Zd#d$ Zd%d& Ze	d'd( Zd)d* Ze	d+ee  d,e!fd-d.Z"d/d0 Z#i Z$	1	2	3	4	5	6dd7d8Z%	1	2	3	4	5	6d fd9d:Z&d;d< Z'e'Z(e'Z)d=d> Z*d?d@ Z+dAdB Z,dCdD Z-e+Z.e+Z/ddFdGZ0ddHdIZ1ddJdKZ2dLdM Z3dNdO Z4dPdQ Z5dRdS Z6dTdU Z7ddVdWZ8dXdY Z9e8Z:e8Z;dZd[ Z<d\d] Z=d^d_ Z>e	d`da Z?e	dbdc Z@ddde ZAdfdg ZBdhdi ZCdjdk ZDdldm ZEdndo ZFdpdq ZGdrds ZHdEefdtduZIdvdw ZJdxdy ZKefdzd{ZLd|d} ZMefd~dZN	ddedefddZOdededefddZPdedefddZQdefddZRdefddZSdefddZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dedefddZ`eadZbeadZc  ZdS )BuiltinVariablerE   c                 C   s   t |tj t||dS )N)source)r   
make_guardr   BUILTIN_MATCHrN   )clsvaluerO   rF   rF   rG   create_with_sourcel   s   z"BuiltinVariable.create_with_sourceNc                  C   sd  h t ttttttttt	t
ttttttttjtttj tjtjt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} ddl7m8} | 9|:  | 9dd t;j<: D  | S )Nr#   )r6   c                 s   s$    | ]}t |ttjr|V  qd S r<   )
isinstancetypemathsqrt.0xrF   rF   rG   	<genexpr>      " z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>)=absallanyboolcallablechrdivmodfloatrJ   intlenmaxminordpowreprroundstrformatsumrV   operatorposnegnot_truthinvertmulmatmulfloordivtruedivmodaddsubgetitemlength_hintlshiftrshiftand_or_xoripowimulimatmul	ifloordivitruedivimodiaddisubilshiftirshiftiandixoriorindextensorr6   updatevaluesrW   __dict__)fnsr6   rF   rF   rG   _constant_fold_functionsq   s   	
 !"#$%&'()*+,-./012345678:z(BuiltinVariable._constant_fold_functionsc                 C      | j |  v S r<   )rE   r   r@   rF   rF   rG   can_constant_fold_through      z)BuiltinVariable.can_constant_fold_throughc                  C   s   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 r<   )(rq   r^   rr   rs   rt   rv   rk   rw   rx   ry   rz   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   rF   rF   rG   _fx_graph_functions   s   	
 !"#$%&')z#BuiltinVariable._fx_graph_functionsc                  C   s   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__)rq   r|   r   r}   r   rw   r   rz   r   ry   r   r{   r   rk   r   r   r   r   r   r   rF   rF   rG   _binops   s0   zBuiltinVariable._binopsc               
      s  ddl m} m} ddlmm ddlm ddlm		 ddl
m  ddlmmm i }t  D ]\}\}}g ||< g ||< |\}}}||dfd	d

}	|| tf|	f || tf|	f |ddd}
|| tf|
f || tf|
f |ddd}|| ttf|f || ttf|f || ttf|f || ttf|f q4dd }dd }ttf|fttf|fttf|fttfdd fttttffdd fttfdd fg}|tj | dd }ttf|fttf|fttf|fg}|tj | dd }ttf|fttf|fttf|fttf|fg}|tj  | ttf|| f 	f
dd}t!" D ]}t#|sTJ ||vs[J ||||< qK|S )Nr#   )DictKeysr.   )BaseUserFunctionVariabler>   NNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariabler:   r;   )forward_namereverse_namec                   s.   t | r|| ||gi S || ||gi S r<   )rU   call_method)rA   abr   r   )r;   rF   rG   user_defined_handler(  s   
z=BuiltinVariable._binop_handlers.<locals>.user_defined_handler)r   c                S   s   | | ||gi S r<   r   )rA   r   r   r   rF   rF   rG   user_defined_inplace_handlerJ     zEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handlerrD   c                S   s2   ddl m} || | jjd|gt||gi R  S Nr#   wrap_fx_proxycall_function)builderr   outputcreate_proxyr!   )rA   r   r   rE   r   rF   rF   rG   dynamic_handlerU  s   z8BuiltinVariable._binop_handlers.<locals>.dynamic_handlerc                 S      t g |j|| S r<   )r4   itemsunpack_var_sequencerA   r   r   rF   rF   rG   tuple_add_handlerq     z:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerc                 S   r   r<   )r2   r   r   r   rF   rF   rG   size_add_handlert  r   z9BuiltinVariable._binop_handlers.<locals>.size_add_handlerc                 S   s   t g || |jS r<   )r4   r   r   r   rF   rF   rG   <lambda>  s    z1BuiltinVariable._binop_handlers.<locals>.<lambda>c                 S   s   t g |j|| t dS )Nmutable_local)r1   r   r   r$   r   rF   rF   rG   r     s    c                 S   s   t |g |j|jS r<   )rV   r   r   rF   rF   rG   r         c                 S   s<   |j r|| s
d S || }| jj| |j| |S r<   )r   has_unpack_var_sequencer   r   side_effectsmutationr   extend)rA   r   r   seqrF   rF   rG   list_iadd_handler  s   
z:BuiltinVariable._binop_handlers.<locals>.list_iadd_handlerc                 S   s.   t |tr
||}}|j|j|  t dS )N)r   r   )rU   r'   	__class__r   as_python_constantr$   )rA   lstconstrF   rF   rG   expand_list_like  s   

z9BuiltinVariable._binop_handlers.<locals>.expand_list_likec                    s  fdd}t t f|fg} v rUt d  jdr* fdd}|}|}ndt f fdd}d	t f fd
d}ttttf}|	|t f|ft |f|fg fdd}fdd}fdd}	fdd}
jdrv|}n|
}t
}|	t
ft
fffddfffddf

f|ftjtjf|f		f|	ff|ff|fttt fttt ff|fttf|jfttf|jfttf|jfttf|jfg jdrfdd}|ttf|f |S )Nc                       t  |j|jS r<   )r'   rS   r   oprF   rG   compare_by_value  r   zYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_valueis_c                       t  S r<   r&   r   none_resultrF   rG   never  s   zNBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.neverr   c                    s*   |j d u s|j du s|j du rt S d S NTFrS   r'   r   r   rF   rG   obj_op_none     zTBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.obj_op_noner   c                    s*   |j d u s|j du s|j du rt S d S r   r   r   r   rF   rG   none_op_obj  r   zTBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.none_op_objc                    s   t |  ||S r<   )r/   list_comparerA   leftrightr   rF   rG   list_compare_nocheck  s   z]BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.list_compare_nocheckc                    s<   t |t |urt j d| d| d t|  ||S )N(, ))rV   r   rK   r/   r   r   r   rF   rG   list_compare_check  s
   z[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.list_compare_checkc                    r   r<   )r'   	set_itemsr   r   rF   rG   compare_set_items  r   zZBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_set_itemsc                    s   | | d j d|gi S )N__)r   rK   r   r   rF   rG   compare_via_method	     z[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_via_methodc                    r   r<   )r'   rE   r   r   rF   rG   r     s    zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>c                    s"   t  | j|j| j|jS r<   )r'   r   get_submodule
module_keyr   r   rF   rG   r      s    c                    s$   t |t |urt jdkS d S )Nr   )rV   r'   createrK   r   r   rF   rG   	handle_isQ  s   zRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_is)r'   r   objectrK   
startswithr8   r7   r/   r*   r   rN   r   r)   r(   r%   _comparison_with_tensor_comparison_with_symnodeappend)r   r   resultr   r   r   types_that_are_never_noner  r  r  r	  compare_user_definedop_varr  
r   r   r   r   r:   r;   r>   has_set_itemssize_or_tupler   )r   r   rG   create_cmp_op_handlers  s   

	



=z?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers)$dictsr   r.   	functionsr   r>   	nn_moduler   r   r   torchr   user_definedr   r:   r;   rN   r   r   r  r%   r7   r2   r4   r'   r1   r/   r0   rq   r|   r   r   rw   r6   r   rb   )r   r.   op_handlersr   magic_method_namesin_place_opr   r   inplace_namer   r   r   r   r   list_like_addition_handlersr   list_like_iadd_handlersr   list_like_expansion_handlersr  rF   r  rG   _binop_handlers
  s   











$
	


 zBuiltinVariable._binop_handlersc                 C   sR   t  | }|d u rd S g }|D ]\\}}}t||r&t||r&|| q|S r<   )rN   r(  get
issubclassr  )r   a_typeb_typehandlersmatchestype1type2handlerrF   rF   rG   _find_binop_handlerb  s   
z#BuiltinVariable._find_binop_handlerc                 C   r   r<   )rE   r   r   rF   rF   rG   can_insert_in_graphn  r   z#BuiltinVariable.can_insert_in_graphc                    s   t  jdi | || _d S )NrF   )super__init__rE   )r@   rE   rC   r   rF   rG   r5  q  s   
zBuiltinVariable.__init__c                 C   s,   | j d u rd}n| j j}| jj d| dS )NNoner  r  )rE   rK   r   )r@   rL   rF   rF   rG   __str__u  s   
zBuiltinVariable.__str__c                 C   s
   t | jS r<   )rV   rE   r   rF   rF   rG   python_type}     
zBuiltinVariable.python_typec                 C   s   | j S r<   rD   r   rF   rF   rG   r     s   z"BuiltinVariable.as_python_constantc                    s4   t tj ttjttji}| j|v r|| j S t  S r<   )	ra   r  rf   int64re   float64rE   r4  as_proxy)r@   DTYPEr6  rF   rG   r=    s   


zBuiltinVariable.as_proxyc                 C   sF   | j j}| j jdksJ ||jjvsJ d||j|ddd d S )Nbuiltinszshadowed globalFT)r|   )rE   rK   
__module__rA   	f_globalsappend_outputcreate_load_global)r@   codegenrL   rF   rF   rG   reconstruct  s   zBuiltinVariable.reconstructc                 O   s
   t ||S r<   )r   r@   rB   rC   rF   rF   rG   constant_args  r:  zBuiltinVariable.constant_argsc                 G   4   d}|D ]}t |tjr dS |pt |tj}q|S NF)rU   r   GetAttrVariabler8   )r@   rB   
any_tensorargrF   rF   rG   tensor_args     zBuiltinVariable.tensor_argsc                 C   rH  rI  )r*  r   rJ  r8   )r@   	arg_typesrK  arg_typerF   rF   rG   tensor_args_type  rN  z BuiltinVariable.tensor_args_typec                 O   s\   g }g }t || D ]}t|tjr|| q|| qtdd |D o-| j| S )Nc                 s   s(    | ]}|j d urt|j ndV  qd S rI  )rO   r   rZ   trF   rF   rG   r\     s
    
zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>)		itertoolschainr   rU   r   r8   r  r_   rG  )r@   rB   rC   rM  non_tensor_argsirF   rF   rG   python_and_tensor_constant_only  s   z/BuiltinVariable.python_and_tensor_constant_onlyc                 C   s    dd | D dd |  D fS )Nc                 S      g | ]}|  qS rF   r   rY   rF   rF   rG   
<listcomp>      z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<listcomp>c                 S      i | ]	\}}||  qS rF   rZ  rZ   kvrF   rF   rG   
<dictcomp>      z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<dictcomp>)r   )rB   rC   rF   rF   rG   unwrap_unspec_args_kwargs  s   z)BuiltinVariable.unwrap_unspec_args_kwargsc                 C   s   |   ot||S r<   )r   r   rF  rF   rF   rG   has_constant_handler  s   
z$BuiltinVariable.has_constant_handlerrO  
has_kwargsc           	         s  ddl m} ddlm  tg t fdd|D r#fddS tr5tt	r5fdd	}|S 
 rVtju rFt|d
 tjrV|rNjS |rVj t|dkr|stjg|R  sjntdkr}\fdd nfdd}| tdj d 		r	fdd}|  r|jtdd |D r|sfdd}nfdd}| dj d| d| td
krއfddS tdkr\fdd}|S fdd}|S )Nr#   )SourcelessBuilderLazyVariableTrackerc                 3   s    | ]}t | V  qd S r<   )r*  rR  rg  rF   rG   r\         z0BuiltinVariable._make_handler.<locals>.<genexpr>c                    s     | dd |D |S )Nc                 S   rY  rF   realizerZ   r`  rF   rF   rG   r[    r\  zCBuiltinVariable._make_handler.<locals>.<lambda>.<locals>.<listcomp>r   rA   rB   rC   )objrF   rG   r     s    z/BuiltinVariable._make_handler.<locals>.<lambda>c                    s6    t u rtdd |D std tj |fi |S )Nc                 s   s(    | ]}t |tjot |jtV  qd S r<   )rU   r   r'   rS   rn   rY   rF   rF   rG   r\     s    

zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>zassert with non-string message)AssertionErrorr_   r   r   ExceptionVariablern  rD   rF   rG   create_exception_class_object  s
   zDBuiltinVariable._make_handler.<locals>.create_exception_class_objectr   r   c                    s    | g|R  S r<   rF   )rA   rB   _)binop_handlerrF   rG   r     s    c                    s*    D ]}|| g|R  }|r|  S qd S r<   rF   )rA   rB   rs  rE   rv)binop_handlersrF   rG   call_binop_handlers  s   z:BuiltinVariable._make_handler.<locals>.call_binop_handlersrI   c                    s  z| g|R i |}|d ur|W S W d S  t yf   ztj| g|R i | W   t ye } z, ||}|sYtd| td d| d|  W Y d }~Y d S W Y d }~Y d S d }~ww  ty } z ||}|sv |	  W Y d }~d S d }~ww )Nz1incorrect arg count %s %s and no constant handlerzinvalid handler args  )
	TypeErrorinspect	signaturebindrd  logwarningr   r   remove_from_stats)rA   rB   rC   r  erd  exc)ro  self_handlerrF   rG   call_self_handler  s<    z8BuiltinVariable._make_handler.<locals>.call_self_handlerc                 s       | ]}t |tV  qd S r<   )r*  r'   rY   rF   rF   rG   r\     ri  c              
      sX   zdd |D  }W n t y& } ztdt|  W Y d }~nd }~ww  | |S )Nc                 S   rY  rF   rZ  rY   rF   rF   rG   r[  &  r\  PBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>constant fold exception: )	Exceptionr   rl   rA   rB   rC   resr  r   rE   rF   rG   constant_fold_handler"  s   
z<BuiltinVariable._make_handler.<locals>.constant_fold_handlerc              
      sz   t ||r;zdd |D i dd | D }W n ty5 } ztdt|  W Y d }~nd }~ww  | |S d S )Nc                 S   rY  rF   rZ  rY   rF   rF   rG   r[  3  r\  r  c                 S   r]  rF   rZ  r^  rF   rF   rG   ra  4  rb  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<dictcomp>r  )r   r   r  r   rl   r  r  rF   rG   r  .  s   


z	builtin: rx  c                     r   r<   r   )rB   )	error_msgrF   rG   r   @      c                    s    | ||}|r
|S t   d S r<   r  )rA   rB   rC   ru  )r  r1  rF   rG   builtin_dipatchD  s   z6BuiltinVariable._make_handler.<locals>.builtin_dipatchc                    s.   D ]}|| ||}|r|  S qt   d S r<   r  )rA   rB   rC   rE   ru  )r  r-  rF   rG   r  L  s   )r   rf  lazyrh  rN   r`   rz  isclassr*  r  r3  rq   r~   r   r8   rQ  _handle_insert_op_in_graphr  rg   r2  rJ   rK   r   r  r_   )	rE   rO  re  rf  rr  rw  r  r  r  rF   )
rh  rt  rv  r   r  rE   r1  r-  ro  r  rG   _make_handler  s`   





zBuiltinVariable._make_handlerc              
   C   sT  ddl m}m} |r| jg || R  sd S | j}z| j|i |r<ddlm} ddl	m
} |||||j||W S |tv rUt|d tjrUt| |d |d g}}|tju rrt|d trrtj|d tjd|d g}}t||rtdd |D s|jjd	t|gt||R  }	|tj||	W S |jjd	|gt||R  }	td
d |D r|t||	W S t||r| ||\}
}||
i |}tdd t !|| D }|t"||	||dW S t#dd |D rt||	d W S |tj$u rt|d tj"r|d %||d< |||	W S  t&y)   t'd|  d| d|  Y d S w )Nr#   )r   wrap_fx_proxy_clsr   )	unique_id)invoke_and_store_as_constantr   c                 s   s    | ]
}t |tjkV  qd S r<   )rV   r   r8   rZ   rL  rF   rF   rG   r\   }  s    
z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>r   c                 s   r  r<   rU   r5   r  rF   rF   rG   r\     ri  c                 s   "    | ]}t |tjr|jV  qd S r<   rU   r   r9   need_unwraprY   rF   rF   rG   r\         

)	raw_valuer  c                 s   r  r<   rU   r7   rY   rF   rF   rG   r\     ri  zpartial tensor op: rx  )(r   r   r  rM  r   rE   rX  bytecode_transformationr  r  r  rK   IN_PLACE_DESUGARING_MAPrU   r   r'   rq   r~   r7   r  selectr  r   r`   r   r   r    r!   NumpyNdarrayVariabler5   r   rc  rT  rU  r9   r_   rz   convert_to_constantNotImplementedErrorr   )r@   rA   rB   rC   r   r  rE   r  r  proxy_args_kwargsr  r  rF   rF   rG   r  U  s   

	


 z*BuiltinVariable._handle_insert_op_in_graphrB   List[VariableTracker]rC   Dict[str, VariableTracker]returnr%   c                 C   s   |rdd |  D }| jgdd |D dR }n| jgdd |D R }| j|}|sB| | jdd |D t| | j|< }||||S )	Nc                 S   r]  rF   rj  r^  rF   rF   rG   ra        z1BuiltinVariable.call_function.<locals>.<dictcomp>c                 s       | ]}t |V  qd S r<   rV   rY   rF   rF   rG   r\         z0BuiltinVariable.call_function.<locals>.<genexpr>Tc                 s   r  r<   r  rY   rF   rF   rG   r\     r  c                 S   s   g | ]}t |qS rF   r  rY   rF   rF   rG   r[    r\  z1BuiltinVariable.call_function.<locals>.<listcomp>)r   rE   call_function_handler_cacher)  r  ra   )r@   rA   rB   rC   keyr1  rF   rF   rG   r     s   zBuiltinVariable.call_functionc           
         s  | j tkr9|dkr9t|dksJ t|dksJ |\}}}| }t|tr9|jj|r9|	 r9|
|||S | j tkrO|dkrOtj|tg|R i |S | j tjkr|dkrt|dksaJ t|dksiJ |d }g }||D ]
}	||	| qtt|S t ||||S )N__setattr__   r   fromkeysfrom_iterabler#   )rE   r  rg   rk  rU   r:   r   r   is_attribute_mutationis_python_constantmethod_setattr_standarddictrN   call_custom_dict_fromkeysrT  rU  r   r   r   r4   r4  r   )
r@   rA   rL   rB   rC   ro  name_varvalr   itemr6  rF   rG   r     s.   

zBuiltinVariable.call_methodc                 C   st   t |ttjfr8t |tjr||dg i }n|}| jtu r tnt}ddl	m
} |||jd|| fi dS d S )Nr  r   r   r   rA   r  )rU   r7   r   r8   r   rE   rf   r   r   torch._dynamo.variables.builderr   r   r   r=  )r@   rA   rL  r  fn_r   rF   rF   rG   _call_int_float  s    zBuiltinVariable._call_int_floatc                 C   s$   t |tjrtjjt|jdS d S )NrS   )rU   r   r>   r'   r  rn   rE   )r@   rA   rL  rF   rF   rG   call_str  s   zBuiltinVariable.call_strc                 G   sr   t |dkr|d |r|d |}| ||S t |dkr+| ||d |d S t |dkr7| ||S d S )Nr#   r   r   )rg   r   r   _call_min_max_seq_call_min_max_binary)r@   rA   rB   r   rF   rF   rG   _call_min_max   s   zBuiltinVariable._call_min_maxc                 C   s:   t |dksJ t |dkr|d S tt| j||S Nr   r#   )rg   	functoolsreducepartialr  )r@   rA   r   rF   rF   rG   r  
  s   z!BuiltinVariable._call_min_max_seqc                 C   sr  |  ||rt|tjs||}}t|tjsJ t|tr+ttj||gi }t|t	s5t|t	rSddl
m} |t|||jjd| jgt||gi R  dS | rt|tjrhdd l}t|j}nttj}| jtu rwd|ind|i}|||g|}n4t|tjrdd l}t|jt|ji| j }t|}nttjttji| j }t|}||||gi }tdd	 ||fD rtd
d	 ||fD rtj|S | r| }	n|j}	| jtu rt|j|	}
nt|j|	}
tdd	 ||fD }tj ||
|S |S t|t	st|t	r7| jtu rtj!ntj"}|jjd|gt||gi R  }t	#||d S d S )Nr#   r  r   r  r   ri   rh   c                 s   s"    | ]}t |tjtjfV  qd S r<   )rU   r   r9   r'   )rZ   rW  rF   rF   rG   r\   A  s    
z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>c                 s   r  r<   r  )rZ   r  rF   rF   rG   r\   K  ri  c                 s   r  r<   r  rY   rF   rF   rG   r\   W  r  )$rM  rU   r   r8   r5   TorchInGraphFunctionVariabler  r   r   r7   r   r  rV   r   r   rE   r!   r  r  numpyNumpyVariableclipclamprh   maximumri   minimumr_   r`   from_tensor_variabler   r  r9   sym_maxsym_minr  )r@   rA   r   r   r  nprE   rC   r  raw_braw_resr  r  rF   rF   rG   r    sz   






z$BuiltinVariable._call_min_max_binaryrL  c                 C   *   t t||tdgi }||g i S )N__abs__rN   rJ   r   r'   r  )r@   rA   rL  
abs_methodrF   rF   rG   call_absl     zBuiltinVariable.call_absc                 C   r  )N__pos__r  )r@   rA   rL  
pos_methodrF   rF   rG   call_poss  r  zBuiltinVariable.call_posc                 C   s2   t |tjr
td t|}t|}tj|S )Nzunsupported index(tensor))	rU   r   r8   r   r   rq   r   r'   r  )r@   rA   rL  constant_valuerF   rF   rG   
call_indexz  s
   
zBuiltinVariable.call_indexc                 O   s*   t t||tdgi }||||S )N	__round__r  )r@   rA   rL  rB   rC   round_methodrF   rF   rG   
call_round  r  zBuiltinVariable.call_roundc                 G   s:   t |i r
t|S | j| rdd |D }t|S d S )Nc                 S   s   g | ]
}t jt|qS rF   )r   r'   r  r   r  rF   rF   rG   r[    s    z.BuiltinVariable.call_range.<locals>.<listcomp>)r   r   RangeVariable_dynamic_argsr@   rA   rB   rF   rF   rG   
call_range  s   



zBuiltinVariable.call_rangec                 O   s(   t dd |D pt dd | D S )Nc                 s   r  r<   r  rY   rF   rF   rG   r\     ri  z0BuiltinVariable._dynamic_args.<locals>.<genexpr>)r`   r   rF  rF   rF   rG   r    s   zBuiltinVariable._dynamic_argsc                 G   s
   t |S r<   )r   SliceVariabler  rF   rF   rG   
call_slice  r:  zBuiltinVariable.call_slicec                 O   s0   ddl m} |||jjd| jgt||R  S r   )r   r   r   r   rE   r!   )r@   rA   rB   rC   r   rF   rF   rG   
_dyn_proxy  s   zBuiltinVariable._dyn_proxyc                 O   s   | j |i |r| j|g|R i |S t|tjr|S tj| j}|d u r.|g t dS |	|ry|j
rmt|j
smt|trJt|j
tj n#t|ddrdt|trdt|tsd|jj|j
  t|j
tj |t||t dS d S )Nr   rO   F)r  r  rU   r   IteratorVariabler/   cls_forrE   r$   r   rO   r   r3   r   rP   r   TUPLE_ITERATOR_LENrJ   r*   r   r.   r   guard_on_key_orderr|   rL   SEQUENCE_LENGTHlistr   )r@   rA   ro  rB   rC   rR   rF   rF   rG   _call_iter_tuple_list  s:   


z%BuiltinVariable._call_iter_tuple_listc                 O   s6   | j ||g|R i |}|d u r||d||S |S )N__iter__)r  r   )r@   rA   ro  rB   rC   retrF   rF   rG   	call_iter  s   zBuiltinVariable.call_iterc                 C   sr   ddl 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fr7tjdS d S )Nr#   )r   r   TF)r  r   r  r   rU   r   r   r'   r  r;   rb   rS   r7   r8   )r@   rA   rL  r   r   rF   rF   rG   call_callable  s   
zBuiltinVariable.call_callablec                 O   s,   t |dkr
|d S td| d|  d S )Nr   r#   z$unsupported args to builtin cast(): rx  )rg   r   )r@   rs  rB   rC   rF   rF   rG   	call_cast  s   zBuiltinVariable.call_castc                 O   s   t j|tg|R i |S r<   )rN   call_custom_dictr  r?   rF   rF   rG   	call_dict  s   zBuiltinVariable.call_dictc                    s   |sM|si f}t |dksJ |d }t|tr t||t dS t|tjr.|j|t dS t|ttt	frLt fdd|
 D }t||t dS n|sc|rcdd | D }tj||t dS t|j d	| d
|  d S )Nr#   r   r   )user_clsr   c                 3       | ]}|  V  qd S r<   r   rY   rA   rF   rG   r\     s    

z3BuiltinVariable.call_custom_dict.<locals>.<genexpr>c                 S   s   i | ]
\}}t ||qS rF   r'   r  r^  rF   rF   rG   ra        z4BuiltinVariable.call_custom_dict.<locals>.<dictcomp>z(): rx  )rg   rU   r  r*   r$   r   cloner1   r4   r0   r   r   r   rK   )rA   r  rB   rC   rL  r   rF   r  rG   r    s6   
z BuiltinVariable.call_custom_dictc                 O   sN  |t tthv s	J |r-|tu sJ t|dkr!t|dkr!d|v s#J g ||dR }t|dkr8ttdt|dkrHg |td R }t|dksPJ |\}}|turZt	nt
}t|t rvdd | D }|t |||t dS || rtd	d
 || D r|| }|t |||t dS t|j d| d|  d S )Nr#   rS   r   z,fromkeys expected at least 1 argument, got 0r   c                 S   s   g | ]}t |qS rF   r  )rZ   r_  rF   rF   rG   r[  $      z=BuiltinVariable.call_custom_dict_fromkeys.<locals>.<listcomp>r   c                 s   r  r<   )r-   rl  rF   rF   rG   r\   (      
z<BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>z.fromkeys(): rx  )r  r   r   rg   popr   ry  r'   r  r*   r+   rU   keysr  r$   r   r_   r   r   rK   )rA   r  rB   rC   rL  rS   DictVariableTyper  rF   rF   rG   r    s4   $


z)BuiltinVariable.call_custom_dict_fromkeysc                 O   s   |rJ |st g t dS t|dksJ |d }t|tj r&|jt dS ||r7||}t |t dS td| d|  d S )Nr   r#   r   zset(): rx  )	r.   r$   rg   rU   r   r  r   r   r   )r@   rA   rB   rC   rL  r   rF   rF   rG   call_set1  s   

zBuiltinVariable.call_setc                    s   |rt |dkrd|v sJ t fdd|D rL fdd|D |ddr>t dkr>tfd	dD s>ttd
dd t D }t|S d S )Nr#   strictc                 3   r  r<   r   rY   r  rF   rG   r\   C  ri  z+BuiltinVariable.call_zip.<locals>.<genexpr>c                    s   g | ]}|  qS rF   r  r  r  rF   rG   r[  D  r  z,BuiltinVariable.call_zip.<locals>.<listcomp>Fr   c                 3   s$    | ]}t |t  d  kV  qdS )r   N)rg   )rZ   u)unpackedrF   rG   r\   F  r]   z3zip() has one argument of len differing from othersc                 S   s   g | ]	}t t|qS rF   )r   r4   r  )rZ   r  rF   rF   rG   r[  K  r  )rg   r_   r  r   
ValueErrorzipr   r4   )r@   rA   rB   rC   r   rF   )rA   r  rG   call_zip@  s   
zBuiltinVariable.call_zipc                 G   s|   t |dkr	d}nt |dksJ t|d tjsJ |d  }|d |r<dd t|d ||D }t|S d S )Nr#   r   r   c                 S   s&   g | ]\}}t t j||gqS rF   )r   r4   r'   r  )rZ   idxvarrF   rF   rG   r[  V  s    z2BuiltinVariable.call_enumerate.<locals>.<listcomp>)	rg   rU   r   r'   r   r   	enumerater   r4   )r@   rA   rB   startr   rF   rF   rG   call_enumerateN  s   
zBuiltinVariable.call_enumeratec                 O      |d  |d|dd  |S )Nr   __len__r#   r   r?   rF   rF   rG   call_len^  r
  zBuiltinVariable.call_lenc                 O   r  )Nr   __getitem__r#   r   r?   rF   rF   rG   call_getitema  r
  zBuiltinVariable.call_getitemc              
      s
  z   }W n ty   td  d| d   Y nw | }t tjr; jd ur; fdd}tj	| |S t tj
rRt jtjrRtd  d|  t tj
rjd|jjv rjtj	|j| jS zt||}W n ty~   ||u }Y nw tj	|S )	Nzisinstance(r  z): can't determine type of c                    s6   fdd t |tu rt fdd|D S  |S )Nc                    s(   | t vrt  | S t |  } j|v S r<   )r"   r*  r9  dtype)tydtypesrL  rF   rG   
check_typeq  s   
zOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_typec                 3   s    | ]} |V  qd S r<   rF   )rZ   r  r  rF   rG   r\   y  r  zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>)rV   tupler`   )
tensor_vartensor_typer  r  rG   _tensor_isinstancep  s   z;BuiltinVariable.call_isinstance.<locals>._tensor_isinstancez&isinstance called on UserDefinedClass rx  __instancecheck__)r9  r  r   r   rU   r   r8   r  r'   r  r:   rS   typesMemberDescriptorTyper   r   r#  r*  ry  )r@   rA   rL  isinstance_typerP  r"  r  rF   r  rG   call_isinstanced  s>   
zBuiltinVariable.call_isinstancec                 C   sL   z
|  }|  }W n ty   td| d|  Y nw tt||S )z,Checks if first arg is subclass of right argz+call_issubclass args not constant left_ty: z, right_ty: )r   r  r   r   r'   r*  )r@   rA   left_tyright_ty
left_ty_pyright_ty_pyrF   rF   rG   call_issubclass  s   zBuiltinVariable.call_issubclassc                 C   s   t ||S r<   )r   SuperVariabler@   rA   r   r   rF   rF   rG   
call_super  s   zBuiltinVariable.call_superc              
   C   sR   z| |W S  ty( } zt|tjr#|  |jd W  Y d }~S  d }~ww )Nr   )next_variabler   rU   r   r/   r  r   )r@   rA   rL  exrF   rF   rG   	call_next  s   zBuiltinVariable.call_nextc                 C   s>   |  r| }t|tjrtt|j|S |||S d S r<   )	r  r   rU   r   rN   r'   hasattrrE   call_hasattr)r@   rA   ro  attrrL   rF   rF   rG   r4    s   zBuiltinVariable.call_hasattrc                    s2   | r fdd|D }t|S d S )Nc                    s   g | ]
}  |gi qS rF   rm  rY   rE   rA   rF   rG   r[    r   z,BuiltinVariable.call_map.<locals>.<listcomp>)r   r   r   r4   )r@   rA   rE   r   r   rF   r6  rG   call_map  s   

zBuiltinVariable.call_mapc                 C   s   t |tjtjfrEtdd |jD rE|| ju r&tjt	dd |jD S t |tjrEt |j
ttfrEtjt	dd |jD |j
dS ||rm|| ju rUtjd}||}ttj|ttjt||gi S d S )Nc                 s   s,    | ]}t |tjot |jttfV  qd S r<   )rU   r   r'   rS   rf   re   rY   rF   rF   rG   r\     s    
z+BuiltinVariable.call_sum.<locals>.<genexpr>c                 s       | ]}|j V  qd S r<   r  rY   rF   rF   rG   r\         c                 s   r8  r<   r  rY   rF   rF   rG   r\     r9  )r  r   )rU   r   r1   r4   r_   r   	_SENTINELr'   r  rp   rS   rf   re   r   r   rN   r  r  r   rq   r|   )r@   rA   r   r  r   rF   rF   rG   call_sum  s4   





zBuiltinVariable.call_sumc                 G   s   t g |S r<   )r   StopIterationVariabler  rF   rF   rG   call_StopIteration  r   z"BuiltinVariable.call_StopIterationc                 C   s^   | |r-||}|| ju r|d |dd  }}n|}|D ]}||||gi }q|S d S r  )r   r   r:  r   )r@   rA   functioniterableinitialr   rS   elementrF   rF   rG   call_reduce  s   


zBuiltinVariable.call_reducero  r  c                    s8  ddl m} ddl m}m}m}m}	m}
 ddlm m	 |
 }| s(td jj|r^t|tjrK|dv rK|jrKjj|rKtd|d	 z	jj||W S  ty]   Y nw |d urw| ||}|
 d
v sqJ |
 sw|S i }|jrt|j||d< nd |dkrz4|
 }t|tr|j}d urfddt|D }n
 fdd|D }tj|fi |W S W n	 ty   Y nw t|tjr| |S t|tj!tj"tjtj#tj$tj%frz| |W S  ty   |||fi | Y S w t||	r.t&|j'|}t|t(j)j*t(j)j+fr*|,|r,|	|fi |S d S d S t||t-frm|j.sA||j'j/vrHt&|j'|}n|j'j/| }t0j1r[j23|j'|| d urg|S  4|S t5||
r|dv r|4t&|j6|S z| |W S  ty   |||fi | Y S w )Nr   )trace_rulesr#   )r'   rJ  PythonModuleVariabler  r>   rf  VariableBuilderznon-const getattr() name)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz4pending mutation on nn module, so graph breaking at z call)TFrO   	__bases__c                    s$   g | ]\}} t ||qS rF   )r   )rZ   rW  r   )rF  rO   rA   rF   rG   r[  &  s    z0BuiltinVariable.call_getattr.<locals>.<listcomp>c                    s   g | ]}  |qS rF   )r  )rZ   r   )rf  rA   rF   rG   r[  +  r   )rK   r@  )7 rC  r'   rJ  rD  r  r>   r   rf  rF  r   r  r   r   r   r  rU   r   UnspecializedNNModuleVariableis_state_mutatedhas_pending_mutation	load_attrKeyErrorr4  rO   r   rV   rM  r  r4   r  r   var_getattrr8   NamedTupleVariableDistributedVariabler   r:   rJ   rS   r  _opsOpOverloadPacket
OpOverloadis_aten_op_or_tensor_methodr   is_torchr   r	   replay_record_enabledexec_recorderrecord_module_accessr  r   rE   )r@   rA   ro  r  defaultrC  r'   rJ  rD  r  r>   rL   hasattr_varoptionsrS   bases
tuple_argsmemberrF   )rf  rF  rO   rA   rG   call_getattr  s   	




zBuiltinVariable.call_getattrr  c              	   C   s  t |tjtjtjtjfr||d||gi S |jj	|r|
 r| }t |tjrddlm} |dkr:td |dkrg }|jjD ]}|j|jkrQ|| qD|D ]	}|jj| qTt|1 t  |||jjdtjjgt||gi R  }	W d    n1 sw   Y  W d    n1 sw   Y  dd	 }
|jd|
|	 fi  |
| jjd
  |	S |jj||| |dkr|jj|d| |S t |tjrtdt|j j!  d S t |tj"rI|j# st$d|
 rBt |tjrBt%| j|}z
|&|| }W n t'y   d }Y nw t |tjrBt%| j|}t()|j*d}||u rB|tj+j,j!u rB|S |-| d S t |tj.j/rp|j0rr|
 rtt |tj1rvt2|j3| |  t1d S d S d S d S d S )Nr  r#   r   requires_gradzmutating requires_grad can introduce a new leaf from non-leaf or vice versa in the middle of the graph, which aot_autograd does not currently know how to handle. datar   c                 S   s*   | j }|dkr|d }tjj| | | S r  )_versionr  _C	_autograd_unsafe_set_version_counter)r[   versionrF   rF   rG   _lower_version_count_by_1  s
   z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1example_value_gradgradz#setattr(UserDefinedObjectVariable) z?Can't inplace modify module params/buffers inside HigherOrderOp)4rU   r   DataClassVariableCustomizedDictVariablePlacementVariabler:   r   r   r   r  r  r   r8   r   r   r   tracked_fakesrO   r  removedynamo_disable_gradr  no_gradr   Tensorset_r!   r=  nodemeta
store_attrrV   rS   r  r   is_root_tracerr   r   rT  AttributeErrorrz  getattr_staticmodule_typennModuleconvert_to_unspecializedr  HFPretrainedConfigVariableexportr'   setattrro  )r@   rA   ro  r  r  rL   r   	to_removetfoutrm  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrrF   rF   rG   call_setattr^  s   	
 

zBuiltinVariable.call_setattrc                 C   s   |  |||t S r<   )r  r   DeletedVariable)r@   rA   ro  r  rF   rF   rG   call_delattr  s   zBuiltinVariable.call_delattrc              
   C   sv   ddl m}m} z| }W n ty% } zttjt|ddd d }~ww |j	d u r1|
||S ||t|j	|S )Nr#   rE  unknown_python_type)	case_name)r   rf  rF  r9  r  r   r   INVALID_INPUTrn   rO   r  r   )r@   rA   ro  rf  rF  py_typeerrorrF   rF   rG   	call_type  s    
zBuiltinVariable.call_typec                 C   s*   | |rtt||}t|S d S r<   )r   r  reversedr   r   r4   )r@   rA   ro  r   rF   rF   rG   call_reversed  s   

zBuiltinVariable.call_reversedc                    s   | rSt|tjsUtdd |D rW|dd  |dtd	 }t
|dks0J  rBt| fdd|d	}nt|d
d |d	}t|S d S d S d S )Nc                 s       | ]}|  V  qd S r<   r  rY   rF   rF   rG   r\     r  z.BuiltinVariable.call_sorted.<locals>.<genexpr>r  reverseFr   c                    s     | gi  S r<   )r   r   r[   r>  rA   rF   rG   r     s    z-BuiltinVariable.call_sorted.<locals>.<lambda>)r  r  c                 S   s   |   S r<   rZ  r  rF   rF   rG   r   
  r  )r   rU   r   r8   r_   r   r  r'   r  r   rg   sortedr1   )r@   rA   ro  rC   r  r   rF   r  rG   call_sorted  s4   


zBuiltinVariable.call_sortedc                    sB   t  fdd|D rg }|D ]
}||  qt|S d S )Nc                 3   r  r<   r	  )rZ   ro  r  rF   rG   r\     ri  z-BuiltinVariable.call_chain.<locals>.<genexpr>)r_   r   r   r   r4   )r@   rA   rB   r   ro  rF   r  rG   
call_chain  s   
zBuiltinVariable.call_chainc                 G   s\   | |r*tdd |D r,dd |D }||}ttj|g|R  }t|S d S d S )Nc                 s   r  r<   r  rY   rF   rF   rG   r\     r  z.BuiltinVariable.call_islice.<locals>.<genexpr>c                 S   rY  rF   rZ  rY   rF   rF   rG   r[    r\  z/BuiltinVariable.call_islice.<locals>.<listcomp>)r   r_   r   r  rT  islicer   r4   )r@   rA   r?  rB   
const_argsr   rF   rF   rG   call_islice  s   

zBuiltinVariable.call_islicec                 C   s(   t |trtj|t| d dS d S )Nsym_num)rU   r7   r  rq   rs   r=  r@   rA   r   rF   rF   rG   call_neg   s   
zBuiltinVariable.call_negc                 O   s   |  }tj|||S r<   )r   r   StringFormatVariabler  )r@   rA   _format_stringrB   rC   format_stringrF   rF   rG   call_format*  s   zBuiltinVariable.call_formatc                 G   s   t |dkr!t|d tjr!|d }|j|j}tjt	|S t |dkrGt|d tj
rGt|d jtj t	|d j}tj|S td|  d S )Nr   r#   zcall_id with args )rg   rU   r   r   r   r  r  r'   r  idr:   r   rO   rP   r   ID_MATCHrS   r   )r@   rA   rB   nn_mod_variabler{   constant_resultrF   rF   rG   call_id.  s   
zBuiltinVariable.call_idc                 C   s   t dt|  d S )Nzcopy.deepcopy )r   rl   )r@   rA   r[   rF   rF   rG   call_deepcopy<  s   zBuiltinVariable.call_deepcopyc           
   
   C   s^  ddl m} ddlm} | j}|tjtjfv rCt|t	o2t|t	o2t
t| jt
t| jk}|tju r=t|S t| S ||vrUt|j d| d| d t|t	rt|t	r|jod|jd ur|j|jkrz
t|j|j W n ty   t|j d| d| d Y nw t|t	r|n|}|jd|| | fi }	|t|||	S )Nr#   r  %supported_tensor_comparison_op_valuesr  r  r  r   )r   r  r   r  rE   rq   r   is_notrU   r8   r  r   r=  rz  r'   r  r   rK   sizer  broadcast_shapesRuntimeErrorr   r   rV   )
r@   rA   r   r   r  r  r   	is_result
tensor_clsr  rF   rF   rG   r  ?  sH   


 z'BuiltinVariable._comparison_with_tensorc                 C   sd   ddl m} | j}||vrt|j d| d| d |jd|| | fi }tj	||d dS )Nr#   r  r  r  r  r   r  )
r   r  rE   r   rK   r   r   r=  r7   r  )r@   rA   r   r   r  r   r  rF   rF   rG   r  h  s   z(BuiltinVariable._comparison_with_symnodec                 C   s   t |trt |trd S t |ttfr1t |ttfr1tj||jjdtjgt||gi R  d dS t	|drEt	|drGt
t|j|j@ S d S d S Nr   r  r  )rU   r'   r7   r  r   r   rq   r   r!   r3  r.   r  r  r.  rF   rF   rG   	call_and_y  s"   zBuiltinVariable.call_and_c                 C   s   t |trt |trd S t |ttfr1t |ttfr1tj||jjdtjgt||gi R  d dS t	|drEt	|drEt
t|j|jB S d S r  )rU   r'   r7   r  r   r   rq   r   r!   r3  r.   r  r  r.  rF   rF   rG   call_or_  s"   zBuiltinVariable.call_or_c                 C   sl   t |trtj||jjdtjgt|gi R  d dS t |tr#|j	}t |t
tfr4tt|jdkS d S )Nr   r  r   )rU   r7   r  r   r   rq   rt   r!   r,   dv_dictr1   r*   r'   rg   r   r  rF   rF   rG   	call_not_  s   


	zBuiltinVariable.call_not_r   r   c                 C   s   | |d|gi S )N__contains__r   r.  rF   rF   rG   call_contains  r   zBuiltinVariable.call_containsr_   r`   )rB   r  rC   r  r  r%   )rL  r%   r<   )erK   r@  __qualname__r  r:  r%   _nonvar_fieldsclassmethodrT   staticmethodr  	lru_cacher   r   r   r   r(  r2  r3  r5  r8  r9  r   r=  rE  rG  rM  rQ  rX  rc  rd  r   rV   ra   r  r  r  r   r   r  call_int
call_floatr  r  r  r  call_mincall_maxr  r  r  r  r  r  r  r  r  r  
call_tuple	call_listr  r  r  r  r  r  r  r  r  r  r'  r,  r/  r2  r4  r7  r;  r=  rB  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rM   call_allcall_any__classcell__rF   rF   r6  rG   rN   e   s   
A,#  X


 ]

X




$

3	
v
}

)rN   c              	   c   sP    ddl m} t }|| d}z||  d V  W ||  d S ||  w )Nr#   )GradModeVariableF)rN  r  r  is_grad_enabledr  enterexit)rA   r  	org_valuegmvrF   rF   rG   rv    s   
rv  )p
contextlibr  rz  rT  loggingrW   rq   r$  collectionsr   r   typingr   r   r  r   r   rN  r	   r
   r   r  r   r   r   r   r   guardsr   r   replay_recordr   rO   r   r   r   r   utilsr   r   r   r   r   r   r   r   r    r!   r"   baser$   r%   constantr'   ctx_managerr(   r)   r  r*   r+   r,   r-   r.   listsr/   r0   r1   r2   r3   r4   r   r5   r6   r7   r8   r9   r   r:   r;   	getLoggerrK   r}  r   r|   r   r}   r   rw   r   ry   r   rz   r   r{   r   r   r   r   r   r   rk   r   r   r   r   r   r   r  rM   rN   contextmanagerrv  rF   rF   rF   rG   <module>   st   4 
              `