
    קg'                       U d dl Z d dlZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z! d dl"Z"d dl#Z"d dl$m%Z%m&Z& ddl'm(Z(m)Z)mZ*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; dd	l<m<Z< dd
l=m>Z> ddl)m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZFmGZG ddlHmIZImJZJ ddlKmLZLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddl+mYZYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc ddldmeZemfZfmgZgmhZh ddlimjZjmkZk ddllmmZm ddlnmoZo ddlpmqZqmrZrmsZs ddltmuZumvZv ddlwmxZxmyZymzZzm{Z{m|Z| ddl}m~Z~ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ erdd lmZ dd!lmZmZmZ  ej        e          Ze"j                            ed"          Ze"j                            ed#          Ze"j                            ed$          Ze"j                            ed%          Z ej                    Zd&  ej                    D             Zeeef         ed'<    emej                  j        Z emej                  j        Zd( ed)<   d* ed+<   d,Zej         G d- d.                      Zej         G d/ d0                      Zej         G d1 d2                      Zej         G d3 d4                      Z ej        d          d5             Zej         G d6 d7                      Z G d8 d9e          Zd:ej        d;ef         fd<Zd=d>d?ej        egef         d@efdAZd?ej        egef         d@efdBZdCZdD Z G dE dFe          Z G dG d>eH          Z G dI dJe          Zej        dKk    rdL ej        D             Z G dM dNe          Z G dO dPeƦ          ZdS )Q    N)AnyCallablecastDequeDictListOptionalSetTupleTypeTYPE_CHECKINGUnion)patch)tracingTracingContext   )configexcloggingtrace_rules	variables)get_indexofJUMP_OPNAMESlivevars_analysispropagate_line_nums)	cleaned_instructionscreate_call_functioncreate_instructioncreate_jump_absolutecreate_swapget_code_keysInstructionis_generator	unique_id)code_context)	PyCodegen)ArgsMismatchErrorBackendCompilerFailedunimplementedUnsupported)get_funcname)GuardBuilderinstall_guard)GraphCompileReasonOutputGraph)DummyModuleExecutionRecorder)ContinueExecutionCacheReenterWith)
AttrSourceGetItemSourceGlobalSourceGlobalWeakRefSourceLocalSourceSourceTorchFunctionModeStackSource)is_builtin_constantis_forbidden)countersget_fake_valueget_instruction_source_311get_torch_function_mode_stackgraph_break_dup_warning_checkeristype
LazyStringproxy_args_kwargs)is_side_effect_safeMutableLocaltypestrVariableTracker)VariableBuilderwrap_fx_proxy)BuiltinVariable)ConstantVariable)ContextWrappingVariableGenericContextWrappingVariableWithExitFunctionVariable)ConstDictVariableSetVariable)BaseUserFunctionVariableNestedUserFunctionVariableSkipFunctionVariableUserFunctionVariableUserMethodVariable)MAX_ITERATOR_LIMIT)BaseListVariableListIteratorVariableListVariableSliceVariableTupleVariable)ClosureVariableGetAttrVariableInlinedClosureVariableNullVariablePythonModuleVariableUnknownVariable)NNModuleVariableUnspecializedNNModuleVariable)supported_comparison_opsSymNodeVariableTensorVariable)TorchFunctionModeVariable)RemovableHandleVariableUserDefinedClassVariableUserDefinedObjectVariablegraph_breaks
trace_calltrace_sourcetrace_bytecodec                 >    i | ]\  }}|t          |          j        S  )rK   call_function).0kvs      Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/symbolic_convert.py
<dictcomp>rw      s6     ' ' ',0AqAq'' ' '    compare_op_handlersc                 B    t          | g t          |          i           S N)handle_containsreversedtxargs_s      rv   <lambda>r      s#    (4..21 1 rx   inc           
      b    t          | t          | g t          |          i           gi           S r{   )
handle_notr|   r}   r~   s      rv   r   r      s2    J.x~~.	3	34b5 5 rx   znot inzihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlc                   f    e Zd ZU eed<   eed<   eed<   eed<   dZeed<   dZ	e
e         ed<   d	 ZdS )
SpeculationEntryfilenamelinenoinstruction_pointerinstFfailedNreasonc                 f    d| _         | j        | j        j        }nd}t          j        |          )z\
        Start tracing of the current frame over again, and don't take this branch.
        TNz!Unknown fail_and_restart_analysis)restart_reason)r   r   r   SpeculationRestartAnalysis)selfr   s     rv   fail_and_restart_analysisz*SpeculationEntry.fail_and_restart_analysis   s8     ;"![/NN@N,NKKKKrx   )__name__
__module____qualname__str__annotations__intr"   r   boolr   r	   r.   r   rq   rx   rv   r   r      sz         MMMKKK
FD+/FH'(///	L 	L 	L 	L 	Lrx   r   c                   z    e Zd ZU dZ ej        e          Zee	         e
d<   dZee
d<   d Zd Zded	ed
e	fdZdS )SpeculationLoga3  
    SpeculationLog replaces the prior copy_graphstate/restore_graphstate
    checkpointing.  Rather than saving/restoring state, we restart the
    dynamo conversion process over from the beginning -- but when we
    hit the start of the speculation that failed, we instead generate
    a graph break.
    default_factoryentriesr   indexc                     d| _         d S Nr   )r   r   s    rv   restartzSpeculationLog.restart   s    


rx   c                 F    | j                                          d| _        d S r   )r   clearr   r   s    rv   r   zSpeculationLog.clear   s!    


rx   r   r   returnc                 p   t          | j                  | j        k    r*| j                            t	          ||||                     | j        | j                 }d}| j        dk    r=| j        | j        dz
           }d|j         d|j         d|j        j         d|j	         d	}|j	        |k    r|j        |k    r|j        |k    saJ d	| j         d
t          | j                   d|j         d|j         d|j        j         d|j	         d| d| d|j         d| d| d            | xj        dz  c_        |S )z
        Lookup or create a SpeculationEntry() that is shared across
        RestartAnalysis calls.  Args are used only for debug checks.
         r   r   zPrevious instruction: :(z @ z)
z"
SpeculationLog diverged at index z
 (log had z entries):
- Expected:  (z at ip=z)
- Actual: a  
There are two usual reasons why this may have occured:
- When Dynamo analysis restarted, the second run took a different path than
  the first.  If this occurred, the previous instruction is the critical instruction that
  behaved differently.
- Speculation entries are only added under certain conditions (as seen in
  step()), e.g., there must exist operators in the graph; those conditions may
  have changed on restart.

If this divergence was intentional, clear the speculation log before restarting (do NOT
do this for graph breaks, you will infinite loop).

Otherwise, please submit a bug report, ideally including the contents of TORCH_LOGS=+dynamo
)
lenr   r   appendr   r   r   r   opnamer   )r   r   r   r   r   entryprev_entry_msg
prev_entrys           rv   nextzSpeculationLog.next   s    t|
**L 63FMM   TZ(:??dj1n5JS)< S Sz?P S SO*S S/9/MS S S 
 %)<<<(**&&&"&* 8;DL8I8I ^ #l .3j.? HMHa      !%  5H  	   '&&& 	

a

rx   N)r   r   r   __doc__dataclassesfieldlistr   r   r   r   r   r   r   r   r   r   rq   rx   rv   r   r      s           '8k&7&M&M&MGT"#MMME3NNN    **%(*	* * * * * *rx   r   c                       e Zd ZU  ej        e          Zeee	e
         f         ed<    ej        e          Zeee	e
         f         ed<   dS )
LocalStater   input_sizesinput_stridesN)r   r   r   r   r   dictr   r   r   r   r   r   r   rq   rx   rv   r   r      sl         (9(9$(O(O(OKc49n%OOO*;+*;D*Q*Q*QM4T#Y'QQQQQrx   r   c                   J    e Zd ZU eed<   eed<   dZeee                  ed<   dS )DistributedState
compile_pglocal_stateN
all_states)	r   r   r   r   r   r   r   r	   r   rq   rx   rv   r   r      sA         OOO-1Jj)*11111rx   r   c                  4    t          j        t                    S r{   )torchdynamo_loggingget_step_loggerlogrq   rx   rv   _step_loggerr     s    .s333rx   c                   z    e Zd ZU eed<   eed<   dZee         ed<   dZee	e
ef                  ed<   d Zd Zd ZdS )	BlockStackEntryr   targetNstack_indexwith_contextc                     | j         d uS r{   )r   r   s    rv   can_restorezBlockStackEntry.can_restore  s     ,,rx   c                     | j         J | j        rMt          | j        d          r8| j        j        r,t	          | j         t          | j        j                            S t	          | j                   S )Ntarget_values)r   r   hasattrr   r3   tupler   s    rv   	resume_fnzBlockStackEntry.resume_fn  su    +++	1)?;;	1 !/	1
 t/t7H7V1W1WXXXt/000rx   c                 H    | j         J | j                             |          S r{   )r   exit)r   r   s     rv   r   zBlockStackEntry.exit  s(     ,,, %%b)))rx   )r   r   r   r"   r   r   r	   r   r   r   rM   rN   r   r   r   rq   rx   rv   r   r     s          !%K#%%% 	 (%'EEF   - - -	1 	1 	1* * * * *rx   r   c                       e Zd ZdS )ReturnValueOpN)r   r   r   rq   rx   rv   r   r   #  s        Drx   r   fn.c                     t          t          j        |           j                  t	          |           t          j        |           dddt          ffd            }|S )Nr   InstructionTranslatorr   c                     |                                          | |                               i                      d S r{   )pushrr   popn)r   r   fn_varnargss     rv   implzstack_op.<locals>.impl+  s9    		&&&tTYYu-=-=rBBCCCCCrx   )r   inspect	signature
parametersrK   	functoolswrapsr"   )r   r   r   r   s     @@rv   stack_opr   '  s    !"%%011ER  F_RD* D+ D D D D D D D Krx   r   InstructionTranslatorBasetruth_fnr   c                 `   |t           j        us|rdS t          | j        t                    sJ | j        }| j        |         }t          j        dk     r|j        dk    s|j	        dk    rdS n|j        dk    rdS |dz  }d}| j        |         }|j        dk    rbt          |j	        t                    sdS |j	        }|dz  }| j        |         }|j        d	vrdS |dz  }|j        d
k    r|dz  }| j        |         }|j        dk    rdS |                     t          j        |                     dS )NF)   	   LOAD_GLOBALAssertionErrorLOAD_ASSERTION_ERRORr   zassertion error
LOAD_CONST)CALL_FUNCTIONPRECALLCALLr   RAISE_VARARGST)operatortruth
isinstancer   r   instructionssysversion_infor   argvalr   r   rL   create)r   r   r   current_instruction_pointerr   	error_msgs         rv   &_detect_and_normalize_assert_statementr   2  sv   , 	&&4&ud.44444"&":89D
&  ;-''4;:J+J+J5 ,K ;00051$ "I89D{l""$+s++ 	5K	 	$q(# !<=;BBB5 	$q(#;)##'1,' !<={o%%uII%i001114rx   c                 :     dfd	dddt           f fd}|S )Nr   c           	         |                                  st          d           |                                 rEd|                                  }t                              |           t          j        |          |                     |           t          	                    d           | j
                            | t          dt          |           | |                                 g                     |                                  |                     | j                  }r|                     |           |                     |j                  }t$          j        dk    r(| j
                            t+          d          g           | j
                            t+          |j        |d         	          g|z   |z              d S )
N"should_compile_partial_graph=FalseBSkipping frame because there is a graph break in a for/while loop
zgeneric_jump triggered compilezgeneric_jump r   r      TO_BOOLr   )r   )should_compile_partial_graphr)   maybe_has_backedgeframe_summaryr   infor   	SkipFramer   debugoutputcompile_subgraphr.   rG   popcreate_call_resume_atnext_instructionr   r   r   add_output_instructionsr   r   )r   r   value	extra_msgmsgif_nextif_jumpr   s          rv   jump_graph_breakz&generic_jump.<locals>.jump_graph_breaky  s   0022 	@>???""$$ 	%*%%''* *  HHSMMM-$$$		%		2333$$%;;	;;d>P>P>R>R=S  	% 	
 	
 	
 	


,,T-BCC 	IIe,,T[99w&&K//1CI1N1N0OPPP++GAJ???@7JWT	
 	
 	
 	
 	
rx   r   r   r   c                 <   |                                  }t          j        rt          |           r|                                  }|                                rCt          |                                          r|                     |          S  | ||           t          |t                    rE | j
        j        dt          j        gt          ||fi           R   |                     |           d S t          |t                    rx|j        }t          |t          j                  s|dk    }t          j        j        j                            |          }|st-          d           |                     |           d S  | j
        j        dt          j        gt          |fi           R  }t1          | |t3          |j        |                     } | j
        j        dt          j        gt          ||fi           R   |                     |           d S |                                rM |                                          r.r|                     |           |                     |           d S d S t          |t                    r#|                                 r | ||           d S t          |t:                    rZ| j
                            |j                  } |          r.r|                     |           |                     |           d S d S t          |t@                    rB|j!        } |          r.r|                     |           |                     |           d S d S t          |tD                    rr	 |#                    | d          }	nl# tH          j%        $ rZ tI          j&        |            	 |#                    | d          }	n+# tH          j%        $ r tI          j&        |            d }	Y nw xY wY nw xY wt          |	tN                    r|	(                    | g i           }t          |tR                    rat          |j!        t
          tT          f          r@ |j!                  r.r|                     |           |                     |           d S d S t-          d           d S  d          r.r|                     |           |                     |           d S d S t          |t                    sp|+                    |           r[ tY          |-                    |                               r.r|                     |           |                     |           d S d S t          |t                    r	 |.                    | j
                  }
nC# tH          j/        $ r1}|                                 r | ||d	| 
          cY d }~S  d }~ww xY w |
          r.r|                     |           |                     |           d S d S t          |t`          j1                  r; d          r.r|                     |           |                     |           d S d S ddl2m3} |j2        ] ||j2                  rM |4                                          r.r|                     |           |                     |           d S d S tI          j/        tH          j5        j6        dd          )Nrr   r   zKAssertion failed on symbolic shapes. Did you make sure eager mode succeeds?)example_value__bool____len__z@generic_jump on UserDefined with __bool__ returning non-constantT
)r  r   )is_constant_sourcezDynamic control flow is not supported at the moment. Please use functorch.experimental.control_flow.cond to explicitly capture the control flow.cond_operands)	case_name)7r  r    rewrite_assert_with_torch_assertr   is_python_constantr   as_python_constantjumpr   rg   r  create_proxytorch_assert_asyncrD   rf   sym_numSymBoolfxexperimentalsymbolic_shapesexpect_truer)   scalar_tensorrJ   r>   noder   r  rc   get_submodule
module_keyrd   r  rk   var_getattrr   ObservedAttributeErrorhandle_observed_exceptionrV   rr   rL   r   has_unpack_var_sequencer   unpack_var_sequenceevaluate_expr	UserErrorr   BackwardHookVariablesourcer  get_real_valueUserErrorTypeDYNAMIC_CONTROL_FLOW)r   r   r  r   sym_exprresultscalar_to_tensor_proxyscalar_to_tensormodxeval_resulter  r  r   r   s                rv   innerzgeneric_jump.<locals>.inner  s   !%39	6tXtLL9	 *.I'')) 8002233 899T??*$$T4777 %00 ((#' 'y'92>>   
 		$%11  !=!(EM:: -'1}H.>JJ8TT !e   		$%=T[%=!4&7H%SU7V7V& & &"  -&,-C-H$OO      %DK$# #$4i#@"EE   
 IIdOOOF##%% \	x002233   %IIe$$$		$   
 u~//W	484U4U4W4WW	 T4//////00 S	+++E,<==Cx}}   %IIe$$$		$    <== L	+Cx}}   %IIe$$$		$    899 F		%%dJ77-   -d333))$	::AA1   1$777AAA !/00 $r266f&677 
JL4+= = 
  x-- ( - IIe,,,		$( (
 "Z    
 8D>> $ )		%(((IIdOOOOO$ $ E>22 &	u7T7T8
 8
 &	 xE55d;;<<==   %IIe$$$		$    // 	#11$+>>=   4466 S++D$aRRRRRRRRR x$$   %IIe$$$		$    y=>> 	x~~   %IIe$$$		$   
 322222|',>,>u|,L,L'8E002233 $ )		%(((IIdOOOOO$ $ m%:g-	   sZ   N+ +#PO&%P&%PPPPP V; ;W;
%W6/W;5W66W;)r   )r"   )r   r   rD  r  s   `` @rv   generic_jumprE  x  sm    !
 !
 !
 !
 !
 !
FY/ Y{ Y Y Y Y Y Y Y Yv Lrx   Fc                       fd}|S )Nc                      t          j                   dddt          f fd            }dddt          dt          ffd|S )Nr   r   r   c                    |                                  }|j        r|j        J  	| ||j                  S 	  
| |          S # t          $ r}| j        dk    r#|                                 t          d           t          |t          j	                  r | 
                                s |j        }	 |d         j        |d         j        f}n'# t          $ r | j        }|d         |d         f}Y nw xY wt                               t$          j                  r`t(          sYt+          j        |          rEd                    t1          j        |                    }t                               d|d	           nt7          j        d
g|R   |                                 rFd|                                  }t6                              |           t          j        |          ||                                 |                     d           tC          |j"        |          |_        Y d }~nd }~ww xY w|#                                 d S )Nr   z0Graph break under GenericContextWrappingVariableco_filenameco_firstlinenor   z"Graph break: from user code at:
%sTexc_infoz<Unsupported break in user code at %s:%s (details suppressed)r   graph_break)$	speculater   r   r*   generic_context_manager_depthremove_from_statsr)   r   r   UncapturedHigherOrderOpErrorr  
real_stackr   r   
IndexErrorcode_optionsgraph_break_logisEnabledForr   DEBUGexplainrA   addjoin	tracebackformat_listr
  r   r  r  r  r	  add_to_statsr.   r  r   )r   r   speculationexcp
