o
    ߗi:                    @   st  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 d dlmZmZmZ d dlZd dlmZmZ d dlmZ ddlmZ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(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQmRZRmSZS ddlTmUZUmVZV erd dlWmXZX eYeZZ[ej\ej]ej^ej_ej`ejaejbejcejdejeejfejgejhejhejiejjejkejlejmejnejoejpejqejrejsejtiZuG dd de:Zve jwdd ZxdS )    N)defaultdictOrderedDict)KeysView)DictListTYPE_CHECKING)	sym_floatsym_int)is_traceable_wrapper_subclass   )config	variables)AttributeMutationErrorunimplementedUnsupported	UserErrorUserErrorType)GuardBuilderinstall_guard)DummyModule)
AttrSourceGetItemSourceGlobalSourceis_constant_source
TypeSource)check_constant_argscheck_numpy_ndarray_argscheck_unspec_or_constant_argscheck_unspec_python_args#does_not_override_dict_iter_methodsextract_fake_example_valueget_fake_valueguard_if_dynis_wrapper_or_member_descriptoristypenumpy_operator_wrapperproxy_args_kwargstensortype_to_dtype   )ValueMutationNewVariableTrackerConstantVariable)EventVariableStreamVariable)ConstDictVariableDefaultDictVariableDictViewFrozensetVariableis_hashableSetVariable)BaseListVariableListIteratorVariableListVariableSizeVariableTupleIteratorVariableTupleVariable)FakeItemVariablesupported_comparison_opsSymNodeVariableTensorVariableUnspecializedPythonVariable)UserDefinedObjectVariableUserDefinedVariable)InstructionTranslatorc                       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d fddZdef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"dd0d1Z#i Z$	.	/	2	3	4	5		6dd7d8Z%	2	3	4	5		6d fd9d:Z&dd;d<Z'e'Z(e'Z)dd=d>Z*dd?d@Z+ddAdBZ,ddCdDZ-e+Z.e+Z/ddFdGZ0ddHdIZ1ddJdKZ2ddLdMZ3ddNdOZ4dPdQ Z5ddRdSZ6ddTdUZ7	d	/ddVdWZ8ddXdYZ9ddZd[Z:e9Z;e9Z<dd\d]Z=d^d_ Z>dd`daZ?e	ddbdcZ@e		.	/ddddeZAddfdgZBddhdiZCddjdkZDddldmZEddndoZFddpdqZGddrdsZHddtduZId.d/dEefdvdwZJddxdyZKddzd{ZLdd|d}ZM	dd.d/d~edefddZNd.d/d~ededefddZOd.d/d~edefddZPd.d/d~efddZQd.d/d~efddZRd.d/d~ed4efddZSdddZTdddZUdddZVdddZWdddZXdddZYdddZZeZZ[dddZ\e\Z]dddZ^d.d/dedefddZ_  Z`S )BuiltinVariablefnc                 C   s   t |tj | ||dS )Nsource)r   
make_guardr   BUILTIN_MATCH)clsvaluerF    rK   ]/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/torch/_dynamo/variables/builtin.pycreate_with_sourceo   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(   )r<   c                 s   s$    | ]}t |ttjr|V  qd S N)
isinstancetypemathsqrt.0xrK   rK   rL   	<genexpr>   s   " z;BuiltinVariable._constant_fold_functions.<locals>.<genexpr>)=absallanyboolcallablechrdivmodfloatgetattrintlenmaxminordpowreprroundstrformatsumrP   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tensorr<   updatevaluesrQ   __dict__)fnsr<   rK   rK   rL   _constant_fold_functionst   s   	
 !"#$%&'()*+,-./012345678:z(BuiltinVariable._constant_fold_functionsc                 C      | j |  v S rN   )rD   r   selfrK   rK   rL   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 rN   )(rk   rW   rl   rm   rn   rp   re   rq   rr   rs   rt   ru   rv   ltgtgeleneeqrw   ry   rz   r{   r|   r}   r~   r   r   r   r   r   rx   r   r   r   r   r   r   r   r   r   rK   rK   rL   _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__)rk   rv   r   rw   r   rq   r   rt   r   rs   r   ru   r   re   r   rz   r   r{   r   r   rK   rK   rL   _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d}
|| tf|
f || tf|
f |dd!dd}|| ttf|f || ttf|f || ttf|f || ttf|f q4d!dd}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d}ttf|fttf|fttf|fg}|tj | d!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#|s[J ||vsbJ ||||< qR|S )"Nr(   )DictKeysr4   )BaseUserFunctionVariableUserFunctionVariableNNModuleVariable)supported_const_comparison_ops)BaseTorchVariable)UserDefinedClassVariabler@   rA   )forward_namereverse_namec                   s.   t | r|| ||gi S || ||gi S rN   )rO   call_method)txabr   r   )rA   rK   rL   user_defined_handler+  s   
z=BuiltinVariable._binop_handlers.<locals>.user_defined_handler)r   r   rB   c                S   s   | | ||gi S rN   r   )r   r   r   r   rK   rK   rL   user_defined_inplace_handlerM     zEBuiltinVariable._binop_handlers.<locals>.user_defined_inplace_handlerrD   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&   )r   r   r   rD   r   rK   rK   rL   dynamic_handlerZ  s   z8BuiltinVariable._binop_handlers.<locals>.dynamic_handlerc                 S      t g |j|| S rN   )r:   itemsunpack_var_sequencer   r   r   rK   rK   rL   tuple_add_handlerv     z:BuiltinVariable._binop_handlers.<locals>.tuple_add_handlerc                 S   r   rN   )r8   r   r   r   rK   rK   rL   size_add_handlery  r   z9BuiltinVariable._binop_handlers.<locals>.size_add_handlerc                 S   s   t g || |jS rN   )r:   r   r   r   rK   rK   rL   <lambda>  s    z1BuiltinVariable._binop_handlers.<locals>.<lambda>c                 S   s   t g |j|| t dS Nmutation_type)r7   r   r   r)   r   rK   rK   rL   r     s    c                 S   s   t |g |j|jS rN   )rP   r   r   rK   rK   rL   r     s    c                 S   s>   |  s	|| sd S || }| jj| |j| |S rN   )is_immutablehas_unpack_var_sequencer   r   side_effectsmutationr   extend)r   r   r   seqrK   rK   rL   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   )rO   r,   	__class__r   as_python_constantr)   )r   lstconstrK   rK   rL   expand_list_like  s   

z9BuiltinVariable._binop_handlers.<locals>.expand_list_likec                    s  dfdd}t t f|fg} v r[t d  jdr,d fdd}|}|}ndddt f fd	d
}dddt f fdd}ttttf}|	|t f|ft |f|fg dfdd}dfdd}dfdd}	dfdd}
jdr|}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rdfdd}|ttf|f |S )Nr   rB   c                       t  |j|jS rN   )r,   rJ   r   oprK   rL   compare_by_value     zYBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_by_valueis_c                       t  S rN   r+   r   none_resultrK   rL   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rJ   r,   r   r   rK   rL   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   rK   rL   none_op_obj  r   zTBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.none_op_objc                    s   t |  ||S rN   )r5   list_comparer   leftrightr   rK   rL   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(, ))rP   r   __name__r5   r   r   r   rK   rL   list_compare_check	  s
   z[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.list_compare_checkc                    r   rN   )r,   	set_itemsr   r   rK   rL   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   r  r   r   rK   rL   compare_via_method     z[BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.compare_via_methodc                    r   rN   )r,   rD   r   r   rK   rL   r   #      zQBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.<lambda>c                    s"   t  | j|j| j|jS rN   )r,   r   get_submodule
module_keyr   r   rK   rL   r   *  s    c                    s$   t |t |urt jdkS d S )Nr   )rP   r,   creater  r   r   rK   rL   	handle_is[  s   zRBuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlers.<locals>.handle_isr   rB   )r,   r   objectr  
startswithr>   r=   r5   r/   r   rC   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@   rA   r   has_set_itemssize_or_tupler   )r   r   rL   create_cmp_op_handlers  s   

	



=z?BuiltinVariable._binop_handlers.<locals>.create_cmp_op_handlersr  )$dictsr   r4   	functionsr   r   	nn_moduler   r   r   torchr   user_definedr   r@   rA   rC   r   r   r  r*   r=   r8   r:   r,   r7   r5   r6   rk   rv   r   r   rq   r<   r   r[   )r   r4   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  rK   r  rL   _binop_handlers  s   













%


	


 zBuiltinVariable._binop_handlersc                 C   sR   t  | }|d u rd S g }|D ]\\}}}t||r&t||r&|| q|S rN   )rC   r+  get
issubclassr  )r   a_typeb_typehandlersmatchestype1type2handlerrK   rK   rL   _find_binop_handlerl  s   
z#BuiltinVariable._find_binop_handlerc                 C   r   rN   )rD   r   r   rK   rK   rL   can_insert_in_graphx  r   z#BuiltinVariable.can_insert_in_graphreturnc                    s   t  jdi | || _d S )NrK   )super__init__rD   )r   rD   kwargsr   rK   rL   r9  {  s   
zBuiltinVariable.__init__c                 C   s,   | j d u rd}n| j j}| jj d| dS )NNoner  r  )rD   r  r   )r   namerK   rK   rL   __repr__  s   
zBuiltinVariable.__repr__c                 C   s   | j S rN   r   r   rK   rK   rL   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 rN   )	rZ   r"  r`   int64r^   float64rD   r8  as_proxy)r   DTYPEr;  rK   rL   rA    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)rv   )rD   r  
__module__r   	f_globalsappend_outputcreate_load_global)r   codegenr=  rK   rK   rL   reconstruct  s   zBuiltinVariable.reconstructc                 O   s
   t ||S rN   )r   r   argsr:  rK   rK   rL   constant_args     
