
    IЦi                       % S SK r S SKr S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJrJrJrJrJrJrJrJrJrJr  S SKJr  S SK r S SK!r S SK"J#r#  S SK$J%r%J&r&  SSK'J(r(J)r)Jr*J+r+J,r,  SSK-J.r.J/r/J0r0J1r1  SS	K2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  SS
K<J<r<  SSK=J>r>  SSK)J?r?J@r@JArAJBrB  SSKCJDrD  SSKEJFrFJGrG  SSKHJIrIJJrJ  SSKKJLrLJMrM  SSKNJOrOJPrP  SSKQJRrRJSrSJTrTJUrUJVrVJWrWJXrX  SSK+JYrYJZrZ  SSK[J\r\J]r]J^r^J_r_J`r`JaraJbrb  SSKcJdrdJereJfrf  SSKgJhrhJiri  SSKjJkrk  SSKlJmrm  SSKnJoroJprpJqrq  SSKrJsrsJtrt  SSKuJvrvJwrwJxrxJyryJzrz  SSK{J|r|  SSK}J~r~  SSKJrJrJrJrJr  SSKJrJrJrJrJr  SS KJrJr  SS!KJrJrJr  SS"KJrJr  SS#KJrJrJr  \GR2                  " \5      r\ GR8                  GR;                  \S$5      r\ GR8                  GR;                  \S%5      r\ GR8                  GR;                  \S&5      r\ GR8                  GR;                  \S'5      r\GRD                  " 5       r\GRH                  " 5        V Vs0 s H  u  pU \k" U5      GRJ                  _M     snn r\\\4   \S('   \k" \GRR                  5      GRJ                  r\k" \GRV                  5      GRJ                  rS) \S*'   S+ \S,'   S-r\GR\                   " S. S/5      5       r\GR\                   " S0 S15      5       r\GR\                   " S2 S35      5       r\GR\                   " S4 S55      5       r " S6 S75      r\GRh                  " S5      S8 5       r\GR\                   " S9 S:5      5       r " S; S<\5      rS=\R*                  S>\4   4S? jrS@SASB\R*                  \/\4   SC\4SD jrSErSWSF jrSB\R*                  \/\4   SC\4SG jrSH r " SI SJ\5      r " SK SA\SL9r " SM SN\5      r\GR                  SO:  a:  \GR                   VVs/ s H  u  p#\" \SPU;   a  USQS OSRUSQS  35      PM!     snnr " SS ST\5      r " SU SV\5      rgs  snn f s  snnf )X    N)
AnyCallablecastDictListOptionalSetTupleTypeUnion)patch)TensorifyScalarRestartAnalysis)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LocalCellSourceLocalSourceSource)is_builtin_constantis_forbidden)countersget_fake_valueget_instruction_source_311graph_break_dup_warning_checkeristype
LazyStringproxy_args_kwargs)typestrValueMutationNewVariableTracker)FrameStateSizeEntrywrap_fx_proxy)BuiltinVariable)ConstantVariable)ContextWrappingVariableGenericContextWrappingVariableWithExitFunctionVariable)ConstDictVariableSetVariable)BaseUserFunctionVariableNestedUserFunctionVariableSkipFunctionVariableUserFunctionVariableUserMethodVariable)MAX_ITERATOR_LIMIT)LazyVariableTracker)BaseListVariableListIteratorVariableListVariableSliceVariableTupleVariable)CellVariableGetAttrVariableNullVariablePythonModuleVariableUnknownVariable)NNModuleVariableUnspecializedNNModuleVariable)supported_comparison_opsSymNodeVariableTensorVariable)SymbolicTorchFunctionStateTorchFunctionModeVariable)RemovableHandleVariableUserDefinedClassVariableUserDefinedObjectVariablegraph_breaks
trace_calltrace_sourcetrace_bytecodecompare_op_handlersc                 2    [        U / [        U5      Q0 5      $ N)handle_containsreversedtxargs_s      ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/symbolic_convert.py<lambda>rx      s    (4.21    inc           
      J    [        U [        U / [        U5      Q0 5      /0 5      $ rp   )
handle_notrq   rr   rs   s      rw   rx   rx      s&    J.x~.	34b5ry   znot inzihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlc                   f    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Sr\	\S'   Sr
\\   \S	'   S
 rSrg)SpeculationEntry   filenamelinenoinstruction_pointerinstFfailedNreasonc                     SU l         U R                  b  U R                  R                  nOSn[        R                  " US9e)zL
Start tracing of the current frame over again, and don't take this branch.
Tz!Unknown fail_and_restart_analysis)restart_reason)r   r   r   SpeculationRestartAnalysis)selfr   s     rw   fail_and_restart_analysis*SpeculationEntry.fail_and_restart_analysis   s:     ;;"![[//N@N,,NKKry   )r   )__name__
__module____qualname____firstlineno__str__annotations__intr!   r   boolr   r   r-   r   __static_attributes__ ry   rw   r~   r~      s8    MK
FD+/FH'(/	Lry   r~   c                   z    \ rS rSr% Sr\R                  " \S9r\	\
   \S'   Sr\\S'   S rS rS	\S
\S\
4S jrSrg)SpeculationLog   a  
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                     SU l         g Nr   r   r   s    rw   restartSpeculationLog.restart   s	    
ry   c                 F    U R                   R                  5         SU l        g r   )r   clearr   r   s    rw   r   SpeculationLog.clear   s    
ry   r   r   returnc                 4   [        U R                  5      U R                  :X  a%  U R                  R                  [	        XX45      5        U R                  U R                     nSnU R                  S:w  a]  U R                  U R                  S-
     nSUR
                   SUR                   SUR                  R                   SUR                   S3	nUR                  U:X  a   UR
                  U:X  a  UR                  U:X  d   S	U R                   S
[        U R                  5       SUR
                   SUR                   SUR                  R                   SUR                   SU SU SUR                   SU SU S35       eU =R                  S-  sl        U$ )zz
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           rw   nextSpeculationLog.next   s    t||

*LL 3FM TZZ(::?djj1n5J()<)<(=Qz?P?P>QJOO**+3z/M/M.NcS 
 %%)<<(*&	""&**ZDLL8I7J K^^Aell^2ejj.?.?-@HaHaGb c*AfXR}G4G3H I  			'* 	

a
ry   r   N)r   r   r   r   __doc__dataclassesfieldlistr   r   r~   r   r   r   r   r   r   r   r   r   ry   rw   r   r      sT     '2&7&7&MGT"#ME3N**%(*	*ry   r   c                   X    \ rS rSr% \R
                  " \S9r\\	\
4   \S'   S\	4S jrSrg)
LocalState   r   automatic_dynamicr   c                 b    SR                  S U R                  R                  5        5       5      $ )N
c              3   P   #    U  H  u  pU S UR                  5        3v   M     g7f): N)render).0kvs      rw   	<genexpr>$LocalState.render.<locals>.<genexpr>   s'      
-KTQqcAHHJ< -Ks   $&)joinr   itemsr   s    rw   r   LocalState.render   s/    yy 
-1-C-C-I-I-K
 
 	
ry   r   N)r   r   r   r   r   r   dictr   r   r   rF   r   r   r   r   ry   rw   r   r      s4    8C8I8I9tC!445 
 