user_stack	frame_locrU  user_stack_formattedr  handle_graph_breakinner_fns            rv   wrapperz>break_graph_if_unsupported.<locals>.decorator.<locals>.wrapper?  s   ..**K! J")555))$k6HIII<Nxd+++ :N :N :N599 **,,,!"TUUUdC$DEE 88:: !_
!+B!8*R.:O PII!   #'#4L$]3$%56!III $00??# 8;IFF
 ,.7793H3T3T+U+U( $))=,!% *     IV"   
 **,, 72--//2 2  HHSMMM-,,$6&&(((!!-000%7*%M%M""""""u:Nv 1133333s=   A H5A%H06CH0!C52H04C55D6H00H5r   c                 .   | j                             | |           t          |           }g }| j        D ]}|j        J t          |j        t                    sJ |j                            |           |                    |	                                
                    |j        |                     | j                             |                                           ~t          j        dk    r|j        dk    r| j        | j                                        nd}t'          |          dk    r<t          j        dk     sJ | j                             t)          d|          g           | j                             t+          |j        d	                     n?|j        J t1          j        |          }d |_        | j                             |g           | j                             |           t          j        dk    rqt          j        d
k     ra|j        dk    rVt5          j        t4          j        d         |j                  t5          j        t4          j        d         |j                  z   }nt5          j        |j        |j                  }|                     
|z
             t?          
          D ]#}	|                      tC                                 $| j                             | "                    | j#                             d S )Nr  r      r   rq   r   r  KW_NAMESr   Fr      r   )$r  r  r&   block_stackr   r   rM   reconstruct_typeextend_outputr   
try_exceptrU  r  get_instructionsr   r   r   kw_namesr!  r   r   r   argr   copyexn_tab_entrydisstack_effectopmapopcoder   ranger   rb   r  r  )r   r   r   cgcleanupbrs  	inst_copyrx  r   r   s             rv   rd  zIbreak_graph_if_unsupported.<locals>.decorator.<locals>.handle_graph_break  s   
 K((f(===4B)+G% U U~111!!.2IJJJJJ//333  !9!9"/7!S!STTTTK//0C0C0E0EFFF7**t{f/D/D }0 M44666 
 x==1$$+g5555K77+JxHHHI   33(599   
 {*** IdOO	*.	'33YK@@@K//888  G++$w..K6))  #/Ii($(   $SYv%6AA B  #/TXFFIId\)***4[[ - -		/++,,,,K//**4+@AA    rx   )r   r   r"   r.   )re  rf  rd  r   s   ` @rv   	decoratorz-break_graph_if_unsupported.<locals>.decorator>  s    		"	"B	45 B	4[ B	4 B	4 B	4 B	4 B	4 B	4 
#	"B	4H:	-:	:	 ':	 :	 :	 :	 :	 :	x rx   rq   )r   r  s   ` rv   break_graph_if_unsupportedr  =  s*    B B B B BH rx   c                   $     e Zd ZdZd fdZ xZS )BytecodeDistpatchTableMetazTInstalls a `cls.dispatch_table` on every subclass to speed up calls to self.OPCODE()r   Nc                      t                                          |||           d  fdt          j                                        D             fdt          d          D              _        d S )Nc                 *    t          d|             d S )Nz	missing: r)   )r   r   s     rv   _missingz5BytecodeDistpatchTableMeta.__init__.<locals>._missing  s    .f../////rx   c                 `    i | ]*\  }}|t          |t          j        |                    +S rq   )getattrr   partial)rs   r   opr  clss      rv   rw   z7BytecodeDistpatchTableMeta.__init__.<locals>.<dictcomp>  sH     
 
 
 VY%6x%H%HII
 
 
rx   c                 :    g | ]}                     |          S rq   )get)rs   idispatch_tables     rv   
<listcomp>z7BytecodeDistpatchTableMeta.__init__.<locals>.<listcomp>  s'    IIIn0033IIIrx      )super__init__rw  ry  itemsr{  r  )r  namebasesdctr  r  	__class__s   `   @@rv   r  z#BytecodeDistpatchTableMeta.__init__  s    uc***	0 	0 	0
 
 
 
 
!ioo//
 
 
 JIIIU4[[IIIrx   r   N)r   r   r   r   r  __classcell__r  s   @rv   r  r    sM        ^^
J 
J 
J 
J 
J 
J 
J 
J 
J 
Jrx   r  c                       e Zd ZU eed<   eeef         ed<   eeef         ed<   ed         ed<   e	e         ed<   e
e         ed<   eed<   e	e         ed	<   eed
<   e
e         ed<   eed<   e	e         ed<   eed<   eed<   e
e         ed<   e	e         ed<   e	e         ed<   e
e         ed<   e
eegef                  ed<   d Zd Zd Zd Zdede	e         deeef         fdZd ZddZd  Zd! Zd" Zej        d#k    rd$ Z nd% Z e!d&             Z"d' Z#d( Z$d) Z%dd*e
e         d+efd,Z&d-e	e         fd.Z'd/efd0Z(d1ed/e	e         fd2Z)d3 Z*d4 Z+d5 Z,d6 Z-d7 Z.d8 Z/d9 Z0e/Z1d: Z2d; Z3d< Z4d= Z5e6j7        d>             Z8d? Z9d@ Z:dA Z;dB Z<dC Z=dD Z>dE Z?dF Z@dG ZAdH ZBeBZCeBZD eEeFjG        dI          ZH eEeFjI        dI          ZJ eEeFjG        dJ          ZK eEeFjI        dJ          ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zc eddbc          dd             Ze eddbc          de             Zf eddbc          df             Zgdg Zhdh Zidi Zjdj Zkdk Zldl Zmdm Zndn Zodo Zpdp Zqd/efdqZr eddrc          ds             Zsdt Ztdu Zudv Zvdw Zwdx ZxeyfdyZzdz Z{e{Z|d{ Z}d| Z~e~Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Zd Zd Zd Zd Zd Z eeFj                  Z eeFj                  Z eeFjG                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z  eddbc           eeFj                            Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Z eeFj                  Zd Zej        d#k    rd Zd Zd Zd ZddZ eddbc          d             Zd Zd ZeBZeBZ eEeFjI        dI          Z eEeFjI        dI          Z eEeFjG        dI          Z eEeFjG        dI          Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z eddbc          d             Zd Zd Zd Zd Zd Zd ZddZ d Zd Zd Ze!d             Zd Zej        deegef         fd            Zd/efdZ	dede	e         deeef         deeef         deeef         deeef         deeef         deeef         ded         dĐe
j        dededƐede
e         d/df fdȄZ xZS )r   r  symbolic_localssymbolic_globalsrh   "symbolic_torch_function_mode_stackstackr   current_instructionrn  r   rs  accept_prefix_instprefix_instsinline_depthinconsistent_side_effectscurrent_speculationr  exn_vt_stackexec_recorderstrict_checks_fnc                     d| _         dS )z
        InstructionTranslator has encountered instructions which may cause
        dynamo to see a different version of history from eager
        See: https://github.com/pytorch/pytorch/issues/110765
        TN)r  r   s    rv   mark_inconsistent_side_effectsz8InstructionTranslatorBase.mark_inconsistent_side_effects  s     *.&&&rx   c                     | j         j        }| j        J | j        | j        d          D ],}|j        dv r dS |j        t
          v r|j        }||k     r dS -dS )N)RETURN_VALUERETURN_CONSTFT)r  offsetr   r   r   r   r   )r   
cur_offsetr   jump_offsets       rv   r  z,InstructionTranslatorBase.maybe_has_backedge  s    ( -4
'333%d&>&@&@A 	  	 D{>>>uu{l**"k++44urx   c                 $   t          | d          szt          | j        d         pg           t          | j        d         pg           z   | _        t	          | t
                    r'| xj        | j                                        z  c_        | j        S )N_cell_and_freevarsco_cellvarsco_freevars)r   r   rU  r  r   InliningInstructionTranslatorparentcell_and_freevarsr   s    rv   r  z+InstructionTranslatorBase.cell_and_freevars  s    t122 	K&+!-06B' 'd'6<"=='>D# $ =>> K''4;+H+H+J+JJ''&&rx   c                    t          | j        | j                  t          |                                           z  fd| j                                        D             | _        | j        j        	                    |            d S )Nc                 $    i | ]\  }}|v 	||S rq   rq   )rs   rt   ru   readss      rv   rw   z?InstructionTranslatorBase.prune_dead_locals.<locals>.<dictcomp>%  s+      
  
  
QQ%ZZAqZZZrx   )
r   r   r  setr  r  r  r  side_effectsprune_dead_object_new)r   r  s    @rv   prune_dead_localsz+InstructionTranslatorBase.prune_dead_locals  s    !$"3T5MNN D2244555 
  
  
  