zBuiltinVariable.constant_argsc                 G   4   d}|D ]}t |tjr dS |pt |tj}q|S NF)rO   r   GetAttrVariabler>   )r   rK  
any_tensorargrK   rK   rL   tensor_args     zBuiltinVariable.tensor_argsc                 C   rN  rO  )r-  r   rP  r>   )r   	arg_typesrQ  arg_typerK   rK   rL   tensor_args_type  rT  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 rO  )rF   r   rT   trK   rK   rL   rV     s
    
zBBuiltinVariable.python_and_tensor_constant_only.<locals>.<genexpr>)		itertoolschainr   rO   r   r>   r  rX   rL  )r   rK  r:  rS  non_tensor_argsirK   rK   rL   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 rK   r   rS   rK   rK   rL   
<listcomp>      z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<listcomp>c                 S      i | ]	\}}||  qS rK   r`  rT   kvrK   rK   rL   
<dictcomp>      z=BuiltinVariable.unwrap_unspec_args_kwargs.<locals>.<dictcomp>)r   )rK  r:  rK   rK   rL   unwrap_unspec_args_kwargs  s   z)BuiltinVariable.unwrap_unspec_args_kwargsc                 C   s   |   ot||S rN   )r   r   rJ  rK   rK   rL   has_constant_handler  s   
z$BuiltinVariable.has_constant_handlerrU  
has_kwargsc                    s  ddl m  tg t fdd|D rfddS tr2ttr2		dfd	d
}|S  rSt	j
u rCt|d tjrS|rKjS |rSj t|dkr|stjg|R  sgntdkrz\fdd ndfdd}| tdj d rdfdd}|  rtdd |D r|sdfdd}ndfdd}| dj d| d| tdkrڇfddS tdkr\dfdd}|S dfdd}|S )Nr(   LazyVariableTrackerc                 3   s    | ]}t | V  qd S rN   )r-  rX  rl  rK   rL   rV         z0BuiltinVariable._make_handler.<locals>.<genexpr>c                    s     | dd |D |S )Nc                 S   r_  rK   realizerT   rf  rK   rK   rL   ra    rb  zCBuiltinVariable._make_handler.<locals>.<lambda>.<locals>.<listcomp>)r   r   rK  r:  objrK   rL   r     s    z/BuiltinVariable._make_handler.<locals>.<lambda>r   rB   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 rN   )rO   r   r,   rJ   rh   rS   rK   rK   rL   rV     s    

zWBuiltinVariable._make_handler.<locals>.create_exception_class_object.<locals>.<genexpr>zassert with non-string message)AssertionErrorrX   r   r   ExceptionVariablerr  r   rK   rL   create_exception_class_object  s
   zDBuiltinVariable._make_handler.<locals>.create_exception_class_objectr   r   c                    s    | g|R  S rN   rK   )r   rK  _)binop_handlerrK   rL   r     s    c                    s*    D ]}|| g|R  }|r|  S qd S rN   rK   )r   rK  rx  rD   rv)binop_handlersrK   rL   call_binop_handlers  s   z:BuiltinVariable._make_handler.<locals>.call_binop_handlerscall_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bindrj  logwarningr   r   remove_from_stats)r   rK  r:  r  erj  exc)rt  self_handlerrK   rL   call_self_handler  s<    z8BuiltinVariable._make_handler.<locals>.call_self_handlerc                 s       | ]}t |tV  qd S rN   )r-  r,   rS   rK   rK   rL   rV   $  rn  c              
      sZ   z dd |D  }W n t y& } ztdt|  W Y d }~nd }~ww t| |S )Nc                 S   r_  rK   r`  rS   rK   rK   rL   ra  ,  rb  PBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<listcomp>constant fold exception: )	Exceptionr   rf   r*   buildr   rK  r:  resr  r   rK   rL   constant_fold_handler(  s   z<BuiltinVariable._make_handler.<locals>.constant_fold_handlerc              
      s|   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 t| |S d S )Nc                 S   r_  rK   r`  rS   rK   rK   rL   ra  9  rb  r  c                 S   rc  rK   r`  rd  rK   rK   rL   rg  :  rh  zPBuiltinVariable._make_handler.<locals>.constant_fold_handler.<locals>.<dictcomp>r  )r   r   r  r   rf   r*   r  r  r   rK   rL   r  4  s   