ry   r   c                   D    \ rS rSr% \\S'   \\S'   Sr\\	\      \S'   Sr
g)DistributedState   
compile_pglocal_stateN
all_statesr   )r   r   r   r   r   r   r   r   r   r   r   r   ry   rw   r   r      s!    O-1Jj)*1ry   r   c                       \ rS rSr% \" 5       r\\   \S'   \	S\SS4S j5       r
\	S\S\4S j5       r\	S
S j5       rS	rg)TensorifyState   force_specializationsr   r   Nc                 :    U R                   R                  U5        g rp   )r   addclsr   s     rw   
specializeTensorifyState.specialize   s    !!%%e,ry   c                     XR                   ;   $ rp   )r   r   s     rw   should_specialize TensorifyState.should_specialize  s    1111ry   c                 8    U R                   R                  5         g rp   )r   r   r   s    rw   r   TensorifyState.clear  s    !!'')ry   r   r   N)r   r   r   r   setr   r	   r9   r   classmethodr   r   r   r   r   r   ry   rw   r   r      sk     *-3v;.-v -$ - - 2f 2 2 2 * *ry   r   c                  6    [         R                  " [        5      $ rp   )torchdynamo_loggingget_step_loggerlogr   ry   rw   _step_loggerr     s    ..s33ry   c                   n    \ rS rSr% \\S'   \\S'   Sr\\   \S'   Sr	\\
\\4      \S'   S rS rS	 rS
rg)BlockStackEntryi  r   targetNstack_indexwith_contextc                     U R                   S L$ rp   )r   r   s    rw   can_restoreBlockStackEntry.can_restore  s      ,,ry   c                 >   U R                   c   eU R                  (       ai  [        U R                  S5      (       aN  U R                  R                  (       a3  [	        U R                   [        U R                  R                  5      5      $ [	        U R                   5      $ )Ntarget_values)r   r   hasattrr   r2   tupler   s    rw   	resume_fnBlockStackEntry.resume_fn  st    +++))?;;!!//t//t7H7H7V7V1WXXt//00ry   c                     U R                   c   eU(       a  U R                   R                  5       (       d  U(       d  U R                   R                  U5      $ g rp   )r   exit_on_graph_breakexit)r   rt   is_graph_breaks      rw   r   BlockStackEntry.exit(  sJ      ,,,t00DDFF$$))"--  ry   r   )r   r   r   r   r!   r   r   r   r   r   r   rJ   rK   r   r   r   r   r   ry   rw   r   r     sR     !%K#% 	 (%'EEF -	1.ry   r   c                       \ rS rSrSrg)ReturnValueOpi0  r   N)r   r   r   r   r   r   ry   rw   r   r   0  s    ry   r   fn.c                    ^^ [        [        R                  " U 5      R                  5      m[	        U 5      m[
        R                  " U 5      SSS[        4UU4S jj5       nU$ )Nr   InstructionTranslatorr   c                 f   > U R                  TR                  X R                  T5      0 5      5        g rp   )pushcall_functionpopn)r   r   fn_varnargss     rw   implstack_op.<locals>.impl8  s%    		&&&tYYu-=rBCry   )r   inspect	signature
parametersrH   	functoolswrapsr!   )r   r  r  r  s     @@rw   stack_opr  4  s]    !!"%001ER F__RD* D+ D D Kry   r   InstructionTranslatorBasetruth_fnr  c                    U[         R                  Ld  U(       a  g[        U R                  [        5      (       d   eU R                  nU R
                  U   n[        R                  S:  a"  UR                  S:w  d  UR                  S:w  a  gOUR                  S:w  a  gUS-  nSnU R
                  U   nUR                  S:X  az  [        UR                  [        5      (       d  gUR                  nUS-  nU R
                  U   nUR                  S	;  a  gUS-  nUR                  S
:X  a  US-  nU R
                  U   nUR                  S:w  a  gU R                  [        R                  " U5      5        g)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  rI   create)r   r  r  current_instruction_pointerr   	error_msgs         rw   &_detect_and_normalize_assert_statementr%  ?  se   , 	&4d..4444"&":":89D
& ;;-'4;;:J+J ,K ;;001$ "I89D{{l"$++s++KK	 	$q(#  !<=;;BB 	$q(#;;)#'1,'  !<={{o%II%%i01ry   Fc                   ^^ Uc(  [         R                  R                  R                  5       n US   R                  US   R
                  4nSR                  [        R                  " U5      5      nSUS   < SUS   < S	U< S
U< 3m[         R                  R                  SS UU4S jS9  [        R                  [        R                  5      (       a<  [         (       d1  ["        R$                  " U5      (       a  [        R'                  T5        g [        R'                  SUS   US   U5        g ! [         a    U S   U S   4n Nf = f)Nco_filenameco_firstlinenor   zGraph break in user code at r   r   r   z	
Reason: z
User code traceback:
artifactc                      SSS.$ )Ndynamo_graph_break_reasonstring)nameencodingr   r   ry   rw   rx   !log_graph_break.<locals>.<lambda>  s    / 
ry   c                  N   > T ST (       a  [         R                  " 5        3$ S 3$ )Nr   r   )	traceback
format_exc)exc_infouser_stack_traces   rw   rx   r0    s'    ./rH)2F2F2H1]^Z\1]^ry   )metadata_fn
payload_fnzAGraph break (details suppressed) in user code at %s:%s
Reason: %s)torch_guardsr   extract_stackr   r   
IndexErrorr   r2  format_list_loggingtrace_structuredgraph_break_logisEnabledForr   DEBUGexplainr?   r   debug)code_optionsr   r4  
user_stack	frame_locuser_stack_formattedr5  s     `   @rw   log_graph_breakrH    s7   ]]11??A

^,,jn.C.CD	 779#8#8#DE aLaL 	
  
NN##
 _ $  	$$W]]33+//	::
 		
 	PaLaL		
W  
 ')*
	
s   D2 2E	E	c                 @   ^ ^^ SU4S jjmSSS[         4UUU 4S jjnU$ )Nc           	      ~  > [        U R                  SS9  U R                  5       (       d  [        S5        U R	                  5       (       a>  SU R                  5        3n[        R                  U5        [        R                  " U5      eU R                  U5        [        R                  S5        U R                  R                  U [        S[        U5       U 3U R                  5       /5      S9  U R!                  5         U R#                  U R$                  5      nT(       a  U R                  U5        U R#                  UR&                  5      n[(        R*                  S:  a%  U R                  R-                  [/        S5      /5        U R                  R-                  [/        UR0                  US	   S
9/U-   U-   5        g )NzData-dependent jumpr   "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     TO_BOOLr   )r   )rH  rD  should_compile_partial_graphr(   maybe_has_backedgeframe_summaryr   infor   	SkipFramer  rC  outputcompile_subgraphr-   rC   popcreate_call_resume_atnext_instructionr   r  r   add_output_instructionsr   r   )r   r   value	extra_msgmsgif_nextif_jumpr  s          rw   jump_graph_break&generic_jump.<locals>.jump_graph_break  sm   ))2GH0022>?""$$U%%'(*  HHSM--$$		%		23$$%/	{;d>P>P>R=S 	% 	
 	
,,T-B-BCIIe,,T[[9w&KK//1CI1N0OP++GAJ?@7JWT	
ry   r   r  r   c                   > U R                  5       n[        R                  (       Ga	  [        U TT5      (       Ga  U R                  5       nUR	                  5       (       a8  [        UR                  5       5      (       a  U R                  U5      $ T" XU5        [        U[        5      (       aI  U R                  R                  " S[        R                  /[        X#40 5      Q76   U R                  U5        g [        U[        5      (       a  UR                   n[        U[        R"                  5      (       d  US:g  n[        R$                  R&                  R(                  R+                  U5      nU(       d  [-        S5        U R                  U5        g U R                  R                  " S[        R.                  /[        U40 5      Q76 n[1        U U[3        UR4                  U 5      S9nU R                  R                  " S[        R                  /[        Xs40 5      Q76   U R                  U5        g UR	                  5       (       aF  T" UR                  5       5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[        5      (       a  U R9                  5       (       a
  T" XU5        g [        U[:        5      (       a]  U R                  R=                  UR>                  5      nT" U5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[@        5      (       aD  URB                  nT" U5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[D        5      (       GaP   URG                  U S5      n	[        U	[N        5      (       a  U	RQ                  U / 0 5      n[        U[R        5      (       ag  [        URB                  [
        [T        45      (       aB  T" URB                  5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[        5      (       a@  URW                  5       (       a*  T(       a  U R7                  U5        U R                  U5        g g [-        S5        g T" S5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[        5      (       df  URY                  U 5      (       aP  T" [[        UR]                  U 5      5      5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[        5      (       aT   URW                  U R                  5      n
T" U
5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [        U[`        Rb                  5      (       a8  T" S5      (       a*  T(       a  U R7                  U5        U R                  U5        g g SSK2J3n  URd                  b]  U" URd                  5      (       aF  T" URi                  5       5      (       a*  T(       a  U R7                  U5        U R                  U5        g g [H        R^                  " [H        Rj                  Rl                  SSS9e! [H        RJ                   aa    [H        RL                  " U 5         URG                  U S5      n	 GNV! [H        RJ                   a    [H        RL                  " U 5        S n	  GNf = ff = f! [H        R^                   a+  nU R9                  5       (       a  T" XUS	U 3S
9s S nA$ e S nAff = f)Nr  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-constantTr   )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)7rX  r    rewrite_assert_with_torch_assertr%  is_python_constantr   as_python_constantjumpr  rd   rV  create_proxyr8  _assert_asyncrB   rc   sym_numSymBoolfxexperimentalsymbolic_shapesexpect_truer(   scalar_tensorrG   r=   noder  rQ  r`   get_submodule
module_keyra   r\  ri   var_getattrr   ObservedAttributeErrorhandle_observed_exceptionrS   r  rI   r   evaluate_exprhas_unpack_var_sequencer   unpack_var_sequence	UserErrorr   BackwardHookVariablesourcerg  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erg  ra  r  r  s                rw   innergeneric_jump.<locals>.inner  s   !%3336tXtLL)-I''))0023399T?*$T7 %00((#'' ''92>
 		$%11 !==!(EMM::'1}H..>>JJ8T!e 		$%)[[%=%=!4!4&7H%SU7V&"  -&,-C-H-H$O  KK$$## #$4#@"E
 IIdO##%%00233IIe$		$ 4
 u~//D4U4U4W4WT//00++++E,<,<=C}}IIe$		$  <==++C}}IIe$		$  899	%%dJ7 !/00r26f&677JLL4+= =  -- IIe,		$ .  88++-- IIe,		$ .
 "Z
 D>>		%(IIdO " E>22u7T7T8
 8
 E55d;<==IIe$		$ > //#11$++>
 $$IIe$		$ % y==>>~~IIe$		$ 
 3||',>u||,L,LE00233		%(IIdO 4 mm%%::g-	 G -- --d3))$	:A11 11$7AX == 4466+D2aSRRsN   "[
 ] 
*\?5\

,\;6\?:\;;\?^]<5^;]<<^)r   )r!   )r  r  r  ra  s   `` @rw   generic_jumpr    s.    "
H^/ ^{ ^ ^@ Lry   c                    ^  U 4S jnU$ )Nc                    >^ ^ [         R                  " T 5      SSS[        4UU 4S jj5       nSSS[        S[        4U4S jjmU$ )Nr   r  r   c                 *  > U R                  5       nUR                  (       a"  UR                  c   eT" XUR                  5      $  T" X5      $ ! [         Ga(  nU R                  S:  a  UR                  5         [        S5        [        U[        R                  5      (       a  e U R                  5       (       d  e [        U R                  SSU 3UR                  S9  U R                  5       (       a?  SU R                  5        3n[         R#                  U5        [        R$                  " U5      UeUR                  5         UR'                  S5        [)        UR*                  UR                  5      Ul         S nAOS nAff = fUR-                  5         g )Nr   z0Graph break under GenericContextWrappingVariableTzUnsupported: )r4  r   rE  rM  graph_break)	speculater   r   r)   generic_context_manager_depthremove_from_statsr(   r  r   UncapturedHigherOrderOpErrorrQ  rH  rD  
real_stackrR  rS  r   rT  rU  add_to_statsr-   r^  r   )r   r   speculationexcpr^  handle_graph_breakinner_fns        rw   wrapper>break_graph_if_unsupported.<locals>.decorator.<locals>.wrapper  s_   ..*K!!"))555)$k6H6HII S++ S559 **,!"TUdC$D$DEE88::%%!*4&1#	 **,,]--/02  HHSM--,$6&&(!!-0%7$//%R""=S> 113s   A FDE<<Fr   c                 R  > U R                   R                  XS9  [        U 5      n/ nU R                   H  n[	        UR
                  [        5      (       a;  UR                  UR                  5       R                  UR                  U5      5        M]  UR
                  c   e[	        UR
                  [        5      (       d   eUR
                  R                  U5        UR                  UR                  5       R                  UR                  U5      5        M     U R                   R                  UR                  5       5        A[         R"                  S:  a  UR$                  S:X  a  U R&                  b  U R&                  R)                  5       OSn[+        U5      S:  a:  [         R"                  S:  d   eU R                   R                  [-        SUS9/5        U R                   R                  [/        UR0                  S	5      5        OHUR2                  b   e[4        R4                  " U5      nS Ul        U R                   R                  U/5        U R                   R                  U5        [         R"                  S:  a  [         R"                  S
:  av  UR$                  S:X  af  [8        R:                  " [8        R<                  S   UR0                  5      [8        R:                  " [8        R<                  S   UR0                  5      -   nO+[8        R:                  " UR>                  UR0                  5      nU RA                  T
U-
  5        [C        T
5       H  n	U RE                  [G        5       5        M     U R                   R                  U RI                  U RJ                  5      5        g )NrK  r     r  r   r   rN  KW_NAMESr!  Fr     r  )&rV  rW  r%   block_stackr  r   rf   extend_outputr   try_except_torch_function_moderD  rJ   reconstruct_typetry_finallyr[  get_instructionsr  r   r   kw_namesrl  r   r   r   argr   copyexn_tab_entrydisstack_effectopmapopcoder  ranger  r_   rY  rZ  )r   r   r   cgcleanupbr  	inst_copyr  rv   r  s             rw   r  Ibreak_graph_if_unsupported.<locals>.decorator.<locals>.handle_graph_break  s   
 KK(((=4B)+G%% ann.GHH$$DDOOW
 ~~111!!..3JLLLL//3  !:!:2??G!TU & KK//0C0C0EF7*t{{f/D }}0 MM446 
 x=1$++g555KK77+JxHI 33(59
 {{*** IIdO	*.	'33YK@KK//8   G+$$w.KK6)  #//IIi($(( $$SYYv%6A B  #//TXXFIId\)*4[		/+, !KK//**4+@+@Ary   )r  r  r!   r-   )r  r  r  r  s   ` @rw   	decorator-break_graph_if_unsupported.<locals>.decorator  sY    		"&	45 &	4[ &	4 
#&	4PC	-C	C	 'C	J ry   r   )r  r  s   ` rw   break_graph_if_unsupportedr    s    ob ry   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )BytecodeDistpatchTableMetai  zTInstalls a `cls.dispatch_table` on every subclass to speed up calls to self.OPCODE()c                 B  > [         T	U ]  XU5        S n[        R                  R	                  5        VVs0 s H&  u  pVU[        X[        R                  " XE5      5      _M(     nnn[        S5       Vs/ s H  oR                  U5      PM     snU l
        g s  snnf s  snf )Nc                      [        SU  35        g )Nz	missing: r(   )r   ru   s     rw   _missing5BytecodeDistpatchTableMeta.__init__.<locals>._missing  s    IfX./ry      )super__init__r  r  r   getattrr  partialr  getdispatch_table)
r   r.  basesdctr  r   opr  i	__class__s
            rw   r  #BytecodeDistpatchTableMeta.__init__  s    c*	0
 "iioo/
/
 Y%6%6x%HII/ 	 
 >C4[I[003[I	
 Js   -B3Br   r   )r   r   r   r   r   r  r   __classcell__r  s   @rw   r  r    s    ^
J 
Jry   r  c            !         ^  \ rS rSr% \\S'   \\\4   \S'   \\\4   \S'   \	\S'   \
\   \S'   \\   \S'   \\S'   \
\   \S	'   \\S
'   \\   \S'   \\S'   \
\   \S'   \\S'   \\S'   \\   \S'   \
\   \S'   \
\   \S'   \\   \S'   \\\/\4      \S'   S rS rS rS rS rS rS\S\
\   S\\\4   4S jrS rSS! jrS" rS# rS$ r \!RD                  S%:  a  S& r#OS' r#\$S( 5       r%S) r&S* r'S+ r(S,\\   4S- jr)S.\
\   4S/ jr*S0\4S1 jr+S2\S0\
\   4S3 jr,S4 r-S5 r.S6 r/S7 r0S8 r1\-r2S9 r3S: r4S; r5\6Rn                  S< 5       r8S= r9S> r:S? r;S@ r<SA r=SB r>SC r?SD r@SE rASF rB\BrC\BrD\E" \FR                  SG5      rH\E" \FR                  SG5      rJ\E" \FR                  SH5      rK\E" \FR                  SH5      rLSI rMSJ rNSK rOSL rPSM rQSN rRSO rSSP rTSQ rUSR rVSS rWST rXSU rYSV rZSW r[SX r\SY r]SZ r^S[ r_S\ r`S] raS^ rbS_ rc\d" S`Sa9Sb 5       re\d" S`Sa9Sc 5       rf\d" S`Sa9Sd 5       rgSe rhSf riSg rjSh rkSi rlSj rmSk rnSl roSm rpSn rqS0\4So jrr\d" SpSa9Sq 5       rsSr rtSs ruSt rvSu rwSv rx\y4Sw jrzSx r{\{r|Sy r}Sz r~\~rS{ rS| rS} rS~ rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\rS rS rS rS rS rS r\" \FGR@                  5      r\" \FGRD                  5      r\" \FR                  5      r\" \FGRJ                  5      r\" \FGRN                  5      r\" \FGRR                  5      r\" \FGRV                  5      r\" \FGRZ                  5      r\" \FGR^                  5      r\" \FGRb                  5      r\" \FGRb                  5      r\" \FGRh                  5      r\" \FGRl                  5      r\d" S`Sa9" \" \FGRp                  5      5      r\" \FGRt                  5      r\" \FGRx                  5      r\" \FGR|                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      r\" \FGR                  5      rS r\!RD                  S%:  a  S rS rS rS rSS jr\d" S`Sa9S 5       rS rS r\Br\Br\E" \FR                  SG5      r\E" \FR                  SG5      r\E" \FR                  SG5      r\E" \FR                  SG5      rS rS rS rS rS rS rS rS rS rS rS rS rS r\d" S`Sa9S 5       rS rS rS rS rS Gr S GrSS jGrS GrS GrS Gr\$S 5       GrG\GR                  S\\/\4   4S j5       Gr	S0\4S jGr
 SS\S\
\   S\\\4   S\\\4   S\\\4   S\\\4   S\\\4   S\\\4   S\	SG\GR                  S\S\SG\S\G\   S\G\G\GR                         S0S 4 U 4S jjjGrSGrU =Gr$ )r  i  rV  symbolic_localssymbolic_globalssymbolic_torch_function_statestackr   current_instructionr  r   r  accept_prefix_instprefix_instsinline_depthinconsistent_side_effectscurrent_speculationr  exn_vt_stackexec_recorderstrict_checks_fnc                     SU l         g)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    rw   mark_inconsistent_side_effects8InstructionTranslatorBase.mark_inconsistent_side_effects&  s     *.&ry   c                    U R                   R                  nU R                  c   eU R                  U R                  S   H>  nUR                  S;   a    gUR                  [
        ;   d  M+  UR                  nX1:  d  M>    g   g)N)RETURN_VALUERETURN_CONSTFT)r  offsetr   r  r   r   r!  )r   
cur_offsetr   jump_offsets       rw   rR  ,InstructionTranslatorBase.maybe_has_backedge.  sy    ( --44
''333%%d&>&>&@AD{{>>{{l*"kk+ B ry   c                    [        U S5      (       dh  [        U R                  S   =(       d    / 5      U l        [	        U [
        5      (       a-  U =R                  U R                  R                  5       -  sl        U R                  $ )N	_cellvarsco_cellvars)r   r   rD  r  r  InliningInstructionTranslatorparentcellvarsr   s    rw   r  "InstructionTranslatorBase.cellvarsM  `    t[))"4#4#4]#C#IrJDN $ =>>$++"6"6"88~~ry   c                    [        U S5      (       dh  [        U R                  S   =(       d    / 5      U l        [	        U [
        5      (       a-  U =R                  U R                  R                  5       -  sl        U R                  $ )N	_freevarsco_freevars)r   r   rD  r  r  r  r  freevarsr   s    rw   r  "InstructionTranslatorBase.freevarsV  r  ry   c                     [        U S5      (       d&  U R                  5       U R                  5       -   U l        U R                  $ )N_cell_and_freevars)r   r  r  r  r   s    rw   cell_and_freevars+InstructionTranslatorBase.cell_and_freevars_  s5    t122&*mmo&GD#&&&ry   c                    [        U R                  U R                  5      nU R                  R	                  5        VVs0 s H  u  p#X!;   d  M  X#_M     snnU l        U R
                  R                  R                  U 5        g s  snnf rp   )r   r  r  r  r   rV  side_effectsprune_dead_object_new)r   readsr   r   s       rw   prune_dead_locals+InstructionTranslatorBase.prune_dead_localsd  so    !$"3"3T5M5MN!11779 
9TQQZDAD9 
 	  66t<	 
s   BBr   ru   kwargsc                 (   [        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[	        S [
        R                  " X#R                  5       5       5       5      (       d   eS n[        US5      (       a  UR                  n[        US5      (       a  UR                  nU(       a.  [        U5      (       a  [        U5      (       a  [        SU 35      eU R                  UR                  XU5      5        g )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7frp   )r  rE   )r   r  s     rw   r   :InstructionTranslatorBase.call_function.<locals>.<genexpr>v  s!      
; q/**;s   r\  r   z$Attempt to trace forbidden callable )r  rE   r   r   all	itertoolschainvaluesr   r\  r   callabler;   r  r  r  )r   r   ru   r  r  s        rw   r  'InstructionTranslatorBase.call_functionm  s     "o....$%%%%&$'''' 
__T==?;
 
 
 	
 
 2wxxH2tuuH**|H/E/E #Gz!RSS		"""4v67ry   c                 .    [         R                  XX#5      $ )z6
A call to some user defined function by inlining it.
)r  inline_call)r   r   ru   r  s       rw   inline_user_function_return5InstructionTranslatorBase.inline_user_function_return  s     -884PPry   Nc                 &   Uc  U R                   nU R                  S:  a  SU R                   S3OSn[        U R                  R                  U5      nUc  SOSU S3nU R                  R                   SU SU R                  R
                   U U 3$ )Nr   z (inline depth: )r   r   r   z in )r   r  r*   f_coder(  co_name)r   r   inline_depth_strfuncnamefuncname_strs        rw   get_line_of_code_header1InstructionTranslatorBase.get_line_of_code_header  s    >[[F7;7H7H17Lt0013RT 	   7 7@%-rRz3C++))*!F848K8K7L\N[kZlmmry   c                     SU R                  5        S3n[        R                  " U R                  R                  U R
                  5      R                  5       nUSU 3-  nU$ )NzTRACE starts_line r   z    )r  	linecachegetliner  r(  r   rstrip)r   log_strlines      rw   get_log_starts_line_log_str5InstructionTranslatorBase.get_log_starts_line_log_str  sX    &t'C'C'E&FbI  !8!8$++FMMOT$= ry   c                    U R                   U:X  a  g Xl         [        R                  " U R                  R                  XR                  R
                  5        SSKJn  U" U R                  R                  5        [        R                  [        R                  5      (       a*  [        R                  S[        U R                  5      5        g g )Nr   )	dump_file%s)r   r   set_current_locr  r(  r  torch._logging.structuredr$  trace_source_logr@  r   rA  rC  rA   r!  )r   r   r$  s      rw   starts_line%InstructionTranslatorBase.starts_line  s    ;;& &&KK##V[[-@-@	
 	8$++))*((77""4D4T4T)UV 8ry   c                 N   U R                   nUc  gU R                  U   =U l        nUS-   U l         UR                  (       a  U R                  UR                  5        U R                  (       dk  U R                  5       (       aV  U R                  5       (       aA  U R                  5       U l        U R                  R                  (       a  U R                  U5      $ [        R                  [        R                  5      (       a6  [        R                  SUR                   UR"                  U R                  5        U R%                  U5         U R&                  UR(                     " X5        U R*                  R,                  (       + $ ! [.         a    e [0        R2                   a  nU R5                  U5         SnAgSnAf[6         a     g[8         a:    U R                  c  [:        R                  S5        e [:        R                  SSS9   Of = fU R                  R=                  5         g)	z<Process exactly one instruction, return False we should exitNFr   zTRACE %s %s %sTzempty checkpointzstep triggered compiler4  )r   r  r  r)  r  rQ  is_non_empty_graphr  r  r   step_graph_breaktrace_bytecode_logr@  r   rA  rC  r   r!  update_block_stackr  r  rV  should_exitr   r   ObservedExceptionexception_handlerr   r)   r   r   )r   ipr   r  s       rw   stepInstructionTranslatorBase.step  s   %%:*.*;*;B*?? 4#%6 T--. 

1133''))'+~~'7D$''..,,T22**7==99$$ $++t{{DJJ 	%	?,T8{{....- 	$$ 	""1% 	 	?''/		,-II.I>		? 	  ::<s%   	9F H	!F77H	A H	H	r  c                    UR                   nU(       a  [        U R                  5      S:  ai  UR                  U R                  S   R                  LaB  UR                  U R                  S   R                  L a  U R                  R	                  5         g g g g U R                  (       aG  UR
                  S;  a6  [        U R                  5      S:X  d   eU R                  R	                  5         g g g )N   r'  )NOPJUMP_BACKWARDr   )r  r   r  r   rX  r   )r   r   r   s      rw   r0  ,InstructionTranslatorBase.update_block_stack  s     &&E (()Q.D,<,<R,@,G,GG(8(8(<(C(CC $$((* D H /  ##;S(S t//0A555$$((* )T#ry   c                     g rp   r   r   r   s     rw   r0  r<    s    ry   c                 4    U R                   U R                     $ rp   )r  r   r   s    rw   rZ  *InstructionTranslatorBase.next_instruction  s      !9!9::ry   c           	      (   U R                   R                  (       a   eU R                  c   eU R                   R                  U S[	        SU R                  5       /5      S9  U R                   R                  [        U5      /U R                  -   5        g )NTstep_unsupported)partial_convertr   )	rV  output_instructionsr  rW  r-   rS  r[  r   r  )r   continue_insts     rw   r.  *InstructionTranslatorBase.step_graph_break  s    ;;2222''333$$ %&84;M;M;O:PQ 	% 	

 	++!-01D4E4EE	
ry   c                 .    [         R                  " S 5      $ rp   )r   current_framer   s    rw   run_ctx_mgr%InstructionTranslatorBase.run_ctx_mgr  s     ++D11ry   c                    U R                  5           U R                  R                  U 5        U R                  5       (       a   U R                  5       (       a  M  U R                  R                  5         [        U [        5      (       a  U R                  R                  5         S S S 5        g ! [         a    e [
         a    e [         a6  nU R                  (       a  U R                  R                  5       Ul	        e S nAff = f! U R                  R                  5         [        U [        5      (       a  U R                  R                  5         f f = f! , (       d  f       g = frp   )rI  rV  push_txr5  r   r'   	Exceptionr  
get_recordexec_recordpop_txr  r   r  )r   r  s     rw   runInstructionTranslatorBase.run  s   *##D)iikk iikk ""$ d$9::KK'')+  
 2 (  %%$($6$6$A$A$CAM
 ""$ d$9::KK'') ;)  s=   EAB-A	E-D1C<<DDAEE
E!valc                     Ub(  [        U[        5      (       d   S[        U5       35       eU R                  R	                  U5        g )Nz"push expects VariableTracker, got )r  rE   rC   r  r   )r   rS  s     rw   r  InstructionTranslatorBase.push0  sI    {j
 
 	?/~>	? 
 	

#ry   valsc                 8    U H  nU R                  U5        M     g rp   r  )r   rV  rS  s      rw   	push_many#InstructionTranslatorBase.push_many6  s    CIIcN ry   r   c                 6    U R                   R                  5       $ rp   )r  rX  r   s    rw   rX  InstructionTranslatorBase.pop:  s    zz~~ry   nc                 t    / [        [        U5       Vs/ s H  o R                  5       PM     sn5      Q$ s  snf rp   )rr   r  rX  )r   r]  rv   s      rw   r  InstructionTranslatorBase.popn=  s,    :uQx8x!88:x89::8s   5
c                 j   UR                   nU R                  (       a7  X R                  ;   a(  U R                  R                  X R                  U   5         U R	                  U R
                  U   R                  5       5        UR                  S5      (       a  U R
                  R                  U5        g g ! [         as    UR                  S5      (       aO   UR                  SS5      nU R	                  U R
                  U   5         N! [         a    [        S5          Nf = f[        S5         Nf = f)N.implicitzundefined LOAD_FAST (implicit)zundefined LOAD_FAST___stack)r!  r  f_localsadd_local_varr  r  unwrapKeyError
startswithreplacer(   rX  )r   r   r.  new_names       rw   	LOAD_FAST#InstructionTranslatorBase.LOAD_FAST@  s    {{$--"7,,T==3FG	5IId**40779: ??:&&  $$T* '  		5s##D#||C<HIId228<= D!"BCD 34		5s0   ,B5 5 D20DD!D2 D!!D21D2c                    UR                   U R                  5       ;   d   eU R                  UR                      nU R                  R                  R                  U5      nU R                  U5        U R                  (       aY  UR                   U R                  ;   a>  U R                  R                  UR                   U R                  UR                      5        g g g rp   )
r!  r  r  rV  r  	load_cellr  r  rd  re  )r   r   cellcontents_vars       rw   
LOAD_DEREF$InstructionTranslatorBase.LOAD_DEREFV  s    {{d446666##DKK0{{//99$?		,$++">,,T[[$--:TU #?ry   c                 z    UR                   nU R                  5       nUR                  U5        X0R                  U'   g rp   )r!  rX  set_name_hintr  )r   r   r.  	loaded_vts       rw   
STORE_FAST$InstructionTranslatorBase.STORE_FAST_  s2    {{HHJ	%%.T"ry   c                 2    U R                   UR                  	 g rp   )r  r!  r>  s     rw   DELETE_FAST%InstructionTranslatorBase.DELETE_FASTe  s      -ry   c                 `   UR                   U R                  5       ;   d   eU R                  UR                      nU R                  5       nU R                  R
                  R                  X#5        [        U[        5      (       d   eUR                  b  UR                  UR                  5        g g rp   )r!  r  r  rX  rV  r  
store_cellr  r[   
local_namert  )r   r   ro  rS  s       rw   STORE_DEREF%InstructionTranslatorBase.STORE_DEREFh  s    {{d446666##DKK0hhj  ++D6$----??&doo. 'ry   c                     UR                   nUc  [        R                  " UR                  S9$ U R                  U   nU(       d-  [        R                  " UR                  S9=U R                  U'   nU$ )Nr\  )r  rI   r"  r!  _constants_cache)r   r   r  rS  s       rw   _load_const%InstructionTranslatorBase._load_constt  sa    HH9#**==##A&-=-D-D4;;-WWD!!!$s
ry   c                 D    U R                  U R                  U5      5        g rp   )r  r  r>  s     rw   r  $InstructionTranslatorBase.LOAD_CONST}  s    		$""4()ry   c           	         UR                   nU R                  (       ao  X R                  ;   a)  U R                  R                  X R                  U   5        O7X R                  ;   d   eU R                  U   U R                  R
                  U'   X R                  ;   a[  U R                  R                  U R                  U      nU R                  U R                  R                  R                  X25      5        g  U R                  U   nU R                  [        R                  " X[        U5      5      5        g ! [         a    U R                  U5      s $ f = frp   )r!  r  	f_globalsadd_global_var
f_builtinsbuiltinsr  rV  r  r  load_globalrg  load_builtinrE   buildr5   )r   r   r.  variabler\  s        rw   _load_global&InstructionTranslatorBase._load_global  s   {{~~%""11$t8LM...48OOD4I""++D1((({{//0E0Ed0KLHIIdkk..::8JK	+NN4(E 			/''\$5GHI  	+$$T**	+s   8D7 7EEc                     SnU R                  U5      n[        R                  " U5      n[        R                  " XU5      $ )Nztorch.nn.modules.module)import_source	importlibimport_modulerE   r  )r   module_namemodule_sourcefglobals_values       rw   nn_modules_globals_vt/InstructionTranslatorBase.nn_modules_globals_vt  s:    /**;7"00=$$T=IIry   c                 6   [         R                  S:  a9  [         R                  S:  a%  UR                  S-  (       a  U R                  U5        U R	                  U5        [         R                  S:  a'  UR                  S-  (       a  U R                  U5        g g g )Nr  rN  r8  )r  r   r  	PUSH_NULLr  r>  s     rw   r  %InstructionTranslatorBase.LOAD_GLOBAL  sn    w&3+;+;g+E$((UV,NN4 $w&488a<NN4  ,8&ry   c                    U R                  5       nUR                  n[        U5      nX0R                  ;  a  [	        5       U R                  U'   U R
                  R                  R                  X@R                  U   5      n[        U[        5      (       a  [        S5        U R
                  R                  R                  XSU5        g Nz Storing handles in globals - NYI)rX  r!  r5   r  objectrV  r  track_global_existingr  rg   r(   store_global)r   r   r\  r.  r  r  s         rw   STORE_GLOBAL&InstructionTranslatorBase.STORE_GLOBAL  s    
{{d#,,,*0(D!!$';;++AA))$/
 e455<=  --heDry   c                    SU;   aZ  [         R                  R                  R                  U   nUR	                  SS5      R	                  SS5      R	                  SS5      nO+[
        R                  " U5      nSUR	                  SS5       3nU R                  R                  nX4;  d	  XC   UL d   eX$U'   U R                  R                  U5        [        U5      $ )z-Create an alias to a module for use in guardstorch_package>rv   <ra  _dot_	__import_)r8  packagepackage_importer_package_imported_modulesri  r  r  rV  global_scopeupdate_co_namesr5   )r   r  r\  aliasr  s        rw   r  'InstructionTranslatorBase.import_source  s    k)MM22LLE ##C-55c3?GGWU  ++K8E 3 3C ABCEKK,,	%)9U)BBB %##E*E""ry   c                     UR                  SUS-
  5      n[        U5      U:  a  [        S5      eUS   nU(       a  U SU 3$ U$ )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
ra  r   z2attempted relative import beyond top-level packager   )rsplitr   ImportError)r   r.  r  levelbitsbases         rw   resolve_name&InstructionTranslatorBase.resolve_name  sQ     ~~c519-t9uRSSAw#'$q1T1ry   c                    U R                   R                  S5      nU R                   R                  S5      nUb4  Ub/  XR                  :w  a   [        R	                  SUUR                  SS9  U$ Ub  UR                  $ [        R	                  SSS9  U R                   S   nSU R                   ;  a  UR                  S	5      S
   nU$ )z
Copied from the Cpython implementation of __import__
https://github.com/python/cpython/blob/5a094f0255eea1db58fb2cf14c200971e64ec36e/Lib/importlib/_bootstrap.py#L1090
__package____spec__z)__package__ != __spec__.parent (%r != %r)r  )
stacklevelzYcan't resolve package from __spec__ or __package__, falling back on __name__ and __path__r   __path__ra  r   )r  r  r  r   warning
rpartition)r   r  specs      rw   calc_package&InstructionTranslatorBase.calc_package  s    
 ..$$]3~~!!*-G{{$:?KK 	   N;;KK8  
 nnZ0G/!,,S1!4ry   c                 B   U R                  S5      u  p#UR                  5       nUR                  5       nUR                  n[        R                   SU SU SU 3nXPR
                  ;   a  U R
                  U   n[        U5      nO} [        UUUU R
                  S9nUS:w  a"  U R                  5       nU R                  XHU5      nU(       d&  UR                  S5      S   n	U R                  U	5      nOU R                  U5      nU R                  (       a  U R                  R                  UW5        [!        W["        R$                  [&        45      (       a  U R)                  [+        XgS95        g [        S[-        U5       35        g ! [         a    [        S5         GNf = f)	Nr8  rv   )fromlistr  globalsz#import a module that does not existr   ra  r  zIMPORT_NAME )r  rl  r!  r0   LOCAL_MOD_PREFIXr  r5   
__import__r  r(   r  r  	partitionr  r  add_local_modr@   types
ModuleTyper/   r  r^   rC   )
r   r   r  r  r  recorded_namer\  r  pkgtop_level_module_names
             rw   IMPORT_NAME%InstructionTranslatorBase.IMPORT_NAME  s   ))A,((*..0kk !112!E7!H:Q{mT 	 NN*NN=1E!-0FE"% NN	 z'')"//%H (3(=(=c(B1(E%++,AB++K8,,]EB%%**K899II*5@AL(89:1  ECDEs   F FFc                 H    U R                  U5        U R                  U5        g rp   )DUP_TOP
_load_attrr>  s     rw   IMPORT_FROM%InstructionTranslatorBase.IMPORT_FROM  s    Try   c                    XR                   ;  a  [        SU S35      eU R                   U   n[        U5      (       aQ  [        U R                  R
                  5      n[        X15      nU R                  [        R                  " XU5      5        g [        U5      (       d   eU R                  [        R                  " US95        g )Nzname 'z' is not definedr  )r  	NameErrorr  r5   rV  %name_of_builtins_dict_key_in_fglobalsr4   r  rE   r  r:   rI   r"  )r   r!  rS  builtins_source
var_sources        rw   load_builtin_from_argval2InstructionTranslatorBase.load_builtin_from_argval  s    (fVH,<=>>oof%C==*AAO '?JIIo++DzBC&s++++II&--C89ry   c                 :    U R                  UR                  5        g rp   )r  r!  r>  s     rw   r  &InstructionTranslatorBase.load_builtin.  s    %%dkk2ry   c                 @    U R                   UR                     U l        g rp   )indexofr   r   r>  s     rw   rm  InstructionTranslatorBase.jump1  s    #'<<#< ry   FTc                 `    U R                   R                  [        XR                  5      5        g rp   r  r   r   r   r>  s     rw   
SETUP_LOOP$InstructionTranslatorBase.SETUP_LOOP<      kk BCry   c                 `    U R                   R                  [        XR                  5      5        g rp   r  r>  s     rw   SETUP_EXCEPT&InstructionTranslatorBase.SETUP_EXCEPT@  r  ry   c                 8    U R                   R                  5         g rp   )r  rX  r>  s     rw   	POP_BLOCK#InstructionTranslatorBase.POP_BLOCKD  s    ry   c                 &    U R                  U5        g rp   setup_or_before_withr>  s     rw   
SETUP_WITH$InstructionTranslatorBase.SETUP_WITHG      !!$'ry   c                 `    U R                   R                  [        XR                  5      5        g rp   r  r>  s     rw   SETUP_FINALLY'InstructionTranslatorBase.SETUP_FINALLYJ  s    kk BCry   c                 &    U R                  S 5        g rp   rX  r>  s     rw   BEGIN_FINALLY'InstructionTranslatorBase.BEGIN_FINALLYM  s    		$ry   c                     U R                  S5      u  p#Ub   eU R                  U5        U R                  UR                  U [        R                  " S 5      /S-  0 5      5        g )Nr8  r  )r  r  r  rI   r"  )r   r   r   r   s       rw   WITH_CLEANUP_START,InstructionTranslatorBase.WITH_CLEANUP_STARTP  sV    IIaL	{{		#		$$$T,<,C,CD,I+JQ+NPRSTry   c                 H    U R                  S5        U R                  S 5        g )Nr8  )r  r  r>  s     rw   WITH_CLEANUP_FINISH-InstructionTranslatorBase.WITH_CLEANUP_FINISHV  s    		!		$ry   c                     U R                   U R                     nU R                  [        R                  " U5      5        U R                  U5        g)zd
pushes the address of the next instruction onto the stack and increments
bytecode counter by delta
N)r  rZ  r  rI   r"  rm  )r   r   addrs      rw   CALL_FINALLY&InstructionTranslatorBase.CALL_FINALLYZ  s;     ||D112		"))$/0		$ry   c                 z    U R                  5       n[        U[        5      (       a  UR                  5       U l        g g rp   )rX  r  rI   rl  r   r   r   toss      rw   END_FINALLY%InstructionTranslatorBase.END_FINALLYd  s1     hhjc+,,'*'='='?D$ry   c                     UR                   nU(       a  U R                  5       nU R                  5       nU(       a  U R                  W5        g g rp   )r!  rX  r  )r   r   preserve_tosr  rv   s        rw   POP_FINALLY%InstructionTranslatorBase.POP_FINALLYm  s7    {{((*CHHJIIcN ry   c                    U R                  5       R                  5       n UR                  U 5      nU R                  U5        U R                  U5        g ! [        [
        R                  4 a  n[        U[
        R                  5      (       a  [
        R                  " U 5        [        R                  S:  a6  U R                  U5        U R                  [        R                  " S 5      5        U R                  U5         S nAg S nAff = fNr  )rX  realizenext_variabler  StopIterationr   ObservedUserStopIterationr  r|  r  r   rI   r"  rm  )r   r   itrS  r  s        rw   FOR_ITER"InstructionTranslatorBase.FOR_ITERv  s    XXZ!	""4(CIIbMIIcNs<<= 	!S::;;--d3 7*
 		"		*11$78IIdOO	s   3A D.BDDc                    U R                  5       n[        U[        R                  5      (       a  UR	                  U / 0 5      nU R
                  R                  U5        [        U[        R                  5      (       aT  [        R                  R                  UR                  5      =n(       a  U" SU 35      e[        R                  " SU 35      e[        S[         35        g )Nzraised exception zraise )rX  r  r   rH   r  r  r   ExceptionVariabler   observed_exception_mapr  exc_typer2  r(   )r   r   rS  observed_exception_types       rw   _raise_exception_variable3InstructionTranslatorBase._raise_exception_variable  s    hhj c94455 ##D"b1C 	  % c96677*-*D*D*H*H*VV&V-0A#.GHH''*;C5(ABBsen%ry   c                    UR                   S:X  a  [        S5        g UR                   S:X  a  U R                  U5        g U R                  5       n[	        U[
        5      (       a  UR                  c  U R                  U5        [        S5        g )Nr   zre-raiser   zraise ... from ...)r  r(   r  rX  r  rI   r\  )r   r   from_vts      rw   r  'InstructionTranslatorBase.RAISE_VARARGS  si    88q=*%XX]**40 hhjG'#3449N..t4./ry   c                 d    [         R                  S:  a  U R                  U5        [        S5        g )Nr  RERAISE)r  r   r  r(   r>  s     rw   r"  !InstructionTranslatorBase.RERAISE  s&    w&**40i ry   c                    [         R                  S:  GaD  U R                  R                  nU(       a  [	        U R
                  5      UR                  :  a5  U R                  5         [	        U R
                  5      UR                  :  a  M5  UR                  (       a9  U R                  [        R                  " U R                  R                  5      5        [	        U R                  5      (       d   eU R                  U R                  S   5        U R                  U5        g U R
                  R                  5         [!        U 5      ["        L a  [%        S5      eUe[	        U R&                  5      (       Ga  [	        U R                  5      (       d   eU R                  S   nU R&                  R                  5       nUR(                  R*                  S:X  a  U R-                  S5        [	        U R&                  5      S:X  a9  U R
                  R                  5         [!        U 5      ["        L a  [%        S5      eUeU R&                  R                  5       nUR(                  R*                  S:X  a  M  UR(                  R*                  S:w  a  [/        SUR(                   35        [1        S	SS S5      nU R&                  R3                  [5        US 5      5        [	        U R                  5      S
:  at  U R                  S   nU R                  [        R6                  " 5       5        U R                  U5        U R                  [        R8                  " UR:                  5      5        OoU R                  [        R                  " S 5      5        U R                  [        R                  " S 5      5        U R                  [        R                  " S 5      5        U R                  [        R6                  " 5       5        U R                  U5        U R                  [        R8                  " UR:                  5      5        U R                  U5        g U R
                  R                  5         [!        U 5      ["        L a  [%        S5      eUe)Nr  r'  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    .Ar8  r9  )r  r   r  r  r   r  depthrX  lastir  r   rI   r  r  rm  r   typer   r)   r  r   r   r  r(   r!   r   r   r_   rH   r  )r   raised_exceptionr  exception_varblock_stack_entryexcept_handler_instold_exceptions          rw   r3  +InstructionTranslatorBase.exception_handler  so   w& 44BBM
 $**o(;(;;HHJ $**o(;(;; !&&II!2243K3K3R3RS
 4,,----		$++B/0 		-( 

  ":!66%&:;;&&4##$$ 4,,---- $ 1 1" 5$($4$4$8$8$:!',,337GG IIaL4++,1 

((*:)>>"-.B"CC..(,(8(8(<(<(>% (,,337GG %))00OC!**;*@*@)AC '2#7Gq&Q#  ''8KT(RS t(()Q.$($5$5b$9M IIi779:IIm,IIi778N8NOP IIi88>?IIi88>?IIi88>? 		)3356		-(		)33M4J4JKL 		+, 

  ":!66%&:;;&&ry   c                     U R                  5       n[        U R                  5      (       d   eU R                  U R                  S   5        U R                  U5        g Nr'  )rX  r   r  r  r   r   rS  s      rw   PUSH_EXC_INFO'InstructionTranslatorBase.PUSH_EXC_INFO  sF    hhj4$$%%%%		$##B'(		#ry   c                 X   [         R                  S:  ah  U R                  5       n[        U[        R
                  5      (       d   e[        U R                  5      (       d   eU R                  R                  5         g [        U R                  5      S:  d   eU R                  S   R                  R                  S:w  a  [        S5      eU R                  R                  5         U R                  S5        [        U R                  5      (       d   eU R                  R                  5         g )Nr  r   r'  r%  zYBug in Dynamo tracing of exception handling.Top of the block stack is not EXCEPT_HANDLER.r  )r  r   rX  r  r   r  r   r  r  r   r   r  r  r1  s      rw   
POP_EXCEPT$InstructionTranslatorBase.POP_EXCEPT  s    w&((*Cc9#>#>???? t(())))!!#t''(1,,,#((//3CC$D    "IIaL t(())))!!#ry   c                 h   [        U R                  5      S:  d   eU R                  5       n[        R                  S:  a  U R                  S   nOU R                  R                  5       n[        U[        [        45      (       d  [        SU 35        [        R                  S:  a-  [        U[        R                  5      (       d  [        SU 35        [        U[        5      (       a  UR                  nOU/nU H  n[        U[        5      (       d  [        SU 35        [        U[        R                  5      (       a'  [        UR                  UR                  5      (       a    g[        U[        R                  5      (       d  M  [        UR                  UR                  5      (       d  M    g   g)	Nr8  r  r'  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  rX  r  r   r  rH   rZ   r(   r   r  r   
issubclassr  r   )r   expected_exc_typesexc_instanceexpected_typesexpected_types        rw   check_if_exc_matches.InstructionTranslatorBase.check_if_exc_matches/  sx   4::!###!XXZw&  ::b>L
  ::>>+L ,.NOO=>P=QR w&lI,G,GHHYZfYgh (-88/55N #N ,Mm_==@P ,	(C(CDD%%}'7'7J J L)*C*CDD!1!1J J  , ry   c                 j    U R                  [        R                  " U R                  5       5      5        g rp   )r  r   rI   r=  r>  s     rw   CHECK_EXC_MATCH)InstructionTranslatorBase.CHECK_EXC_MATCHf  s"    		),,T-F-F-HIJry   c                 R    U R                  5       (       d  U R                  U5        g g rp   )r=  rm  r>  s     rw   JUMP_IF_NOT_EXC_MATCH/InstructionTranslatorBase.JUMP_IF_NOT_EXC_MATCHi  s!    ((**IIdO +ry   c                     UR                   S:X  a  U R                  U5        g U R                  [        UR                      " X R	                  S5      0 5      5        g )Nzexception matchr8  )r!  r@  r  rn   r  r>  s     rw   
COMPARE_OP$InstructionTranslatorBase.COMPARE_OPm  sB    ;;++  &II)$++6tYYq\2NOry   c                 b    U R                  [        [        5      U R                  5       /0 5        g rp   )r  rH   iterrX  r>  s     rw   GET_ITER"InstructionTranslatorBase.GET_ITERs  s!    ?40488:,Cry   r   rX  c                 ~    U R                  UR                  5      nU R                  5       nU R                  X20 5        g rp   r  r!  rX  r  )r   r   ru   r   s       rw   r  'InstructionTranslatorBase.CALL_FUNCTIONv  s/    yy%XXZ2R(ry   c                    UR                   S:X  a  [        0 5      nU R                  5       nO<UR                   S:X  a!  U R                  5       nU R                  5       nO[        S5        [        R
                  S:  a'  U R                  5       n[        U[        5      (       d   eU R                  5       n[        R
                  S:  a;  [        R
                  S:  a'  U R                  5       n[        U[        5      (       d   e[        U[        5      (       GaY  [        UR                  [        5      (       Ga9  WR                  5       nUR                  S:X  a(  [        W[        [        45      (       a  [        U/5      nOUR                  S:X  ai  [        W[        5      (       aT  [        UR                   5      S:X  a;  [        U[        5      (       a&  [        R"                  " S5      U;   a  [        S	5        OxUR                  S
:X  ah  [        W[        5      (       aS  [        UR                   5      S:X  a:  [        U[        5      (       a%  [        R"                  " S5      U;   a  [        S5        [        W[$        5      (       d0  UR'                  U 5      (       a  [        UR)                  U 5      5      n[        W[*        5      (       a  [,        R.                  " U [0        U5      n[        U[$        5      (       a  [        U[        5      (       d#  [        S[3        U5       S[3        U5       35        UR5                  5       nU R7                  XSR                   U5        g )Nr   r   CALL_FUNCTION_EXrN  r  viewrandom_fromz&random_ op is called with from keyworduniform_z'uniform_ op is called with from keywordznon-static call  )r!  rM   rX  r(   r  r   r  r]   r\   objrd   r  r.  rI   rZ   r   r   r"  rV   has_force_unpack_var_sequenceforce_unpack_var_sequenceri   rH   call_custom_dictr   rC   keys_as_python_constantr  )r   r   
kwargsvarsargsvarsnullr   s         rw   rP  *InstructionTranslatorBase.CALL_FUNCTION_EX|  s    ;;!*2.JxxzH[[AJxxzH,-w&88:DdL1111XXZw&3+;+;g+E88:DdL1111b/**z"&&./Q/Q#++-Jww& Z+^<& & )(49$x77'1,z+<==$++F3zA FG:%x77'1,z+<==$++F3zA GH&
 
44T::$X%G%G%MNH j";<<(99$jQJ($455Z)>
 >
 ,WX->,?qAT@UVW  779
2~~z:ry   c                    U R                  5       nU R                  UR                  5      nU R                  5       n[        U[        5      (       a  UR                  5       (       d   eUR                  5       nUS [        U5      *  U[        U5      * S  pS[        [        X%5      5      n[        U5      [        U5      :X  d   eU R                  XCU5        g rp   )rX  r  r!  r  rZ   rk  rl  r   r   zipr  )r   r   argnamesru   r   kwargs_listr  s          rw   CALL_FUNCTION_KW*InstructionTranslatorBase.CALL_FUNCTION_KW  s    88:yy%XXZ(M22x7R7R7T7TTT..0 !1CM>2D#h-9I4Jkc(016{c(m+++2V,ry   c                 D   U R                  [        R                  " USS95        UR                  S   nU R                  S   U   n[
        R                  S:  a$  U R                  [        R                  " XS95        g U R                  [        R                  " XS95        g )Nr8  r  r   co_namesr  )	r  r   ri  r!  rD  r  r   r  LOAD_METHODr   r   r  r!  s       rw   LOAD_METHOD_SUPER+InstructionTranslatorBase.LOAD_METHOD_SUPER  s}    ;..tA>?kk!n"":.s3g%OOK//DE[00EFry   c                     U R                  [        R                  " USS95        UR                  S   nU R                  S   U   nU R                  [        R                  " XS95        g )Nr8  r  r   rf  )r  r   ri  r!  rD  r  rh  s       rw   LOAD_ATTR_SUPER)InstructionTranslatorBase.LOAD_ATTR_SUPER  sV    ;..tA>?kk!n"":.s3++D@Ary   c                 f   U R                  U5        U R                  5       n[        R                  S:  a#  U R	                  U5        U R                  U5        g [        R                  S:  a#  U R                  U5        U R	                  U5        g U R	                  U5        U R	                  S 5        g )NrN  r  )r  rX  r  r   r  r  r   r   rV  s      rw   rg  %InstructionTranslatorBase.LOAD_METHOD  s{    hhjw&IIcNNN4 ( NN4 IIcNIIcNIIdOry   c                     U R                  UR                  5      nU R                  5       nUb   eU R                  5       nU R                  XB0 5        g rp   rM  )r   r   ru   dummyr   s        rw   CALL_METHOD%InstructionTranslatorBase.CALL_METHOD  sD    yy%
}}XXZ2R(ry   c                     U R                  5       n[        [        5      R                  X[        R
                  " UR                  5      /0 5      nU R                  U5        g rp   )rX  rH   r  r  rI   r"  r!  r  )r   r   rV  r  s       rw   r  $InstructionTranslatorBase._load_attr  sJ    hhj )77(//<=r
 			&ry   c                     [         R                  S:  a&  UR                  S-  (       a  U R                  U5        g U R	                  U5        g )Nr  r8  )r  r   r  rg  r  r>  s     rw   	LOAD_ATTR#InstructionTranslatorBase.LOAD_ATTR  s8    w&xx!|  &ry   c                    U R                  5       nUR                  (       a  U R                  U5      $ U R                  S5      u  p4[	        U[
        5      (       a;  [	        U[        5      (       d&  U R                  (       a   SUR                   S35       e [        [        5      R                  X[        R                  " UR                  5      U/0 5        g ! [         aU  nU R                  5       (       d  e [        R!                  SSS9  UR#                  5         UR%                  S5         S nAOS nAff = fUR'                  5         g )Nr8  zMutating module attribute z during export.zSTORE_ATTR triggered compileTr,  r  )r  r   store_attr_graph_breakr  r  r`   rI   exportr!  rH   setattrr  r"  r)   rQ  r   rC  r  r  r   )r   r   r  rS  rV  r  s         rw   
STORE_ATTR$InstructionTranslatorBase.STORE_ATTR
  s   nn&..t4499Q<c+,,ZEU5V5V KKI+DKK=HI
	*G$22,33DKK@#F  	*4466II4tID!NN=))	* 	--/s   A C 
D7"AD22D7c                    [        U R                  SS9  U R                  5       (       d  [        S5        U R                  R                  U [        SU R                  5       /5      S9  U R                  R                  [        R                  " U5      /5        U R                  S5        U R                  R                  U R                  U R                  5      5        g )NzSTORE_ATTR-caused graph breakrK  rL  
store_attrr8  )rH  rD  rQ  r(   rV  rW  r-   rS  r[  r  r  rY  rZ  r>  s     rw   r{  0InstructionTranslatorBase.store_attr_graph_break$  s    ))2QR0022>?$$+L4;M;M;O:PQ 	% 	
 	++TYYt_,=>		!++&&t'<'<=	
ry   c                     U R                  5       n[        [        5      R                  X[        R
                  " UR                  5      /0 5        g rp   )rX  rH   delattrr  rI   r"  r!  ro  s      rw   DELETE_ATTR%InstructionTranslatorBase.DELETE_ATTR1  s:    hhj ..(//<=r	
ry   c                 0    [        S[        U 5       35      e)Nz1create_call_resume_at not overridden by subclass r  r(  r   r  s     rw   rY  /InstructionTranslatorBase.create_call_resume_at7  s    ?T
|L
 	
ry   c                 0    [        S[        U 5       35      e)Nz8should_compile_partial_graph not overridden by subclass r  r   s    rw   rQ  6InstructionTranslatorBase.should_compile_partial_graph<  s    FtDzlS
 	
ry   r   c                 V    U R                  S5      u  p#nUR                  U SXB/0 5      ng )Nr  __setitem__r  call_method)r   r   rS  rV  keyr  s         rw   STORE_SUBSCR&InstructionTranslatorBase.STORE_SUBSCRA  s)    		!#}sj"Ery   c                 T    U R                  S5      u  p#UR                  U SU/0 5        g )Nr8  __delitem__r  )r   r   rV  r  s       rw   DELETE_SUBSCR'InstructionTranslatorBase.DELETE_SUBSCRF  s%    99Q<mcUB7ry   c                 r    S nU R                  UR                  5      nU R                  [        U5      5        g rp   )r  r!  r  rZ   )r   r   
name_tupler   s       rw   BUILD_TUPLE%InstructionTranslatorBase.BUILD_TUPLEJ  s*    
		$++&		-&'ry   c                 n    U R                  UR                  5      nU R                  [        U5      5        g rp   )r  r!  r  rY   r   r   r   s      rw   BUILD_SLICE%InstructionTranslatorBase.BUILD_SLICEO  s%    		$++&		-&'ry   c                 |    U R                  UR                  5      nU R                  [        U[	        5       S95        g Nmutation_type)r  r!  r  rX   rD   r  s      rw   
BUILD_LIST$InstructionTranslatorBase.BUILD_LISTS  s+    		$++&		,u4D4FGHry   c                     [         R                  (       a  [        S5        U R                  UR                  5      n[        U[        5       S9nU R                  U5        g )Nzmissing: BUILD_SETr  )r   +inject_BUILD_SET_unimplemented_TESTING_ONLYr(   r  r!  rN   rD   r  )r   r   r   new_sets       rw   	BUILD_SET#InstructionTranslatorBase.BUILD_SETW  sB    ==./		$++&e3C3EF		'ry   c                    U R                  UR                  5      n/ nU H$  n UR                  UR                  U 5      5        M&     U R                  U" U[        5       S95        g ! [         a    [        SU 35         Mb  f = f)NzBUILD_LIST_UNPACK r  )r  r!  extendrX  NotImplementedErrorr(   r  rD   )r   r   r   seqsr   seqs         rw   BUILD_LIST_UNPACK+InstructionTranslatorBase.BUILD_LIST_UNPACK^  sy    yy%C:S::4@A 
 			#e+;+=>? ' : 23%89:s    A''BBc                 ,    U R                  U[        S9  g )Nr   )r  rZ   r>  s     rw   BUILD_TUPLE_UNPACK,InstructionTranslatorBase.BUILD_TUPLE_UNPACKh  s    t7ry   c           	          U R                  UR                  S-  5      n[        [        US S S2   USS S2   5      5      nU R	                  [        U[        5       S95        g )Nr8  r   r  )r  r!  r   r`  r  rM   rD   )r   r   r   ds       rw   	BUILD_MAP#InstructionTranslatorBase.BUILD_MAPm  sS    		$++/*U3Q3Zqt!t-.		#A5E5GHIry   c                 `   U R                  UR                  5      nU Vs/ s H#  n[        [        5      R	                  X/0 5      PM%     nn0 nU H5  n[        U[        5      (       d   eUR                  UR                  5        M7     U R                  [        U[        5       S95        g s  snf r  )r  r!  rH   r   r  r  rM   updater   r  rD   )r   r   r   r  r  s        rw   BUILD_MAP_UNPACK*InstructionTranslatorBase.BUILD_MAP_UNPACKr  s    		$++&MRSU&44T3CUSAa!23333MM!''"  			.0	
 Ts   *B+c           
      r   U R                  5       nU R                  UR                  5      n[        U[        5      (       d   eUR                  5       (       d   eUR                  U 5      n[        U5      [        U5      :X  d   eU R                  [        [        [        X#5      5      [        5       S95        g r  )rX  r  r!  r  rZ   rk  rX  r   r  rM   r   r`  rD   )r   r   keysr  s       rw   BUILD_CONST_KEY_MAP-InstructionTranslatorBase.BUILD_CONST_KEY_MAP  s    xxz4;;'$....&&((((--d34yCK'''		S&'.0	
ry   c                     U R                  S5      u  p#UR                  S:  d   eU R                  UR                  *    R	                  5       n[        U[        5      (       d   eUR                  U SX#40 5        g )Nr8  r   r  )r  r!  r  r  r  r  rM   r  )r   r   r   r   rV  s        rw   MAP_ADD!InstructionTranslatorBase.MAP_ADD  sf    yy|{{Qjj$((#++-#01111maVR8ry   c                     U R                  5       nUR                  S:  d   eU R                  UR                  *    n[	        U[
        5      (       d   eUR                  5       (       d   eUR                  U SU/0 5      $ )Nr   r   rX  r!  r  r  r  rN   
is_mutabler  r   r   r   rV  s       rw   SET_ADD!InstructionTranslatorBase.SET_ADD  sn    HHJ{{Qjj$((##{++++~~tUQC44ry   c                    U R                  5       nUR                  S:  d   eU R                  UR                  *    n[	        U[
        5      (       d   eUR                  5       (       d   eUR                  U SU/0 5        g Nr   r  r  r  s       rw   
SET_UPDATE$InstructionTranslatorBase.SET_UPDATE  sk    HHJ{{Qjj$((##{++++~~hR0ry   c                 t   U R                  5       nUR                  S:  d   eU R                  UR                  *    R	                  5       n[        U[        5      (       d   eUR                  5       (       d   eU R                  R                  R                  U5        UR                  R                  U5        g r   )rX  r!  r  r  r  r  rX   r  rV  r  mutationr   r   r  s       rw   LIST_APPEND%InstructionTranslatorBase.LIST_APPEND  s    HHJ{{Qjj$((#++-#|,,,,~~  ))#.		ry   c                    UR                   n[        U R                  5      n[        R                  S:  a  U R                  5       nU R                  5       n[        R                  S:  aE  [        UR                  S5      (       d   e[        R                  " UR                  R                  S9nS nS nS nS n	[        R                  S:  ah  US-  (       a  U R                  5       nUS-  (       a  U R                  5       nUS-  (       a  U R                  5       n	US-  (       a  U R                  5       nU R                  [        WUU R                  UU	UU5      5        g )	Nr  co_qualnamer  rN        r8  r   )r  r   r  r  r   rX  r   r\  rI   r"  r  r  rP   r  )
r   r   flags	old_stackfn_namecodedefaultsclosureannotations
kwdefaultss
             rw   MAKE_FUNCTION'InstructionTranslatorBase.MAKE_FUNCTION  s   $	g%hhjGxxzw& 4::}5555&--DJJ4J4JKG
g%t|((*t|"hhjt|!XXZ
t|88:		&
	
ry   c                    U R                  5       n[        U[        5      (       a$  UR                  U [	        UR
                  5      S9nO[        U[        5      (       a  [        UR                  [        5      (       a`  [        UR                  R                  5       UR                  5      n[	        UR
                  5       Vs/ s H  n[        XU   5      PM     nnO6UR                  U 5      (       a  UR                  U 5      nO[        SU 35        [        W5      UR
                  :w  a  [        S5        [!        U5       H  nU R#                  U5        M     g s  snf )N)idxeszUNPACK_SEQUENCE zUNPACK_SEQUENCE length mismatch)rX  r  rd   r  r  r!  r\   rV  r  as_proxyr.  rG   rW  rX  r(   r   rr   r  )r   r   r  rS  proxyr  s         rw   UNPACK_SEQUENCE)InstructionTranslatorBase.UNPACK_SEQUENCE  s   hhjc>**))$eDKK6H)IC_--*SWWn2U2UCGG,,.9E:?:LM:LQ=Qx0:LCMC..t44//5C,SE23s8t{{";<#AIIaL  Ns   Ec                 H   SUR                   s=::  a  S::  d   e   eUR                   S-  nUR                   S-	  nU R                  5       nUR                  U 5      (       a  [        UR	                  U 5      5      n[        U5      X#-   :  d   eUS U nXR[        U5      U-
   nU[        U5      U-
  S  n[        U5       H  n	U R                  U	5        M     U R                  [        U5      5        [        U5       H  n	U R                  U	5        M     g [        SU 35        g )Nr   i     r  z
UNPACK_EX )
r!  rX  rW  r   rX  r   rr   r  rZ   r(   )
r   r   prefixsuffixr  rV  vals_prefix	vals_listvals_suffixitems
             rw   	UNPACK_EX#InstructionTranslatorBase.UNPACK_EX  s
   DKK)6)))))t#!hhj,,T2255d;<Dt9///w-Kc$i&&89Is4y6134K -		$ .IImI./ -		$ . Jse,-ry   c                     g rp   r   r>  s     rw   r:  InstructionTranslatorBase.NOP      ry   c                 $    U R                  5         g rp   rX  r>  s     rw   POP_TOP!InstructionTranslatorBase.POP_TOP      
ry   c                     U R                  5       nU R                  5       nU R                  U5        U R                  U5        g rp   rX  r  r   r   ar  s       rw   ROT_TWO!InstructionTranslatorBase.ROT_TWO  s.    HHJHHJ		!		!ry   c                     U R                  5       nU R                  5       nU R                  5       nU R                  U5        U R                  U5        U R                  U5        g rp   r  )r   r   r  r  cs        rw   	ROT_THREE#InstructionTranslatorBase.ROT_THREE
  sD    HHJHHJHHJ		!		!		!ry   c                    U R                  5       nU R                  5       nU R                  5       nU R                  5       nU R                  U5        U R                  U5        U R                  U5        U R                  U5        g rp   r  )r   r   r  r  r  r  s         rw   ROT_FOUR"InstructionTranslatorBase.ROT_FOUR  sZ    HHJHHJHHJHHJ		!		!		!		!ry   c                 h    U R                  5       nU R                  U5        U R                  U5        g rp   r  )r   r   r  s      rw   r  !InstructionTranslatorBase.DUP_TOP  s#    HHJ		!		!ry   c                     U R                  5       nU R                  5       nU R                  U5        U R                  U5        U R                  U5        U R                  U5        g rp   r  r  s       rw   DUP_TOP_TWO%InstructionTranslatorBase.DUP_TOP_TWO!  sD    HHJHHJ		!		!		!		!ry   c                     US:X  a   [        [        5      R                  X/0 5      $ US:X  a   [        [        5      R                  X/0 5      $ US:X  a   [        [        5      R                  X/0 5      $ U$ )Nr   r8  r  )rH   r   r  reprascii)r   r\  flags      rw   _convert_value(InstructionTranslatorBase._convert_value)  sj    19"3'55dGRHHQY"4(66tWbIIQY"5)77grJJry   c                    U R                  5       n[        U[        5      (       a;  SSKJnJn  UR                  " U" X15      UR                  S9nU R                  U5        g U R                  X2S-  5      n[        R                  " SUR                  5       -   S-   5      nU R                  [        [        R                  5      Xc/0 5        g )Nr   )LazySymNodeFormatStringrU   r  r  z{:})rX  r  rc   torch._dynamo.variables.lazyr  rU   r"  r  r  r  rI   rl  r  rH   r   format)r   fmt_specr  r\  r  rU   fmt_vars          rw   _format_value'InstructionTranslatorBase._format_value2  s    
e_--
 (..'8E IIe##E4<8"))$1L1L1N*NQT*TU?3::68H"Mry   c                     UR                   nUS-  S:X  a  U R                  5       nO[        R                  " S5      nU R	                  X25      $ )Nr  r   )r  rX  rI   r"  r  )r   r   r  r  s       rw   FORMAT_VALUE&InstructionTranslatorBase.FORMAT_VALUEF  sC    DLT!xxzH'..r2H!!(22ry   c                    / n/ n0 nU R                  UR                  5       GH  n[        U[        5      (       a$  UR	                  S5        UR	                  U5        M=  [        U[
        R                  5      (       a  UR	                  UR                  5        UR                  UR                  5        [        UR                  5       5      [        UR                  R                  5       5      -  (       a  [        SU SUR                   35        UR                  UR                  5        GM  [        SU 35        GM     U R                  [
        R                  R!                  SR#                  U5      X45      5        g )Nz{}zBUILD_STRING key conflict z & zBUILD_STRING r   )r  r  r  rI   r   r   StringFormatVariableformat_stringr  sym_argsr   r  
sym_kwargsr(   r  r  r"  r   )r   r   format_string_partsru   r  parts         rw   BUILD_STRING&InstructionTranslatorBase.BUILD_STRINGO  s   )+&(-/IIdhh'D$ 011#**40D!D)"@"@AA#**4+=+=>DMM*v{{}%DOO,@,@,B(CC!4VHC?PQ doo.dV45 ( 			**11+,d	
ry   c                     UR                   S:X  d  UR                   S:X  d   eUR                   S:X  a  SnOSn[        SUS9nU R                  U5        g )Nr   r   iszis notrF  r  )r!  r   rF  )r   r   
new_argvalnew_insts       rw   IS_OPInstructionTranslatorBase.IS_OPg  sM    {{a4;;!#333;;!J!J%l:F!ry   c                     UR                   S:X  d  UR                   S:X  d   eU R                  S5      u  p#UR                   nU R                  UR                  U SU/0 5      5        US:X  a  U R	                  U5        g g )Nr   r   r8  __contains__)r!  r  r  r  	UNARY_NOT)r   r   leftrightr  s        rw   CONTAINS_OP%InstructionTranslatorBase.CONTAINS_OPp  sn    {{a4;;!#333iil[[		%##D.4&"EF7NN4  ry   c                    U R                  5       nUR                  S:  d   eU R                  UR                  *    n[	        U[
        5      (       d   eUR                  5       (       d   eUR                  U SU/0 5        g )Nr   r  )rX  r!  r  r  r  rX   r  r  r  s       rw   LIST_EXTEND%InstructionTranslatorBase.LIST_EXTENDx  sk    HHJ{{Qjj$((##|,,,,~~hR0ry   c                 ~    U R                  [        [        5      R                  X R	                  5       /0 5      5        g rp   )r  rH   r   r  rX  r>  s     rw   LIST_TO_TUPLE'InstructionTranslatorBase.LIST_TO_TUPLE  s(    		/%(66thhj\2NOry   c                    U R                  5       nUR                  S:  d   eU R                  UR                  *    R	                  5       n[        U[        5      (       d   eUR                  5       (       d   eUR                  U SU/0 5        g r  )	rX  r!  r  r  r  r  rM   r  r  r  s       rw   
DICT_MERGE$InstructionTranslatorBase.DICT_MERGE  su    HHJ{{Qjj$((#++-#01111~~hR0ry   c                 $    U R                  5         g rp   r  r>  s     rw   	GEN_START#InstructionTranslatorBase.GEN_START  r  ry   c                    U R                   S   nUR                  5       (       a=  U R                  [        R                  " [        UR                  5       5      5      5        g U R                  UR                  U S/ 0 5      5        g )Nr'  rf  )r  rk  r  rI   r"  r   rl  r  r  s      rw   GET_LEN!InstructionTranslatorBase.GET_LEN  s_    jjn!!##II&--c#2H2H2J.KLMIIcoodIr2>?ry   c                 L   U R                   S   n[        U[        5      (       d   e[        UR                  [        R
                  R                  5      (       a&  U R                  [        R                  " S5      5        g U R                  [        R                  " S5      5        g Nr'  TF)
r  r  rM   r   collectionsabcMappingr  rI   r"  r  s      rw   MATCH_MAPPING'InstructionTranslatorBase.MATCH_MAPPING  sn    jjn#01111cii!8!899II&--d34II&--e45ry   c                    U R                   S   nUR                  5       (       d   eUR                  5       n[        U[        R
                  R                  5      (       aF  [        U[        [        [        45      (       d&  U R                  [        R                  " S5      5        g U R                  [        R                  " S5      5        g rB  )r  rk  rl  r  rC  rD  Sequencer   bytes	bytearrayr  rI   r"  )r   r   r  	tos_values       rw   MATCH_SEQUENCE(InstructionTranslatorBase.MATCH_SEQUENCE  s    jjn%%''''**,	i!9!9:::UI.D
 D
 II&--d34II&--e45ry   c                 V  ^ U R                   S   nU R                   S   m[        T[        5      (       d   e[        U4S jU 5       5      (       au  U R	                  [        U Vs/ s H  nTR                  X5      PM     sn5      5        [        R                  S:  a&  U R	                  [        R                  " S5      5        g g U R	                  [        R                  " S 5      5        [        R                  S:  a&  U R	                  [        R                  " S5      5        g g s  snf )Nr'  r9  c              3   ,   >#    U  H	  oT;   v   M     g 7frp   r   )r   r   tos1s     rw   r   7InstructionTranslatorBase.MATCH_KEYS.<locals>.<genexpr>  s     &#QDy#s   r  TF)r  r  rM   r  r  rZ   getitem_constr  r   rI   r"  )r   r   r  r   rQ  s       @rw   
MATCH_KEYS$InstructionTranslatorBase.MATCH_KEYS  s    jjnzz"~$ 12222&#&&&IIm#$N#QT%7%7%@#$NOP')		*11$78 * II&--d34')		*11%89 * %Os   %D&c                 &    U R                  S5        g )Nr  )r  r>  s     rw   r  .InstructionTranslatorBase.LOAD_ASSERTION_ERROR  s    %%&67ry   c                 |    UR                   S:X  a  U R                  U5        SU l        g U R                  (       a   eg )Nr   F)r  append_prefix_instr  r>  s     rw   RESUME InstructionTranslatorBase.RESUME  s5    88q=##D)&+D#.....ry   c                 4    [         UR                     " X5      $ rp   )_binary_op_lookupr  r>  s     rw   	BINARY_OP#InstructionTranslatorBase.BINARY_OP  s    $TXX.t::ry   c                     g rp   r   r>  s     rw   r  !InstructionTranslatorBase.PRECALL  r  ry   c                     U R                   S   UR                     n[        U[        5      (       d   eU H  n[        U[        5      (       a  M   e   U R
                  b   e[        R                  " US9U l        g )N	co_constsr  )rD  r  r  r   r   r  rI   r"  )r   r   r  r.  s       rw   r  "InstructionTranslatorBase.KW_NAMES  sm    $$[1$((;(E****DdC(((( }}$$$(//h?ry   c                 6    U R                  [        5       5        g rp   )r  r]   r>  s     rw   r  #InstructionTranslatorBase.PUSH_NULL  s    		,.!ry   c                 :   U(       ac  [         R                  S:  d   eU R                  5       n[        U[        5      (       a  UR                  5       (       d   eUR                  5       nO)U R                  (       a  U R                  R                  OSnU R                  UR                  S-   5      n[         R                  S:  a&  US   n[        US   [        5      (       a  / OUS   /nO+[        US   [        5      (       a  US   n/ nOUS   nUS   /nU(       aO  XdS[        U5      *  -   nU[        U5      * S  n[        [        X75      5      n[        U5      [        U5      :X  d   eO	XdSS  -   n0 n U R                  XVU5        S U l        g ! S U l        f = f)NrN  r   r8  r   r   )r  r   rX  r  rZ   rk  rl  r  r\  r  r  r]   r   r   r`  r  )	r   r   call_kwr  contentsr   ru   rb  r  s	            rw   _callInstructionTranslatorBase._call  sr    ##w...xxzHh668;V;V;X;XXX224H.2mmt}}**H99TXX\*w&!B#HQK>>2Xa[MD(1+|44a[a[ }1H~66D"CM>#34K#h45Fv;#h-///12,&DF	! r0 DMDDMs   7F 	Fc                 &    U R                  U5        g rp   rj  r>  s     rw   r  InstructionTranslatorBase.CALL#	  s    

4ry   c                 V    U R                  U R                  UR                  *    5        g rp   )r  r  r  r>  s     rw   COPYInstructionTranslatorBase.COPY'	  s    		$**dhhY'(ry   c                     U R                   UR                  *    U R                   S   sU R                   S'   U R                   UR                  * '   g r0  )r  r  r>  s     rw   SWAPInstructionTranslatorBase.SWAP*	  s=    04

DHH90EtzzRT~-

2

DHH9-ry   c                     g rp   r   r>  s     rw   CACHEInstructionTranslatorBase.CACHE5	  r  ry   c                 &    U R                  U5        g rp   r  r>  s     rw   BEFORE_WITH%InstructionTranslatorBase.BEFORE_WITH8	  r  ry   c           	         U R                  5       n[        U[        [        45      (       d  [	        UR
                   SU 35        [        U[        5      (       a*  UR                  5       (       d  U =R                  S-  sl        [        U[        [        45      (       d   e[        UUR                  5      n[        R                  S:  av  UR                  (       aD  U R                  (       a0  UR                  R                  U R                  S   R                  La  S nO-U R                  R                  R                  nOUR                  nU(       as  [        U [        5      (       a:  U R                  R!                  [#        X[%        U R&                  5      U5      5        O$U R                  R!                  [#        X5      5        U R)                  U5        U R)                  UR+                  U 5      5        g )NrU  r   r  r'  )rX  r  rJ   rK   r(   r   supports_graph_breaksr  rL   r   r  r   r  r  rZ  r   r   r   r   r  r  enter)r   r   ctxr   r   s        rw   r  .InstructionTranslatorBase.setup_or_before_with;	  s   hhj)+IJ
 
 T[[M3%01 s:;;--//..!3. )+IJ
 
 	
 
 (KK

 w&
 !!$$%%,,D4D4DR4H4O4OO..<<CC[[F$ 566  ''#D#djj/3G   ''(EF		$		#))D/"ry   c                 `    U R                   (       d   eU R                  R                  U5        g rp   )r  r  r   r>  s     rw   rY  ,InstructionTranslatorBase.append_prefix_instl	  s%    &&&&  &ry   c                 D   [         R                  S:  a{  U R                  (       dj  [        U R                  UR
                     [        5      (       d   eU R                  R                  R                  5       U R                  UR
                  '   g U R                  U5        g r  )r  r   r  r  r  r!  r]   rV  r  track_cell_newrY  r>  s     rw   	MAKE_CELL#InstructionTranslatorBase.MAKE_CELLp	  s{    w&t/F/F d224;;?NNNN ((779    ##D)ry   c                 &    U R                  U5        g rp   rY  r>  s     rw   COPY_FREE_VARS(InstructionTranslatorBase.COPY_FREE_VARS{	      %ry   c                 &    U R                  U5        g rp   r  r>  s     rw   RETURN_GENERATOR*InstructionTranslatorBase.RETURN_GENERATOR~	  r  ry   c                 p    [         R                  S:  a  U R                  5         g U R                  S5        g )NrN  r8  )r  r   rX  r  r>  s     rw   END_FOR!InstructionTranslatorBase.END_FOR	  s$    w&HHJIIaLry   c                     [        U R                  UR                     [        5      (       a  [	        S5        U R                  U5        g )Nz)LOAD_FAST_CHECK on uninitialized variable)r  r  r!  r]   r(   rk  r>  s     rw   LOAD_FAST_CHECK)InstructionTranslatorBase.LOAD_FAST_CHECK	  s3    d**4;;7FFEFtry   c                     UR                   U R                  ;  a  U R                  [        5       5        OU R	                  U5        [        5       U R                  UR                   '   g rp   )r!  r  r  r]   rk  r>  s     rw   LOAD_FAST_AND_CLEAR-InstructionTranslatorBase.LOAD_FAST_AND_CLEAR	  sD    ;;d222IIln%NN4 ,8NT[[)ry   c                     U R                  [        R                  " USS95        UR                  S-  (       a  U R	                  U5        g U R                  U5        g )Nr8  r  r   )r  r   ri  r  rg  r  r>  s     rw   LOAD_SUPER_ATTR)InstructionTranslatorBase.LOAD_SUPER_ATTR	  sB    ;..tA>?88a<T"OOD!ry   c                    UR                   S:X  a  U R                  U5        g UR                   S:X  a8  U R                  [        U R	                  5       R                  U 5      5      5        g [        SUR                    35        g )N      z!missing CALL_INTRINSIC_1 operand )r!  UNARY_POSITIVEr  rZ   rX  rX  r(   r>  s     rw   CALL_INTRINSIC_1*InstructionTranslatorBase.CALL_INTRINSIC_1	  s^    ;;!%[[AIImDHHJ$H$H$NOP=dkk]KLry   c                 f    U R                  5       nU R                  5         U R                  U5        g rp   r  r  s      rw   END_SEND"InstructionTranslatorBase.END_SEND	  s!    hhj
		#ry   c                 $    U R                  USS9  g )NT)rh  rm  r>  s     rw   CALL_KW!InstructionTranslatorBase.CALL_KW	  s    

4
&ry   c                 <    U R                   R                  S;   d   eg )N)POP_JUMP_IF_TRUEPOP_JUMP_IF_FALSEr-  )rZ  r   r>  s     rw   rP  !InstructionTranslatorBase.TO_BOOL	  s'     $$++ 0
 
 	
 
ry   c                 2   UR                   nU R                  5       n[        U[        5      (       d   eU R                  5       nUS-  (       a  XCl        O2US-  (       a  XCl        O!US-  (       a  XCl        OUS-  (       a  XCl        U R                  U5        g )Nr  r  r8  r   )	r  rX  r  rP   r  r  r  r  r  )r   r   r  r   attrs        rw   SET_FUNCTION_ATTRIBUTE0InstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE	  sp    XXZ"89999xxz4<JT\!NT\ MT\K		"ry   c                 v    U R                  U R                  U R                  5       UR                  5      5        g rp   )r  r  rX  r!  r>  s     rw   CONVERT_VALUE'InstructionTranslatorBase.CONVERT_VALUE	  s%    		$%%dhhj$++>?ry   c                 P    U R                  [        R                  " S5      S5        g )Nr   r   )r  rI   r"  r>  s     rw   FORMAT_SIMPLE'InstructionTranslatorBase.FORMAT_SIMPLE	  s    +2226:ry   c                 D    U R                  U R                  5       S5        g r   )r  rX  r>  s     rw   FORMAT_WITH_SPEC*InstructionTranslatorBase.FORMAT_WITH_SPEC	  s    488:q)ry   c                 R    U R                   R                  5       S:  a	  S U l        gg)Nr   c                      g)NTr   r   ry   rw   rx   >InstructionTranslatorBase.is_non_empty_graph.<locals>.<lambda>	  s    dry   TF)rV  count_callsr-  r   s    rw   r-  ,InstructionTranslatorBase.is_non_empty_graph	  s%    ;;""$q(&2D#ry   c           
          Uc  / nSR                  [        R                  " U R                  5       /[	        [        U5      5      -   5      5      $ )Nr   )r   r2  r<  rS  r   rr   )r   additional_stack_framess     rw   format_frame_summary.InstructionTranslatorBase.format_frame_summary	  sL    "*&(#ww!!##%&h7N.O)PP
 	
ry   c           	          [         R                  " [        U R                  SS5      U R                  [        U R                  SS5      SS9$ )Nr(  	<unknown>r  F)lookup_line)r2  FrameSummaryr  r  r   r   s    rw   rS  'InstructionTranslatorBase.frame_summary	  s?    %%DKK<KKDKKK8	
 	
ry   c                     [        U R                  SS5      n[        R                  " S5      nUR	                  U5      S L$ )Nr(  r  z.*torch/nn/modules.*)r  r  recompilematch)r   r   nn_modules_patterns      rw   is_co_filename_from_nn_modules8InstructionTranslatorBase.is_co_filename_from_nn_modules	  s:    4;;{CZZ(?@!''1==ry   c                     U R                   R                  U[        R                  " U5      5      n[	        [        U5      R                  [        R                  5      5        U$ rp   )	rV  install_global_by_idweakrefrefr,   r6   
make_guardr+   WEAKREF_ALIVE)r   r  r\  global_names       rw   store_global_weakref_by_id4InstructionTranslatorBase.store_global_weakref_by_id	  sJ    kk66vw{{5?QR,778R8RS	
 ry   c                 B    U R                   R                  R                  $ rp   )rV  tracing_context	fake_moder   s    rw   r  #InstructionTranslatorBase.fake_mode	  s    {{**444ry   check_fnc              #   \   #    U R                   nXl          Sv   X l         g! X l         f = f7f)zh
Strict mode is enabled on a per-VariableTracker level depending on the return value of check_fn(node).
N)r  )r   r  priors      rw   strict_translation_mode1InstructionTranslatorBase.strict_translation_mode 
  s,     
 %% (	*$)!E!s   ,! ,),c                 
   U R                   c   eU R                   S:  d   eU R                  R                  U R                  R                  U R
                  U R                   S-
  U R                  U R                   S-
     5      $ )Nr   r   )r   speculation_logr   r  r(  r   r  r   s    rw   r  #InstructionTranslatorBase.speculate
  s|    ''333''!+++##((KK##KK$$q(d66:;	
 	
ry   r  rd  r  r  rD  r  r|  r  distributed_stater  c                 |  > [         TU ]  5         Xl        Xl        Xl        Xpl        Xl        Xl        / U l        SU l	        [        S5      U l        / U l        SU l        SU l        S U l        SU l        / U l        / U l        X l        [)        U R&                  5      U l        UU l        X@l        XPl        X`l        Xl        Ub%  [6        R8                  (       a  [;        XUS9U l        OS U l        0 U l        0 U l         Xl!        SU l"        S U l#        S U l$        [J        RL                  S:  aC  SS	K'J(nJ)nJ*nJ+n  U
RX                  UU-  U-  U-  -  (       a  U R[                  []        S 5      5        Xl/        SU l0        S /[c        U
Rd                  5      -  U l3        [h        Rj                  " U
Rl                  U5        g )
Nr   r:  r'  T)r  r  rD  F)r  
   r   )CO_ASYNC_GENERATORCO_COROUTINECO_GENERATORCO_ITERABLE_COROUTINE)7r  r  r  r  rV  r  r  r  r  r   r   r  r  r  r   r  r  r  r  r  r   r  rd  r  r  rD  r  r   replay_record_enabledr0   r  nn_module_stack	num_callsr|  	one_graphr  r  r  r   resume_executionr  r  r  r  co_flagsr  rH   r  r  r   rc  r  r  	lazycacher(  )r   rV  r  rd  r  r  rD  r  r  r  r  r|  r  r  r  r  r  r  r  r  r  s                       rw   r  "InstructionTranslatorBase.__init__
  s   & 	.!2 . 0-J*
#$ #5e#< -.*"& 0</:4;L;L/M  	 *3*4,8&, 6#?#?!2<"D "&D BD)+#'  $w&  |+.CCFXX 		/$/0().&BF#K
 B
 	F..	:ry   )%r  r  r  r  r  r  rD  r  r  r  r  r  r|  r  r  r  rd  r  r  r  r  r   r  r-  r  r   r  r  r  rV  r  r  r  r  r  r  r  rp   )F(  r   r   r   r   r.   r   r   r   rE   re   r   r   r   r!   r   rI   r   r~   r   r0   r   r  rR  r  r  r  r  r  r  r  r!  r)  r5  r  r   r0  propertyrZ  r.  rI  rQ  r  rY  rX  r  rk  rq  rv  ry  r~  LOAD_CLOSUREr  r  r  r  cached_propertyr  r  r  r  r  r  r  r  r  r  rm  JUMP_FORWARDJUMP_ABSOLUTEr  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"  r3  r2  r5  r=  r@  rC  rF  rJ  r  r  rP  rc  ri  rl  rg  rs  r  rx  r~  r{  r  rY  rQ  r  r  r  r  r  r  rX   r  r  BUILD_TUPLE_UNPACK_WITH_CALLr  r  BUILD_MAP_UNPACK_WITH_CALLr  r  r  r  r  r  r  r  r:  r  r  r   r  r  r  r  r  r  r#  r)  r0  r3  r6  r9  DICT_UPDATEr<  r?  rF  rM  rT  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_REMAINDERr   
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_ORrZ  r^  r  r  r  rj  r  rp  rs  r;  JUMP_BACKWARD_NO_INTERRUPTPOP_JUMP_FORWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_FORWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_FALSErv  ry  r  rY  r  r  r  r  r  r  r  r  r  r  rP  r  r  r  r  r-  r  rS  r  r  r  
contextlibcontextmanagerr  r  r  CodeTyper   r   r
   CellTyper  r   r  r  s   @rw   r  r    s$	    #.//3/00#==  !#&$$o&&K'(({####!"233I''-..x(94(?@AA.>'
=88 ?#8 S/)*	8,QnW+=Z 7"%	+R	 ; ;
2*01 d?3  _  ;c ;d?3 ;+,V/./ L*J, J J!E#$
2:-;^:3= LM$X]]E:#HNNE:'t<&x~~t<DD(DU(&,0!]'~$.5nKPD  Q') ()
  Q'K; (K;Z  Q'	- (	-GB )04




d 

  Q'F (F8(
(I +7 @8 $6 J

 "2
 951%
N".&
N(3
0"!1P1 K@6	6:8 hll+Nhll+N'IHOO,LHLL)Lx||,O%hoo6"8#4#45!("2"23X\\*M-(,,'Jx||,O.A6x@P@P7QRMX__-MX__-M(--(J&I(,,'JX]]+M.&x'7'78#H$6$67"8#4#45hmm,N /8==)K.h../Nh../N8==)K8==)K(,,'J/ 7"	;@"'!R  Q' ()V M!%+HNNEB ,X^^U C ,X]]E B!-hmmU!C(/#b'	*&&
;"M  Q'' ('
"@;*

>
 5 5 	*/9JD9P0Q 	* 	*
+ 
6 48#Y;Y; ;'Y; sCx.	Y;
 S>Y; cNY; 38nY; c?23Y; sO34Y; (BY; Y; Y; Y; (Y; $$45Y;" %/0#Y;$ 
%Y; Y; Y;ry   )	metaclassc                      ^  \ rS rSr\SS j5       r\R                  S 5       rS\	\
   S\S\\   SS4U 4S	 jjrS
 rS\4S jrU 4S jrS rS rS rS rS rS rSrU =r$ )r   ir
  r   c                  "    [         R                  $ rp   )tls
current_txr   ry   rw   rC   InstructionTranslator.current_txs
  s    ~~ry   c              #      #    [        [        SS 5      nU [        l         S v   U[        l        g ! U[        l        f = f7f)NrC  )r  rB  rC  )r   r  s     rw   set_current_tx$InstructionTranslator.set_current_txw
  s0     \40	#"CNUCNs   A 0 A =A r  r  r  Nc                 P  > [        5       " [        R                  SUR                   SUS    SUS    35        [        TU ]  [        UU	U UUUUUUUS9
UUUUUU0 0 S UUSUUS9  U R                  5         [        U R                  R                  5         U R                  5          Xl        Xl        U R                  (       a  U R                  (       d   S	5       e0 U l        [        U R!                  5       5      nUR#                  5        H<  u  nnUU;  d  M  [$        R&                  " U[)        US
S95      nUU R                  U'   M>     U R                  R*                  nU R-                  5        H  nUU;   a\  UU   n[.        R0                  " U5      n[3        U5      n[)        US
S
S9n[$        R&                  " UU5      nUR5                  UUU5      nOUR7                  5       nUUl        UU R                  U'   M     [;        U R=                  5       U5       Hf  u  nn[3        U5      n[)        US
S9n [$        R&                  " UR>                  U5      nUR5                  UUU5      nUUl        UU R                  U'   Mh     [G        U5      U l$        / U l%        U(       a.  [B        R$                  RM                  U R                  5      U l        S S S 5        S S S 5        g ! [@         a    [B        RD                  " 5       n Nf = f! , (       d  f       N<= f! , (       d  f       g = f)Nztorchdynamo start tracing rU  r(  r   r)  )local_scoper  r  torch_function_mode_stackr   )rV  r  rd  r  r  r  rD  r  r  r  r  r|  r  r  r  z4Export without one graph - something has gone wrong.T)is_input)rK  is_derefed_cell_contents)rL  )'r   r   INFOr  r  r  r.   _throw_if_in_functorchr   rV  r  rF  r  r|  r  r   r  r   rU   r"  r8   r  r  r  r>  r7   track_cell_existingr  r}  r`  r  cell_contents
ValueErrorr   DeletedVariablere   r  debug_localsrealize_all)r   r  r  rd  r  r  r  rJ  rD  compiler_fnr  r|  export_constraintsframe_stater  r  r  r.  r\  varr  
dummy_cellcell_sourcecontents_sourcerp  cell_varro  r  s                              rw   r  InstructionTranslator.__init__
  s*   $ 	LL((8,}:U9VVWXdeuXvWwx	
 	"$&*C &!%*.+/7 	 	
< 	##% T[[00143F3F3H#,N K{{NNJIJ" $&D *-d.D.D.F*G'~~/e00-44{4$?C 25D((.  0  ;;33L8#$TNE( "'!6J"1$"7K&1td'O 5H4N4N5L  ,??#Z H  ,::<H&*#-5$$T*K (R "$--/7;
d-d3"-dT"R?#6#=#=**O$L (;;| '+#-5$$T* <  2L)2D. VXD (1'D'D'P'P((($m 4I11J " ?#,#<#<#>L?K 4I3H11sQ   L%A0LDL6!K!A9LL!L	 LL	L
L	L
L%c                    [         R                  R                  S5      n[        R                  " U R
                  R                  SU R
                  R                  5      n[         R                  R                  R                  5       n[         R                  R                  R                  R                  [         R                  R                  R                  R                  [         R                  R                  R                  R                  4nUbZ  UR                  5       U;   aE  X!La@  UR                  5       R                  R!                  5       nSU SU SU S3n[#        U5        g g g g )NeagerrU  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)r8  _dynamolookup_backendr  getattr_staticrV  rU  _C
_functorchpeek_interpreter_stackTransformTypeVmapGradJvpr  r.  lowerr(   )r   r_  rU  ciforbidden_keysr.  r^  s          rw   rN  ,InstructionTranslator._throw_if_in_functorch  s!   ,,W5,,KK##]DKK4K4K
 XX  779HH--22HH--22HH--11
 >bffh.8[=U668==&&(D((,v .**. 0  !%v%WY  # >V8>ry   r  c                     [        U[        5      (       a  U R                  UR                     $ [        U[        5      (       a  U R
                  UR                     $ [        erp   )r  r8   rd  r}  r5   r  r  rg  )r   r  s     rw   get_example_value'InstructionTranslator.get_example_value,  sK    fk**==!2!233fl++>>&"4"455ry   c                 "   > [         TU ]  5         g rp   )r  rQ  )r   r  s    rw   rQ  InstructionTranslator.run3  s    ry   c                 h   [         R                  S:  aU  U R                  R                  nU(       a8  U R                  (       a&  UR
                  U R                  S   R
                  La  g[        S U R                   5       5      =(       a'    U R                  (       + =(       a    U R                  S:H  $ )Nr  r'  Fc              3   @   #    U  H  oR                  5       v   M     g 7frp   )r   r   r  s     rw   r   EInstructionTranslator.should_compile_partial_graph.<locals>.<genexpr>?  s     :)9A)9   r   )	r  r   r  r  r  r   r  r  r  )r   r   s     rw   rQ  2InstructionTranslator.should_compile_partial_graph6  s    w&,,::E$$D<L<LR<P<W<W(W:)9)9:: 8NN"822a7	
ry   c                   ^ ^ S T l         UR                  S:X  a  [        S5      /$ UR                  S:X  a  [        SUR                  S9/$ [	        T R
                  U5      m[        UU 4S jT R                  R                  5        5       5      n[        U 4S jU 5       5      n[        U 4S jU 5       5      n[        R                  S:  a  [        U5      S:X  d   S	5       e[        T 5      n/ n[        T R                  5       H  u  px[        R!                  ["        U5      (       d  M&  [%        ["        U5      n	U	R&                  c  S
O[        U	R&                  5      n
UR)                  Xz45        U	R+                  U5        UR-                  [/        [        T R                  5      U-
  S-   5      5        UR1                  [        S5      5        M     / nU H  n[        R!                  ["        T R                  U   =n5      (       d  M3  [%        ["        U5      n	U	R&                  c  S
O[        U	R&                  5      n
UR)                  X45        U	R+                  U5        UR1                  [        SUS95        M     / n[        R                  S:  a  [        T R                  5       H7  u  px[        R!                  [2        U5      (       d  M&  UR)                  U5        M9     Sn[        [5        T R                  5      5       H|  u  px[        R!                  [2        U5      (       d  M&  [7        SUS-   U-
  5       H  nUR1                  [        SUS95        M     UR-                  UR9                  5       5        US-  nM~     [        T R                  5      [        U5      -
  nU[        U5      -   n[;        SUR<                   35      n[>        R@                  " T RB                  T RD                  UR<                  [        S T RF                   5       5      UUU[        S T RF                   5       5      [        U5      [        U5      [        U5      5      n[H        RJ                  " T RB                  5      RM                  SS 5      " 5       nUb-  [N        RP                  " U5      [H        RJ                  " U5      S'   URR                  (       a1  T RT                  RW                  UU5        URY                  UUSU5        O^T RT                  RW                  U[Z        R\                  " UT R^                  U5      5        UR-                  URa                  USU5      5        UR-                  U Vs/ s H  nURc                  U5      PM     sn5        UR-                  [e        US5      5        UR1                  [        S5      5        URg                  5       $ s  snf )Nr  r  r  c              3   d   >#    U  H%  nUT;   d  M  UTR                  5       ;  d  M!  Uv   M'     g 7frp   )r  )r   r   r  r   s     rw   r   >InstructionTranslator.create_call_resume_at.<locals>.<genexpr>M  s7      
0Ez t'='='?? A0s   
00	0c              3      >#    U  H5  n[         R                  [        TR                  U   5      (       a  M1  Uv   M7     g 7frp   r(  __instancecheck__r]   r  r   r   r   s     rw   r   r{  S  s5      
!)),8L8LQ8OP A!
   0A 	A c              3      >#    U  H5  n[         R                  [        TR                  U   5      (       d  M1  Uv   M7     g 7frp   r}  r  s     rw   r   r{  X  s5      
!%%lD4H4H4KL A!r  r  r   z&variables should not be NULL in < 3.12r   r   r  rv  r  r8  rs  )r  __resume_at_c              3   L   #    U  H  oR                   R                  v   M     g 7frp   )r   r  ru  s     rw   r   r{    s     <+;a((//+;s   "$c              3   @   #    U  H  oR                  5       v   M     g 7frp   )r   ru  s     rw   r   r{    s     :)9A++--)9rw  orig_graphmodulec                      g rp   r   r   ry   rw   rx   =InstructionTranslator.create_call_resume_at.<locals>.<lambda>  s    ry   TF)4r   r   r   r!  r   r  r   r  r  r  r   r   r%   	enumerater  r(  r~  rJ   r   r   r   r  r  r   append_outputr]   rr   r  pop_nullr#   r  r1   lookupr  r   r  r$   get_contextr  r  r  r  rV  install_global_unsafemake_function_with_closurer  FunctionTyper  load_function_namecreate_loadr   r  )r   r   all_argnamesra  argnames_nullr  stack_ctx_varsr  rX  r~  r   argnames_ctx_varsr.  
null_idxesnull_cntj	stack_lenr  new_codeorig_graphmodule_mayber   r  s   `                    @rw   rY  +InstructionTranslator.create_call_resume_atD  s   #' ;;.(&~677[[N*&~dkkJKK!$"3"3T: 
))..0
 
  
!
 

  
!
 

 g%}%*T,TT*t_
 

+FA%%&=sCC2C8++3Bs?P?P9Q  %%q&89$$R(  S_q-@1-D!EF  !3I!>? , D%%'0D0DT0J)J  2C8++3Bs?P?P9Q  "(($)>?$$R(  !3L!NO $ !#
w&#DJJ/)),<<%%a( 0 H#HTZZ$89)),<<"1a!eh&67(();F)JK 8$$R[[]3MH : 

Oc*o5	CM)<}56#9#@#@KKKKKK<4+;+;<<:)9)9::.!#$*$
  ".!9!9$++!F!J!J"
 " "-EL[[&FL$$X./AB KK--dH=))$$	J KK--e((4>>4H R224yIJ
X>X"..+X>?
-eU;<
+N;<""$$ ?s   -Wc                     U R                   R                  5        HS  n[        U[        5      (       d  M  [	        UR                  5       [        R                  R                  5      (       d  MS    g   g)NTF)	r  r  r  rh   r8  rl  r8  nnModule)r   r   s     rw   $symbolic_locals_contain_module_class:InstructionTranslator.symbolic_locals_contain_module_class  sU    %%,,.A!566:$$&< < 	 /
 ry   c           	         U R                   R                  5       S:X  aM  U R                  (       d<  U R                  5       (       d'  U R                  (       d  [
        R                  " S5      eS U l        [        5       " [        R                  SU R                  R                   SUR                   S35        [        R                  SUR                  5        U R                   R!                  U [#        SU R%                  5       /SS	9S
9  UR                  S:X  a  ['        S5      O['        SUR(                  S9nU R                   R+                  U/5        [,        e)Nr   z#because no content in function callztorchdynamo done tracing r   r  z%s triggered compilereturn_valueF)r  rK  r  r  r  )rV  r  r  r  r|  r   rU  r   r   r   rM  r  r  r   r   rC  rW  r-   rS  r   r!  r[  r   )r   r   return_insts      rw   _returnInstructionTranslator._return  s   KK##%*22==??KK-- EFF#' LL'(;(;'<Bt{{m1M	
 			($++6$$%!3!3!5 6E 	% 	
 {{n, ~.#N4;;G 	
 	++[M:ry   c                 &    U R                  U5        g rp   r  r>  s     rw   r  "InstructionTranslator.RETURN_VALUE      Try   c                 &    U R                  U5        g rp   r  r>  s     rw   r  "InstructionTranslator.RETURN_CONST  r  ry   )rS  r|  r   r  r  r  )r   r   )r   r   r   r   staticmethodrC  r;  r<  rF  r   r!   r   r   r   r  rN  r9   ro  rQ  rQ  rY  r  r  r  r  r   r  r  s   @rw   r   r   r
  s      # #P;'P (P  $$45!P" 
#Pd4 
}%~8 ry   r   r  INPLACEr  BINARY_c                     ^  \ rS rSr% Sr\\   \S'   \S 5       r	\
S 5       r\
S\S\\   4S j5       rS	\S
\R"                  S\\\4   S\\\4   S\S\SS4U 4S jjr\S 5       rS rS rS rS rS rS rU 4S jrU 4S jr Sr!U =r"$ )r  i  z Trace and inline a called methodsymbolic_resultc                     [         R                  " [        S[        S   05         U R                  XX45      sS S S 5        $ ! , (       d  f       g = f)Nr(   r  )r   r   r<   inline_call_)r   r  funcru   r  s        rw   r  )InliningInstructionTranslator.inline_call  s7    ZZ?H]4K"LM##F$? NMMs   A
Ac                    U R                  5       (       a  [        S5        [        R                  " U SS9nUR                  (       a  SSKJn  [        [        U SS 5      S5      (       a2  U R                  R                  U4;   a  [        R                  " SS	5      $ [        U S5      (       a  U R                  R                  OS
n[        SU SU R                  5        SU R                  5        SUR                   S3	5        [!        U ["        5      (       aH  [$        R&                  " U R)                  5       SS5      (       a  [        SU R)                  5        35        g U$ )Nzinline with __self__T)is_inlined_callr   )!produce_trampoline_autograd_applyr   _originFz"allowlist in dynamo known functionr   z'inline in skipfiles: z | rU  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  rR   r  rb  get_function)r  r  r  fn_qualnames       rw   check_inlineable.InliningInstructionTranslator.check_inlineable  s6   ==??01**4F>>V wtT40)<<1U B #--?  3:$2E2E$''..2K(S8I4K\K\K^J__abhboboappqr d011g6L6L!77
 7
 @ARARAT@UV Mry   r  ru   c                   ^^^^ [        U[        5      (       a  [        S5        [        U[        [        45      (       d   e[
        R                  U5      nUR                  SL d   e UR                  XU5      n[$        R&                  " UR)                  5       5       H(  n[        U[*        5      (       a  M  [        SU 35        M*     UR                  5       mTR,                  S	;   aQ  U(       a2  [        US
   [.        R0                  [.        R2                  45      (       d  [        STR,                   35        Sn	[4        R6                  R8                  R:                  R=                  S5      (       a'  S[>        R@                  " T5      R?                  5        3n	[B        RD                  S:  ac  U RF                  mU RH                  mU RK                  TRL                  RN                  S9mUUUU4S jn
[P        RS                  S[U        U
5      5        [V        RS                  STXRX                  5        U(       a  [        US
   [Z        5      (       a  U R\                  R_                  US
   R`                  5      n[        U[4        Rb                  Rd                  5      (       aA  [f        Rh                  " U5      [j        Rl                  " URn                  Rp                  5      S'   [s        T5      (       a%  [u        U TUU Rv                  U Rx                  U5      nO$[        U TUU Rv                  U Rx                  U5      n[z        R|                  " 5       nU R~                  (       a  UR                  U R~                  5      n U   UR                  5         S S S 5        UR                  c   eUR                  U R                  L a%  U Rv                  R                  URv                  5        U =R                  UR                  -  slL        [V        RS                  ST5        [s        T5      (       aP  [        U[t        5      (       d   eUR                  R                  5       b   e[        UR                  [        5       S9$ UR                  $ ! [         a  n[        SR                  [        U5      SUR                  5        SUR                  5        SUR                  5       R                    3U Vs/ s H  owR#                  5       PM     Os  snf snUS95      eS nAff = f! , (       d  f       GN= f! [        R                   aH  nST SU 3nU R                  R                  UR                  5        [V        RS                  U5        e S nAf[        R                   a.  nST SU 3n[V        RS                  U5        [        U5      UeS nAf[         a  n[V        RS                  ST5        e S nAff = f)Nz#inline with functions in skip filesFz;{reason}.
  func = {func}, args = {args}, kwargs = {kwargs}r  z' r   )r   r  ru   r  zunconverted arg )r  __setattr__r   zinline r   bytecoder   r  )r   c                  b   > [        TT5      R                  5       n STR                   ST SU  3$ )NzTRACE inlined call z from r   )r>   r  r  )r   r  cur_instheaderparent_codes    rw   get_trace_call_log_strJInliningInstructionTranslator.inline_call_.<locals>.get_trace_call_log_strS  s5    1+xHOOQ,T\\N&4&QQry   r%  zINLINING %s%s, %sr  z!Observed exception DURING INLING z : zSKIPPED INLINING r   zFAILED INLINING %szDONE INLINING %sr  )Qr  rQ   r(   rR   rP   r  r  r  	bind_args	TypeErrorr&   r  r   r  r  get_coder)  python_typer	  r
  r  rE   r  r   CustomizedDictVariableri   r8  r=  	_internal	log_stateis_artifact_enabledr  Bytecoder  r   r  r  r  	positionsr   trace_call_logrC  rA   r   r   r`   rV  rx  ry  rr  GraphModuler  r  r$   r  forward__code__r"   &InliningGeneratorInstructionTranslatorr  r  r;  nullcontextr  r  rQ  r   r2  r  r  rU  r)   rM  r  r  r  r  rl  rW   generated_itemsrD   )r  r  ru   r  r  
sub_localsr  r  r   r  r  moduletracer
strict_ctxr^  r  r  r  r  s                  @@@@rw   r  *InliningInstructionTranslator.inline_call_"  s    d011?@!#=>
 
 	
 
 /??E~~&&&	f=J !2!2!45Aa11 045 6  $}}<<99Q1193V3VW 
 GDLL>23 >>##--AA*MM#,,t,00234Fw&11H --K338;M;M;T;T3UFR R   z2H'IJ		%tV]]C JtAw(899]]00a1C1CDF&%(("6"677
 KK' (()@)@A&
 ;''44F 3''44F %002
""778O8OPJ	

 " %%111v///##**6+B+BC((F,L,LL(		$d+f&LMMMM))<<>FFF'&&.0 
 )))a  		#NUUq6T]]_-R0A0A0C/DAdmmoFdFdEef7;<t//+t<!	 V  		Z $$ 	5dV3qcBC &&v':':;IIcN}} 	*%dV2aS1CIIcNc") 	II*D1	st   )R
 T3 T!T3 

TAT0T
	TT!
T0+T3 0T3 3W3AV

W3!)W

W3W..W3r  r  r  r  r  funcvarr   Nc                 &  > UR                  5       nUS   n[        U[        5      (       d  UR                  n[	        U5      n	[        U	5        [        TU ]  UR                  0 UUUUUU	[        5        V
s0 s H  o[        X*5      _M     sn
UUR                  UR                  S-   UR                  UR                  S9  Xl        UR                   U l        S U l        UR$                  R'                  5       U l        UR(                  U l        g s  sn
f )N__builtins__r   )rV  rd  r  r  r  r  r  r  rD  r  r|  r  r  r  )get_globalsr  r   __dict__r   r   r  r  rV  r    r  r|  r  r  r  r  r  r  r  r  r  )r   r  r  r  r  r  r  r  r  r  r   r  s              rw   r  &InliningInstructionTranslator.__init__  s    '')	~.
*d++#,,J+D1L)==!+-*G%7DG!WT--G==,,q0"22$66 	 	
  ))#%55::<)) Hs   5Dc                 .    U R                   R                  $ rp   )r  r  r   s    rw   r  'InliningInstructionTranslator.fake_mode  s    {{$$$ry   c                 ^    [         R                  " U R                  R                  5       5      $ rp   )r   rH  r  rS  r   s    rw   rI  )InliningInstructionTranslator.run_ctx_mgr  s     ++DKK,E,E,GHHry   c                     g)NFr   r   s    rw   rQ  :InliningInstructionTranslator.should_compile_partial_graph  s    ry   c                     [        S5        g )Nzcant resume while inliningr  r  s     rw   rY  3InliningInstructionTranslator.create_call_resume_at  s    23ry   c                 F    U R                  5       U l        S U l        [        erp   )rX  r  r   r   r>  s     rw   r  *InliningInstructionTranslator.RETURN_VALUE  s    #xxz#' ry   c                 H    U R                  U5      U l        S U l        [        erp   )r  r  r   r   r>  s     rw   r  *InliningInstructionTranslator.RETURN_CONST  s#    #//5#' ry   c                    SU R                   ;   a  U R                   S   nU R                  U5      nSU;   a(  [        R                  R                  R
                  U   nO[        R                  " U5      n[        R                  " XU5      n[        X15      nO_U R                  R                  SU R                   5      n[        U5      nU R                   n[        R                  " XU5      n[        X5      nXEU4$ )Nr   r  ___unnamed_scope)r  r  r8  r  r  r  r  r  rE   r  r3   rV  r  r5   r4   )	r   r.  r  r  r  fglobals_vtglobal_sourceglobals_nameglobals_sources	            rw   get_globals_source_and_value:InliningInstructionTranslator.get_globals_source_and_value  s    '..4K ..{;M+-!&!?!?!Y!YZe!f!*!8!8!E)//mTK&};M;;;;"DNNL *,7N!^^N)//nUK).?MM99ry   c                   > U R                   R                  U R                  L a  [        TU ]  U5        g UR
                  nU R                  U5      u  p4nU R                   R                  R                  XB5      (       a5  U R                  U R                   R                  R                  XB5      5        g  U R                  U   nU R                  [        R                  " XU5      5        g ! [         a    U R                  U5      s $ f = frp   )rV  r  r  r  r  r!  r  r  has_pending_mutation_of_attrr  	load_attrrg  r  rE   r  )r   r   r.  rv   r  r  r\  r  s          rw   r  *InliningInstructionTranslator._load_global  s    ;;##t~~5G &;;D,0,M,Md,S)AM{{''DD[WW		$++22<<[OP3 NN40E 		///]KL   3,,T223s   5C+ +D	D	c                 X  > U R                   U R                  R                   L a  [        TU ]  U5        g U R	                  5       n[        U[        5      (       a  [        S5        UR                  nU R                  U5      u  pEnU R                  R                  R                  XSU5        g r  )r  r  r  r  rX  r  rg   r(   r!  r  rV  r  r  )r   r   r\  r.  r  r  rv   r  s          rw   r  *InliningInstructionTranslator.STORE_GLOBAL  s    >>T[[222G &HHJE%!899@A;;D-1-N-Nt-T*NKK$$//5Iry   )r   r  r  r  r  r  )#r   r   r   r   r   r   rd   r   r   r  r  r  rE   r   r  r  r  r=  r   r   re   rO   r  r  r  rI  rQ  rY  r  r  r  r  r  r   r  r  s   @rw   r  r    s   *n--@ @  > }*%}*-1/-B}* }*~#*)#* nn#* c?23	#*
 sO34#* (B#* *#* 
#*J % %I4

:(M"	J 	Jry   r  c                   ^   ^  \ rS rSr% \\   \S'   S
U 4S jjrS\4S jr	S r
S rS rS	rU =r$ )r  i  r  c                 4   > [         TU ]  " U0 UD6  / U l        g rp   )r  r  r  )r   ru   r  r  s      rw   r  /InliningGeneratorInstructionTranslator.__init__  s    $)&)!ry   r   c                     U R                   R                  U R                  5       5        [        U R                   5      [        :  a  [        S[         35        U R                  [        R                  " S 5      5        g )NzqToo many yield values in generator. Maybe you are inlining an infinite generator. If not, please report a bug at )
r  r   rX  r   rT   r(   PT2_ISSUE_TRACKER_URLr  rI   r"  r>  s     rw   YIELD_VALUE2InliningGeneratorInstructionTranslator.YIELD_VALUE  sc    ##DHHJ/t##$'9922G1HJ 			"))$/0ry   c                     U R                   S   n[        U[        5      (       dB  U R                  5         [	        [
        5      R                  X/0 5      nU R                  U5        g g r0  )r  r  rW   rX  rH   rI  r  r  )r   r   r  ress       rw   GET_YIELD_FROM_ITER:InliningGeneratorInstructionTranslator.GET_YIELD_FROM_ITER  sO    jjn#344HHJ!$'55dE2FCIIcN 5ry   c                    [        U R                  5      S:  d   eU R                  5       nU R                  S   n[        U[        5      (       a  UR
                  b  [        S5         UR                  U 5      nU R                  U5        U R                  U5        [        U R                  [        5      (       a  U R                  S:  d   eU =R                  S-  sl
        g ! [        [        R                  4 a~  n[        U[        R                  5      (       a  [        R                  " U 5        U R                  5         U R                  [        R                   " UR
                  5      5         S nAg S nAff = f)Nr8  r'  Unreachable sub-generator coder   r   )r   r  rX  r  rI   r\  r(   r  r  r  r   r   r  r   r  r|  r"  r   r   rS  r  exs        rw   
YIELD_FROM1InliningGeneratorInstructionTranslator.YIELD_FROM&  s*   4::!###hhjjjn3 011cii6G :;	*##D)C IIcNT" 433S99,,q01 $$)$# s<<= 	9"c;;<<--d3 HHJII&--bhh788	9s   )C# #E;=A4E66E;c                    [        U R                  5      S:  d   eU R                  5       nU R                  S   n[        U[        5      (       dH  [        U[
        5      (       a  [        UR                  [        R                  R                  5      (       aR  [        U[        5      (       a1  UR                  c$   UR                  U 5      nU R                  U5        g [)        S5        g [)        S[+        U5       35        g ! [        [        R                  4 an  n[         R"                  S:  a  U R                  5         U R                  [        R$                  " UR                  5      5        U R'                  U5         S nAg S nAff = f)Nr8  r'  r  r  zSEND )r   r  rX  r  rW   ri   r\  rC  rD  IteratorrI   r  r  r  r   r  r  r   r"  rm  r(   rC   r  s        rw   SEND+InliningGeneratorInstructionTranslator.SENDG  s   4::!###hhjjjnc/00s566399koo&>&>??#/00SYY5F#++D1C IIcN >?E'#,01+ &s'D'DE 
$ '''1
II.55bhh?@IIdOO
$s   ;D F
A$FF
)r  r   )r   r   r   r   r   rE   r   r  r!   r  r  r  r  r   r  r  s   @rw   r  r    s4    /**"1 1*B 2  2ry   r  )r   FN)rC  collections.abcr;  r  r   r  r  r  r  r	  r  r   r  r  r  	threadingr2  r  typingr  r   r   r   r   r   r   r	   r
   r   r   unittest.mockr   r8  torch._loggingtorch._dynamo.excr   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_recordr/   r0   r  r1   r2   r  r3   r4   r5   r6   r7   r8   r9   r:   r;   utilsr<   r=   r>   r?   r@   rA   rB   variables.baserC   rD   rE   variables.builderrF   rG   variables.builtinrH   variables.constantrI   variables.ctx_managerrJ   rK   rL   variables.dictsrM   rN   variables.functionsrO   rP   rQ   rR   rS   variables.iterrT   variables.lazyrU   variables.listsrV   rW   rX   rY   rZ   variables.miscr[   r\   r]   r^   r_   variables.nn_moduler`   ra   variables.tensorrb   rc   rd   variables.torch_functionre   rf   variables.user_definedrg   rh   ri   	getLoggerr   r   r=  getArtifactLoggerr?  r  r(  r/  localrB  r   r  rn   r   r   containsrq   r  r|   r
  	dataclassr~   r   r   r   r   	lru_cacher   r   rM  r   r  r  r   r%  rB  rH  r  r  r(  r  r  r   r   _nb_opsr  r]  r  r  )r   r   r   rv   s   0000rw   <module>r@     s?        
        	 
      U U U    < 1 Q Q 
 
 
 '  U U ( / 9 9 A   ;   G F A . 0 
 <  / /   Q W W  !..228^L11(LI>>33HnM ^^55h@PQ oo4L4R4R4T'4TDAAq'''4T' T#s(^  "("3"34BBX]]+99
 D ! H 
 D  L L L( = = =@ 
 
 
 2 2 2* *$ T4 4 . . .>	I 	f- C
%Coovhn-C CL 7
tE6??F8T>: E$ EPrjJ J `;(`;F;y5 yx w 
 %IF	 	!#v-F12JWVABZL3I	
 %TJ$= TJnX2-J X2ad'`[s    Q&Q