!17799 
  
  
 	 66t<<<<<rx   r   r   kwargsc                 (   t          |t                    sJ t          |t                    sJ t          |t                    sJ t	          d t          j        ||                                          D                       sJ d }t          |d          r|j	        }t          |d          r|j
        }|r0t          |          r!t          |          rt          d|           |                     |                    | ||                     d S )Nc              3   @   K   | ]}t          |t                    V  d S r{   )r   rH   )rs   rA  s     rv   	<genexpr>z:InstructionTranslatorBase.call_function.<locals>.<genexpr>3  s@       
 
 q/**
 
 
 
 
 
rx   r  r   z$Attempt to trace forbidden callable )r   rH   r   r   all	itertoolschainvaluesr   r  r   callabler<   r   r   rr   )r   r   r   r  re  s        rv   rr   z'InstructionTranslatorBase.call_function*  s5    "o.....$%%%%%&$''''' 
 
_T6==??;;
 
 
 
 
 	
 	
 	
 2w 	 xH2t 	uH 	T** 	T|H/E/E 	T !R!R!RSSS		"""4v6677777rx   c                 <    t                               | |||          S )zF
        A call to some user defined function by inlining it.
        )r  inline_call)r   r   r   r  s       rv   inline_user_function_returnz5InstructionTranslatorBase.inline_user_function_return@  s     -88r4PPPrx   Nc                     || j         }| j        dk    rd| j         dnd}t          | j        j        |          }|dnd| d}| j        j         d| d| j        j         | | S )Nr   z (inline depth: )r   r   r   z in )r   r  r+   f_coderJ  co_name)r   r   inline_depth_strfuncnamefuncname_strs        rv   get_line_of_code_headerz1InstructionTranslatorBase.get_line_of_code_headerF  s    >[F7;7H17L7L3t03333RT 	   7@@%-rr3C3C3C3C+)mmFmm8Km\m[kmmmrx   c                     d|                                   d}t          j        | j        j        | j                                                  }|d| z  }|S )NzTRACE starts_line r  z    )r  	linecachegetliner  rJ  r   rstrip)r   log_strlines      rv   get_log_starts_line_log_strz5InstructionTranslatorBase.get_log_starts_line_log_strP  sX    It'C'C'E'EIII !8$+FFMMOO=$== rx   c                 ^   | j         |k    rd S || _         t          j        | j        j        || j        j                   ddlm}  || j        j                   t          	                    t          j                  r/t                              dt          | j                             d S d S )Nr   )	dump_file%s)r   r   set_current_locr  rJ  r  torch._logging.structuredr  trace_source_logrW  r   rX  r
  rC   r  )r   r   r  s      rv   starts_linez%InstructionTranslatorBase.starts_lineV  s    ;&  F&K#VT[-@	
 	
 	
 	877777	$+)***((77 	W""4D4T)U)UVVVVV	W 	Wrx   c                    | j         }|dS | j        |         x| _        }|dz   | _         |j        r|                     |j                   | j        sb|                                 rN|                                 r:|                                 | _        | j        j	        r| 
                    |          S t                              t          j                  r,t                              d|j        |j        | j                   |                     |           	  | j        |j                 | |           | j        j         S # t.          j        $ r }|                     |           Y d}~dS d}~wt4          $ r Y dS t6          $ rA | j        t8                              d            t8                              dd           Y nw xY w| j                                         dS )	z<Process exactly one instruction, return False we should exitNFr   zTRACE %s %s %sTzempty checkpointzstep triggered compilerL  )r   r   r  r  r  r  is_non_empty_graphrO  r  r   step_graph_breaktrace_bytecode_logrW  r   rX  r
  r   r   update_block_stackr  rz  r  should_exitr   ObservedExceptionexception_handlerr   r*   r   r   )r   ipr   rC  s       rv   stepzInstructionTranslatorBase.stepc  s   %:5*.*;B*?? 4#%6  	/T-... 
	31133	3 ''))	3
 (,~~'7'7D$'. 3,,T222**7=99 	$$ $+t{DJ   	%%%	?,D,T4888{...$ 	 	 	""1%%%44444 	 	 	55 	? 	? 	?'/		,---II.I>>>>>		? 	 ::<<<<<s%   (E GE--G=AGGrh  c                 |   |j         }|rkt          | j                  dk    rM|j        | j        d         j        ur6|j        | j        d         j        u r| j                                         d S d S d S d S | j        r>|j        dvr7t          | j                  dk    sJ | j                                         d S d S d S )N   rI  )NOPJUMP_BACKWARDr   )rv  r   rn  r   r  r   )r   r   r   s      rv   r  z,InstructionTranslatorBase.update_block_stack  s     &E + ())Q..D,<R,@,GGG(8(<(CCC $((***** /.GGCC # +;S(S(S t/00A5555$((*****+ +(S(Srx   c                     d S r{   rq   r   r   s     rv   r  z,InstructionTranslatorBase.update_block_stack  s    Drx   c                 &    | j         | j                 S r{   )r   r   r   s    rv   r  z*InstructionTranslatorBase.next_instruction  s     !9::rx   c           	         | j         j        rJ | j        J | j                             | dt	          d|                                 g                     | j                             t          |          g| j        z              d S )NTstep_unsupported)partial_convertr   )	r  output_instructionsr  r  r.   r  r  r   r   )r   continue_insts     rv   r  z*InstructionTranslatorBase.step_graph_break  s    ;2222'333$$ %&84;M;M;O;O:PQQ 	% 	
 	
 	

 	++!-001D4EE	
 	
 	
 	
 	
rx   c                 *    t          j        d           S r{   )r   current_framer   s    rv   run_ctx_mgrz%InstructionTranslatorBase.run_ctx_mgr  s     +D111rx   c                    |                                  5  	 | j                            |            |                                 r	 |                                 nB# t          $ r  t
          $ r+}| j        r| j                                        |_         d }~ww xY w| j        	                                 t          | t                    r| j                                         nM# | j        	                                 t          | t                    r| j                                         w w xY wd d d            d S # 1 swxY w Y   d S r{   )r  r  push_txr  r(   	Exceptionr  
get_recordexec_recordpop_txr   r   r}  )r   rC  s     rv   runzInstructionTranslatorBase.run  s    	* 	**##D)))iikk  iikk (      % D$($6$A$A$C$CAM
 ""$$$ d$9:: *K''))) ""$$$ d$9:: *K''))))*%	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*sI   D?AAC%B/&BBC%AD?%A
D//D??EEvalr  c                 L   |/t          |t                    sJ dt          |                       | j                            |           t
          j        dk    rF| j                            |           t          | j                  t          | j                  k    sJ d S d S )Nz"push expects VariableTracker, got r  )	r   rH   rG   r  r   r   r   
name_stackr   )r   r  r  s      rv   r   zInstructionTranslatorBase.push  s    {j
 
{{>>> {{ 	
#w&&O""4(((tz??c$/&:&::::: '&::rx   valsc                 :    |D ]}|                      |           d S r{   r   )r   r  r  s      rv   	push_manyz#InstructionTranslatorBase.push_many  s,     	 	CIIcNNNN	 	rx   r   c                     t           j        dk    rEt          | j                  t          | j                  k    sJ | j                                         | j                                        S )Nr  )r   r   r   r  r  r  r   s    rv   r  zInstructionTranslatorBase.pop  sY    w&&tz??c$/&:&:::::O!!!z~~rx   nc                 X     g t           fdt          |          D                       S )Nc                 8    g | ]}                                 S rq   r  )rs   r   r   s     rv   r  z2InstructionTranslatorBase.popn.<locals>.<listcomp>  s!    888!488::888rx   )r}   r{  )r   r  s   ` rv   r   zInstructionTranslatorBase.popn  s1    :8888uQxx88899::rx   c                 "    t          |          S Nr  )r]   r   r  s     rv   _load_closurez'InstructionTranslatorBase._load_closure  s    D))))rx   c                    | j         r/|| j        v r&| j                             || j        |                    	 |                     | j        |                                         |           n# t          $ r t          j        dk    rA|| 	                                v r+|                     | 
                    |          |           n}|                    d          rY	 |                    dd          }|                     | j        |         |           n.# t          $ r t          d           Y nw xY wt          d           Y nw xY w|                    d          r| j                            |           d S d S )Nr  r  .implicitzundefined LOAD_FAST (implicit)zundefined LOAD_FAST___stack)r  f_localsadd_local_varr   r  unwrapKeyErrorr   r   r  r  
startswithreplacer)   r  )r   r  new_names      rv   
_load_fastz$InstructionTranslatorBase._load_fast  s    	H$$-"7"7,,T4=3FGGG	5IId*407799IEEEE 	5 	5 	57**tt7M7M7O7O/O/O 		$,,T22	>>>>%% 5D#||C<<HIId28<8ILLLL D D D!"BCCCCCD 3444!	5& ??:&& 	+ $$T*****	+ 	+s6   4A- -A0E8DED30E2D33EEc                 :    |                      |j                   d S r{   )r   r   r  s     rv   	LOAD_FASTz#InstructionTranslatorBase.LOAD_FAST  s    $$$$$rx   c                 ^   |j         |                                 v sJ | j        r>|j         | j        v r0| j                            |j         | j        |j                             |j         | j        vrt          d|j                     |                     | j        |j                             d S )Nzundefined LOAD_DEREF )r   r  r  r  r  r  r)   r   r  s     rv   
LOAD_DEREFz$InstructionTranslatorBase.LOAD_DEREF!  s    {d44666666 	V$+">">,,T[$-:TUUU;d222?$+??@@@		$&t{344444rx   c                 l    |                                  }|                    |           || j        |<   d S r{   )r  set_name_hintr  )r   r  	loaded_vts      rv   _store_fastz%InstructionTranslatorBase._store_fast+  s6    HHJJ	%%%%.T"""rx   c                 :    |                      |j                   d S r{   )r(  r   r  s     rv   
STORE_FASTz$InstructionTranslatorBase.STORE_FAST0  s    %%%%%rx   c                      | j         |j        = d S r{   )r  r   r  s     rv   DELETE_FASTz%InstructionTranslatorBase.DELETE_FAST3  s     ---rx   c                 `    |                      |                     |j                             d S r{   )r   r  r   r  s     rv   LOAD_CLOSUREz&InstructionTranslatorBase.LOAD_CLOSURE8  s*    		$$$T[1122222rx   c                     |j         }|t          j        |j                  S | j        |         }|s$t          j        |j                  x| j        |<   }|S )Nr  )rt  rL   r   r   _constants_cache)r   r   r  r  s       rv   _load_constz%InstructionTranslatorBase._load_const;  sa    H9#*====#A& 	X-=-D4;-W-W-WWD!!$s
rx   c                 V    |                      |                     |                     d S r{   )r   r2  r  s     rv   r   z$InstructionTranslatorBase.LOAD_CONSTD  s(    		$""4(()))))rx   c                 `   |j         }| j        rU|| j        v r'| j                            || j        |                    n%|| j        v sJ | j        |         | j        j        |<   || j        v rR| j        j        | j        |                  }| 	                    | j        j        
                    ||                     d S 	 | j        |         }n%# t          $ r |                     |          cY S w xY wt          |          }| 	                     t          | |          |                     d S r{   )r   r  	f_globalsadd_global_var
f_builtinsbuiltinsr  r  r  r   load_globalr  load_builtinr6   rI   )r   r   r  variabler  r8  s         rv   _load_globalz&InstructionTranslatorBase._load_globalG  sD   { 	Jt~%%"11$t8LMMMMt....48OD4I"+D14((({/0Ed0KLHIIdk.::8TJJKKKF	+N4(EE 	+ 	+ 	+$$T*****	+ d##		//$//6677777s    C C0/C0c                     d}|                      |          }t          j        |          } t          | |          |          S )Nztorch.nn.modules.module)import_source	importlibimport_modulerI   )r   module_namemodule_sourcefglobals_values       rv   nn_modules_globals_vtz/InstructionTranslatorBase.nn_modules_globals_vt^  sD    /**;77"0==3t]33NCCCrx   c                    t           j        dk    r/t           j        dk     r|j        dz  r|                     |           |                     |           t           j        dk    r!|j        dz  r|                     |           d S d S d S )Nrh  r  r  )r   r   rt  	PUSH_NULLr<  r  s     rv   r   z%InstructionTranslatorBase.LOAD_GLOBALe  s    w&&3+;g+E+E$(UV,+ENN4   $w&&48a<&NN4      '&&&rx   c                 x   |                                  }|j        }t          |          }|| j        vrt	                      | j        |<   | j        j                            || j        |                   }t          |t                    rt          d           | j        j                            |||           d S Nz Storing handles in globals - NYI)r  r   r6   r  objectr  r  track_global_existingr   ri   r)   store_global)r   r   r  r  r8  r;  s         rv   STORE_GLOBALz&InstructionTranslatorBase.STORE_GLOBALl  s    

{d##t,,,*0((D!$';+AAD)$/
 
 e455 	><=== --heDDDDDrx   c                    d|v r[t           j        j        j        |         }|                    dd                              dd                              dd          }n-t          j        |          }d|                    dd           }| j        j        }||vs||         |u sJ |||<   | j        	                    |           t          |          S )z-Create an alias to a module for use in guardstorch_package>r   <r  _dot_	__import_)r$  packagepackage_importer_package_imported_modulesr  r?  r@  r  global_scopeupdate_co_namesr6   )r   rA  r  aliasr5  s        rv   r>  z'InstructionTranslatorBase.import_sourcey  s    k))M2LE ##C--55c3??GGWUU E +K88EC 3 3C A ACCEK,	I%%5)9U)B)B)B)B 	%##E***E"""rx   c                     |                     d|dz
            }t          |          |k     rt          d          |d         }|r| d| n|S )z
        Copied from the Cpython implementation of __import__
        Resolve a relative module name to an absolute one.
        https://github.com/python/cpython/blob/5a094f0255eea1db58fb2cf14c200971e64ec36e/Lib/importlib/_bootstrap.py#L902
        r  r   z2attempted relative import beyond top-level packager   )rsplitr   ImportError)r   r  rS  levelbitsbases         rv   resolve_namez&InstructionTranslatorBase.resolve_name  sb     ~~c519--t99uRSSSAw#'1$T1rx   c                    | j                             d          }| j                             d          }|2|.||j        k    r#t                              d||j        d           |S ||j        S t                              dd           | j         d         }d	| j         vr|                    d
          d         }|S )z
        Copied from the Cpython implementation of __import__
        https://github.com/python/cpython/blob/5a094f0255eea1db58fb2cf14c200971e64ec36e/Lib/importlib/_bootstrap.py#L1090
        __package____spec__Nz)__package__ != __spec__.parent (%r != %r)r   )
stacklevelzYcan't resolve package from __spec__ or __package__, falling back on __name__ and __path__r   __path__r  r   )r5  r  r  r   warning
rpartition)r   rS  specs      rv   calc_packagez&InstructionTranslatorBase.calc_package  s    
 .$$]33~!!*--Gt{$:$:?K 	     N;KK8    
 nZ0G//!,,S11!4rx   c                    |                      d          \  }}|                                }|                                }|j        }t          j         d| d| d| }|| j        v r| j        |         }t          |          }n	 t          |||| j                  }n# t          $ r t          d           Y nw xY w|dk    r+| 
                                }|                     |||          }|s1|                    d          d         }	|                     |	          }n|                     |          }| j        r| j                            ||           t!          |t"          j        t&          f          r&|                     t+          ||                     d S t          dt-          |                      d S )	Nr  r   )fromlistr\  globalsz#import a module that does not existr   r  r8  zIMPORT_NAME )r   r!  r   r1   LOCAL_MOD_PREFIXr5  r6   
__import__r[  r)   rh  r_  	partitionr>  r  add_local_modrB   types
ModuleTyper0   r   ra   rG   )
r   r   r\  rj  rA  recorded_namer  r8  pkgtop_level_module_names
             rv   IMPORT_NAMEz%InstructionTranslatorBase.IMPORT_NAME  s   ))A,,x((**..00k !1TTETTHTT{TT 	 DN**N=1E!-00FFE"% N	    E E ECDDDDDE zz''))"//S%HH  9(3(=(=c(B(B1(E%++,ABB++K88 	C,,]EBBB%%*K899 	;II*5@@@AAAAA999:::::s   B B;:B;c                 Z    |                      |           |                     |           d S r{   )DUP_TOP
_load_attrr  s     rv   IMPORT_FROMz%InstructionTranslatorBase.IMPORT_FROM  s,    Trx   c                    || j         vrt          d| d          | j         |         }t          |          rWt          | j        j                  }t          ||          }|                      t          | |          |                     d S t          |          sJ |                     t          j        |                     d S )Nzname 'z' is not definedr0  )r7  	NameErrorr  r6   r  %name_of_builtins_dict_key_in_fglobalsr5   r   rI   r;   rL   r   )r   r   r  builtins_source
var_sources        rv   load_builtin_from_argvalz2InstructionTranslatorBase.load_builtin_from_argval  s    ((=V===>>>of%C== 	:*A O '??JII7odJ77<<=====&s+++++II&-C88899999rx   c                 :    |                      |j                   d S r{   )r  r   r  s     rv   r:  z&InstructionTranslatorBase.load_builtin  s    %%dk22222rx   c                 4    | j         |j                 | _        d S r{   )indexofr   r   r  s     rv   r"  zInstructionTranslatorBase.jump  s    #'<#<   rx   FTc                 `    | j                             t          ||j                             d S r{   rn  r   r   r   r  s     rv   
SETUP_LOOPz$InstructionTranslatorBase.SETUP_LOOP  +    dk B BCCCCCrx   c                 `    | j                             t          ||j                             d S r{   r  r  s     rv   SETUP_EXCEPTz&InstructionTranslatorBase.SETUP_EXCEPT  r  rx   c                 8    | j                                          d S r{   )rn  r  r  s     rv   	POP_BLOCKz#InstructionTranslatorBase.POP_BLOCK  s    rx   c                 0    |                      |           d S r{   setup_or_before_withr  s     rv   
SETUP_WITHz$InstructionTranslatorBase.SETUP_WITH      !!$'''''rx   c                 `    | j                             t          ||j                             d S r{   r  r  s     rv   SETUP_FINALLYz'InstructionTranslatorBase.SETUP_FINALLY  s+    dk B BCCCCCrx   c                 0    |                      d            d S r{   r	  r  s     rv   BEGIN_FINALLYz'InstructionTranslatorBase.BEGIN_FINALLY  s    		$rx   c                     |                      d          \  }}|J |                     |           |                     |                    | t          j        d           gdz  i                      d S )Nr  r   )r   r   rr   rL   r   )r   r   r   r   s       rv   WITH_CLEANUP_STARTz,InstructionTranslatorBase.WITH_CLEANUP_START  sl    IIaLL	c{{{		#		$$$T,<,CD,I,I+JQ+NPRSSTTTTTrx   c                 Z    |                      d           |                     d            d S )Nr  )r   r   r  s     rv   WITH_CLEANUP_FINISHz-InstructionTranslatorBase.WITH_CLEANUP_FINISH  s$    		!		$rx   c                     | j         | j                 }|                     t          j        |                     |                     |           dS )z|
        pushes the address of the next instruction onto the stack and increments
        bytecode counter by delta
        N)r  r  r   rL   r   r"  )r   r   addrs      rv   CALL_FINALLYz&InstructionTranslatorBase.CALL_FINALLY"  sD     |D12		")$//000		$rx   c                     |                                  }t          |t                    r|                                | _        d S d S r{   )r  r   rL   r!  r   r   r   toss      rv   END_FINALLYz%InstructionTranslatorBase.END_FINALLY,  sC     hhjjc+,, 	'*'='='?'?D$$$Drx   c                     |j         }|r|                                 }|                                 }|r|                     |           d S d S r{   )r   r  r   )r   r   preserve_tosr  r   s        rv   POP_FINALLYz%InstructionTranslatorBase.POP_FINALLY5  sP    { 	((**CHHJJ 	IIcNNNNN	 	rx   c                 8   |                                                                  }	 |                    |           }|                     |           |                     |           d S # t          t
          j        f$ r}t          |t
          j                  rt          j        |            t          j
        dk    r<|                     |           |                     t          j        d                      |                     |           Y d }~d S d }~ww xY wNrl  )r  realizenext_variabler   StopIterationr   ObservedUserStopIterationr   r2  r   r   rL   r   r"  )r   r   itr  rC  s        rv   FOR_ITERz"InstructionTranslatorBase.FOR_ITER>  s    XXZZ!!	""4((CIIbMMMIIcNNNNNs<= 	 	 	!S:;; 4-d333 7**
 		"		*1$77888IIdOOOOOOOOO	s   ?A) )D?BDDc                    |                                  }t          |t          j                  r|                    | g i           }| j                            |           t          |t          j                  rKt          j	        
                    |j                  x}r |d|           t          j        d|           t          dt                      d S )Nzraised exception zraise )r  r   r   rK   rr   r  r   ExceptionVariabler   observed_exception_mapr  exc_typer  r)   )r   r   r  observed_exception_types       rv   _raise_exception_variablez3InstructionTranslatorBase._raise_exception_variableR  s    hhjj c9455 	2 ##D"b11C 	  %%% c9677 	C*-*D*H*H*V*VV& I--.G#.G.GHHH'(AC(A(ABBBnsnn%%%%%rx   c                 *   |j         dk    rt          d           d S |j         dk    r|                     |           d S |                                 }t	          |t
                    r|j        |                     |           t          d           d S )Nr   zre-raiser   zraise ... from ...)rt  r)   r  r  r   rL   r  )r   r   from_vts      rv   r   z'InstructionTranslatorBase.RAISE_VARARGSh  s    8q==*%%%%%X]]**400000 hhjjG'#344 59N..t444./////rx   c                 n    t           j        dk    r|                     |           t          d           d S )Nrh  RERAISE)r   r   r  r)   r  s     rv   r  z!InstructionTranslatorBase.RERAISEu  s8    w&&**4000i     rx   c                    t           j        dk    r!| j        j        }|rt	          | j                  |j        k    r1|                                  t	          | j                  |j        k    1|j        r1| 	                    t          j        | j        j                             t	          | j                  sJ | 	                    | j        d                    |                     |           d S | j                                         t!          |           t"          u rt%          d          |t	          | j                  rt	          | j                  sJ | j        d         }| j                                        }|j        j        dk    r|                     d           t	          | j                  dk    r@| j                                         t!          |           t"          u rt%          d          || j                                        }|j        j        dk    |j        j        dk    rt/          d|j                    t1          d	dd d          }| j                            t5          |d                      t	          | j                  d
k    ru| j        d         }| 	                    t          j                               | 	                    |           | 	                    t          j        |j                             nu| 	                    t          j        d                      | 	                    t          j        d                      | 	                    t          j        d                      | 	                    t          j                               | 	                    |           | 	                    t          j        |j                             |                     |           d S | j                                         t!          |           t"          u rt%          d          |)Nrh  rI  zObserved exceptionEXCEPT_HANDLERr   r   r  zvexception is raised when top of the block stack is not exception handler (e.g. try .. with .. except). Current TOS is g    .Ar  r  )r   r   r  rv  r   r  depthr  lastir   r   rL   r  r  r"  r   typer   r*   rn  r   r   r   r)   r"   r   r   rb   rK   r  )r   raised_exceptionrv  exception_varblock_stack_entryexcept_handler_instold_exceptions          rv   r  z+InstructionTranslatorBase.exception_handler{  s   w&& 4BM '
 $*oo(;;;HHJJJ $*oo(;;; !& II!243K3RSS  
 4,-----		$+B/000 		-((((( 
  """::!666%&:;;;&&4#$$ >' 4,----- $ 1" 5$($4$8$8$:$:!',37GGG IIaLLL4+,,11 
((***::)>>>"-.B"C"CC..(,(8(<(<(>(>% (,37GGG %)0OCC!C*;*@C C   '2#7Gq&Q&Q# ''8KT(R(RSSS t())Q..$($5b$9M IIi799:::IIm,,,IIi78NOOPPPP IIi8>>???IIi8>>???IIi8>>??? 		)355666		-(((		)3M4JKKLLL 		+,,,,, 
  """::!666%&:;;;&&rx   c                     |                                  }t          | j                  sJ |                     | j        d                    |                     |           d S NrI  )r  r   r  r   r   r   r  s      rv   PUSH_EXC_INFOz'InstructionTranslatorBase.PUSH_EXC_INFO  sS    hhjj4$%%%%%		$#B'(((		#rx   c                 *   t           j        dk    ra|                                 }t          |t          j                  sJ t          | j                  sJ | j                                         d S t          | j                  dk    sJ | j        d         j	        j
        dk    rt          d          | j                                         |                     d           t          | j                  sJ | j                                         d S )Nrh  r   rI  r  zYBug in Dynamo tracing of exception handling.Top of the block stack is not EXCEPT_HANDLER.r   )r   r   r  r   r   r  r   r  rn  r   r   r   r   r  s      rv   
POP_EXCEPTz$InstructionTranslatorBase.POP_EXCEPT  s   w&&((**Cc9#>????? t()))))!!#####t'((1,,,,#(/3CCC$D     """IIaLLL t()))))!!#####rx   c                    t          | j                  dk    sJ |                                 }t          j        dk    r| j        d         }n| j                                        }t          |t          t          f          st          d|            t          j        dk    r,t          |t          j
                  st          d|            t          |t                    r|j        }n|g}|D ]}t          |t                    st          d|            t          |t          j
                  rt          |j        |j                  r dS t          |t          j                  rt          |j        |j                  r dS dS )	Nr  rh  rI  z+except has an unsupported types of objects zCexcept expects to recieve an object of exception type but received z*except has an unsupported types of object TF)r   r  r  r   r   r   rK   r\   r)   r   r  r  
issubclassr  r   )r   expected_exc_typesexc_instanceexpected_typesexpected_types        rv   check_if_exc_matchesz.InstructionTranslatorBase.check_if_exc_matches  s   4:!####!XXZZw&&  :b>LL
  :>>++L ,.NOO 	R>PRR   w&&lI,GHH hZfhh   (-88 	/5NN #N , 	 	Mm_== PPP   ,	(CDD %}'7J J  ttL)*CDD !1J J  tturx   c                 x    |                      t          j        |                                                      d S r{   )r   r   rL   r  r  s     rv   CHECK_EXC_MATCHz)InstructionTranslatorBase.CHECK_EXC_MATCH.  s1    		),T-F-F-H-HIIJJJJJrx   c                 \    |                                  s|                     |           d S d S r{   )r  r"  r  s     rv   JUMP_IF_NOT_EXC_MATCHz/InstructionTranslatorBase.JUMP_IF_NOT_EXC_MATCH1  s3    ((** 	IIdOOOOO	 	rx   c                     |j         dk    r|                     |           d S |                     t          |j                  | |                     d          i                      d S )Nzexception matchr  )r   r  r   ry   r   r  s     rv   
COMPARE_OPz$InstructionTranslatorBase.COMPARE_OP5  s`    ;+++  &&&&&II)$+6tTYYq\\2NNOOOOOrx   c                 ~    |                      t          t                    |                                 gi            d S r{   )rr   rK   iterr  r  s     rv   GET_ITERz"InstructionTranslatorBase.GET_ITER;  s2    ?400488::,CCCCCrx   r   r	  c                     |                      |j                  }|                                 }|                     ||i            d S r{   r   r   r  rr   )r   r   r   r   s       rv   r   z'InstructionTranslatorBase.CALL_FUNCTION>  s@    yy%%XXZZ2tR(((((rx   c                    |j         dk    r$t          i           }|                                 }nC|j         dk    r)|                                 }|                                 }nt          d           t          j        dk    r+|                                 }t          |t                    sJ |                                 }t          j        dk    r;t          j        dk     r+|                                 }t          |t                    sJ t          |t                    rLt          |j	        t                    r1|                                }|j        dk    r-t          |t          t          f          rt          |g          }n|j        dk    rht          |t                    rSt          |j                  dk    r;t          |t                    r&t          j        d          |v rt          d	           nr|j        d
k    rgt          |t                    rRt          |j                  dk    r:t          |t                    r%t          j        d          |v rt          d           t          |t$                    s7|                    |           r"t          |                    |                     }t          |t*                    rt-          j        | t0          |          }t          |t$                    rt          |t                    s/t          dt3          |           dt3          |                      |                                }|                     ||j        |           d S )Nr   r   CALL_FUNCTION_EXr  rh  viewrandom_fromz&random_ op is called with from keyworduniform_z'uniform_ op is called with from keywordznon-static call  )r   rP   r  r)   r   r   r   r`   r^   objrg   r  r  rL   r\   r   r  r   rX   has_force_unpack_var_sequenceforce_unpack_var_sequencerk   rK   call_custom_dictr   rG   keys_as_python_constantrr   )r   r   
kwargsvarsargsvarsnullr   s         rv   r  z*InstructionTranslatorBase.CALL_FUNCTION_EXD  s9    ;!*2..JxxzzHH[AJxxzzHH,---w&&88::DdL11111XXZZw&&3+;g+E+E88::DdL11111b/** #	Iz"&./Q/Q #	I#++--Jw&  Z+^<& &  )(449$$x77 %''1,,z+<== -$+F33zAA FGGGG:%%x77 &''1,,z+<== -$+F33zAA GHHH&
 
 	O44T::	O %X%G%G%M%MNNH j";<< 	R(9$jQQJ($455 	XZ)>
 >
 	X VWX->->VVATATVVWWW  7799
2x~z:::::rx   c                    |                                  }|                     |j                  }|                                  }t          |t                    r|                                sJ |                                }|d t          |                    |t          |           d          }}t          t          ||                    }t          |          t          |          k    sJ | 
                    |||           d S r{   )r  r   r   r   r\   r   r!  r   r   ziprr   )r   r   argnamesr   r   kwargs_listr  s          rv   CALL_FUNCTION_KWz*InstructionTranslatorBase.CALL_FUNCTION_KW  s    88::yy%%XXZZ(M22Tx7R7R7T7TTTT..00 !1CMM>!12D#h--9I9I4Jkc(K00116{{c(mm++++2tV,,,,,rx   c                 `   |                      t          j        |d                     |j        d         }| j        d         |         }t
          j        dk     r+|                     t          j        ||                     d S |                     t          j        ||                     d S )Nr  rk  r   co_namesrh  )	r   r   r  r   rU  r   r   ry  LOAD_METHODr   r   rt  r   s       rv   LOAD_METHOD_SUPERz+InstructionTranslatorBase.LOAD_METHOD_SUPER  s    ;.tA>>>???k!n":.s3g%%OOK/VDDDEEEEE[0fEEEFFFFFrx   c                     |                      t          j        |d                     |j        d         }| j        d         |         }|                     t          j        ||                     d S )Nr  rk  r   r  )r   r   r  r   rU  ry  r  s       rv   LOAD_ATTR_SUPERz)InstructionTranslatorBase.LOAD_ATTR_SUPER  sk    ;.tA>>>???k!n":.s3+D@@@AAAAArx   c                    |                      |           |                                 }t          j        dk    r,|                     |           |                     |           d S t          j        dk    r,|                     |           |                     |           d S |                     |           |                     d            d S )Nr  rh  )ry  r  r   r   r   rF  r   r   r  s      rv   r  z%InstructionTranslatorBase.LOAD_METHOD  s    hhjjw&&IIcNNNNN4     (( NN4   IIcNNNNNIIcNNNIIdOOOOOrx   c                     |                      |j                  }|                                 }|J |                                 }|                     ||i            d S r{   r  )r   r   r   dummyr   s        rv   CALL_METHODz%InstructionTranslatorBase.CALL_METHOD  sV    yy%%

}}}XXZZ2tR(((((rx   c                     |                                  }t          t                                        | |t	          j        |j                  gi           }|                     |           d S r{   )r  rK   r  rr   rL   r   r   r   )r   r   r  r=  s       rv   ry  z$InstructionTranslatorBase._load_attr  s`    hhjj ))773(/<<=r
 
 			&rx   c                     t           j        dk    r!|j        dz  r|                     |           d S |                     |           d S )Nrl  r  )r   r   rt  r  ry  r  s     rv   	LOAD_ATTRz#InstructionTranslatorBase.LOAD_ATTR  sO    w&&x!|   &&&rx   c                    |                                  }|j        r|                     |          S |                     d          \  }}t	          |t
                    r/t	          |t                    s| j        rJ d|j         d            	 t          t                                        | |t          j        |j                  |gi            d S # t          $ rd}|                                 s t                              dd           |                                 |                    d           Y d }~nd }~ww xY w|                                 d S )Nr  zMutating module attribute z during export.zSTORE_ATTR triggered compileTrL  rN  )rO  r   store_attr_graph_breakr   r   rc   rL   exportr   rK   setattrrr   r   r*   r  r   r
  rQ  r^  r   )r   r   r_  r  r  rC  s         rv   
STORE_ATTRz$InstructionTranslatorBase.STORE_ATTR  s   nn&& 	5..t44499Q<<Sc+,, 	IZEU5V5V 	I KI IHDKHHHI I I
	*G$$22s,3DK@@#F   F 	* 	* 	*4466 II4tIDDD!!!NN=))))))))	* 	--/////s   AC 
EAD<<Ec                    |                                  st          d           | j                            | t	          d|                                 g                     | j                            t          j        |          g           |                     d           | j                            | 	                    | j
                             d S )Nr   
store_attrr  r  )r  r)   r  r  r.   r  r  ru  r   r  r  r  s     rv   r  z0InstructionTranslatorBase.store_attr_graph_break  s    0022 	@>???$$+L4;M;M;O;O:PQQ 	% 	
 	
 	
 	++TYt__,=>>>		!++&&t'<==	
 	
 	
 	
 	
rx   c                     |                                  }t          t                                        | |t	          j        |j                  gi            d S r{   )r  rK   delattrrr   rL   r   r   r  s      rv   DELETE_ATTRz%InstructionTranslatorBase.DELETE_ATTR  sS    hhjj  ..3(/<<=r	
 	
 	
 	
 	
rx   c                 @    t          dt          |                      )Nz1create_call_resume_at not overridden by subclass r   r  r   r  s     rv   r  z/InstructionTranslatorBase.create_call_resume_at  s%    LT

LL
 
 	
rx   c                 @    t          dt          |                      )Nz8should_compile_partial_graph not overridden by subclass r  r   s    rv   r  z6InstructionTranslatorBase.should_compile_partial_graph  s%    StDzzSS
 
 	
rx   r   c                 l    |                      d          \  }}}|                    | d||gi           }d S )Nr   __setitem__r   call_method)r   r   r  r  keyr=  s         rv   STORE_SUBSCRz&InstructionTranslatorBase.STORE_SUBSCR  s6    		!S#}sCj"EErx   c                 h    |                      d          \  }}|                    | d|gi            d S )Nr  __delitem__r
  )r   r   r  r  s       rv   DELETE_SUBSCRz'InstructionTranslatorBase.DELETE_SUBSCR  s5    99Q<<SmcUB77777rx   c                     d }t           j        dk    r"t          | j        |j         d                    }|                     |j                  }|                     t          |          |           d S )Nr  r  )r   r   r   r  r   r   r   r\   )r   r   
name_tupler  s       rv   BUILD_TUPLEz%InstructionTranslatorBase.BUILD_TUPLE  sh    
w&&t|~~>??J		$+&&		-&&Z	88888rx   c                 ~    |                      |j                  }|                     t          |                     d S r{   )r   r   r   r[   r   r   r  s      rv   BUILD_SLICEz%InstructionTranslatorBase.BUILD_SLICE  s5    		$+&&		-&&'''''rx   c                     |                      |j                  }|                     t          |t	                                           d S Nmutable_local)r   r   r   rZ   rF   r  s      rv   
BUILD_LISTz$InstructionTranslatorBase.BUILD_LIST  s>    		$+&&		,uLNNCCCDDDDDrx   c                     t           j        rt          d           |                     |j                  }t          |t                                }|                     |           d S )Nzmissing: BUILD_SETr  )r   +inject_BUILD_SET_unimplemented_TESTING_ONLYr)   r   r   rQ   rF   r   )r   r   r  new_sets       rv   	BUILD_SETz#InstructionTranslatorBase.BUILD_SET   s]    = 	0.///		$+&&e<>>BBB		'rx   c                 6   |                      |j                  }g }|D ]M}	 |                    |                    |                      ,# t          $ r t          d|            Y Jw xY w|                      ||t                                           d S )NzBUILD_LIST_UNPACK r  )r   r   extendr  NotImplementedErrorr)   r   rF   )r   r   r  seqsr  seqs         rv   BUILD_LIST_UNPACKz+InstructionTranslatorBase.BUILD_LIST_UNPACK'  s    yy%% 	: 	:C:S::4@@AAAA& : : :838899999:		##e<>>:::;;;;;s   (AA*)A*c                 >    |                      |t                     d S )N)r  )r%  r\   r  s     rv   BUILD_TUPLE_UNPACKz,InstructionTranslatorBase.BUILD_TUPLE_UNPACK1  s!    t77777rx   c           	          |                      |j        dz            }t          t          |d d d         |dd d                             }|                     t          |t                                           d S )Nr  r   r  )r   r   r   r  r   rP   rF   )r   r   r  ds       rv   	BUILD_MAPz#InstructionTranslatorBase.BUILD_MAP6  sn    		$+/**U33Q3Zqt!t--..		#A\^^DDDEEEEErx   c                 (                          |j                  } fd|D             }i }|D ]3}t          |t                    sJ |                    |j                   4                     t          |t                                           d S )Nc                 d    g | ],}t          t                                        |gi           -S rq   )rK   r   rr   )rs   rA  r   s     rv   r  z>InstructionTranslatorBase.BUILD_MAP_UNPACK.<locals>.<listcomp>>  s5    SSS&&44TA3CCSSSrx   r  )r   r   r   rP   updater  r   rF   )r   r   r  r=  rA  s   `    rv   BUILD_MAP_UNPACKz*InstructionTranslatorBase.BUILD_MAP_UNPACK;  s    		$+&&SSSSUSSS 	# 	#Aa!233333MM!'""""		*nn  	
 	
 	
 	
 	
rx   c           
         |                                  }|                     |j                  }t          |t                    sJ |                                sJ |                    |           }t          |          t          |          k    sJ |                     t          t          t          ||                    t                                           d S r  )r  r   r   r   r\   r   r  r   r   rP   r   r  rF   )r   r   keysr  s       rv   BUILD_CONST_KEY_MAPz-InstructionTranslatorBase.BUILD_CONST_KEY_MAPL  s    xxzz4;''$.....&&(((((--d334yyCKK''''		Sv&&''*nn  	
 	
 	
 	
 	
rx   c                     |                      d          \  }}|j        dk    sJ | j        |j                                                  }t          |t                    sJ |                    | d||fi            d S )Nr  r   r	  )r   r   r  rt  r  r   rP   r  )r   r   rt   ru   r  s        rv   MAP_ADDz!InstructionTranslatorBase.MAP_ADD\  sy    yy||1{Qj$(#++--#011111maVR88888rx   c                     |                                  }|j        dk    sJ | j        |j                  }t	          |t
                    sJ |j        sJ |                    | d|gi           S )Nr   rZ  r  r   r  rt  r   rQ   r  r  r   r   ru   r  s       rv   SET_ADDz!InstructionTranslatorBase.SET_ADDc  sm    HHJJ{Qj$(##{+++++    tUQC444rx   c                     |                                  }|j        dk    sJ | j        |j                  }t	          |t
                    sJ |j        sJ |                    | d|gi            d S Nr   r-  r5  r6  s       rv   
SET_UPDATEz$InstructionTranslatorBase.SET_UPDATEk  ss    HHJJ{Qj$(##{+++++    hR00000rx   c                 D   |                                  }|j        dk    sJ | j        |j                                                  }t          |t                    sJ |j        sJ | j        j	        
                    |           |j                            |           d S r   )r  r   r  rt  r  r   rZ   r  r  r  mutationr  r   r6  s       rv   LIST_APPENDz%InstructionTranslatorBase.LIST_APPENDs  s    HHJJ{Qj$(#++--#|,,,,,     ))#...	rx   c                    |j         }t          | j                  }t          j        dk     r|                                 }|                                 }t          j        dk    r6t          |j        d          sJ t          j	        |j        j
                  }d }d }d }d }	t          j        dk     rd|dz  r|                                 }|dz  r|                                 }|dz  r|                                 }	|dz  r|                                 }|                     t          ||| j        ||	||| 	                     d S )
Nrh  co_qualnamer0  r        r  r   )closure_scope)rt  r   r  r   r   r  r   r  rL   r   r?  r   rS   r5  )
r   r   flags	old_stackfn_namecodedefaultsclosureannotations
kwdefaultss
             rv   MAKE_FUNCTIONz'InstructionTranslatorBase.MAKE_FUNCTION|  sR   $$	g%%hhjjGxxzzw&& 4:}55555&-DJ4JKKKG
g%%t| %((**t| )"hhjjt| (!XXZZ
t| &88::		&"	 	 		
 	
 	
 	
 	
rx   c                                                       }t          |t                    r*|                     t	          |j                            }nt          |t                    rht          |j        t                    rNt          |j        	                                |j
                   fdt	          |j                  D             }n=|                               r|                               }nt          d|            t          |          |j        k    rt          d           t          |          D ]}                     |           d S )N)idxesc                 <    g | ]}t          |                   S rq   )rJ   )rs   r  proxyr   s     rv   r  z=InstructionTranslatorBase.UNPACK_SEQUENCE.<locals>.<listcomp>  s'    MMMQ=uQx00MMMrx   zUNPACK_SEQUENCE zUNPACK_SEQUENCE length mismatch)r  r   rg   r4  r{  r   r^   r  r  as_proxyr  r  r  r)   r   r}   r   )r   r   r$  r  r  rO  s   `    @rv   UNPACK_SEQUENCEz)InstructionTranslatorBase.UNPACK_SEQUENCE  sG   hhjjc>** 		4))$eDK6H6H)IICC_-- 	4*SWn2U2U 	4CG,,..99EMMMMM%:L:LMMMCC..t44 	4//55CC2S22333s88t{"";<<<# 	 	AIIaLLLL	 	rx   c                    d|j         cxk    rdk    sn J |j         dz  }|j         dz	  }|                                 }|                    |           rt          |                    |                     }t          |          ||z   k    sJ |d |         }||t          |          |z
           }|t          |          |z
  d          }t          |          D ]}	|                     |	           |                     t          |                     t          |          D ]}	|                     |	           d S t          d|            d S )Nr   i     r@  z
UNPACK_EX )
r   r  r  r   r  r   r}   r   r\   r)   )
r   r   prefixsuffixr$  r  vals_prefix	vals_listvals_suffixitems
             rv   	UNPACK_EXz#InstructionTranslatorBase.UNPACK_EX  so   DK))))6))))))t#!hhjj,,T22 	.55d;;<<Dt99////ww-KVc$ii&&889Is4yy61334K --    		$IImI../// --    		$    ,s,,-----rx   c                     d S r{   rq   r  s     rv   r  zInstructionTranslatorBase.NOP      rx   c                 .    |                                   d S r{   r  r  s     rv   POP_TOPz!InstructionTranslatorBase.POP_TOP      




rx   c                     |                                  }|                                  }|                     |           |                     |           d S r{   r  r   r   r   ar~  s       rv   ROT_TWOz!InstructionTranslatorBase.ROT_TWO  s>    HHJJHHJJ		!		!rx   c                     |                                  }|                                  }|                                  }|                     |           |                     |           |                     |           d S r{   ra  )r   r   rc  r~  cs        rv   	ROT_THREEz#InstructionTranslatorBase.ROT_THREE  sZ    HHJJHHJJHHJJ		!		!		!rx   c                 N   |                                  }|                                  }|                                  }|                                  }|                     |           |                     |           |                     |           |                     |           d S r{   ra  )r   r   rc  r~  rf  r)  s         rv   ROT_FOURz"InstructionTranslatorBase.ROT_FOUR  sv    HHJJHHJJHHJJHHJJ		!		!		!		!rx   c                     |                                  }|                     |           |                     |           d S r{   ra  )r   r   rc  s      rv   rx  z!InstructionTranslatorBase.DUP_TOP  s1    HHJJ		!		!rx   c                     |                                  }|                                  }|                     |           |                     |           |                     |           |                     |           d S r{   ra  rb  s       rv   DUP_TOP_TWOz%InstructionTranslatorBase.DUP_TOP_TWO  s\    HHJJHHJJ		!		!		!		!rx   c                 B   |j         }|dz  dk    r|                                 }nt          j        d          }|                                 }t	          |t
                    rEddlm}m} |                     |||          |j	                  }| 
                    |           d S |dz  dk    r+t          t                                        | |gi           }ng|dz  dk    r+t          t                                        | |gi           }n3|dz  dk    r*t          t                                        | |gi           }t          j        d	|                                z   d
z             }|                     t          t          j                  ||gi            d S )NrA  r   r   )LazySymNodeFormatStringLazyVariableTrackerrl  r   r   r  {:})rt  r  rL   r   r   rf   torch._dynamo.variables.lazyrn  ro  r8  r   rK   r   rr   reprasciir!  format)r   r   rC  fmt_specr  rn  ro  fmt_vars           rv   FORMAT_VALUEz&InstructionTranslatorBase.FORMAT_VALUE  s   DLT!!xxzzHH'.r22H

e_-- 
	       
 (..''x88 /  E IIeFDLT!!#C((66teWbIIEEdlt###D))77ugrJJEEdlt###E**88wKKE")$1L1L1N1N*NQT*TUU?3:66%8H"MMMMMrx   c                    g }g }i }|                      |j                  D ]!}t          |t                    r+|                    d           |                    |           Ct          |t
          j                  r|                    |j                   |                    |j	                   t          |                                          t          |j                                                  z  rt          d| d|j                    |                    |j                   t          d|            #|                     t
          j                            d                    |          ||                     d S )Nz{}zBUILD_STRING key conflict z & zBUILD_STRING r   )r   rt  r   rL   r   r   StringFormatVariableformat_stringr!  sym_argsr  r0  
sym_kwargsr)   r-  r   r   r[  )r   r   format_string_partsr   r  parts         rv   BUILD_STRINGz&InstructionTranslatorBase.BUILD_STRING  s   )+&(-/IIdh'' 	6 	6D$ 011 6#**4000D!!!!D)"@AA 	6#**4+=>>>DM***v{{}}%%DO,@,@,B,B(C(CC !QVQQQQ   do....4d445555		*11+,,dF 	
 	
 	
 	
 	
rx   c                     |j         dk    s|j         dk    sJ |j         dk    rd}nd}t          d|          }|                     |           d S )Nr   r   iszis notr  rk  )r   r   r  )r   r   
new_argvalnew_insts       rv   IS_OPzInstructionTranslatorBase.IS_OP)  sd    {a4;!#3#3#3#3;!JJ!J%l:FFF!!!!!rx   c                    |j         dk    s|j         dk    sJ |                     d          \  }}|j         }|                     |                    | d|gi                      |dk    r|                     |           d S d S )Nr   r   r  __contains__)r   r   r   r  	UNARY_NOT)r   r   leftrightr  s        rv   CONTAINS_OPz%InstructionTranslatorBase.CONTAINS_OP2  s    {a4;!#3#3#3#3iille[		%##D.4&"EEFFF77NN4      7rx   c                     |                                  }|j        dk    sJ | j        |j                  }t	          |t
                    sJ |j        sJ |                    | d|gi            d S )Nr   r!  )r  r   r  rt  r   rZ   r  r  r6  s       rv   LIST_EXTENDz%InstructionTranslatorBase.LIST_EXTEND:  ss    HHJJ{Qj$(##|,,,,,    hR00000rx   c                     |                      t          t                                        | |                                 gi                      d S r{   )r   rK   r   rr   r  r  s     rv   LIST_TO_TUPLEz'InstructionTranslatorBase.LIST_TO_TUPLEB  s>    		/%((66tdhhjj\2NNOOOOOrx   c                    |                                  }|j        dk    sJ | j        |j                                                  }t          |t                    sJ |j        sJ |                    | d|gi            d S r9  )	r  r   r  rt  r  r   rP   r  r  r6  s       rv   
DICT_MERGEz$InstructionTranslatorBase.DICT_MERGEE  s    HHJJ{Qj$(#++--#011111    hR00000rx   c                 .    |                                   d S r{   r  r  s     rv   	GEN_STARTz#InstructionTranslatorBase.GEN_STARTO  r_  rx   c                 .   | j         d         }|                                rH|                     t          j        t          |                                                               d S |                     |                    | dg i                      d S )NrI  r  )r  r   r   rL   r   r   r!  r  r  s      rv   GET_LENz!InstructionTranslatorBase.GET_LENR  s    jn!!## 	@II&-c#2H2H2J2J.K.KLLMMMMMIIcoodIr2>>?????rx   c                 6   | j         d         }t          |t                    sJ t          |j        t          j        j                  r)|                     t          j	        d                     d S |                     t          j	        d                     d S NrI  TF)
r  r   rP   r  collectionsabcMappingr   rL   r   r  s      rv   MATCH_MAPPINGz'InstructionTranslatorBase.MATCH_MAPPINGY  s    jn#011111ci!899 	6II&-d3344444II&-e4455555rx   c                    | j         d         }|                                sJ |                                }t          |t          j        j                  rKt          |t          t          t          f          s)| 
                    t          j        d                     d S | 
                    t          j        d                     d S r  )r  r   r!  r   r  r  Sequencer   bytes	bytearrayr   rL   r   )r   r   r  	tos_values       rv   MATCH_SEQUENCEz(InstructionTranslatorBase.MATCH_SEQUENCEa  s    jn%%'''''**,,	i!9:: 	6:UI.D
 D
 	6 II&-d3344444II&-e4455555rx   c                 6     j         d         } j         d         t          t                    sJ t          fd|D                       rj                     t           fd|D                                  t          j        dk     r)                     t          j	        d                     d S d S                      t          j	        d                      t          j        dk     r)                     t          j	        d                     d S d S )NrI  r  c              3       K   | ]}|v V  	d S r{   rq   )rs   rt   tos1s     rv   r  z7InstructionTranslatorBase.MATCH_KEYS.<locals>.<genexpr>q  s'      &&QqDy&&&&&&rx   c                 <    g | ]}                     |          S rq   )getitem_const)rs   rt   r   r  s     rv   r  z8InstructionTranslatorBase.MATCH_KEYS.<locals>.<listcomp>r  s)    $N$N$NQT%7%7a%@%@$N$N$Nrx   rh  TF)
r  r   rP   r  r   r\   r   r   rL   r   )r   r   r  r  s   `  @rv   
MATCH_KEYSz$InstructionTranslatorBase.MATCH_KEYSl  s   jnz"~$ 122222&&&&#&&&&& 	:IIm$N$N$N$N$N#$N$N$NOOPPP'))		*1$7788888 *) II&-d33444'))		*1%8899999 *)rx   c                 0    |                      d           d S )Nr   )r  r  s     rv   r   z.InstructionTranslatorBase.LOAD_ASSERTION_ERRORz  s    %%&677777rx   c                 j    |j         dk    r|                     |           d| _        d S | j        rJ d S )Nr   F)rt  append_prefix_instr  r  s     rv   RESUMEz InstructionTranslatorBase.RESUME  sD    8q==##D)))&+D###......rx   c                 8    t          |j                 | |          S r{   )_binary_op_lookuprt  r  s     rv   	BINARY_OPz#InstructionTranslatorBase.BINARY_OP  s    $TX.tT:::rx   c                     d S r{   rq   r  s     rv   r   z!InstructionTranslatorBase.PRECALL  r\  rx   c                     | j         d         |j                 }t          |t                    sJ |D ]}t          |t                    sJ | j        J t          j        |          | _        d S )N	co_constsr0  )rU  rt  r   r   r   rs  rL   r   )r   r   rs  r  s       rv   rj  z"InstructionTranslatorBase.KW_NAMES  s{    $[1$(;(E***** 	) 	)DdC((((((}$$$(/h???rx   c                 H    |                      t                                 d S r{   )r   r`   r  s     rv   rF  z#InstructionTranslatorBase.PUSH_NULL  s    		,..!!!!!rx   c                    |rft           j        dk    sJ |                                 }t          |t                    r|                                sJ |                                }n| j        r| j        j        nd}| 	                    |j
        dz             }t           j        dk    r/|d         }t          |d         t                    rg n|d         g}n7t          |d         t                    r|d         }g }n|d         }|d         g}|rs||dt          |                    z   }|t          |           d          }t          t          ||                    }t          |          t          |          k    sJ n||dd          z   }i }	 |                     |||           d | _        d S # d | _        w xY w)Nr  rq   r  r   r   )r   r   r  r   r\   r   r!  rs  r  r   rt  r`   r   r   r  rr   )	r   r   call_kwrs  contentsr   r   r  r  s	            rv   _callzInstructionTranslatorBase._call  s     	D#w....xxzzHh66X8;V;V;X;XXXX2244HH.2mCt}**H99TX\**w&&!B#HQK>>Q22Xa[MDD(1+|44 %a[a[ } 	(1H~#566D"CMM>#3#34K#h4455Fv;;#h--/////(122,&DF	! r4000 DMMMDDM    s   F6 6	F?c                 0    |                      |           d S r{   r  r  s     rv   r   zInstructionTranslatorBase.CALL  s    

4rx   c                 R    |                      | j        |j                             d S r{   )r   r  rt  r  s     rv   COPYzInstructionTranslatorBase.COPY  s%    		$*dhY'(((((rx   c                 t    | j         |j                  | j         d         c| j         d<   | j         |j         <   d S r  )r  rt  r  s     rv   SWAPzInstructionTranslatorBase.SWAP  s7    04
DH90EtzRT~-
2
DH9---rx   c                     d S r{   rq   r  s     rv   CACHEzInstructionTranslatorBase.CACHE  r\  rx   c                 0    |                      |           d S r{   r  r  s     rv   BEFORE_WITHz%InstructionTranslatorBase.BEFORE_WITH  r  rx   c           	      j   |                                  }t          |t          t          f          st	          |j         d|            t          |t                    r| xj        dz  c_        t          |t          t          f          sJ t          ||j                  }t          j
        dk    rA|j        r(| j        r|j        j        | j        d         j        urd }n| j        j        j        }n|j        }|rzt          | t                    r=| j                            t!          ||t#          | j                  |                     n(| j                            t!          ||                     |                     |           |                     |                    |                      d S )Nr  r   rh  rI  )r  r   rM   rN   r)   r   rP  rO   r   r   r   rv  rn  r  r   r   r   r   r  r   enter)r   r   ctxr   r   s        rv   r  z.InstructionTranslatorBase.setup_or_before_with  s   hhjj)+IJ
 
 	2 T[00300111c9:: 	4..!3.. )+IJ
 
 	
 	
 	
 (K
 

 w&&
 ! D$D%,D4DR4H4OOO.<C[F 	G$ 566 G ''#D&#dj//3GG     ''f(E(EFFF		$		#))D//"""""rx   c                 L    | j         sJ | j                            |           d S r{   )r  r  r   r  s     rv   r  z,InstructionTranslatorBase.append_prefix_inst+	  s.    &&&&  &&&&&rx   c                    t           j        dk    r[| j        sTt          | j        |j                 t                    sJ | j        j        	                                | j        |j        <   d S | 
                    |           d S r  )r   r   r  r   r  r   r`   r  r  track_cell_newr  r  s     rv   	MAKE_CELLz#InstructionTranslatorBase.MAKE_CELL/	  s    w&&t/F& d24;?NNNNN (7799     ##D)))))rx   c                 0    |                      |           d S r{   r  r  s     rv   COPY_FREE_VARSz(InstructionTranslatorBase.COPY_FREE_VARS:	      %%%%%rx   c                 0    |                      |           d S r{   r  r  s     rv   RETURN_GENERATORz*InstructionTranslatorBase.RETURN_GENERATOR=	  r  rx   c                 |    t           j        dk    r|                                  d S |                     d           d S )Nr  r  )r   r   r  r   r  s     rv   END_FORz!InstructionTranslatorBase.END_FORD	  s4    w&&HHJJJJJIIaLLLLLrx   c                     t          | j        |j                 t                    rt	          d           |                     |           d S )Nz)LOAD_FAST_CHECK on uninitialized variable)r   r  r   r`   r)   r"  r  s     rv   LOAD_FAST_CHECKz)InstructionTranslatorBase.LOAD_FAST_CHECKJ	  sF    d*4;7FF 	GEFFFtrx   c                     |j         | j        vr"|                     t                                 n|                     |           t                      | j        |j         <   d S r{   )r   r  r   r`   r"  r  s     rv   LOAD_FAST_AND_CLEARz-InstructionTranslatorBase.LOAD_FAST_AND_CLEARO	  sV    ;d222IIlnn%%%%NN4   ,8NNT[)))rx   c                     |                      t          j        |d                     |j        dz  r|                     |           d S |                     |           d S )Nr  rk  r   )r   r   r  rt  r  ry  r  s     rv   LOAD_SUPER_ATTRz)InstructionTranslatorBase.LOAD_SUPER_ATTRV	  sf    ;.tA>>>???8a< 	"T"""""OOD!!!!!rx   c                     |j         dk    r|                     |           d S |j         dk    rI|                     t          |                                                     |                                d S t          d|j                     d S )N      z!missing CALL_INTRINSIC_1 operand )r   UNARY_POSITIVEr   r\   r  r  r)   r  s     rv   CALL_INTRINSIC_1z*InstructionTranslatorBase.CALL_INTRINSIC_1]	  s    ;!%%%%%[AIImDHHJJ$H$H$N$NOOPPPPPKdkKKLLLLLrx   c                     |                                  }|                                   |                     |           d S r{   ra  r  s      rv   END_SENDz"InstructionTranslatorBase.END_SENDg	  s/    hhjj


		#rx   c                 4    |                      |d           d S )NT)r  r  r  s     rv   CALL_KWz!InstructionTranslatorBase.CALL_KWo	  s    

4
&&&&&rx   c                 &    | j         j        dv sJ d S )N)POP_JUMP_IF_TRUEPOP_JUMP_IF_FALSEr  )r  r   r  s     rv   r  z!InstructionTranslatorBase.TO_BOOLs	  s0     $+ 0
 
 
 
 
 
 
rx   c                     |j         }                                 }t          |t                    sJ  j        d         }                                 }|dz  rXt          |t
                    rt          d |D                       sJ t           fd|D                       |_         |_	        n&|dz  r||_
        n|dz  r||_        n|dz  r||_                             |           d S )NrI  r@  c              3   @   K   | ]}t          |t                    V  d S r{   )r   r   )rs   r  s     rv   r  zCInstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE.<locals>.<genexpr>	  s=       9 9*.
4%%9 9 9 9 9 9rx   c                 :    g | ]}                     |          S rq   )r  )rs   r  r   s     rv   r  zDInstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE.<locals>.<listcomp>	  s'    AAAd##D))AAArx   rA  r  r   )rt  r  r   rS   r  r   r  r\   rH  rB  rI  rJ  rG  r   )r   r   rC  r   
attr_namesattrs   `     rv   SET_FUNCTION_ATTRIBUTEz0InstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE}	  s%   XXZZ"899999_R(
xxzz4< 	 j%00 S 9 92<9 9 9 6 6    'AAAAjAAA BJ  $BT\ 	!BNNT\ 	 BMMT\ 	BK		"rx   c                 \   |                                  }t          |t                    r&t          j        t          |j                            }t          j        d|                                z   dz             }|                     t          t
          j
                  ||gi            d S )Nrp  rq  )r  r   rf   rL   r   r   r&  r!  rr   rK   ru  )r   rv  r  rw  s       rv   _format_value_313z+InstructionTranslatorBase._format_value_313	  s    

e_-- 	@$+C,>,>??E")$1L1L1N1N*NQT*TUU?3:66%8H"MMMMMrx   c                 T    |                      t          j        d                     d S Nr   )r  rL   r   r  s     rv   FORMAT_SIMPLEz'InstructionTranslatorBase.FORMAT_SIMPLE	  s(    /6r::;;;;;rx   c                 T    |                      |                                            d S r{   )r  r  r  s     rv   FORMAT_WITH_SPECz*InstructionTranslatorBase.FORMAT_WITH_SPEC	  s$    txxzz*****rx   c                 T    | j                                         dk    r
d | _        dS dS )Nr   c                      dS )NTrq   rq   rx   rv   r   z>InstructionTranslatorBase.is_non_empty_graph.<locals>.<lambda>	  s    d rx   TF)r  count_callsr  r   s    rv   r  z,InstructionTranslatorBase.is_non_empty_graph	  s/    ;""$$q((&2lD#4urx   c           
          |g }d                     t          j        |                                 gt	          t          |                    z                       S r  )r[  r\  r]  r  r   r}   )r   additional_stack_framess     rv   format_frame_summaryz.InstructionTranslatorBase.format_frame_summary	  s\    "*&(#ww!##%%&h7N.O.O)P)PP 
 
 	
rx   c           	          t          j        t          | j        dd          | j        t          | j        dd          d          S )NrJ  	<unknown>r  F)lookup_line)r\  FrameSummaryr  r  r   r   s    rv   r  z'InstructionTranslatorBase.frame_summary	  sF    %DK<<KDKK88	
 
 
 	
rx   c                     t          | j        dd          }t          j        d          }|                    |          d uS )NrJ  r  z.*torch/nn/modules.*)r  r  recompilematch)r   r   nn_modules_patterns      rv   is_co_filename_from_nn_modulesz8InstructionTranslatorBase.is_co_filename_from_nn_modules	  s?    4;{CCZ(?@@!''11==rx   c                     | j                             |t          j        |                    }t	          t          |                              t          j                             |S r{   )	r  install_global_by_idweakrefrefr-   r7   
make_guardr,   WEAKREF_ALIVE)r   rT  r  global_names       rv   store_global_weakref_by_idz4InstructionTranslatorBase.store_global_weakref_by_id	  sY    k66vw{5?Q?QRR,,778RSS	
 	
 	
 rx   c                 $    | j         j        j        S r{   )r  tracing_context	fake_moder   s    rv   r	  z#InstructionTranslatorBase.fake_mode	  s    {*44rx   c                 T    | j                                         D ]\  }}||u r|c S d S r{   )r  r  )r   tensor_variabler  r  s       rv   find_symbolic_locals_namez3InstructionTranslatorBase.find_symbolic_locals_name	  sB    .4466 	 	JC''


 (trx   check_fnc              #   V   K   | j         }|| _         	 dV  || _         dS # || _         w xY w)zx
        Strict mode is enabled on a per-VariableTracker level depending on the return value of check_fn(node).
        N)r  )r   r  priors      rv   strict_translation_modez1InstructionTranslatorBase.strict_translation_mode	  sH      
 % (	*EEE$)D!!!ED!))))s    	(c                     | j         J | j         dk    sJ | j                            | j        j        | j        | j         dz
  | j        | j         dz
                     S )Nr   r   )r   speculation_logr   r  rJ  r   r   r   s    rv   rO  z#InstructionTranslatorBase.speculate	  sk    '333'!++++#((K#K$q(d6:;	
 
 	
rx   r   r  r5  r7  rU  r  r  r  distributed_statec                    t                                                       || _        || _        || _        || _        || _        |	| _        g | _        g | _	        d| _
        t          d          | _        g | _        d| _        d| _        d | _        d| _        g | _        g | _        || _        t+          | j                  | _        || _        || _        || _        || _        |
| _        t8          j        rt=          |
|          | _        nd | _        i | _         || _!        d| _"        d | _#        d | _$        tJ          j&        dk    rAdd	l'm(}m)}m*}m+} |
j,        ||z  |z  |z  z  r"| -                    t]          d                      || _/        d| _0        d gtc          |
j2                  z  | _3        ti          j5        |
j6        |           d S )
Nr   r  rI  T)rF  rU  F)r   
   r   )CO_ASYNC_GENERATORCO_COROUTINECO_GENERATORCO_ITERABLE_COROUTINE)7r  r  r  r  r  r  r  r  r  r  r   r   r  rn  rP  r   rs  r  r  r  r   r   r  r  r5  r7  rU  r  r   replay_record_enabledr1   r  nn_module_stackr  	one_graphr  r  r   r   resume_executionr  r  r  r  co_flagsr   rK   r  r  r   r  r1  r  	lazycacherJ  )r   r  r   r  r5  r7  rU  r  r  r  r  r  r  r  r  r  r  r  r  r  s                      rv   r  z"InstructionTranslatorBase.__init__	  s,   " 	.!2 . 02T/
%'#$ #5e#<#< -.*"& 0</:4;L/M/M  	 *3*4,8&, ' 	&!2," " "D "&D BD#'  $w&&            |+.CCFXX 1 		/$//000().&BF#K
 K
 B
 	F.	:::::rx   r{   )F(  r   r   r   r/   r   r   r   rH   r   r   r	   r   r"   r   rL   r   r   r   r1   r   r  r  r  r  rr   r  r  r  r  r  r   r   r  propertyr  r  r  r  r   r
  r  r   r  r   r"  r$  r(  r*  r,  STORE_DEREFr.  r2  r   r<  r   cached_propertyrD  r   rL  r>  r_  rh  rv  rz  r  r:  r"  JUMP_FORWARDJUMP_ABSOLUTErE  r   not_r  r   r  JUMP_IF_FALSE_OR_POPJUMP_IF_TRUE_OR_POPr  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  ry  r  r  r  r  r  r  r  r  r  r  r  r  rZ   r%  r'  BUILD_TUPLE_UNPACK_WITH_CALLr*  r.  BUILD_MAP_UNPACK_WITH_CALLr1  r3  r7  r:  r=  rK  rQ  rZ  r  r^  rd  rg  ri  rx  rl  rx  r  r  r  r  r  r  DICT_UPDATEr  r  r  r  r  r   r   posr  negUNARY_NEGATIVEr  invertUNARY_INVERTpowBINARY_POWERmulBINARY_MULTIPLYmatmulBINARY_MATRIX_MULTIPLYfloordivBINARY_FLOOR_DIVIDEtruedivBINARY_TRUE_DIVIDEr@  BINARY_MODULOBINARY_REMAINDERrZ  
BINARY_ADDsubBINARY_SUBTRACTgetitemBINARY_SUBSCRlshiftBINARY_LSHIFTrshiftBINARY_RSHIFTand_
BINARY_ANDor_	BINARY_ORxor
BINARY_XORipowINPLACE_POWERimulINPLACE_MULTIPLYimatmulINPLACE_MATRIX_MULTIPLY	ifloordivINPLACE_FLOOR_DIVIDEitruedivINPLACE_TRUE_DIVIDEimodINPLACE_MODULOINPLACE_REMAINDERiaddINPLACE_ADDisubINPLACE_SUBTRACTilshiftINPLACE_LSHIFTirshiftINPLACE_RSHIFTiandINPLACE_ANDixorINPLACE_XORior
INPLACE_ORr  r  r   rj  rF  r  r   r  r  r  JUMP_BACKWARD_NO_INTERRUPTPOP_JUMP_FORWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_FORWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_FALSEr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  
contextlibcontextmanagerr  rO  rq  CodeTyper   r   r  r  r  s   @rv   r   r     s         #.////3/0000(-.I(JJJJ    !#&&&$$$$o&&&&KKK'(((({########!"23333I''''-....x(94(?@AAAA. . .  >
' 
' 
'	= 	= 	=88 ?#8 S/)*	8 8 8 8,Q Q Qn n n n  W W W)= )= )=V 7""%	+ %	+ %	+ %	+R	 	 	 ; ; X;
 
 
2 2 2* * *,; ;1 ; ; ; ; ;d?3     _        ;c ;d?3 ; ; ; ;* * *+ + +8% % %5 5 5/ / /
& & &. . . K3 3 3  * * *8 8 8. D D D! ! !E E E# # #$
2 
2 
2  :-; -; -;^  : : :3 3 3= = = LM$X]E::#|HNE::'<t<<&,x~t<<D D DD D D  ( ( (D D D  U U U          (& & &,0 0 0! ! !]' ]' ]'~  $ $ $.5 5 5nK K K  P P PD D D  Q''') ) (')
  Q'''K; K; ('K;Z  Q'''	- 	- ('	-G G GB B B   ) ) )    0 0 04

 

 


 
 

 
 


d 
 
 
 

  Q'''F F ('F8 8 89 9 9( ( (E E E   +7 < < < <8 8 8 $6 F F F

 
 
 "2
 
 
 9 9 95 5 51 1 1  &
 &
 &
P  ". . .&            
  N N N<
 
 
0" " "! ! !1 1 1P P P1 1 1 K  @ @ @6 6 6	6 	6 	6: : :8 8 8 Xhl++NXhl++N''I8HO,,L8HL))Lhx|,,O%Xho66"(8#455!("233HX\**Mx--(,''Jhx|,,O6..A666xx@P7Q7QRRMHX_--MHX_--M(-((J&&I(,''JHX]++Mx..&hx'788#8H$677"(8#455Xhm,,N //(8=))Kx..Xh.//NXh.//N(8=))K(8=))K(,''J/ / / 7""	; 	; 	;  @ @ @" " "'! '! '! '!R  Q'''  (') ) )V V V M!%+|HNEBB ,X^U C C ,X]E B B!-hmU!C!C  ( ( (,# ,# ,#\' ' '	* 	* 	*& & && & &    
; ; ;" " "M M M    Q'''' ' (''
 
 
  :N N N< < <+ + +  
 
 
 

 
 
> > >
   5 5 X5   	*/9JD9P0Q 	* 	* 	* 	*