z	builtin: r~  c                     r   rN   r   )rK  )	error_msgrK   rL   r   F  s    c                    s    | ||}|r
|S t   d S rN   r  )r   rK  r:  rz  )r  r4  rK   rL   builtin_dispatchJ  s   z7BuiltinVariable._make_handler.<locals>.builtin_dispatchc                    s.   D ]}|| ||}|r|  S qt   d S rN   r  )r   rK  r:  rD   rz  )r  r0  rK   rL   r  R  s   r  )lazyrm  rC   rY   r  isclassr-  r  r6  rk   rx   r   r>   rW  _handle_insert_op_in_graphr  ra   r5  r_   r  r   rX   )rD   rU  rk  rw  r|  r  r  r  rK   )	rm  ry  r{  r  rD   r4  r0  rt  r  rL   _make_handler  s`   




zBuiltinVariable._make_handlerr   rB   c              
   C   s  ddl m}m} |r| jg || R  sd S ddl m} ddlm}m}m	}	m
}
 |	|||ro|js_t|d tsY| j|v rE|| j }n|| j }|d }|d |d< ||d< n	|| j }n| j}|||}|
||||S | j}z| j|i |rddlm} ddlm} |||||j||W S |tv rt|d tjrt| |d |d g}}|tju rt|d trt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 rNt||d W S |tj,u rft|d tj*rf|d -||d< |||W S  t.y   t/d|  d| d|  Y d S w )Nr(   )r   wrap_fx_proxy_cls)SourcelessBuilder)BUILTIN_TO_TENSOR_FN_MAPBUILTIN_TO_TENSOR_RFN_MAPcan_dispatch_torch_functiondispatch_torch_functionr   r   )	unique_id)invoke_and_store_as_constantc                 s   s    | ]
}t |tjkV  qd S rN   )rP   r   r>   rT   rR  rK   rK   rL   rV     s    
z=BuiltinVariable._handle_insert_op_in_graph.<locals>.<genexpr>r   c                 s   r  rN   rO   r;   r  rK   rK   rL   rV     rn  c                 s   "    | ]}t |tjr|jV  qd S rN   rO   r   r?   need_unwraprS   rK   rK   rL   rV         

)	raw_valuer  c                 s   r  rN   rO   r=   rS   rK   rK   rL   rV     rn  zpartial tensor op: r~  )0r   r   r  rS  r   r  torch_functionr  r  r  r  exportrO   r>   rD   r  r^  bytecode_transformationr  r   r  r  IN_PLACE_DESUGARING_MAPr   r,   rk   rx   r=   r"  selectr   rY   r   r   r%   r&   NumpyNdarrayVariabler;   r   ri  rZ  r[  r?   rX   rt   convert_to_constantNotImplementedErrorr   )r   r   rK  r:  r   r  r  r  r  r  r  functmpfn_varrD   r  r  proxy_args_kwargsr  r  rK   rK   rL   r  [  s   




	

 z*BuiltinVariable._handle_insert_op_in_graphrK  List[VariableTracker]r:  Dict[str, VariableTracker]r*   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   rc  rK   ro  rd  rK   rK   rL   rg    s    z1BuiltinVariable.call_function.<locals>.<dictcomp>c                 s       | ]}t |V  qd S rN   rP   rS   rK   rK   rL   rV         z0BuiltinVariable.call_function.<locals>.<genexpr>Tc                 s   r  rN   r  rS   rK   rK   rL   rV     r  c                 S   s   g | ]}t |qS rK   r  rS   rK   rK   rL   ra    rb  z1BuiltinVariable.call_function.<locals>.<listcomp>)r   rD   call_function_handler_cacher,  r  rZ   )r   r   rK  r:  keyr4  rK   rK   rL   r     s   zBuiltinVariable.call_functionc                    s   | j tu r9|dkr9t|dksJ t|dksJ |\}}}| }t|tr9|jj|r9|	 r9|
|||S | j tu r[|dkr[t|dksJJ t|dksRJ |jj|d S | j tu rq|dkrqtj|tg|R i |S t ||||S )N__setattr__   r   __new__r(   fromkeys)rD   r  ra   rp  rO   r@   r   r   is_attribute_mutationis_python_constantmethod_setattr_standard(track_object_new_from_user_defined_classdictrC   call_custom_dict_fromkeysr8  r   )r   r   r=  rK  r:  rt  name_varvalr;  rK   rL   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 )Nitemr   r   r   r   r  )rO   r=   r   r>   r   rD   r`   r	   r   torch._dynamo.variables.builderr   r   r   rA  )r   r   rR  r  fn_r   rK   rK   rL   _call_int_float
  s    zBuiltinVariable._call_int_floatc              
   C   s  t |tjrtjjt|jdS t |tjrt|j	dr!|j	j
}nt|j	dr,|j	j}ntd t|j	j
tj
u rMz	tjj| dW S  tyL   Y d S w t|r]tt|j	 d d S |j}zt|}W n ty } ztd| W Y d }~d S d }~ww |||gi S d S )N)rJ   __str__r>  z5user defined object has no __str__ or __repr__ methodz has a C/C++ based str methodz)Failed to create UserFunctionVariable: %s)rO   r   r   r,   r  rh   rD   r@   hasattrrJ   r  r>  r   rP   r  AttributeErrorr#   __func__ru  r  r  inline_user_function_return)r   r   rR  
str_methodbound_methoduser_func_variabler  rK   rK   rL   call_str"  s4   

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   )ra   has_force_unpack_var_sequenceforce_unpack_var_sequence_call_min_max_seq_call_min_max_binary)r   r   rK  r   rK   rK   rL   _call_min_maxI  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(   )ra   	functoolsreducepartialr  )r   r   r   rK   rK   rL   r  R  s   z!BuiltinVariable._call_min_max_seqc                 C   s  |d u s|d u r
d S |  ||rt|tjs||}}t|tjs$J t|tr5ttj||gi }t|t	s?t|t	r]ddl
m} |t|||jjd| jgt||gi R  dS | rt|tjrrdd l}t|j}nttj}| jtu rd|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	rA| 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   rc   rb   c                 s   s"    | ]}t |tjtjfV  qd S rN   )rO   r   r?   r,   )rT   r]  rK   rK   rL   rV     s    
z7BuiltinVariable._call_min_max_binary.<locals>.<genexpr>c                 s   r  rN   r  )rT   r  rK   rK   rL   rV     rn  c                 s   r  rN   r  rS   rK   rK   rL   rV     r  )$rS  rO   r   r>   r;   TorchInGraphFunctionVariabler"  r   r   r=   r   r  rP   r   r   rD   r&   r  r  numpyNumpyVariableclipclamprb   maximumrc   minimumrX   rY   from_tensor_variabler   r  r?   sym_maxsym_minr  )r   r   r   r   r  nprD   r:  r  raw_braw_resr  r  rK   rK   rL   r  Y  s~   






z$BuiltinVariable._call_min_max_binaryrR  c                 C   *   t t||tdgi }||g i S )N__abs__rC   r_   r   r,   r  )r   r   rR  
abs_methodrK   rK   rL   call_abs     zBuiltinVariable.call_absc                 C   r  )N__pos__r  )r   r   rR  
pos_methodrK   rK   rL   call_pos  r  zBuiltinVariable.call_posc                 C   s2   t |tjr
td t|}t|}tj|S )Nzunsupported index(tensor))	rO   r   r>   r   r"   rk   r   r,   r  )r   r   rR  constant_valuerK   rK   rL   
call_index  s
   
zBuiltinVariable.call_indexc                 O   s*   t t||tdgi }||||S )N	__round__r  )r   r   rR  rK  r:  round_methodrK   rK   rL   
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 rK   )r   r,   r  r"   r  rK   rK   rL   ra    s    z.BuiltinVariable.call_range.<locals>.<listcomp>)r   r   RangeVariable_dynamic_argsr   r   rK  rK   rK   rL   
call_range  s   



zBuiltinVariable.call_rangec                 O   s(   t dd |D pt dd | D S )Nc                 s   r  rN   r  rS   rK   rK   rL   rV     rn  z0BuiltinVariable._dynamic_args.<locals>.<genexpr>)rY   r   rJ  rK   rK   rL   r    s   zBuiltinVariable._dynamic_argsc                 G   s
   t |S rN   )r   SliceVariabler  rK   rK   rL   