+ 
 
 
 
X;X; ;'X; sCx.	X;
 S>X; cNX; 38nX; c?23X; sO34X; -22M,NX; X; X; X; (X; $$45X;  
!X; X; X; X; X; X; X; X; X; X;rx   )	metaclassc            
            e Zd ZU ee         ed<   edd            Zej	        d             Z
dee         dee         dedee         ddf
 fd	Zd
 Zd ZdefdZ fdZd Zd Zd Zd Zd Zd Zd Z xZS )r   mutated_closure_cell_contentsr   c                      t           j        S r{   )tls
current_txrq   rx   rv   rs  z InstructionTranslator.current_txK
  s
    ~rx   c              #      K   t          t          dd           }| t          _        	 d V  |t          _        d S # |t          _        w xY w)Nrs  )r  rr  rs  )r   r  s     rv   set_current_txz$InstructionTranslator.set_current_txO
  sJ      \400	#EEE"CNNNUCN""""s	   8 Ar   r  r  Nc                 H    t                      t          j        d|j         d|d          d|d                     t	                                          t          ||| |	|
|||	  	        ||||i i t          j                    ||	d||           | 	                                 t          | j        j                  5  |                                 5  || _        |	| _        || _        | j        r| j        s
J d	            t#          |d
                   fd|                                 D             }                    |           t)          |          fdD             | _        |                                  g | _        |	r)t0          j                            | j                  | _        i | _        | j        d         D ]#}|v rt;          |                   | j        |<   $	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nztorchdynamo start tracing r  rJ  r   rK  )local_scoperV  r  r   )r  r   r  r5  r7  rU  r  r  r  r  r  r  r  r  z4Export without one graph - something has gone wrong.co_varnamesc                     g | ]}|v|	S rq   rq   )rs   rA  varss     rv   r  z2InstructionTranslator.__init__.<locals>.<listcomp>
  s    !W!W!WRV!rx   c                     i | ]?}|v |t           j                            |         t          ||v                      @S ))cell_or_freevarrl  )r   ro  r   r8   )rs   rt   cells_and_freevars_setr  s     rv   rw   z2InstructionTranslator.__init__.<locals>.<dictcomp>
  se     $ $ $
 == 9077QK&q!?U:UVVV 8  
 !==rx   r  )r   r   INFOr  r  r  r/   r  deque_throw_if_in_functorchr   r  r  ru  r  r  rp  r   r  r!  r  r  _init_torch_function_mode_stackdebug_localsr   ro  realize_all_freevars_idsrU  id)r   r   r  r  r5  r7  rU  compiler_fnr  r  export_constraintsrp  frame_stater  r  cells_and_freevarsr  r}  rz  r  s      `             @@rv   r  zInstructionTranslator.__init__X
  sS   " 	Lxxx,}:UxxXdeuXvxx	
 	
 	
 	"$&
 
 
 &!%/:/@/B/B+/3 	 	
 	
 	
8 	##%%% T[011 $	B $	B43F3F3H3H $	B $	B#,DN DK1ND.{ JNJ JIJ J J ]344D!W!W!W!WT-C-C-E-E!W!W!WKK*+++%();%<%<"$ $ $ $ $
 $ $ $D  00222UWD  (1'D'P'P(( ($ "$D)-8 B B8##/1(4./A/AD&t,BE$	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	B $	Bs7   HDG?3H?H	HH	HHHc                 N   t           j                            d          }t          j        | j        j        d| j        j                  }t           j        j        	                                }t           j        j        j
        j        t           j        j        j
        j        t           j        j        j
        j        f}|b|                                |v rN||urL|                                j                                        }d| d| d| d}t#          |           d S d S d S d S )Neagerr  zhIf you are reaching here, it means dynamo failed for one of the following reasons:
- Calling torch.func.zP(compiled_fn) function from eager mode is not supported. Ensure that torch.func.zp is also wrapped within a torch.compile function. For more information, see PyTorch issue #128711.
- torch.func.z2(fn) requires the function to be inlined by dynamo)r$  _dynamolookup_backendr   getattr_staticr  r  _C
_functorchpeek_interpreter_stackTransformTypeVmapGradJvpr  r  lowerr)   )r   r  r  ciforbidden_keysr  r  s          rv   r  z,InstructionTranslator._throw_if_in_functorch
  s-   ,,W55,K#]DK4K
 
 X 7799H-2H-2H-1
 >bffhh.88[PU=U=U6688=&&((DY(,Y Y +/Y Y !%Y Y Y  # >88=U=Urx   c           	         ddl m} |                                 t          j                    | _        t          d          }|r*t          |d         t          j	        j
        j                  }t          |          D ]K\  }}| j                            t          j                            |t#          |                               Ld S )Nr   )TorchFunctionModeStackVariableF)filter_ignoredr   rl  )variables.torch_functionr  resetr  r  r  r@   r   r$  utils_deviceDeviceContext	enumerater   r   ro  r   r:   )r   r  py_stackhas_device_contextr  r  s         rv   r  z5InstructionTranslator._init_torch_function_mode_stack
  s    LLLLLL&,,...  	/ 1FFF 	!+U[0>" "  )) 	 	FAs3::-44 <Q ? ? 5     	 	rx   r8  c                     t          |t                    r| j        |j                 S t          |t                    r| j        |j                 S t          r{   )r   r8   r  
local_namer6   r5  r  r  )r   r8  s     rv   get_example_valuez'InstructionTranslator.get_example_value
  sK    fk** 	4=!233fl++ 	6>&"455rx   c                 H    t                                                       d S r{   )r  r  )r   r  s    rv   r  zInstructionTranslator.run
  s    rx   c                     	 |j         }n# t          $ r Y dS w xY wt          |          | j                            |          k    rdS | j        |         S )z@Match a cell in this method to one in a function we are inliningN)cell_contents
ValueErrorr  r  r  r  )r   r  cellr  s       rv   match_nested_cellz'InstructionTranslator.match_nested_cell
  sj    	&EE 	 	 	44	 e99*..t44444#D))s   
 
c                     t           j        dk    r0| j        j        }|r"| j        r|j        | j        d         j        urdS t          d | j        D                       o| j         o
| j        dk    S )Nrh  rI  Fc              3   >   K   | ]}|                                 V  d S r{   )r   rs   r~  s     rv   r  zEInstructionTranslator.should_compile_partial_graph.<locals>.<genexpr>  s*      ::A::::::rx   r   )	r   r   r  rv  rn  r   r  r  rP  )r   r   s     rv   r  z2InstructionTranslator.should_compile_partial_graph
  s    w&&,:E $(-D<LR<P<W(W(Wu::)9::::: 8N"82a7	
rx   c                     d  _         |j        dk    rt          d          gS |j        dk    rt          d|j                  gS t	           j        |          t           fd j                                        D                       }t           fd|D                       }t           fd|D                       }t          j
        dk     rt          |          dk    s
J d	            t                     g }t           j                  D ]\  }}t                              t"          |          rt%          t"          |          }|j        d
nt          |j                  }	|                    ||	f           |                                                   t/          t           j                  |z
  dz                                            t          d                     g }
|D ]}t                              t"           j        |         x}          rt%          t"          |          }|j        d
nt          |j                  }	|
                    ||	f           |                                                   t          d|                     g }t          j
        dk    rt           j                  D ]:\  }}t                              t2          |          r|                    |           ;d}t          t5           j                            D ]\  }}t                              t2          |          rit7          d|dz   |z
            D ]&}                    t          d|                     '                                                               |dz  }t           j                  t          |          z
  }|t          |          z   }t;          d|j                   }t?          j          j!         j"        |j        t          d  j#        D                       |||t          d  j#        D                       t          |          t          |
          t          |                    } tI          j%         j!                  &                    dd                       }|)tO          j(        |          tI          j%        |          d<   |j)        r4 j*        +                    ||           ,                    ||d|           n^ j*        +                    |t[          j.        | j/        |                                         0                    |d|                                         fd|D                                            tc          |d                                         t          d                     2                                S )Nr  r  rk  c              3   P   K   | ] }|v |                                 v|V  !d S r{   )r  )rs   rt   r  r   s     rv   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  sN       
 
Ezzat'='='?'??? ????
 
rx   c              3   r   K   | ]1}t                               t          j        |                   -|V  2d S r{   r  __instancecheck__r`   r  rs   rt   r   s     rv   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  sU       
 
)),8LQ8OPP

 
 
 
 
 
rx   c              3   r   K   | ]1}t                               t          j        |                   -|V  2d S r{   r  r  s     rv   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  sU       
 
%%lD4H4KLL

 
 
 
 
 
rx   rl  r   z&variables should not be NULL in < 3.12rq   r   r^  r*  rh  r  r  )rt  __resume_at_c              3   .   K   | ]}|j         j        V  d S r{   )r   r  r  s     rv   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>b  s&      <<a!(/<<<<<<rx   c              3   >   K   | ]}|                                 V  d S r{   )r   r  s     rv   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>f  s*      ::A!++--::::::rx   orig_graphmodulec                      d S r{   rq   rq   rx   rv   r   z=InstructionTranslator.create_call_resume_at.<locals>.<lambda>o  s     rx   Tc                 :    g | ]}                     |          S rq   )create_load)rs   rt   r|  s     rv   r  z?InstructionTranslator.create_call_resume_at.<locals>.<listcomp>  s%    >>>"..++>>>rx   F)3r   r   r   r   r   r   r   r  r0  r   r   r   r&   r  r  r  r  rM   r   r   r   ro  rp  r    append_outputr`   r}   r{  pop_nullr$   r  r2   lookupr  r   rn  r%   get_contextr  r  r  r  r  install_global_unsafemake_function_with_closurerq  FunctionTyper5  load_function_namer   rr  )r   r   all_argnamesr  argnames_nullstack_ctx_varsr  varr  r   argnames_ctx_varsr  
null_idxesnull_cntj	stack_lenr   new_codeorig_graphmodule_mayber|  r  s   `                  @@rv   r  z+InstructionTranslator.create_call_resume_at  sX   #' ;.((&~6677[N**&~dkJJJKK!$"3T:: 
 
 
 
 
)..00
 
 
 
 
  
 
 
 
!
 
 
 
 

  
 
 
 
!
 
 
 
 

 g%%}%%***,T***t__
 
++ 
	@ 
	@FAs%%&=sCC 	@2C88+3BBs?P9Q9Q  %%q-&8999$$R(((  S__q-@1-D!E!EFFF  !3I!>!>??? 	P 	PD%%'0DT0J)J  
P 2C88+3BBs?P9Q9Q  "(($)>???$$R(((  !3L!N!N!NOOO !#
w&&#DJ// ) )3)),<< )%%a(((H#HTZ$8$899 " "3)),<< ""1a!eh&677 L L(();F)J)J)JKKKK$$R[[]]333MH 
OOc*oo5	CMM)55566#9#@KKK<<4+;<<<<<::)9:::::.!!#$$*$
 $
 "
!9$+!F!F!J!J"
 "
 " " "-EL[&F FL$X../AB  		KK--dH===))$$	JJJJ K--e(4>4HH   R224yIIJJJ
>>>>X>>>???
-eU;;<<<
+N;;<<<""$$$rx   c                     | j                                         D ]K}t          |t                    r4t	          |                                t          j        j                  r dS LdS )NTF)	r  r  r   rj   r  r!  r$  nnModule)r   ru   s     rv   $symbolic_locals_contain_module_classz:InstructionTranslator.symbolic_locals_contain_module_class  sh    %,,.. 	 	A!566 :$$&&< <  tturx   c                    | j                                         dk    r6| j        s/|                                 s| j        st          j        d          d | _         t                      t          j
        d| j        j         d|j         d           t                              d|j                   | j                             | t#          d|                                 gd	          
           |j        dk    rt'          d          nt'          d|j                  }| j                             |g           t,          )Nr   z#because no content in function callztorchdynamo done tracing r   r  z%s triggered compilereturn_valueF)rN  r  r  r  rk  )r  r  r  r  r  r   r	  r   r   r   r~  r  r  r   r   r
  r  r.   r  r   r   r  r   )r   r   return_insts      rv   _returnzInstructionTranslator._return  sT   K##%%**2 +==?? + K +
 - EFFF#' LM(;MMt{MMM	
 	
 	
 			($+666$$%!3!3!5!5 6E   	% 	
 	
 	
 {n,, ~...#N4;GGG 	
 	++[M:::rx   c                 0    |                      |           d S r{   r  r  s     rv   r  z"InstructionTranslator.RETURN_VALUE      Trx   c                 0    |                      |           d S r{   r  r  s     rv   r  z"InstructionTranslator.RETURN_CONST  r  rx   )r   r   )r   r   r   r
   r   r   staticmethodrs  rk  rl  ru  r   r"   r   r	   r   r  r  r  r9   r  r  r  r  r  r  r  r  r  r  r  s   @rv   r   r   H
  s        #&s8+++   \ # # #YB;'YB (+3xYB (YB $$45YB  
!YB YB YB YB YB YBv  4  .        	* 	* 	*
 
 
}% }% }%~    8        rx   r   rh  c           	      p    g | ]3\  }}t          t          d |v r
|dd         nd|dd                    4S )INPLACEr   NBINARY_)r  r   )rs   r   r   s      rv   r  r    se       
 FA	 	!#v--F122JJ3IVABBZ3I3I	
 	
  rx   c                   d    e Zd ZU dZee         ed<   ed             Ze	d             Z
e	dedee         fd            Zded	ej        d
eeef         deeef         ded         deeef         deddf fdZed             Zd Zd Z fdZd Zd Zd Zd Zd Zd Z d Z! fdZ" fdZ# xZ$S ) r  z Trace and inline a called methodsymbolic_resultc                     t          j        t          dt          d         i          5  |                     ||||          cd d d            S # 1 swxY w Y   d S )Nr)   r  )r   r   r=   inline_call_)r  r  funcr   r  s        rv   r  z)InliningInstructionTranslator.inline_call  s    Z?H]4K"LMM 	@ 	@##FD$??	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   AAAc                    |                                  rt          d           t          j        | d          }|j        rddlm} t          t          | dd           d          r$| j	        j
        |fv rt          j        dd	          S t          | d          r| j	        j        nd
}t          d| d|                                  d|                                  d|j         d	           t!          | t"                    rNt%          j        |                                 dd          r&t          d|                                             d S |S )Nzinline with __self__T)is_inlined_callr   )!produce_trampoline_autograd_applyr   _originFz"allowlist in dynamo known functionr   z'inline in skipfiles: z | r  z, '_torchdynamo_disablez.call torch._dynamo.disable() wrapped function )has_selfr)   r   check_verboseskippedtorch._dynamo.variables.miscr  r   r  r   r  
SkipResultr   get_nameget_filenamer   r   rU   r   r  get_function)r  r=  r  fn_qualnames       rv   check_inlineablez.InliningInstructionTranslator.check_inlineable  s   ==?? 	20111*4FFF> 	VVVVVV wtT400)<< 1U B B #-?   3:$2E2EM$'..2Krrrrr4K\K\K^K^rrbhborrr   d011 	g6L!77
 7
 	 VARARATATVV     Mrx   r  r   c                 l   t          |t                    rt          d           t          |t          t          f          sJ t
                              |          }|j        du sJ 	 |                    | ||          \  }}n# t          $ r}t          d                    t          |          d|                                 d|                                 d|                                j         d |D             |                    d }~ww xY wt#          j        |                                |                                          D ])}t          |t(                    st          d	|            *|                                j        d
v rE|r,t          |d         t,          j        t,          j        f          st          dj                    d}	t2          j        j        j                            d          r)dt=          j                                                   }	t@          j!        dk    r^| j"        | j#        | $                    j%        j&                  fd}
tN          (                    dtS          |
                     tT          (                    d|	|j+                   |rt          |d         tX                    rw| j-        .                    |d         j/                  }t          |t2          j0        j1                  r3te          j3        |          ti          j5        |j6        j7                  d<   tq                    r ts          | || j:        | j;        ||          }nt          | || j:        | j;        ||          }ty          j=                    }| j>        r|?                    | j>                  }	 |5  |@                                 d d d            n# 1 swxY w Y   n# t          jB        $ rG}d d| }| jC        D                    |jC                   tT          (                    |            d }~wt          jE        $ r7}d d| }tT          (                    |           t          |          |d }~wt          $ r!}tT          (                    d            d }~ww xY w|jH        J |I                    | |           |jJ        | jJ        u r| j:        K                    |j:                   | xjL        |jL        z  c_L        tT          (                    d           tq                    rTt          |tr                    sJ |jH        M                                J t          |jO        t                                S |jH        S )Nz#inline with functions in skip filesFz;{reason}.
  func = {func}, args = {args}, kwargs = {kwargs}r  z' r   c                 6    g | ]}|                                 S rq   )python_type)rs   rt  s     rv   r  z>InliningInstructionTranslator.inline_call_.<locals>.<listcomp>  s"    <<<#//++<<<rx   )r   r  r   r  zunconverted arg )r	  __setattr__r   zinline r   bytecoder  rh  )r   c                  h    t                                                    } dj         d d|  S )NzTRACE inlined call z from r  )r?   r  r  )r  rF  cur_instheaderparent_codes    rv   get_trace_call_log_strzJInliningInstructionTranslator.inline_call_.<locals>.get_trace_call_log_str  s>    1+xHHOOQQQT\QQQQ4QQQrx   r  zINLINING %s%s, %sr  z!Observed exception DURING INLING z : zSKIPPED INLINING z: zFAILED INLINING %szDONE INLINING %sr  )Qr   rT   r)   rU   rS   r  r  r  	bind_args	TypeErrorr'   ru  r   r  r  get_coderK  r  r  r  rH   r  r   CustomizedDictVariablerk   r$  _logging	_internal	log_stateis_artifact_enabledrw  Bytecoder   r   r  r  r  	positionsr   trace_call_logr
  rC   r   r   rc   r  r.  r/  r(  GraphModuler  r  r%   r  forward__code__r#   &InliningGeneratorInstructionTranslatorr  r  rk  nullcontextr  r  r  r   r  r  r!  r	  r*   r  r  export_freevarsr5  r-  r  r!  rY   generated_itemsrF   )r  r  r   r  r=  
sub_localsclosure_cellsrC  ru   rU  r  moduletracer
strict_ctxr  rF  r  r  r  s                  @@@@rv   r  z*InliningInstructionTranslator.inline_call_  sE    d011 	A?@@@!#=>
 
 	
 	
 	
 /??EE~&&&&	(,vtV(L(L%J 		 		 		#NUUq66fT]]__ff0A0A0C0CffdmmooFdff<<t<<<!	 V    		 !2!2!4!4m6J6J6L6LMM 	6 	6Aa11 6444555#}}<999 :Q193VW  : 2DL22333 >#-AA*MM 	54#,t,,002244Fw&&1H -K338;M;T3UUFR R R R R R R R   z2H'I'IJJJ		%tVV]CCC  	(JtAw(899 	(]00a1CDDF&%("677 (
 K'' ()@AA&
  	;'9 FF 3'9 F %022
" 	Q778OPPJ	  

              $ 	 	 	BdBBqBBC &&v':;;;IIcNNN} 	* 	* 	*1d11a11CIIcNNNc"") 	 	 	II*D111	 %111VV,,,v///#**6+BCCC((F,LL((		$d+++ 	*f&LMMMMM)<<>>FFF'&*nn   
 ))sn   -B 
DBDDP
 O>2P
 >PP
 PP
 
SAQS-2RS,SSr  rF  r  r  r  rh   r  funcvarr   Nc                    |                                 }|d         }	t          |	t                    s|	j        }	t	                    }
t          |
           t                                          |j        i ||	||||
fdt                      D             |j
        |j        dz   |j        |j                   || _        d | _        || _        |j                                        | _        |j        | _        d S )N__builtins__c                 2    i | ]}|t          |          S rq   )r  )rs   rt   rF  s     rv   rw   z:InliningInstructionTranslator.__init__.<locals>.<dictcomp>  s%    GGG!!WT1--GGGrx   r   )r  r  r5  r7  r  r  r  r   rU  r  r  r  r  r  )get_globalsr   r   __dict__r   r   r  r  r  r!   r  r  r  r  r  r  r  r  ru  r  )r   r  rF  r  r  r  r  r  r5  r7  r   r  s     `        rv   r  z&InliningInstructionTranslator.__init__h  s	    ''))	~.