call_slice  rM  zBuiltinVariable.call_slicec                 O   s0   ddl m} |||jjd| jgt||R  S r   )r   r   r   r   rD   r&   )r   r   rK  r:  r   rK   rK   rL   
_dyn_proxy  s   zBuiltinVariable._dyn_proxyc                 O   s   t |tjrJ | j|i |r| j|g|R i |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   rF   F)rO   r   IteratorVariabler  r  r5   cls_forrD   r)   r   rF   r   r9   r   rG   r   TUPLE_ITERATOR_LENr_   r/   r$   r4   r   guard_on_key_orderrv   r=  SEQUENCE_LENGTHlistr   r   r   rt  rK  r:  rI   rK   rK   rL   _call_iter_tuple_list  s8   


z%BuiltinVariable._call_iter_tuple_listc                 O   sL   t |tjrtj| j}|t||t dS | j	||g|R i |S r   )
rO   r   r  r5   r  rD   r	  r  r)   r  r
  rK   rK   rL   _call_tuple_list  s   z BuiltinVariable._call_tuple_listc                 O   sH   t |tjr	|}n| j||g|R i |}|d u r"||d||S |S )N__iter__)rO   r   r  r  r   )r   r   rt  rK  r:  retrK   rK   rL   	call_iter   s   zBuiltinVariable.call_iterc                 C   sx   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tttfr:tjdS d S )Nr(   )r   r   TF)r   r   r!  r   rO   r   r   r,   r  rA   r[   rJ   r=   r>   r7   r:   r6   )r   r   rR  r   r   rK   rK   rL   call_callable1  s0   
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(): r~  )ra   r   )r   rx  rK  r:  rK   rK   rL   	call_castM  s   zBuiltinVariable.call_castc                 O   s   t j|tg|R i |S rN   )rC   call_custom_dictr  r   r   rK  r:  rK   rK   rL   	call_dictS  s   zBuiltinVariable.call_dictc           	         s  |s|si f}t |dksJ |d }t|tr t||t dS t|tjr/|j|d t dS t|ttt	tj
frOt fdd| D }t||t dS t|tjrtt|jr~ jj|rqt|j d| d| d	 t|j }t |S | d
}t|tjst|j d| d|   |||}t|tr|S t| ||S n|s|rdd | D }tj||t dS t|j d| d|  d S )Nr(   r   r   )user_clsrF   r   c                 3   s    | ]}|  V  qd S rN   )r  rS   r   rK   rL   rV   n  s
    
z3BuiltinVariable.call_custom_dict.<locals>.<genexpr>z
.items(): r~  z - object is mutatedr   c                 S   s   i | ]
\}}t ||qS rK   r,   r  rd  rK   rK   rL   rg    s    z4BuiltinVariable.call_custom_dict.<locals>.<dictcomp>)r  r   z(): )ra   rO   r  r/   r)   r   cloner7   r:   r6   r  r  MutableMappingVariabler   rP   rJ   r   r   has_pending_mutationr   r  r   r*   r  var_getattrr   r  rC   r  )	r   r  rK  r:  rR  r   new_dictfunc_varoutrK   r  rL   r  V  sb   
	
z BuiltinVariable.call_custom_dictc                 O   sH  |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 || r|| }td	d
 |D r|t |||t dS t|j d| d|  d S )Nr(   rJ   r   z,fromkeys expected at least 1 argument, got 0r   c                 S   s   g | ]}t |qS rK   r  )rT   re  rK   rK   rL   ra    s    z=BuiltinVariable.call_custom_dict_fromkeys.<locals>.<listcomp>r   c                 s   r  rN   )r3   rq  rK   rK   rL   rV     r  z<BuiltinVariable.call_custom_dict_fromkeys.<locals>.<genexpr>z.fromkeys(): r~  )r  r   r   ra   popr   r  r,   r  r/   r0   rO   keysr  r)   r  r  rX   r   r  )r   r  rK  r:  rR  rJ   DictVariableTyper   rK   rK   rL   r    s6   $




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|tjrqt|j	t
rq||d}t|tjre||||}t|t r]|S tt||S td| d|  d S td| d|  d S )Nr   r(   r   r  zset(): r~  )r4   r)   ra   rO   r   r  r  r  r@   rJ   r   r  UserMethodVariabler  rC   setcall_setr   )r   r   rK  r:  rR  r   iter_fnr  rK   rK   rL   r$    s*   


zBuiltinVariable.call_setc                 O   s   |rJ |s
t g S t|dksJ |d }t|tj r&t dd |jD S ||r4||}t |S td| d|  d S )Nr(   r   c                 S   s   g | ]}|j qS rK   )vtrS   rK   rK   rL   ra    r  z2BuiltinVariable.call_frozenset.<locals>.<listcomp>zfrozenset(): r~  )r2   ra   rO   r   r  r   r   r   )r   r   rK  r:  rR  r   rK   rK   rL   call_frozenset  s   

zBuiltinVariable.call_frozensetc                    sL   |rt |dkrd|v sJ |dd} fdd|D }tj||t dS )Nr(   strictFc                    $   g | ]}|  r| n|qS rK   r   r   r  r  rK   rL   ra        z,BuiltinVariable.call_zip.<locals>.<listcomp>)r(  r   )ra   r  r   ZipVariabler)   )r   r   rK  r:  r(  rK   r  rL   call_zip  s   
zBuiltinVariable.call_zipc                 O      |d  |d|dd  |S )Nr   __len__r(   r   r  rK   rK   rL   call_len  r  zBuiltinVariable.call_lenc                 O   r.  )Nr   __getitem__r(   r   r  rK   rK   rL   call_getitem  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                    sX   | t vr#  jjd }t|r| tjjju rt	|| S t
  | S t |  } j|v S )Nexample_value)r'   rA  nodemetar
   r"  nn	parameter	ParameterrO   r-  python_typedtype)tyexample_valdtypesrR  rK   rL   
check_type  s   

zOBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.check_typec                 3   s    | ]} |V  qd S rN   rK   )rT   r;  r?  rK   rL   rV     r  zNBuiltinVariable.call_isinstance.<locals>._tensor_isinstance.<locals>.<genexpr>)rP   tuplerY   )
tensor_vartensor_typer>  r@  rL   _tensor_isinstance  s   z;BuiltinVariable.call_isinstance.<locals>._tensor_isinstancez&isinstance called on UserDefinedClass r~  __instancecheck__)r9  r  r   r   rO   r   r>   r:  r,   r  r@   rJ   typesMemberDescriptorTyper   r   rE  r-  r  )r   r   rR  isinstance_typerV  rD  r  rK   r>  rL   call_isinstance  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   r   left_tyright_ty
left_ty_pyright_ty_pyrK   rK   rL   call_issubclass,  s   zBuiltinVariable.call_issubclassc                 C   s   t ||S rN   )r   SuperVariabler   r   r   r   rK   rK   rL   
call_super8  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   rO   r   r5   r  r   )r   r   rR  exrK   rK   rL   	call_next;  s   zBuiltinVariable.call_nextc                 C   s>   |  r| }t|tjrtt|j|S |||S d S rN   )	r  r   rO   r   rC   r,   r  rD   call_hasattr)r   r   rt  attrr=  rK   rK   rL   rU  D  s   zBuiltinVariable.call_hasattrc                    s$    fdd|D }t j||t dS )Nc                    r)  rK   r*  )rT   r   r  rK   rL   ra  L  r+  z,BuiltinVariable.call_map.<locals>.<listcomp>r   )r   MapVariabler)   )r   r   rD   seqsrK   r  rL   call_mapK  s   
zBuiltinVariable.call_mapc                 C   s*   | |r
||n|}tj||t dS r   )r   r   r   FilterVariabler)   )r   r   rD   r   rK   rK   rL   call_filterR  s   zBuiltinVariable.call_filterrt  r  c                    s  ddl m} ddl m}m}m}m}	 | }
| std j	j
|rAt|tjrA|
dv rA|jrAj	j
|rAtd|
d j	j
||
rQj	j
||
S |d urj| ||}| d	v sdJ | sj|S |jort|j|
 |
d
v rz<| }t|tr|
dkr fddt|jD }tj| dW S |
dkrt|j W S |
dkr||j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rz|!|
W S  ty   |||
 d Y S w t||rt'|j(|
}t|t)j*j+t)j*j,fr|-|r|| dS d S d S t|t.rL|j/s+|
|j(j0vr2t'|j(|
}n|j(j0|
 }t1j2rEj34|j(|
| t| S t5||	r`|
dv r`|t'|j6|
S z|!|
W S  tyx   |||
 d Y S w )Nr   )trace_rulesr(   )r,   rP  r  r   znon-const getattr() name)named_parameters
parametersnamed_buffersbuffersnamed_modulesmodulesz4pending mutation on nn module, so graph breaking at z call)TF>   __base__	__bases__	__flags__rd  c              	      s(   g | ]\}}t | ot |qS rK   )r*   r  r   )rT   r]  r   rF   r   rK   rL   ra    s    z0BuiltinVariable.call_getattr.<locals>.<listcomp>rE   rc  re  )r  rD  )7 r\  r,   rP  r  r   r   r  r   r   r   r  rO   r   UnspecializedNNModuleVariableis_state_mutatedr  has_pending_mutation_of_attr	load_attrrU  rF   r   rP   	enumeraterd  r:   r*   r  rc  r  re  r  r   r  r>   NamedTupleVariableDistributedVariabler   r@   r_   rJ   r"  _opsOpOverloadPacket
OpOverloadis_aten_op_or_tensor_methodr   is_torchr   r   replay_record_enabledexec_recorderrecord_module_accessr$   rD   )r   r   rt  r  defaultr\  r,   rP  r  r   r=  hasattr_varrJ   
tuple_argsmemberrK   rf  rL   call_getattrV  s   	


zBuiltinVariable.call_getattrr  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r fdd|jjD }|D ]	}|jj| qKt|1 t  |||jjd	tjjgt |gi R  }	W d    n1 s~w   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 r@|j! st"d|
 r9t |tjr9t#| j|}z
 $|| }W n t%y   d }Y nw t |tjr9t#| j|}t&' j(d}||u r9|tj)j*ju r9|S  +| d S t  tj,j-rg|j.ri|
 rkt |tj/rmt0 j1| |  t/d 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. datac                    s   g | ]
}|j  j kr|qS rK   rE   )rT   tfrs  rK   rL   ra    s    z0BuiltinVariable.call_setattr.<locals>.<listcomp>r   c                 S   s*   | j }|dkr|d }tjj| | | S r  )_versionr"  _C	_autograd_unsafe_set_version_counter)rU   versionrK   rK   rL   _lower_version_count_by_1   s
   z?BuiltinVariable.call_setattr.<locals>._lower_version_count_by_1r3  _gradgradz#setattr(UserDefinedObjectVariable) z?Can't inplace modify module params/buffers inside HigherOrderOp)2rO   r   CustomizedDictVariablePlacementVariablerm  r@   r   r   r   r  r  r   r>   r   r   r   tracked_fakesremovedynamo_disable_gradr"  no_gradr   Tensorset_r&   rA  r4  r5  
store_attrrP   rJ   r  r   is_root_tracerr   r!   r  r  r  getattr_staticmodule_typer6  Moduleconvert_to_unspecializedr  HFPretrainedConfigVariabler  r,   setattrrt  )r   r   rt  r  r  r=  r   	to_remover~  r  r  assigning_fake_valgetattr_varexisting_fake_attrmod_setattrrK   rs  rL   call_setattr  s   	
 