*d++ 	-#,J+D11L)))=!+-/Q%GGGG}GGG=,q0"2$6 	 	
 	
 	
  #*%5::<<)rx   c                     | j         j        S r{   )r  r	  r   s    rv   r	  z'InliningInstructionTranslator.fake_mode  s    {$$rx   c                 X    t          j        | j                                                  S r{   )r   r  r  r  r   s    rv   r  z)InliningInstructionTranslator.run_ctx_mgr  s!    +DK,E,E,G,GHHHrx   c                 `   |j         | j        v r| j        |j                  }|                                 }t          |t                    rC| j                                        st          d           || j        j        j	        |j
        <   d S | j        j                            ||           d S | j	                            |j                   }t          |t          j                  rD| j        j                            | j	        |j                  |                                            d S |q|j        
                                | j        j        j        vrG| j        j        j                            |j        
                                           t&          j        t          d           d S )NzSHigherOrderOperator: Mutating a variable not in the current scope (ClosureVariable)z#write to __closure__ while inlining)r   r  r  r   r]   r  is_root_tracerr)   root_txr  r  r  
store_cellr  r   NewCellVariabler8  rp  rZ  r   UnspecializeRestartAnalysis)r   r   r  r  
maybe_cells        rv   r!  z)InliningInstructionTranslator.STORE_DEREF  s   ;$,,,%dk2D((**C$00 ?{1133 !m   BE#3DI>>>(33D#>>>>>-11$+>>J)  E (33(5txxzz    
 *")..00;.LM M K'EII")..00   99CDDDDDrx   c                 Z   |j         | j        v r| j        |j                  }t          |t                    r1|                     | j        j        j        |j                            d S |                     | j        j	        
                    |                     d S | j                            |j         d           }t          |t          j                  r4|                     | j        j	        
                    |                     d S t                                          |           d S r{   )r   r  r   r]   r   r  r!  r  r  r  	load_cellr  r   r#  r  r$  )r   r   r  maybe_sym_localr  s       rv   r$  z(InliningInstructionTranslator.LOAD_DEREF  s    ;$,,,%dk2D$00 D		$+-=diHIIIII		$+2<<TBBCCCCC"266t{DIIO/9+DEE )		$+2<<_MMNNNNN""4(((((rx   c                 ~    ||                                  v sJ || j        v r| j        |         S t          |          S r  )r  r  r_   r  s     rv   r  z+InliningInstructionTranslator._load_closure  sL    t--//////4%%%%d++)t4444rx   c                 P    t          |j                  st          d           d S d S )NzOHigherOrderOperator: Mutating a variable not in the current scope (replace_all))rE   r  r)   )r   oldvars     rv   check_replace_is_safez3InliningInstructionTranslator.check_replace_is_safe  s>    "6#788 	a    	 	rx   c                     dS )NFrq   r   s    rv   r  z:InliningInstructionTranslator.should_compile_partial_graph  s    urx   c                 $    t          d           d S )Nzcant resume while inliningr  r  s     rv   r  z3InliningInstructionTranslator.create_call_resume_at  s    233333rx   c                 P    |                                  | _        d | _        t          r{   )r  r  r   r   r  s     rv   r  z*InliningInstructionTranslator.RETURN_VALUE  s     #xxzz#' rx   c                 R    |                      |          | _        d | _        t          r{   )r2  r  r   r   r  s     rv   r  z*InliningInstructionTranslator.RETURN_CONST  s&    #//55#' rx   c                    d| j         v r| j         d         }|                     |          }d|v rt          j        j        j        |         }nt          j        |          } t          | |          |          }t          ||          }n_| j
                            d| j                   }t          |          }| j         } t          | |          |          }t          ||          }|||fS )Nr   rN  ___unnamed_scope)r5  r>  r$  rS  rT  rU  r?  r@  rI   r4   r  r   r6   r5   )	r   r  rA  rB  rC  fglobals_vtglobal_sourceglobals_nameglobals_sources	            rv   get_globals_source_and_valuez:InliningInstructionTranslator.get_globals_source_and_value  s    ''.4K ..{;;M+--!&!?!YZe!f!*!8!E!E>/$>>~NNK&}d;;MM;;;"DN L *,77N!^N?/$??OOK).$??M{M99rx   c                    | j         j        | j        u r#t                                          |           d S |j        }|                     |          \  }}}| j         j                            ||          r5| 	                    | j         j        
                    ||                     d S 	 | j        |         }n%# t          $ r |                     |          cY S w xY w| 	                     t          | |          |                     d S r{   )r  rV  r5  r  r<  r   r7  r  has_pending_mutation_of_attrr   	load_attrr  r:  rI   )r   r   r  r   r3  r4  r  r  s          rv   r<  z*InliningInstructionTranslator._load_global  s   ;#t~55GG  &&&&&;D,0,M,Md,S,S)A{M{'DD[RVWW G		$+2<<[$OOPPPPP3 N40EE 3 3 3,,T222223 		>/$>>uEEFFFFFs   .B< <CCc                 f   | j         | j        j         u r#t                                          |           d S |                                 }t          |t                    rt          d           |j        }| 	                    |          \  }}}| j
        j                            |||           d S rH  )r5  r  r  rL  r  r   ri   r)   r   r7  r  r  r   )r   r   r  r  rC  r3  r   r  s          rv   rL  z*InliningInstructionTranslator.STORE_GLOBAL  s    >T[222GG  &&&&&HHJJE%!899 B@AAA;D-1-N-Nt-T-T*NKK$//T5IIIIIrx   )%r   r   r   r   r	   rg   r   classmethodr  r  r  rH   r   r  r   rq  rm  r   r   r   rR   r  r   r	  r  r!  r$  r  r,  r  r  r  r  r7  r<  rL  r  r  s   @rv   r  r    s@        **n----@ @ [@   \> @*%@*-1/-B@* @* @* \@*D$*)$* n$* c?23	$*
 sO34$* -22M,N$* C01$* *$* 
$* $* $* $* $* $*L % % X%I I I%E %E %EN) ) ) ) )5 5 5    4 4 4  
  
: : :(G G G G G"	J 	J 	J 	J 	J 	J 	J 	J 	Jrx   r  c                   V     e Zd ZU ee         ed<   d
 fdZdefdZd Z	d Z
d	 Z xZS )r  r  r   Nc                 H     t                      j        |i | g | _        d S r{   )r  r  r  )r   r   r  r  s      rv   r  z/InliningGeneratorInstructionTranslator.__init__  s-    $)&)))!rx   r   c                    | j                             |                                            t          | j                   t          k    rt          dt                      |                     t          j	        d                      d S )NzqToo many yield values in generator. Maybe you are inlining an infinite generator. If not, please report a bug at )
r  r   r  r   rW   r)   PT2_ISSUE_TRACKER_URLr   rL   r   r  s     rv   YIELD_VALUEz2InliningGeneratorInstructionTranslator.YIELD_VALUE  s    ##DHHJJ///t#$$'999J2GJ J   			")$//00000rx   c                     | j         d         }t          |t                    sU|                                  t	          t
                                        | |gi           }|                     |           d S d S r  )r  r   rY   r  rK   r  rr   r   )r   r   r  ress       rv   GET_YIELD_FROM_ITERz:InliningGeneratorInstructionTranslator.GET_YIELD_FROM_ITER(  sk    jn#344 	HHJJJ!$''55dSE2FFCIIcNNNNN	 	rx   c                    t          | j                  dk    sJ |                                 }| j        d         }t          |t                    r|j        t          d           	 |                    |           }|                     |           | 	                    |           t          | j
        t                    r| j
        dk    sJ | xj
        dz  c_
        d S # t          t          j        f$ ry}t          |t          j                  rt          j        |            |                                  |                     t	          j        |j                             Y d }~d S d }~ww xY w)Nr  rI  Unreachable sub-generator coder   r   )r   r  r  r   rL   r  r)   r  r   rA  r   r   r  r   r  r2  r   r   r   r  r  exs        rv   
YIELD_FROMz1InliningGeneratorInstructionTranslator.YIELD_FROM/  sp   4:!####hhjjjn3 011 	<ci6G :;;;	*##D))C IIcNNNT""" 43S99,q0000$$)$$$$# s<= 	9 	9 	9"c;<< 4-d333 HHJJJII&-bh77888888888	9s   (C   E/6A.E**E/c                    t          | j                  dk    sJ |                                 }| j        d         }t          |t                    s:t          |t
                    rt          |j        t          j        j	                  rt          |t                    r|j        	 |                    |           }|                     |           d S # t          t          j        f$ rp}t           j        dk     r|                                  |                     t          j        |j                             |                     |           Y d }~d S d }~ww xY wt)          d           d S t)          dt+          |                      d S )Nr  rI  rl  rF  zSEND )r   r  r  r   rY   rk   r  r  r  IteratorrL   r  r   r  r   r  r   r   r   r"  r)   rG   rG  s        rv   SENDz+InliningGeneratorInstructionTranslator.SENDP  sw   4:!####hhjjjnc/00 	2s566	239ko&>??	2 #/00 @SY5F#++D11C IIcNNNNN &s'DE 