zBuiltinVariable.call_setattrc                 C   s   |  |||t S rN   )r  r   DeletedVariable)r   r   rt  r  rK   rK   rL   call_delattrE  s   zBuiltinVariable.call_delattrc              
   C   s   z|  }W n ty } zttjt|ddd d }~ww |jo%t|j}|tj	u r9|j
dt}tt|d}t|||S )Nunknown_python_type)	case_namerg  r  )r9  r  r   r   INVALID_INPUTrh   rF   r   r"  r  r   install_global_by_idr   r   r*   r  )r   r   rt  py_typeerrorrF   r=  rK   rK   rL   	call_typeM  s"   
zBuiltinVariable.call_typec                 C   s*   | |rtt||}t|S d S rN   )r   r	  reversedr   r   r:   )r   r   rt  r   rK   rK   rL   call_reversed_  s   

zBuiltinVariable.call_reversedc                 K   sH   | |r t|tjs"tj||t d}||dg | |S d S d S )Nr   sort)r  rO   r   r>   r7   r  r)   r   )r   r   rt  r:  list_varrK   rK   rL   call_sortedd  s   zBuiltinVariable.call_sortedc                 C   s(   t |trtj|t| d dS d S )Nsym_num)rO   r=   r  rk   rm   rA  r   r   r   rK   rK   rL   call_negu  s   
zBuiltinVariable.call_negc                 O   s   |  }tj|||S rN   )r   r   StringFormatVariabler  )r   r   _format_stringrK  r:  format_stringrK   rK   rL   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kr]t|d tr]|d }||S td|  d S )Nr   r(   zcall_id with args )ra   rO   r   r   r   r  r  r,   r  idr@   r   rF   rG   r   ID_MATCHrJ   r>   call_idr   )r   r   rK  nn_mod_variableru   constant_resulttensor_variablerK   rK   rL   r    s   

zBuiltinVariable.call_idc                 C   s   t dt|  d S )Nzcopy.deepcopy )r   rf   )r   r   rU   rK   rK   rL   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  rD   rk   r   is_notrO   r>   r  r    rA  r4  r,   r  r   r  sizer"  broadcast_shapesRuntimeErrorr   r   rP   )
r   r   r   r   r  r  r   	is_result
tensor_clsr  rK   rK   rL   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  rD   r   r  r   r   rA  r=   r  )r   r   r   r   r  r   r  rK   rK   rL   r    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  )rO   r,   r=   r  r   r   rk   r|   r&   r  r4   r	  r  rP  rK   rK   rL   	call_and_  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  )rO   r,   r=   r  r   r   rk   r}   r&   r  r4   r	  r  rP  rK   rK   rL   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   )rO   r=   r  r   r   rk   rn   r&   r1   dv_dictr7   r/   r,   ra   r   r  rK   rK   rL   	call_not_  s   


	zBuiltinVariable.call_not_r   r   c                 C   s   | |d|gi S )N__contains__r   rP  rK   rK   rL   call_contains  r   zBuiltinVariable.call_contains)r7  Nr  )r   rB   rK  r  r:  r  r7  r*   )rK  r  r:  r  r7  r*   )r   rB   rR  r*   rN   )ar  rD  __qualname__r  	_SENTINELr*   _nonvar_fieldsclassmethodrM   staticmethodr  	lru_cacher   r   r   r   r+  r5  r6  r9  rh   r>  r   rA  rI  rL  rS  rW  r^  ri  rj  r   rP   rZ   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  r  
call_tuple	call_listr  r  r  r  r  r$  r'  r-  r0  r2  rI  rN  rQ  rT  rU  rY  r[  r{  r  r  r  r  r  r  r  r  r  r  r  r  	call_iandr  call_iorr  r  __classcell__rK   rK   r;  rL   rC   h   s:   
A,#  _


 
~



'
	
\








#



;
"





=

	

	
o
 








)


rC   c              	   c   sP    ddl m} t }|| d}z||  d V  W ||  d S ||  w )Nr(   )GradModeVariableF)rg  r  r"  is_grad_enabledr  enterexit)r   r  	org_valuegmvrK   rK   rL   r    s   
r  )y
contextlibr  r  rZ  loggingrQ   rk   rF  collectionsr   r   collections.abcr   typingr   r   r   r"  r   r	   torch.utils._python_dispatchr
   rg  r   r   r  r   r   r   r   r   guardsr   r   replay_recordr   rF   r   r   r   r   r   utilsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   baser)   r*   constantr,   ctx_managerr-   r.   r  r/   r0   r1   r2   r3   r4   listsr5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r#  r@   rA   torch._dynamo.symbolic_convertrB   	getLoggerr  r  r   rv   r   rw   r   rq   r   rs   r   rt   r   ru   r   r   rz   r   r{   r   re   r   r|   r   r}   r   r~   r  rC   contextmanagerr  rK   rK   rK   rL   <module>   s|   <  
               9