$ 
$ 
$ ''11


II.5bh??@@@IIdOOOOOOOOO
$& >?????0'#,,0011111s   (C E*A%EEr  )r   r   r   r   rH   r   r  r"   rA  rD  rI  rL  r  r  s   @rv   r  r    s         /****" " " " " "1 1 1 1 1  * * *B 2  2  2  2  2  2  2rx   r  )r  collections.abcrk  ru  r   rw  r   r?  r   r  r  r   r   r  r   	threadingr\  rq  typingr  r   r   r   r   r   r   r	   r
   r   r   r   r   unittest.mockr   r$  torch._loggingtorch._guardsr   r   r   r   r   r   r   r   bytecode_analysisr   r   r   r   bytecode_transformationr   r   r   r   r    r!   r"   r#   r$   r%   codegenr&   r'   r(   r)   r*   funcname_cacher+   guardsr,   r-   output_graphr.   r/   replay_recordr0   r1   r  r2   r3   r8  r4   r5   r6   r7   r8   r9   r:   r;   r<   r  r=   r>   r?   r@   rA   rB   rC   rD   variables.baserE   rF   rG   rH   variables.builderrI   rJ   variables.builtinrK   variables.constantrL   variables.ctx_managerrM   rN   rO   variables.dictsrP   rQ   variables.functionsrR   rS   rT   rU   rV   variables.iterrW   variables.listsrX   rY   rZ   r[   r\   variables.miscr]   r^   r_   r`   ra   rb   variables.nn_modulerc   rd   variables.tensorre   rf   rg   r  rh   variables.user_definedri   rj   rk   	getLoggerr   r   r  getArtifactLoggerrV  r
  r  r  localrr  r  ry   r   r   containsrr   r|   r%  r   r@  	dataclassr   r   r   r   	lru_cacher   r   r  r   rI  r   r   r   rE  rY  r  r  r  r   r   r   _nb_opsr  r  r  rq   rx   rv   <module>rn     s
                     



                    				 



                                                   1 1 1 1 1 1 1 1 Q Q Q Q Q Q Q Q Q Q Q Q Q Q           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ' & & & & &       U U U U U U U U U U U U ( ( ( ( ( ( / / / / / / / / 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 A A A A A A A A                  ; : : : : : : :	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 X W W W W W W W W W W W = = = = = = = = . . . . . . 0 0 0 0 0 0         
 < ; ; ; ; ; ; ;              / . . . . .                             Q P P P P P P P W W W W W W W W W W  DCCCCCC          g!!.228^LL11(LII>33HnMM ^55h@PQQ io' '4R4L4R4T4T' ' ' T#s(^    "/("344B_X]++9
  D ! ! H 
 D  L L L L L L L L( = = = = = = = =@ R R R R R R R R 2 2 2 2 2 2 2 2 T4 4 4 * * * * * * * *8	 	 	 	 	I 	 	 	f-    C
%Covhn-C C C C CL6?F8T>: $    D E E EPJ J J J J J J J p; p; p; p; p;(p; p; p; p;f;f f f f f5 f f fR w 
   ZJ ZJ ZJ ZJ ZJ$= ZJ ZJ ZJz
X2 X2 X2 X2 X2-J X2 X2 X2 X2 X2rx   