
    [Th                    	   % S 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rSSK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%  SSK&J'r'  S	S
K(J)r)J*r*J+r+Jr,J-r-J.r.  S	SK/J0r0J1r1J2r2J3r3  S	SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=  S	SK>J>r>  S	SK?J@r@  S	SK*JArAJBrBJCrCJDrDJErEJFrFJGrG  S	SKHJIrI  S	SKJJKrKJLrL  S	SKMJNrNJOrO  S	SKPJQrQJRrR  S	SKSJTrTJUrU  S	SKVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]  S	SK-J^r^J_r_  S	SK`JaraJbrbJcrcJdrdJereJfrfJgrgJhrh  S	SKiJjrjJkrkJlrl  S	SKmJnrnJoro  S	SKpJqrq  S	SKrJsrs  S	SKtJuruJvrvJwrw  S	SKxJyryJzrz  S	SK{J|r|J}r}J~r~JrJrJrJr  S	SKJr  S	S KJr  S	S!KJrJrJrJrJr  S	S"KJrJrJrJrJrJr  S	S#KJr  S	S$KJrJrJr  S	S%KJrJr  S	S&KJrJrJrJrJr  \GRF                  " \5      r\GRL                  GRO                  \S'5      r\GRL                  GRO                  \S(5      r\GRL                  GRO                  \S)5      r\GRL                  GRO                  \S*5      r\GRX                  " 5       r\GR\                  " 5        V Vs0 s H  u  pU \q" U5      GR^                  _M     snn r\\\4   \S+'   \q" \GRh                  5      GR^                  r\q" \GRl                  5      GR^                  rS, \S-'   S. \S/'   S0r\GRr                  S1\S2\GRt                  4S3 j5       r\GRx                   " S4 S55      5       r\GRx                   " S6 S75      5       r\GRx                   " S8 S95      5       r\GRx                   " S: S;5      5       r " S< S=5      r\GR                  " S5      S> 5       r\GR                  SeS@ j5       r\GR                  SeSA j5       r\GRx                   " SB SC5      5       r " SD SE\5      r " SF SG\5      r " SH SI\5      rSJ\R,                  SK\4   4SL jrSMS?SN\R,                  \/\4   SO\4SP jrSQrSfSR jrSN\R,                  \/\4   SO\4SS jrST r " SU SV\5      r\GRx                   " SW SX5      5       r " SY S?\SZ9r " S[ S\\5      r\GR                  S]:  a:  \GR                   VVs/ s H  u  p#\" \S^U;   a  US_S OS`US_S  35      PM!     snnr " Sa Sb\5      r " Sc Sd\5      rgs  snn f s  snnf )ga  
Core module responsible for converting Python bytecode into TorchDynamo's symbolic execution format.

This module implements the bytecode-level tracing system that allows TorchDynamo to analyze
and transform Python code. It converts Python bytecode instructions into a symbolic format
that tracks the flow of tensors and other values through the program.

Key components:
- InstructionTranslatorBase: Base class for converting bytecode to symbolic execution
- InstructionTranslator: Main translator for function bytecode
- InliningInstructionTranslator: Handles inlining of called functions
- SpeculationLog: Manages state for speculative execution and rollback

The symbolic conversion process handles:
- Control flow (loops, conditionals, etc.)
- Function inlining and call stack management
- Tracking of program values and side effects
- Graph breaks and resumption points
- Exception handling and stack frame management

This is a core part of TorchDynamo's tracing system that enables ahead-of-time
optimization of PyTorch programs.
    N)AnyCallablecastNoReturnOptionalUnion)patch)TensorifyScalarRestartAnalysis)tracingTracingContext)
guard_bool)cache_method   )configexcgraph_break_hints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collapse_resume_framesformat_graph_break_messageget_stack_above_dynamounimplemented_v2Unsupported)get_funcname)GuardBuilderinstall_guard)GraphCompileReasonOutputGraph)DummyModuleExecutionRecorder)ContinueExecutionCacheReenterWith)
AttrSourceDictGetItemSourceGlobalSourceGlobalWeakRefSourceLocalCellSourceLocalSourceSource)is_builtin_constantis_forbidden)countersget_fake_valueget_instruction_source_311get_metrics_context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LocalGeneratorFunctionVariableLocalGeneratorObjectVariableNestedUserFunctionVariableSkipFunctionVariableUserFunctionVariableUserMethodVariable)MAX_ITERATOR_LIMIT)LazyVariableTracker)BaseListVariableListIteratorVariableListVariableSliceVariableTupleVariable)CellVariableExceptionVariableGetAttrVariableNullVariablePythonModuleVariableUnknownVariable)NNModuleVariable)supported_comparison_opsSymNodeVariableTensorVariable)SymbolicTorchFunctionStateTorchFunctionModeVariable)RemovableHandleVariableUserDefinedClassVariable!UserDefinedExceptionClassVariable"UserDefinedExceptionObjectVariable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      V/var/www/auris/envauris/lib/python3.13/site-packages/torch/_dynamo/symbolic_convert.py<lambda>r      s    (4.21    inc           
      J    [        U [        U / [        U5      Q0 5      /0 5      $ rw   )
handle_notrx   ry   rz   s      r~   r   r      s&    J.x~.	34b5r   znot inzihttps://github.com/pytorch/pytorch/issues/new?&labels=oncall%3A+pt2&projects=&template=pt2-bug-report.ymlnamereturnc                 .    [         R                  " U 5      $ )z
Import the named module and cache the result. importlib.import_module()
seems to do some filesystem checking to validate the name so not caching
this can be slow.
)	importlibimport_module)r   s    r~   _import_moduler      s     ""4((r   c                   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     r~   fail_and_restart_analysis*SpeculationEntry.fail_and_restart_analysis   s:     ;;"![[//N@N,,NKKr   )r   )__name__
__module____qualname____firstlineno__str__annotations__intr    r   boolr   r   r/   r   __static_attributes__ r   r~   r   r      s8    MK
FD+/FH'(/	Lr   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    r~   restartSpeculationLog.restart   s	    
r   c                 F    U R                   R                  5         SU l        g r   )r   clearr   r   s    r~   r   SpeculationLog.clear   s    
r   r   r   r   c                 <   [        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   SpeculationLogDivergence)r   r   r   r   r   entryprev_entry_msg
prev_entrys           r~   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
r   r   N)r   r   r   r   __doc__dataclassesfieldlistr   r   r   r   r   r   r   r   r   r   r   r   r~   r   r      sT     '2&7&7&MGT"#ME3N--%(-	-r   r   c                   X    \ rS rSr% \R
                  " \S9r\\\	4   \
S'   S\4S jrSrg)
LocalStatei"  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      r~   	<genexpr>$LocalState.render.<locals>.<genexpr>)  s'      
-KTQqcAHHJ< -Ks   $&)joinr   itemsr   s    r~   r   LocalState.render(  s/    yy 
-1-C-C-I-I-K
 
 	
r   r   N)r   r   r   r   r   r   dictr   r   rI   r   r   r   r   r   r~   r   r   "  s4    8C8I8I9tC!445 
 
r   r   c                   D    \ rS rSr% \\S'   \\S'   Sr\\	\      \S'   Sr
g)DistributedStatei/  
compile_pglocal_stateN
all_statesr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   /  s!    O-1Jj)*1r   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\
4S	 j5       rS
rg)TensorifyStatei6  force_specializationsr   r   Nc                 :    U R                   R                  U5        g rw   )r   addclsr   s     r~   
specializeTensorifyState.specialize<  s    !!%%e,r   c                     XR                   ;   $ rw   )r   r   s     r~   should_specialize TensorifyState.should_specialize@  s    1111r   c                 8    U R                   R                  5         g rw   )r   r   r   s    r~   r   TensorifyState.clearD  s    !!'')r   c                 2    [        U R                  5      S:H  $ r   )r   r   r   s    r~   emptyTensorifyState.emptyH  s    3,,-22r   r   r   N)r   r   r   r   setr   r   r   classmethodr   r   r   r   r   r   r   r   r~   r   r   6  s     '*e3s8+-s -t - - 2c 2d 2 2 * * 3d 3 3r   r   c                  6    [         R                  " [        5      $ rw   )torchdynamo_loggingget_step_loggerlogr   r   r~   _step_loggerr   M  s    ..s33r   InstructionTranslatorBasec              #   <  #    U R                   R                  nU R                   R                  n / U R                   l        SU R                   l        S v   XR                   l        X R                   l        g ! XR                   l        X R                   l        f = f7fr   )speculation_logr   r   )r{   r   r   s      r~    save_and_restart_speculation_logr   R  s        ((G$$E)%'"#$ %,"#(  &-"#( s   -B&A7 !B7"BBc              #      #     U R                   R                  nSU R                   l        S v   XR                   l        g ! WU R                   l        f = f7fNF)outputshould_exit)r{   tmps     r~   (temporarely_allow_writes_to_output_graphr   d  s>     $ii## %		 #				s   A+A  A AAc                   d    \ rS rSr% \\S'   \\S'   \\S'   Sr\\	\
\4      \S'   S rS rS	 rS
rg)BlockStackEntryin  r   targetstack_indexNwith_contextc                     U R                   S L$ rw   )r  r   s    r~   can_restoreBlockStackEntry.can_restorex  s      ,,r   c                 J   U R                   c   eU R                  (       al  [        U R                  S5      (       aQ  U R                  R                  (       a6  [	        U R                   S-
  [        U R                  R                  5      5      $ [	        U R                   S-
  5      $ )Ntarget_valuesr   )r  r  hasattrr  r4   tupler   s    r~   	resume_fnBlockStackEntry.resume_fn{  s    +++))?;;!!//  1$eD,=,=,K,K&L  t//!344r   c                     U R                   c   eU(       a  U R                   R                  5       (       d  U(       d  U R                   R                  U5      $ g rw   )r  exit_on_graph_breakexit)r   r{   is_graph_breaks      r~   r  BlockStackEntry.exit  sJ      ,,,t00DDFF$$))"--  r   r   )r   r   r   r   r    r   r   r  r   r   rM   rN   r  r  r  r   r   r   r~   r   r   n  sJ      	 (%'EEF -5.r   r   c                       \ rS rSrSrg)r   i  r   Nr   r   r   r   r   r   r   r~   r   r         r   r   c                       \ rS rSrSrg)ReturnValueOpi  r   Nr  r   r   r~   r  r    r  r   r  c                       \ rS rSrSrSrg)YieldValueOpi  zM
Signal to the symbolic tracer to stop and return control flow to the
caller
r   N)r   r   r   r   r   r   r   r   r~   r  r    s    r   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 rw   )pushcall_functionpopn)r   r   fn_varnargss     r~   implstack_op.<locals>.impl  s%    		&&&tYYu-=rBCr   )r   inspect	signature
parametersrK   	functoolswrapsr    )r  r"  r   r!  s     @@r~   stack_opr)    s]    !!"%001ER F__RD* D+ D D Kr   r   truth_fnr  c                    U[         R                  Ld  U(       a  g[        U R                  [        5      (       d   eU R                  nU R
                  U   n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_ASSERTION_ERRORr   zassertion error
LOAD_CONST)CALL_FUNCTIONPRECALLCALLr/  RAISE_VARARGST)operatortruth
isinstancer   r   instructionsr   argvalr   r  rL   create)r   r*  r  current_instruction_pointerr   	error_msgs         r~   &_detect_and_normalize_assert_statementr:    s4   , 	&4d..4444"&":":89D{{,,1$ "I89D{{l"$++s++KK	 	$q(#  !<=;;BB 	$q(#;;)#'1,'  !<={{o%II%%i01r   Fc                   ^^ Uc(  [         R                  R                  R                  5       n US   R                  US   R
                  4nSn[        R                  (       a0  [        5       nSR                  [        R                  " U5      5      nO[        5       U-   n[        U5      nSR                  [        R                  " U5      5      nSUS    SUS    S	U S
3m[        R                  (       a  TU SU S3-  mOT[        U5      -  m[         R                  R!                  SS UU4S jS9  ["        R%                  [&        R(                  5      (       a<  [*        (       d1  [,        R.                  " U5      (       a  ["        R1                  T5        g ["        R1                  SUS   US   U5        g ! [         a    U S   U S   4n GNf = f)Nco_filenameco_firstlinenor   zGraph break in user code at r   r   r   z
Graph Break Reason: z
User code traceback:
zQ
========== most recent `torch.compile` tracing attempt started here ==========

a}  
NOTE: the most recent `torch.compile` tracing attempt might not be where you applied `torch.compile`! This is due to how graph breaks are implemented - the optimized code object returned by Dynamo will call another Dynamo-generated resume function and tracing is re-enabled by calling the resume function as a normal Python function, which Dynamo intercepts as a top-level frame.
artifactc                      SSS.$ )Ndynamo_graph_break_reasonstring)r   encodingr   r   r   r~   r   !log_graph_break.<locals>.<lambda>  s    / 
r   c                  N   > T ST (       a  [         R                  " 5        3$ S 3$ )Nr   r   )	traceback
format_exc)exc_infouser_stack_traces   r~   r   rD    s'    ./rH)2F2F2H1]^Z\1]^r   )metadata_fn
payload_fnzmGraph break (user stack suppressed due to duplicate graph break) in user code at %s:%s
Graph Break Reason: %s)torch_guardsr   extract_stackr   r   
IndexErrorr   verboser)   r   rF  format_listr'   r   _loggingtrace_structuredgraph_break_logisEnabledForr   DEBUGexplainrB   r   debug)	code_optionsr   rH  
user_stack	frame_locstack_above_dynamo_formattedstack_above_dynamouser_stack_formattedrI  s	     `     @r~   log_graph_breakr_    s   ]]11??A

^,,jn.C.CD	 $& ~~35')ww!!"45(
$ ,-
:
+J7
779#8#8#DE
&y|nAil^ D%h '!	!  ~~+, -a#$ %HH	
 	C 455	NN##
 _ $  	$$W]]33+//	::
 		
 	|aLaL		
}  
 ')*
	
s   F: :GGc                    ^ ^^^^^ SmSm/ [         R                  QSPmS	UUUU4S jjmSSS[        4UUUUUU 4S jjnU$ )
NzData-dependent branchingzyDetected data-dependent branching (e.g. `if my_tensor.sum() > 0:`). Dynamo does not support tracing dynamic control flow.z1Use `torch.cond` to express dynamic control flow.c           
        > [        U R                  [        T	SU 3TT
S9S9  U R                  5       (       d  [	        SSS/ S9  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/                  [1        S5      /5        [1        UR2                  US   S9nUR5                  U5        U R                  R/                  U/U-   U-   5        g )Nattempted to jump with gb_typecontextexplanationhintsr   z;Should not compile partial graph (data-dependent branching)r   zDynamo has determined when encountering data-dependent branching (e.g. `if my_tensor.item() > 0:`) that it should not compile the partial graph.BSkipping frame because there is a graph break in a for/while loop
zgeneric_jump triggered compilezgeneric_jump       TO_BOOLr   )r  )r_  rY  r(   should_compile_partial_graphr*   maybe_has_backedgeframe_summaryr   infor   	SkipFramer  rX  r   compile_subgraphr/   rF   popcreate_call_resume_atnext_instructionr  sysversion_infoadd_output_instructionsr   r   copy_positions)r   r   value	extra_msgmsgif_nextif_jump	jump_inst_explanation_gb_type_hintsr  s           r~   jump_graph_break&generic_jump.<locals>.jump_graph_breakG  s   - 1%9(		
 0022U-  ""$$U%%'(*  HHSM--$$		%		23$$%/	{;d>P>P>R=S 	% 	
 	
,,T-B-BCIIe,,T[[9w&KK//1CI1N0OP&t{{71:F	  &++YK',AG,KLr   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[/        U5      S/ [0        R2                  QS9  U R                  U5        g U R                  R                  " S[        R4                  /[        U40 5      Q76 n[7        U U[9        UR:                  U 5      S9nU R                  R                  " S[        R                  /[        Xs40 5      Q76   U R                  U5        g UR	                  5       (       a  [        U[<        5      (       aC  UR>                  (       a2  [A        UR>                  RC                  [D        RF                  5      5        T" UR                  5       5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[        5      (       a  U RK                  5       (       a
  T" XU5        g [        U[L        5      (       a]  U R                  RO                  URP                  5      nT" U5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[R        5      (       GaW   URU                  U S5      n	[        U	[\        5      (       a  U	R_                  U / 0 5      n[        U[`        5      (       ag  [        URb                  [
        [d        45      (       aB  T" URb                  5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[        5      (       a@  URg                  5       (       a*  T(       a  U RI                  U5        U R                  U5        g g [-        S	S
U	 SU 3S/ S9  g T" S5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[        5      (       df  URi                  U 5      (       aP  T" [k        URm                  U 5      5      5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[        5      (       a   [        UR                   [        R"                  5      (       a  URg                  U R                  5      n
O[o        UR                   S:g  5      n
 T" U
5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [        U[r        Rt                  5      (       a8  T" S5      (       a*  T(       a  U RI                  U5        U R                  U5        g g SSKJ;n  UR>                  b]  U" UR>                  5      (       aF  T" URy                  5       5      (       a*  T(       a  U RI                  U5        U R                  U5        g g [-        TSU 3TTS9  g ! [V        RX                   aa    [V        RZ                  " U 5         URU                  U S5      n	 GN! [V        RX                   a    [V        RZ                  " U 5        S n	  GNf = ff = f! [V        Rp                   a+  nU RK                  5       (       a  T" XUSU 3S9s S nA$ e S nAff = f)Nr  r   z#Assertion failed on symbolic shapesr   rc  )example_value__bool____len__z3Data-dependent branching with non-constant __bool__zmethod: z
, result: z}Attempted to perform data-dependent branching on a user-defined object with a __bool__ method that did not return a constant.Tr   )r|  r   )is_constant_sourcerb  )=rt  r    rewrite_assert_with_torch_assertr:  is_python_constantr   as_python_constantjumpr4  ri   r   create_proxyrL  _assert_asyncrE   rh   sym_numSymBoolfxexperimentalsymbolic_shapesexpect_truer*   r   r   
USER_ERRORscalar_tensorrJ   r?   noderP   sourcer.   
make_guardr-   SEQUENCE_LENGTHr  rn  rf   get_submodule
module_keyrp   var_getattrr   ObservedAttributeErrorhandle_observed_exceptionrX   r  rL   r{  r   evaluate_exprhas_unpack_var_sequencer   unpack_var_sequencer   	UserErrorr   BackwardHookVariabler  get_real_value)r   r   r{  r9  sym_exprresultscalar_to_tensor_proxyscalar_to_tensormodxeval_resulter  r  r  r  r  r  r*  s                r~   innergeneric_jump.<locals>.innerz  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 #H$&= 1 < <=	 		$%)[[%=%=!4!4&7H%SU7V&"  -&,-C-H-H$O  KK$$## #$4#@"E
 IIdO##%% %!233ell55l6R6RST00233IIe$		$ 4
 u~//D4U4U4W4WT//00++++E,<,<=C}}IIe$		$  899	%%dJ7 !/00r26f&677JLL4+= =  -- IIe,		$ .  88++-- IIe,		$ .
 % U"*1#Zx @%X  D>>		%(IIdO " E>22u7T7T8
 8
 E55d;<==IIe$		$ > // emmU]];;"'"5"5dkk"BK",U]]a-?"@K
 $$IIe$		$ % y==>>~~IIe$		$ 
 3||',>u||,L,LE00233		%(IIdO 4
 !$5eW= , 	] -- --d3))$	:A11 11$7Ap == 4466+D2aSRRsU   ;\ "A^ '^ *^:],^ ;^?^  ^__:_ __)r   )r   FUNDAMENTALr    )r*  r  r  r  r  r  r  s   `` @@@@r~   generic_jumpr  ;  sb    )H	@ 		&	&;F
1M 1Mfk/ k{ k kZ Lr   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           	      x  > U R                  5       nUR                  (       a"  UR                  c   eT" XUR                  5      $  T" X5      $ ! [         GaO  nU R                  (       a;  UR                  5         [        SSU R                   3SS/[        R                  QUS9  [        U[        R                  5      (       a  e U R                  5       (       d  e [        U R                  S[        U5      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R0                  UR                   5      Ul         S nAOS nAff = fUR3                  5         g )
Nz0Graph break under GenericContextWrappingVariablez!Active generic context managers: z]Attempted to graph break in an active context manager(s) that doesn't support graph breaking.zEMove the offending context manager(s) to outside the compiled region.)rd  re  rf  rg  from_excT)rH  r   rZ  ri  graph_break)	speculater   r   r+   active_generic_context_managersremove_from_statsr*   r   CAUSED_BY_EARLIER_GRAPH_BREAKr4  r   UncapturedHigherOrderOpErrorrn  r_  rY  r   
real_stackro  rp  r   rq  rr  add_to_statsr/   r}  r   )r   r   speculationexcpr}  handle_graph_breakinner_fns        r~   wrapper>break_graph_if_unsupported.<locals>.decorator.<locals>.wrapper,  s   ..*K!!"))555)$k6H6HII)S++ 'S77 **,$ R"CDDhDhCi j %Dc.LL "&	 dC$D$DEE88::%%!t9#	 **,,]--/02  HHSM--,$6&&(!!-0%7$//%R""O'SP 113s   A F(EF##F(r   c                 ~  > 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R0                  S	5      nUS
   R3                  U5        U R                   R                  U5        OHUR4                  b   e[6        R6                  " 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  [:        R<                  " [:        R>                  S   UR0                  5      [:        R<                  " [:        R>                  S   UR0                  5      -   n	O+[:        R<                  " UR@                  UR0                  5      n	U RC                  TU	-
  5        [E        T5       H  n
U RG                  [I        5       5        M     U R                   R                  U RK                  U RL                  5      5        g )Nrh  rk     r0  r   r   rj  KW_NAMESr6  Fr<  rk     r/  )'r   rs  r$   block_stackr4  r  rk   extend_outputr  try_except_torch_function_moderY  rM   reconstruct_typetry_finallyry  get_instructionsrw  rx  r   kw_namesr  r   r   r   argrz  r  copyexn_tab_entrydisstack_effectopmapopcoder  ranger  re   ru  rv  )r   r   r   cgcleanupbr  
call_insts	inst_copyr  r}   r  s              r~   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 2$((EB
2--d333J? {{*** IIdO	*.	'33YK@KK//8   G+$$w.KK6)  #//IIi($(( $$SYYv%6A B  #//TXXFIId\)*4[		/+, !KK//**4+@+@Ar   )r'  r(  r    r/   )r  r  r  r  s   ` @r~   	decorator-break_graph_if_unsupported.<locals>.decorator+  sY    		"/	45 /	4[ /	4 
#/	4bC	-C	C	 'C	J r   r   )r  r  s   ` r~   break_graph_if_unsupportedr  *  s    xt r   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                 X    [        SU  SU 3SU  S3SU  S3/[        R                  QS9  g )NzMissing bytecode handlerz with args z=Dynamo does not know how to handle the bytecode instruction ``.z%Do not trace code that produces the `z_` bytecode instruction (see https://docs.python.org/3/library/dis.html for bytecode semantics).rc  )r*   r   SUPPORTABLE)r   r|   s     r~   _missing5BytecodeDistpatchTableMeta.__init__.<locals>._missing  sS    2!(+dV4[\b[ccef;F8 D_ _ '22		r      )super__init__r  r  r   getattrr'  partialr  getdispatch_table)
r   r   basesdctr  r   opr  i	__class__s
            r~   r  #BytecodeDistpatchTableMeta.__init__  s    c*
	 "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   @r~   r  r    s    ^J Jr   r  c                       \ rS rSr% Sr\R                  " \S9r\\	   \
S'   \R                  " SS9r\\	   \
S'   S rS	 rS
 rS rS rS rS rS rS rS rS rS r\rSrg)ExceptionStacki  zM
Exception stack that it is shared among all InstructionTranslator instances
r   
_exc_stackN)default_current_exceptionc                     S U l         g rw   r   r   s    r~   clear_current_exception&ExceptionStack.clear_current_exception  s
    "&r   c                 2    U R                  U5        Xl        g rw   )._set_context_and_break_context_reference_cycler   r   vals     r~   set_current_exception$ExceptionStack.set_current_exception  s    ;;C@"%r   c                 x    U R                   c   eU R                  U R                   5        U R                  5         g rw   )r   r   r  r   s    r~   move_current_exception_to_stack.ExceptionStack.move_current_exception_to_stack  s2    &&222D++,$$&r   c                 8    U R                   c   eU R                   $ rw   r  r   s    r~   get_current_exception$ExceptionStack.get_current_exception  s     &&222&&&r   c                     UR                   =n(       a  [        U5      [        La  U$ [        U R                  5      U-   S:  a4  U R                  U   nU R                  XBS-
  5        UR                  U5        U$ Nr   r   )__context__typerL   r   r  _set_context_recursiveset_context)r   r  prev_idxctxprevs        r~   r  %ExceptionStack._set_context_recursive  si    ??"C"S	9I(IJt(*Q.??8,D''l;OOD!
r   c                     U=p#Sn UR                   n[        U5      [        L a  g XQL a  UR                  [        S 5      5        g UnX#L a  g U(       a  UR                   nU(       + nMa  r   )r  r  rL   r  )r   r  oslow_oslow_update_togglere  s         r~   _break_context_reference_cycle-ExceptionStack._break_context_reference_cycle  ss    
 "mmGG} 00~.t45A{ !++%7!7# r   c                 v    U R                  U[        U R                  5      S-
  5        U R                  U5        g )Nr   )r  r   r  r  r  s     r~   r  =ExceptionStack._set_context_and_break_context_reference_cycle  s.    ##CT__)=)AB++C0r   c                 6    U R                   R                  5       $ rw   )r  rt  r   s    r~   rt  ExceptionStack.pop  s    ""$$r   c                 :    U R                   R                  U5        g rw   )r  r   r  s     r~   r   ExceptionStack.append  s    s#r   c                 ,    [        U R                  5      $ rw   )r   r  r   s    r~   r  ExceptionStack.__len__  s    4??##r   c                      U R                   U   $ rw   )r  )r   r   s     r~   __getitem__ExceptionStack.__getitem__  s    u%%r   c                 >    SU R                   < SU R                  < 3$ )Nzself._exc_stack=z - self._current_exception=)r  r   r   s    r~   __str__ExceptionStack.__str__  s"    "$//##?t'>'>&@AAr   r  )r   r   r   r   r   r   r   r   r  rH   r   r   r   r  r	  r  r  r  r  r  rt  r   r  r*  r-  __repr__r   r   r   r~   r  r    s     )4(9(9$(OJ_%O4?4E4Ed4S1S'&'
'841
%$$&B Hr   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'   S rS rS rS rS rS rS\S\
\   S\\\4   4S jrS  rS! rSS# jrS$ r S% r!S& r"\#RH                  S':  a  S( r%OS) r%\&S* 5       r'S+ r(S, r)S- r*S.\\   4S/ jr+S0\
\   4S1 jr,S2\4S3 jr-S4\S2\
\   4S5 jr.S6 r/S7 r0S8 r1S9 r2S: r3\/r4S; r5S< r6S= r7\8Rr                  S> 5       r:S? r;S@ r<\=SA 5       r>SB r?SC r@SD rASE rBSF rCSG rDSH rE\ErF\ErG\H" \IR                  SI5      rK\H" \IR                  SI5      rM\H" \IR                  SJ5      rN\H" \IR                  SJ5      rOSK rPSL rQSM rRSN rSSO rTSP rUSQ rVSR rWSS rXST rYSU rZSV r[S2\\4SW jr]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdS_ reS` rfSa rgSb rhSc riSd rj\k" SeSf9Sg 5       rl\k" SeSf9Sh 5       rm\k" SeSf9Si 5       rnSj roSk rpSl rqSm rrSn rsSo rtSp ruSq rvSr rwSs rxS2\4St jry\k" SuSf9Sv 5       rzSw r{Sx r|Sy r}Sz r~S{ r\4S| jrS} r\rS~ rS r\rS rS 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\" \IGRP                  5      r\" \IGRT                  5      r\" \IR                  5      r\" \IGRZ                  5      r\" \IGR^                  5      r\" \IGRb                  5      r\" \IGRf                  5      r\" \IGRj                  5      r\" \IGRn                  5      r\" \IGRr                  5      r\" \IGRr                  5      r\" \IGRx                  5      r\" \IGR|                  5      r\k" SeSf9" \" \IGR                  5      5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      r\" \IGR                  5      rS r\#RH                  S':  a  S rS rS rS rSS jr\k" SeSf9S 5       rS rS r\Er\Er\H" \IR                  SI5      r\H" \IR                  SI5      r\H" \IR                  SI5      r\H" \IR                  SI5      rS rS rS rS rS rS rS rS rS rS rS Gr S GrS Gr\k" SeSf9S 5       GrS GrS GrS GrS GrS 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S2\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\S\G\   S\G\G\GR0                        S2S"4"U 4S jjjGrSGrU =Gr$ )r   i  r   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_fnstart_pointc                     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)r9  r   s    r~   mark_inconsistent_side_effects8InstructionTranslatorBase.mark_inconsistent_side_effects7  s     *.&r   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)r5  offsetr   r5  r   r   r6  )r   
cur_offsetr   jump_offsets       r~   ro  ,InstructionTranslatorBase.maybe_has_backedge?  sy    ( --44
''333%%d&>&>&@AD{{>>{{l*"kk+ B r   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
  rY  rJ  r4  InliningInstructionTranslatorparentcellvarsr   s    r~   rN  "InstructionTranslatorBase.cellvars^  `    t[))"4#4#4]#C#IrJDN $ =>>$++"6"6"88~~r   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
  rY  rR  r4  rL  rM  freevarsr   s    r~   rT  "InstructionTranslatorBase.freevarsg  rP  r   c                     [        U S5      (       d&  U R                  5       U R                  5       -   U l        U R                  $ )N_cell_and_freevars)r	  rN  rT  rW  r   s    r~   cell_and_freevars+InstructionTranslatorBase.cell_and_freevarsp  s5    t122&*mmo&GD#&&&r   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 rw   )r   r5  r5  r1  r   r   side_effectsprune_dead_object_new)r   readsr   r   s       r~   prune_dead_locals+InstructionTranslatorBase.prune_dead_localsu  so    !$"3"3T5M5MN!11779 
9TQQZDAD9 
 	  66t<	 
s   BBr  r|   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rw   )r4  rH   )r   r  s     r~   r   :InstructionTranslatorBase.call_function.<locals>.<genexpr>  s!      
; q/**;s   r{  r  z$Attempt to trace forbidden callable )r4  rH   r   r   all	itertoolschainvaluesr	  r{  r  callabler=   AssertionErrorr  r  )r   r  r|   r`  r  s        r~   r  'InstructionTranslatorBase.call_function~  s     "o....$%%%%&$'''' 
__T==?;
 
 
 	
 
 2wxxH2tuuH**|H/E/E #Gz!RSS		"""4v67r   c                 f    [        U[        5      (       d  [        U5      nUR                  XU5      $ )z4
Redirect the call to the generator "call_function"
)r4  rS   r  r   r  r|   r`  s       r~   inline_generator_function3InstructionTranslatorBase.inline_generator_function  s/     "<==/3BF33r   c                     [         R                  (       a0  [        UR                  5       5      (       a  U R	                  XU5      $ [
        R                  XX#5      $ )z6
A call to some user defined function by inlining it.
)r   "enable_faithful_generator_behaviorr!   get_coderm  rL  inline_callrl  s       r~   inline_user_function_return5InstructionTranslatorBase.inline_user_function_return  sC     44bkkm9T9T11"FCC0<<TtTTr   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   r8  r,   f_coder=  co_name)r   r   inline_depth_strfuncnamefuncname_strs        r~   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mr   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getlinerw  r=  r   rstrip)r   log_strlines      r~   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$= r   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_locrw  r=  rx  torch._logging.structuredr  trace_source_logrU  r   rV  rX  rD   r  )r   r   r  s      r~   starts_line%InstructionTranslatorBase.starts_line  s    ;;& &&KK##V[[-@-@	
 	8$++))*((77""4D4T4T)UV 8r   c                 Z   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        [8        4 a     g[:         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rH  ) r   r5  r5  r  r4  rn  is_non_empty_graphr  r:  r   step_graph_breaktrace_bytecode_logrU  r   rV  rX  r   r6  update_block_stackr  r  r   r   r
   r   ObservedExceptionexception_handlerr  r  r+   r   r   )r   ipr   r  s       r~   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  rt  r   )r   r   r   s      r~   r  ,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#r   c                     g rw   r   r   r   s     r~   r  r    s    r   c                 4    U R                   U R                     $ rw   )r5  r   r   s    r~   rv  *InstructionTranslatorBase.next_instruction  s      !9!9::r   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   )	r   output_instructionsr:  rs  r/   rp  ry  r   r5  )r   continue_insts     r~   r  *InstructionTranslatorBase.step_graph_break!  s    ;;2222''333$$ %&84;M;M;O:PQ 	% 	

 	++!-01D4E4EE	
r   c                 .    [         R                  " S 5      $ rw   )r   current_framer   s    r~   run_ctx_mgr%InstructionTranslatorBase.run_ctx_mgr.  s     ++D11r   c                 (   U R                  5           U R                  R                  U 5        U R                  U l        U R                  5       (       a   U R                  5       (       a  M  U R                  R1                  5         [3        U [4        5      (       a  U R                  R7                  5         S S S 5        g ! [         a    e [         a    e [         a  n[        US5      (       a  SUR                  ;   ap  [        S[        R                  R                  U R                  R                  U R                  R                   5      R#                  SSSS9-   [$        R&                  S9  e S nAf[(         a6  nU R*                  (       a  U R*                  R-                  5       Ul        e S nAff = f! U R                  R1                  5         [3        U [4        5      (       a  U R                  R7                  5         f f = f! , (       d  f       g = f)Nr}  zData-dependentr   FT)print_outputinclude_strideinclude_device)file)r  r   push_txr   r>  r  r
   r&   RuntimeErrorr	  r}  printrL  r  GraphModule
nn_modulesgraphprint_readablerw  stderr	Exceptionr<  
get_recordexec_recordpop_txr4  r  r  )r   r  s     r~   runInstructionTranslatorBase.run4  s   #*##D)#'#;#; iikk iikk2 ""$ d$9::KK'')I   2 (  1e$$)9QUU)B((.. KK22DKK4E4E(.).tTX )  !ZZ  %%$($6$6$A$A$CAM	 ""$ d$9::KK'') ;G  sJ   HAB>,A	H>F1BE..F1;1F,,F11F44AH  H
Hr  c                     Ub(  [        U[        5      (       d   S[        U5       35       eU R                  R	                  U5        g )Nz"push expects VariableTracker, got )r4  rH   rF   r4  r   r  s     r~   r  InstructionTranslatorBase.push[  sB    {jo>> 	
0?	
> 	

#r   valsc                 8    U H  nU R                  U5        M     g rw   r  )r   r  r  s      r~   	push_many#InstructionTranslatorBase.push_manya  s    CIIcN r   r   c                 6    U R                   R                  5       $ rw   )r4  rt  r   s    r~   rt  InstructionTranslatorBase.pope  s    zz~~r   nc                 t    / [        [        U5       Vs/ s H  o R                  5       PM     sn5      Q$ s  snf rw   )ry   r  rt  )r   r  r}   s      r~   r  InstructionTranslatorBase.popnh  s,    :uQx8x!88:x89::8s   5
c           	         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 ! [         a    UR                  S5      (       ah   UR                  SS5      nU R	                  U R
                  U   5         N! [         a(    [        SSU 3SU S3S/[        R                  QS9    Nf = f[        S	SU 3S
U S3/ [        R                  QS9   Nf = f)N.implicitz5Attempted to read undefined local variable (implicit)z
LOAD_FAST z5Could not find an implicit local variable with name ``z(This happens in dict/list comprehensionsrc  z*Attempted to read undefined local variablez+Could not find a local variable with name `___stack)r6  r<  f_localsadd_local_varr  r1  unwrapKeyError
startswithreplacer*   r   r  rt  )r   r   r   new_names       r~   	LOAD_FAST#InstructionTranslatorBase.LOAD_FASTk  sQ   {{$--"7,,T==3FG	IId**40779:4 ??:&&  $$T* '3  	s###||C<HIId228<= 	$ W",TF 3&[\`[aab$cF.99		 !H(/"MdVST U9-889	#	s0   ,B5 5 E#0D.D:6E#9D::&E#"E#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 rw   )
r6  rX  r1  r   r[  	load_cellr  r<  r  r  )r   r   cellcontents_vars       r~   
LOAD_DEREF$InstructionTranslatorBase.LOAD_DEREF  s    {{d446666##DKK0{{//99$?		,$++">,,T[[$--:TU #?r   c                 z    UR                   nU R                  5       nUR                  U5        X0R                  U'   g rw   )r6  rt  set_name_hintr1  )r   r   r   	loaded_vts       r~   
STORE_FAST$InstructionTranslatorBase.STORE_FAST  s2    {{HHJ	%%.T"r   c                 2    U R                   UR                  	 g rw   )r1  r6  r  s     r~   DELETE_FAST%InstructionTranslatorBase.DELETE_FAST  s      -r   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 rw   )r6  rX  r1  rt  r   r[  
store_cellr4  r`   
local_namer  )r   r   r  r  s       r~   STORE_DEREF%InstructionTranslatorBase.STORE_DEREF  s    {{d446666##DKK0hhj  ++D6$----??&doo. 'r   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  rL   r7  r6  _constants_cache)r   r   r  r  s       r~   _load_const%InstructionTranslatorBase._load_const  sa    HH9#**==##A&-=-D-D4;;-WWD!!!$s
r   c                 D    U R                  U R                  U5      5        g rw   )r  r  r  s     r~   r-  $InstructionTranslatorBase.LOAD_CONST  s    		$""4()r   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rw   )r6  r<  	f_globalsadd_global_var
f_builtinsbuiltinsr2  r   r[  r  load_globalr  load_builtinrH   buildr7   )r   r   r   variabler{  s        r~   _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                 l    SnU R                  U5      n[        U5      n[        R                  " XU5      $ )Nztorch.nn.modules.module)import_sourcer   rH   r  )r   module_namemodule_sourcefglobals_values       r~   nn_modules_globals_vt/InstructionTranslatorBase.nn_modules_globals_vt  s4    /**;7'4$$T=IIr   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  rj  r  )rw  rx  r  	PUSH_NULLr  r  s     r~   LOAD_GLOBAL%InstructionTranslatorBase.LOAD_GLOBAL  sn    w&3+;+;g+E$((UV,NN4 $w&488a<NN4  ,8&r   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US/ S9  U R
                  R                  R                  XSU5        g )Nz%Storing Tensor hook handle in globalsThis is not supported.rc  )rt  r6  r7   r2  objectr   r[  track_global_existingr4  rl   r*   store_global)r   r   r{  r   r  r  s         r~   STORE_GLOBAL&InstructionTranslatorBase.STORE_GLOBAL  s    
{{d#,,,*0(D!!$';;++AA))$/
 e455?4	 	  --heDr   c                    SU;   aZ  [         R                  R                  R                  U   nUR	                  SS5      R	                  SS5      R	                  SS5      nO [        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>r}   <r  _dot_	__import_)
rL  packagepackage_importer_package_imported_modulesr  r   r   global_scopeupdate_co_namesr7   )r   r  r{  aliasr  s        r~   r   'InstructionTranslatorBase.import_source  s     k)MM22LLE ##C-55c3?GGWU  #;/E 3 3C ABCEKK,,	%)9U)BBB %##E*E""r   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
r  r   z2attempted relative import beyond top-level packager   )rsplitr   ImportError)r   r   r  levelbitsbases         r~   resolve_name&InstructionTranslatorBase.resolve_name  sQ     ~~c519-t9uRSSAw#'$q1T1r   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)rk  )
stacklevelzYcan't resolve package from __spec__ or __package__, falling back on __name__ and __path__r   __path__r  r   )r  r  rM  r   warning
rpartition)r   r  specs      r~   calc_package&InstructionTranslatorBase.calc_package  s    
 ..$$]3~~!!*-G{{$:?KK 	   N;;KK8  
 nnZ0G/!,,S1!4r   c           
      r   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[1        U5      S/ S	9  g ! [         a)    [        SSU SU SU 3S/ [        R                  QS	9   GNf = f)Nr  r}   )fromlistr!  globalszImport failurezmodule_name: z, fromlist: z, level=z"Failure when attempting to import.rc  r   r  r  zBad import resultz%Import result is not a Python module.)r  r  r6  r2   LOCAL_MOD_PREFIXr  r7   
__import__r   r*   r   r  r.  r$  	partitionr   r<  add_local_modrC   types
ModuleTyper1   r  rd   rF   )
r   r   r!  r1  r  recorded_namer{  r  pkgtop_level_module_names
             r~   IMPORT_NAME%InstructionTranslatorBase.IMPORT_NAME,  s   ))A,((*..0kk !112!E7!H:Q{mT 	 NN*NN=1E!-0F"% NN	 z'')"//%H (3(=(=c(B1(E%++,AB++K8,,]EB%%**K899II*5@A+C	;   ,+K=XJhW\V]^ D9-889	s   F /F65F6c                 H    U R                  U5        U R                  U5        g rw   )DUP_TOP
_load_attrr  s     r~   IMPORT_FROM%InstructionTranslatorBase.IMPORT_FROMe  s    Tr   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  r+   rh  r7   r   %name_of_builtins_dict_key_in_fglobalsr6   r  rH   r  r<   rL   r7  )r   r6  r  builtins_source
var_sources        r~   load_builtin_from_argval2InstructionTranslatorBase.load_builtin_from_argvali  s    (vh.>?@@oof%C==*AAO +?CJIIo++DzBC&s++++II&--C89r   c                 :    U R                  UR                  5        g rw   )rH  r6  r  s     r~   r  &InstructionTranslatorBase.load_builtinx  s    %%dkk2r   c                     U R                   c   eU R                  c   e[        5       R                  SU R                   U R                  -
  5        U R                  UR
                     U l         U R                   U l        g )Nir_count)r   r>  rA   	incrementindexofr  r  s     r~   r  InstructionTranslatorBase.jump{  sr    ''333+++''0043C3CC	
 $(<<#< 33r   FTc           	          U R                   R                  [        XR                  [	        U R
                  5      5      5        g rw   r  r   r   r  r   r4  r  s     r~   
SETUP_LOOP$InstructionTranslatorBase.SETUP_LOOP  )    kk3tzz? STr   c           	          U R                   R                  [        XR                  [	        U R
                  5      5      5        g rw   rR  r  s     r~   SETUP_EXCEPT&InstructionTranslatorBase.SETUP_EXCEPT  rU  r   c                 8    U R                   R                  5         g rw   )r  rt  r  s     r~   	POP_BLOCK#InstructionTranslatorBase.POP_BLOCK  s    r   c                 &    U R                  U5        g rw   setup_or_before_withr  s     r~   
SETUP_WITH$InstructionTranslatorBase.SETUP_WITH      !!$'r   c           	          U R                   R                  [        XR                  [	        U R
                  5      5      5        g rw   rR  r  s     r~   SETUP_FINALLY'InstructionTranslatorBase.SETUP_FINALLY  s)    kk3tzz? STr   c                 &    U R                  S 5        g rw   r  r  s     r~   BEGIN_FINALLY'InstructionTranslatorBase.BEGIN_FINALLY  s    		$r   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 )Nr  rk  )r  r  r  rL   r7  )r   r   r  r   s       r~   WITH_CLEANUP_START,InstructionTranslatorBase.WITH_CLEANUP_START  sV    IIaL	{{		#		$$$T,<,C,CD,I+JQ+NPRSTr   c                 H    U R                  S5        U R                  S 5        g )Nr  )r  r  r  s     r~   WITH_CLEANUP_FINISH-InstructionTranslatorBase.WITH_CLEANUP_FINISH  s    		!		$r   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)rO  rv  r  rL   r7  r  )r   r   addrs      r~   CALL_FINALLY&InstructionTranslatorBase.CALL_FINALLY  s;     ||D112		"))$/0		$r   c                 z    U R                  5       n[        U[        5      (       a  UR                  5       U l        g g rw   )rt  r4  rL   r  r   r   r   toss      r~   END_FINALLY%InstructionTranslatorBase.END_FINALLY  s1     hhjc+,,'*'='='?D$r   c                     UR                   nU(       a  U R                  5       nU R                  5       nU(       a  U R                  W5        g g rw   )r6  rt  r  )r   r   preserve_tosrt  r}   s        r~   POP_FINALLY%InstructionTranslatorBase.POP_FINALLY  s7    {{((*CHHJIIcN r   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  )rt  realizenext_variabler  StopIterationr   ObservedUserStopIterationr4  r  rw  rx  rL   r7  r  )r   r   itr  r  s        r~   FOR_ITER"InstructionTranslatorBase.FOR_ITER  s    XXZ!	""4(CIIbMIIcNs<<= 	!S::;;--d3 7*
 		"		*11$78IIdOO	s   3A D.BDDc                 l   [        U[        R                  [        45      (       a  UR	                  U / 0 5      n[        U R                  5      (       a]  [        U[        R                  5      (       a>  UR                  [        L a+  [        R                  " [        5      R	                  U / 0 5      nU R                  R                  U5        U R                  U5      (       a+  [        R                  " UR                  5      nU" SU 35      e[!        S[#        [        5      S/ [$        R&                  QS9  g )Nzraised exception zFailed to raise exceptionz.Attempted to raise a non-Exception type/value.rc  )r4  r   rK   rn   r  r!   rw  ra   exc_typer  r  r;  r	  _isinstance_exceptionr   get_dynamo_observed_exceptionr*   r   r   r  )r   r  observed_exception_types      r~   _raise_exception_variable3InstructionTranslatorBase._raise_exception_variable  s     )++-NO
 

 ##D"b1C
 %%3	 ; ;<<-++L9GGbRTUC 	//4 %%c**&)&G&G&U#),=cU*CDD/HH1%001		
r   c           	         UR                   S:X  aZ  [        U R                  5      (       d   eU R                  S   nU R                  U5      (       d   U5       eU R	                  U5        g UR                   S:X  a!  U R
                  S   nU R	                  U5        g U R                  5       n[        U[        5      (       an  UR                  ca  U R                  5       n U R	                  U5        U R                  R                  5       nUR                  U [        S5      [        S 5      5        [        S[        U5      S/ S9  g ! U R                  R                  5       nUR                  U [        S5      [        S 5      5        f = f)Nr   r<  r   	__cause__zRe-raise with 2 argumentsz3Dynamo does not support `raise ... from [not-None]`rc  )r  r   r;  r  r  r4  rt  r4  rL   r{  r  call_setattrr*   r   )r   r   r  from_vtcurr_excs        r~   r1  'InstructionTranslatorBase.RAISE_VARARGS  sR   88q= t(())))##B'C--c227C72**3/XX]**R.C**3/ hhjG'#3449Nhhj2237  $00FFHH)).{;=Md=S 3GQ		  $00FFHH)).{;=Md=Ss   E AFc                     U R                   S   n[        U[        5      (       d   eUR                  [        L a  [        SSS/ S9  g U R                  U5        g )Nr<  z CLEANUP_THROW with StopIterationr   zRReceived StopIteration when handling generator.throw/close. This is not supported.rc  )r4  r4  ra   r  r  r*   RERAISErs  s      r~   CLEANUP_THROW'InstructionTranslatorBase.CLEANUP_THROW  sQ    jjn#01111<<=(:p	 LLr   c                 z   [         R                  S:  af  U R                  5       nUR                  (       a"  U R                  5       nU R	                  U5        g U R                  U5        U R	                  U5        g U R                  5       nU R                  5       nU R                  5       nU R	                  U5        g )Nr  )rw  rx  rt  r6  r  r  )r   r   r  r}   _exc_tbs         r~   r  !InstructionTranslatorBase.RERAISE,  s     w&((*C{{HHJ..s3 		#..s388:D((*C((*C**3/r   c                 L    [        U[        R                  [        [        45      $ rw   )r4  r   ra   rn   ro   r  s     r~   r  /InstructionTranslatorBase._isinstance_exceptionC  s&    ++12
 	
r   c                    [         R                  S:  ar  [        U R                  5      S:  d   eU R                  S   nU R                  S   nU R	                  U5      (       d   e[        UR                  5      n[        S 5      nOq[        U R                  5      S:  d   eU R                  S   nU R                  S   nU R	                  U5      (       d   e[        UR                  5      n[        S 5      nU R                  X$X5/0 5        g )Nr     r<     ir  )	rw  rx  r   r4  r  rK   r  rL   r  )r   r   r  r  typtbs         r~   WITH_EXCEPT_START+InstructionTranslatorBase.WITH_EXCEPT_STARTM  s    w& tzz?a'''BB**R.C--c2222!#,,/C!$'Btzz?a'''BB**R.C--c2222!#,,/C!$'B2S~r2r   c           	      x
   Sn[         R                  S:  Ga]  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                  U R                  R                  5       5        U R                  U5        g U R
                  R!                  5         [#        U 5      [$        L a5  ['        S[)        U5      U/ [*        R,                  Q[*        R.                  QS9  Ue[	        U R0                  5      (       GaI  U R0                  R                  5       nUR2                  R4                  S:X  a  U R7                  S5        U R                  R                  5         [	        U R0                  5      S:X  aV  U R
                  R!                  5         [#        U 5      [$        L a(  ['        S[)        U5      US	-   / [*        R8                  QS9  UeU R0                  R                  5       nUR2                  R4                  S:X  a  M  U R                  R                  5       nU R                  R;                  5         [	        U R
                  5      UR<                  :  a5  U R                  5         [	        U R
                  5      UR<                  :  a  M5  [?        S
SS S5      nU R0                  RA                  [C        US [	        U R
                  5      5      5        [	        U R                  5      S:  at  U R                  S   nU R                  [        RD                  " 5       5        U R                  U5        U R                  [        RF                  " URH                  5      5        OoU R                  [        R                  " S 5      5        U R                  [        R                  " S 5      5        U R                  [        R                  " S 5      5        U R                  [        RD                  " 5       5        U R                  U5        U R                  [        RF                  " URH                  5      5        U R                  U5        g U R
                  R!                  5         [#        U 5      [$        L a5  ['        S[)        U5      U/ [*        R,                  Q[*        R.                  QS9  Ue)NzDynamo found no exception handler at the top-level compiled function when encountering an exception. Exception will propagate outside the compiled region.r  zObserved exceptionrc  EXCEPT_HANDLERrk  r   z#Observed exception (EXCEPT_HANDLER)z  This graph break is unexpected.g    .Ar  r  )%rw  rx  r5  r  r   r4  depthrt  lastir  r   rL   rE  r;  r  r  r   r  r  r*   r   r   r  r  r  r   r   r  
DYNAMO_BUGr  r  r    r   r   re   rK   r  )r   raised_exceptionobserved_exn_gb_explanationr  block_stack_entryexception_varexcept_handler_instold_exceptions           r~   r  +InstructionTranslatorBase.exception_handlerf  s   d 	$
 w& 44BBM
 $**o(;(;;HHJ $**o(;(;; !&&II!2243K3K3R3RS
 		$++AACD 		-( 

  ":!66$ 4 #$4 5$?.99.::	 '&4##$$ %)$4$4$8$8$:!',,337GG IIaL%%))+4++,1 

((*:)>>,(M(+,<(=,G"D-E&E(9(D(D&E /.(,(8(8(<(<(>%' (,,337GG* !% 1 1 G G I!!AAC $**o(9(E(EEHHJ $**o(9(E(EE
 '2#7Gq&Q#  ''#$7s4::O
 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$ 4 #$4 5$?.99.::	 '&r   c                    U R                  5       n[        U R                  5      S:X  a  [        S 5      nOU R                  S   nU R	                  U5        U R	                  U5        U R                  R                  5         g )Nr   r<  )rt  r   r;  rL   r  r  )r   r   r  prev_excs       r~   PUSH_EXC_INFO'InstructionTranslatorBase.PUSH_EXC_INFO  se    ( hhjt  !Q&'-H((,H		(		#99;r   c                    [         R                  S:  aG  U R                  5       n[        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.rk  )
rw  rx  rt  r   r;  r  r   r   ri  r  )r   r   r}   s      r~   
POP_EXCEPT$InstructionTranslatorBase.POP_EXCEPT  s    w&
At(())))!!#t''(1,,,#((//3CC$D    "IIaL t(())))!!#r   c                    [        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5      SU S3/ [        R                  QS9  [        R                  S:  a?  U R                  U5      (       d)  [        S[        U5      S	U S3/ [        R                  QS9  [        U[        5      (       a  UR                  nOU/nU H  n[        U[        [        [        45      (       d)  [        S
[        U5      SU S3/ [        R                  QS9  U R                  U5      (       a'  [!        UR"                  UR$                  5      (       a    g[        U[&        R                  5      (       d  M  [!        UR$                  UR$                  5      (       d  M    g   g)Nr  r  r<  z Exception with bad expected typez"`except ...` has unsupported type r  rc  zCaught non-Exception valuezCExcept expects to recieve an object of Exception type but received z#Exception with non-type expectationz!`except ...` expects a non-type: TF)r   r4  rt  rw  rx  r4  rK   r_   rn   ro   r*   r   r   r  r  r   
issubclassr  r  r   )r   expected_exc_typesexc_instanceexpected_typesexpected_types        r~   check_if_exc_matches.InstructionTranslatorBase.check_if_exc_matches  s   4::!###!XXZw&  ::b>L
  ::>>+L 12	
 
 :./@AS@TTUV5)445	 w&--l;; 8-"efresst u9-889	 (-88/55N #N ,M#65  !A."CM?RS T9-889	 )),77J%%  = = L)*C*CDD!1!1J J / ,2 r   c                 j    U R                  [        R                  " U R                  5       5      5        g rw   )r  r   rL   r  r  s     r~   CHECK_EXC_MATCH)InstructionTranslatorBase.CHECK_EXC_MATCHd  s"    		),,T-F-F-HIJr   c                 R    U R                  5       (       d  U R                  U5        g g rw   )r  r  r  s     r~   JUMP_IF_NOT_EXC_MATCH/InstructionTranslatorBase.JUMP_IF_NOT_EXC_MATCHg  s!    ((**IIdO +r   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 matchr  )r6  r  r  ru   r  r  s     r~   
COMPARE_OP$InstructionTranslatorBase.COMPARE_OPk  sB    ;;++  &II)$++6tYYq\2NOr   c                 b    U R                  [        [        5      U R                  5       /0 5        g rw   )r  rK   iterrt  r  s     r~   GET_ITER"InstructionTranslatorBase.GET_ITERq  s!    ?40488:,Cr   r   r  c                 ~    U R                  UR                  5      nU R                  5       nU R                  X20 5        g rw   r  r6  rt  r  )r   r   r|   r  s       r~   r.  'InstructionTranslatorBase.CALL_FUNCTIONt  s/    yy%XXZ2R(r   c           	      @   UR                   S:X  a  [        0 5      nU R                  5       nOgUR                   S:X  a!  U R                  5       nU R                  5       nO6[        SSUR                    3SUR                    3/ [        R
                  QS9  [        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a[  [        UR                  [        5      (       Ga;  WR                  5       nUR                  S	:X  a(  [        W[        [        45      (       a  [!        U/5      nOUR                  S
:X  aj  [        W[         5      (       aU  [#        UR$                  5      S:X  a<  [        U[        5      (       a'  [        R&                  " S5      U;   a  [        SSS/ S9  OyUR                  S:X  ai  [        W[         5      (       aT  [#        UR$                  5      S:X  a;  [        U[        5      (       a&  [        R&                  " S5      U;   a  [        SSS/ S9  [        W[(        5      (       d0  UR+                  U 5      (       a  [!        UR-                  U 5      5      n[        W[.        5      (       a  [0        R2                  " U [4        U5      n[        U[(        5      (       a  [        U[        5      (       d4  [        SS[7        U5       S[7        U5       3S/ [        R8                  QS9  UR;                  5       nU R=                  XSR$                  U5        g )Nr   r   z%Variadic function call with bad flagszflags: zHAttempted to call a variadic function (CALL_FUNCTION_EX) with bad flags rc  rj  r  viewrandom_fromz,Tensor.random_ op called with `from` keywordr   r  uniform_z-Tensor.uniform_ op called with `from` keywordz0Variadic function call with bad args/kwargs typezargs type: z, kwargs type: z2Expected args to be a list and kwargs to be a dict)r6  rP   rt  r*   r   r  rw  rx  r4  rc   rb   objri   r}  r   rL   r_   r   r   r7  r[   has_force_unpack_var_sequenceforce_unpack_var_sequencerp   rK   call_custom_dictr   rF   r  keys_as_python_constantr  )r   r   
kwargsvarsargsvarsnullr  s         r~   CALL_FUNCTION_EX*InstructionTranslatorBase.CALL_FUNCTION_EXz  s    ;;!*2.JxxzH[[AJxxzH?!$++/fgkgrgrfst5)445	 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 !J 8	 :%x77'1,z+<==$++F3zA !K 8	 &
 
44T::$X%G%G%MNH j";<<(99$jQJ($455Z)>
 >
 J%gh&7%8PZH[G\]P5)445	  779
2~~z:r   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 rw   )rt  r  r6  r4  r_   r  r  r   r   zipr  )r   r   argnamesr|   r  kwargs_listr`  s          r~   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,r   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 )Nr  r  r   co_namesr  )	r.  r   r  r6  rY  rw  rx  rA  LOAD_METHODr   r   r  r6  s       r~   LOAD_METHOD_SUPER+InstructionTranslatorBase.LOAD_METHOD_SUPER  s}    ;..tA>?kk!n"":.s3g%OOK//DE[00EFr   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 )Nr  r  r   r  )r.  r   r  r6  rY  rA  r  s       r~   LOAD_ATTR_SUPER)InstructionTranslatorBase.LOAD_ATTR_SUPER  sV    ;..tA>?kk!n"":.s3++D@Ar   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 )Nrj  r  )rA  rt  rw  rx  r  r  r   r   r  s      r~   r  %InstructionTranslatorBase.LOAD_METHOD  s{    hhjw&IIcNNN4 ( NN4 IIcNIIcNIIdOr   c                     U R                  UR                  5      nU R                  5       nUb   eU R                  5       nU R                  XB0 5        g rw   r  )r   r   r|   dummyr  s        r~   CALL_METHOD%InstructionTranslatorBase.CALL_METHOD	  sD    yy%
}}XXZ2R(r   c                     U R                  5       n[        [        5      R                  U U[        R
                  " UR                  5      /0 5      nU R                  U5        g rw   )rt  rK   r  r  rL   r7  r6  r  )r   r   r  r  s       r~   rA  $InstructionTranslatorBase._load_attr	  sN    hhj )77"))$++67

 			&r   c                     [         R                  S:  a&  UR                  S-  (       a  U R                  U5        g U R	                  U5        g )Nr  r  )rw  rx  r  r  rA  r  s     r~   	LOAD_ATTR#InstructionTranslatorBase.LOAD_ATTR	  s8    w&xx!|  &r   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                  U U[        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 )Nr  zMutating module attribute z during export.zSTORE_ATTR triggered compileTr  r  )r  r   store_attr_graph_breakr  r4  rf   rL   exportr6  rK   setattrr  r7  r+   rn  r   rX  r  r  r   )r   r   r  r  r  r  s         r~   
STORE_ATTR$InstructionTranslatorBase.STORE_ATTR	  s   nn&..t4499Q<c+,,ZEU5V5V {{ ,T[[MI?	*G$22&--dkk:C@
  	*4466II4tID!NN=))	* 	--/s   AC 
D8#AD33D8c                    [        U R                  SS9  U R                  5       (       d  [        SSS/ S9  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 breakrh  z-Should not compile partial graph (STORE_ATTR)r   zDynamo has determined when encountering an unsupported STORE_ATTR instruction (i.e. `obj.attr = val`) that it should not compile the partial graph.rc  
store_attrr  )r_  rY  rn  r*   r   rs  r/   rp  ry  r  r  ru  rv  r  s     r~   r  0InstructionTranslatorBase.store_attr_graph_break:	  s    ))2QR0022Go 	$$+L4;M;M;O:PQ 	% 	
 	++TYYt_,=>		!++&&t'<'<=	
r   c                     U R                  5       n[        [        5      R                  U U[        R
                  " UR                  5      /0 5        g rw   )rt  rK   delattrr  rL   r7  r6  r  s      r~   DELETE_ATTR%InstructionTranslatorBase.DELETE_ATTRM	  s>    hhj .."))$++67	
r   c                 0    [        S[        U 5       35      e)Nz1create_call_resume_at not overridden by subclass ri  r  r   rE  s     r~   ru  /InstructionTranslatorBase.create_call_resume_atU	  s    ?T
|L
 	
r   c                 0    [        S[        U 5       35      e)Nz8should_compile_partial_graph not overridden by subclass r  r   s    r~   rn  6InstructionTranslatorBase.should_compile_partial_graphZ	  s    FtDzlS
 	
r   r   c                 V    U R                  S5      u  p#nUR                  U SXB/0 5        g )Nrk  __setitem__r  call_method)r   r   r  r  keys        r~   STORE_SUBSCR&InstructionTranslatorBase.STORE_SUBSCR_	  s'    		!#mcZ<r   c                 T    U R                  S5      u  p#UR                  U SU/0 5        g )Nr  __delitem__r  )r   r   r  r  s       r~   DELETE_SUBSCR'InstructionTranslatorBase.DELETE_SUBSCRd	  s%    99Q<mcUB7r   c                 n    U R                  UR                  5      nU R                  [        U5      5        g rw   )r  r6  r  r_   r   r   r   s      r~   BUILD_TUPLE%InstructionTranslatorBase.BUILD_TUPLEh	  %    		$++&		-&'r   c                 n    U R                  UR                  5      nU R                  [        U5      5        g rw   )r  r6  r  r^   r  s      r~   BUILD_SLICE%InstructionTranslatorBase.BUILD_SLICEl	  r  r   c                 |    U R                  UR                  5      nU R                  [        U[	        5       S95        g Nmutation_type)r  r6  r  r]   rG   r  s      r~   
BUILD_LIST$InstructionTranslatorBase.BUILD_LISTp	  s+    		$++&		,u4D4FGHr   c                     [         R                  (       a  [        SSS/ S9  U R                  UR                  5      n[        U[        5       S9nU R                  U5        g )Nzmissing BUILD_SET handlerr   z:Missing BUILD_SET bytecode handler (for testing purposes).rc  r   )r   +inject_BUILD_SET_unimplemented_TESTING_ONLYr*   r  r6  rQ   rG   r  )r   r   r   new_sets       r~   	BUILD_SET#InstructionTranslatorBase.BUILD_SETt	  sO    ==3X	 		$++&e3C3EF		'r   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5      U S3/ [        R                  QS9   M|  f = f)Nz-Failed to unpack object for BUILD_LIST_UNPACKzU cannot be unpacked into a list for the BUILD_LIST_UNPACK bytecode (`[*x, *y, ...]`).rc  r   )r  r6  extendr  NotImplementedErrorr*   r   r   r  r  rG   )r   r   r   seqsr   seqs         r~   BUILD_LIST_UNPACK+InstructionTranslatorBase.BUILD_LIST_UNPACK	  s    yy%C	S::4@A  			#e+;+=>? '  KH#&% (2 !29-889s    A''2BBc                 ,    U R                  U[        S9  g )Nr   )r.  r_   r  s     r~   BUILD_TUPLE_UNPACK,InstructionTranslatorBase.BUILD_TUPLE_UNPACK	  s    t7r   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 )Nr  r   r   )r  r6  r   r  r  rP   rG   )r   r   r   ds       r~   	BUILD_MAP#InstructionTranslatorBase.BUILD_MAP	  sS    		$++/*U3Q3Zqt!t-.		#A5E5GHIr   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  r6  rK   r   r  r4  rP   updater   r  rG   )r   r   r   r  r  s        r~   BUILD_MAP_UNPACK*InstructionTranslatorBase.BUILD_MAP_UNPACK	  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  )rt  r  r6  r4  r_   r  r  r   r  rP   r   r  rG   )r   r   keysrg  s       r~   BUILD_CONST_KEY_MAP-InstructionTranslatorBase.BUILD_CONST_KEY_MAP	  s    xxz4;;'$....&&((((--d34yCK'''		S&'.0	
r   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 )Nr  r   r  )r  r6  r4  r  r}  r4  rP   r  )r   r   r   r   r  s        r~   MAP_ADD!InstructionTranslatorBase.MAP_ADD	  sf    yy|{{Qjj$((#++-#01111maVR8r   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   rt  r6  r4  r  r4  rQ   
is_mutabler  r   r   r   r  s       r~   SET_ADD!InstructionTranslatorBase.SET_ADD	  sn    HHJ{{Qjj$((##{++++~~tUQC44r   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   r8  rC  rE  s       r~   
SET_UPDATE$InstructionTranslatorBase.SET_UPDATE	  sk    HHJ{{Qjj$((##{++++~~hR0r   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   )rt  r6  r4  r  r}  r4  r]   rD  r   r[  mutationr   r   rE  s       r~   LIST_APPEND%InstructionTranslatorBase.LIST_APPEND	  s    HHJ{{Qjj$((#++-#|,,,,~~  ))#.		r   c                    UR                   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  rj     r  r  r   )r  rw  rx  rt  r	  r{  rL   r7  rQ  r  rU   r  )	r   r   flagsfn_namecodedefaultsclosureannotations
kwdefaultss	            r~   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:		&
	
r   c           	      P   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OPUR                  U 5      (       a  UR                  U 5      nO([        S[        U5      U S3/ [         R"                  QS9  [%        W5      UR
                  :w  a8  [        SSUR
                   S[%        U5       3U S3/ [         R&                  QS9  [)        U5       H  nU R+                  U5        M     g s  snf )	N)idxesz+Failed to unpack object for UNPACK_SEQUENCEzV cannot be unpacked into a list for the UNPACK_SEQUENCE bytecode (i.e. `a, b, c = d`).rc  z9Length mismatch when unpacking object for UNPACK_SEQUENCEzexpected length: z
, actual: za unpacked to a list for the UNPACK_SEQUENCE bytecode (i.e. `a, b, c = d`) with unexpected length.)rt  r4  ri   r  r  r6  rb   r  r  as_proxyr   rJ   r  r  r*   r   r   r  r   r  ry   r  )r   r   r-  r  proxyr  s         r~   UNPACK_SEQUENCE)InstructionTranslatorBase.UNPACK_SEQUENCE
  sa   hhjc>**))$eDKK6H)IC_--*SWWn2U2UCGG,,.9E:?:LM:LQ=Qx0:LCMC..t44//5CEC"e $( (5)445 s8t{{"S+DKK=
3s8*M"e $? ?5)445 #AIIaL ' Ns   F#c                 |   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5      U S3/ [        R                  QS9  g )Nr   i     rR  z%Failed to unpack object for UNPACK_EXz; cannot be unpacked into a list for the UNPACK_EX bytecode.rc  )r6  rt  r  r   r  r   ry   r  r_   r*   r   r   r  )
r   r   prefixsuffixr-  r  vals_prefix	vals_listvals_suffixitems
             r~   	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./ -		$ . ?C"e#^_5)445	r   c                     g rw   r   r  s     r~   r  InstructionTranslatorBase.NOP6
      r   c                 $    U R                  5         g rw   rt  r  s     r~   POP_TOP!InstructionTranslatorBase.POP_TOP9
      
r   c                     U R                  5       nU R                  5       nU R                  U5        U R                  U5        g rw   rt  r  r   r   ar  s       r~   ROT_TWO!InstructionTranslatorBase.ROT_TWO<
  s.    HHJHHJ		!		!r   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 rw   ru  )r   r   rw  r  cs        r~   	ROT_THREE#InstructionTranslatorBase.ROT_THREEB
  sD    HHJHHJHHJ		!		!		!r   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 rw   ru  )r   r   rw  r  r{  r4  s         r~   ROT_FOUR"InstructionTranslatorBase.ROT_FOURJ
  sZ    HHJHHJHHJHHJ		!		!		!		!r   c                 h    U R                  5       nU R                  U5        U R                  U5        g rw   ru  )r   r   rw  s      r~   r@  !InstructionTranslatorBase.DUP_TOPT
  s#    HHJ		!		!r   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 rw   ru  rv  s       r~   DUP_TOP_TWO%InstructionTranslatorBase.DUP_TOP_TWOY
  sD    HHJHHJ		!		!		!		!r   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   r  rk  )rK   r   r  reprascii)r   r{  flags      r~   _convert_value(InstructionTranslatorBase._convert_valuea
  sj    19"3'55dGRHHQY"4(66tWbIIQY"5)77grJJr   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   )LazySymNodeFormatStringrZ   r3  rk  z{:})rt  r4  rh   torch._dynamo.variables.lazyr  rZ   r7  r  r  r  rL   r  r  rK   r   format)r   fmt_specrS  r{  r  rZ   fmt_vars          r~   _format_value'InstructionTranslatorBase._format_valuej
  s    
e_--
 (..'8E IIe##E4<8"))$1L1L1N*NQT*TU?3::68H"Mr   c                     UR                   nUS-  S:X  a  U R                  5       nO[        R                  " S5      nU R	                  X25      $ )Nr  r   )r  rt  rL   r7  r  )r   r   rS  r  s       r~   FORMAT_VALUE&InstructionTranslatorBase.FORMAT_VALUE~
  sC    DLT!xxzH'..r2H!!(22r   c           
      X   / n/ n0 nU R                  UR                  5       GHF  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SU SU SUR                   3S/ [        R                  QS9  UR!                  UR                  5        GM!  [        S[#        U5      S	/ [        R                  QS9  GMI     U R%                  [
        R                  R'                  S
R)                  U5      X45      5        g )Nz{}zBUILD_STRING key conflictzformat_string_parts: z
, kwargs: z, part.sym_kwargs: z1Failed to build format string due to key conflictrc  zBUILD_STRING type errorzLFormat string part type is not correct - expected constant or format string.r   )r  r  r4  rL   r   r   StringFormatVariableformat_stringr*  sym_argsr   r<  
sym_kwargsr*   r   r  r8  r   r  r7  r   )r   r   format_string_partsr|   r`  parts         r~   BUILD_STRING&InstructionTranslatorBase.BUILD_STRING
  sc   )+&(-/IIdhh'D$ 011#**40D!D)"@"@AA#**4+=+=>DMM*v{{}%DOO,@,@,B(CC$ ;"78K7LJW]V^^qrv  sB  sB  rC  !D$W= 1 < <=	 doo. 5I n9-889	! (, 			**11+,d	
r   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 notr  r  )r6  r   r  )r   r   
new_argvalnew_insts       r~   IS_OPInstructionTranslatorBase.IS_OP
  sM    {{a4;;!#333;;!J!J%l:F!r   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   r  __contains__)r6  r  r  r  	UNARY_NOT)r   r   leftrightr  s        r~   CONTAINS_OP%InstructionTranslatorBase.CONTAINS_OP
  sn    {{a4;;!#333iil[[		%##D.4&"EF7NN4  r   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*  )rt  r6  r4  r  r4  r]   rD  r  rE  s       r~   LIST_EXTEND%InstructionTranslatorBase.LIST_EXTEND
  sk    HHJ{{Qjj$((##|,,,,~~hR0r   c                 ~    U R                  [        [        5      R                  X R	                  5       /0 5      5        g rw   )r  rK   r
  r  rt  r  s     r~   LIST_TO_TUPLE'InstructionTranslatorBase.LIST_TO_TUPLE
  s(    		/%(66thhj\2NOr   c                     U R                   S   nU R                  U5      (       d   eUR                  [        L a:  [        R
                  " [        5      R                  U / 0 5      nX0R                   S'   g g Nr<  )r4  r  r  r  r   rK   r  r  )r   r   r  new_vals       r~   STOPITERATION_ERROR-InstructionTranslatorBase.STOPITERATION_ERROR
  sj     jjn))#....<<=(//=KKG
 %JJrN )r   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 rI  )	rt  r6  r4  r  r}  r4  rP   rD  r  rE  s       r~   
DICT_MERGE$InstructionTranslatorBase.DICT_MERGE
  su    HHJ{{Qjj$((#++-#01111~~hR0r   c                 $    U R                  5         g rw   rp  r  s     r~   	GEN_START#InstructionTranslatorBase.GEN_START
  rs  r   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<  r  )r4  r  r  rL   r7  r   r  r  rs  s      r~   GET_LEN!InstructionTranslatorBase.GET_LEN
  s_    jjn!!##II&--c#2H2H2J.KLMIIcoodIr2>?r   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)
r4  r4  rP   r   collectionsabcMappingr  rL   r7  rs  s      r~   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5r   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 r  )r4  r  r  r4  r  r  Sequencer   bytes	bytearrayr  rL   r7  )r   r   rt  	tos_values       r~   MATCH_SEQUENCE(InstructionTranslatorBase.MATCH_SEQUENCE
  s    jjn%%''''**,	i!9!9:::UI.D
 D
 II&--d34II&--e45r   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<  r  c              3   ,   >#    U  H	  oT;   v   M     g 7frw   r   )r   r   tos1s     r~   r   7InstructionTranslatorBase.MATCH_KEYS.<locals>.<genexpr>
  s     &#QDy#s   r  TF)r4  r4  rP   rd  r  r_   getitem_constrw  rx  rL   r7  )r   r   rt  r   r  s       @r~   
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 )Nri  )rH  r  s     r~   r,  .InstructionTranslatorBase.LOAD_ASSERTION_ERROR  s    %%&67r   c                 |    UR                   S:X  a  U R                  U5        SU l        g U R                  (       a   eg )Nr   F)r  append_prefix_instr6  r  s     r~   RESUME InstructionTranslatorBase.RESUME0  s5    88q=##D)&+D#.....r   c                 4    [         UR                     " X5      $ rw   )_binary_op_lookupr  r  s     r~   	BINARY_OP#InstructionTranslatorBase.BINARY_OP9  s    $TXX.t::r   c                     g rw   r   r  s     r~   r/  !InstructionTranslatorBase.PRECALL<  rn  r   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  )rY  r  r4  r
  r   r  rL   r7  )r   r   r  r   s       r~   r  "InstructionTranslatorBase.KW_NAMES?  sm    $$[1$((;(E****DdC(((( }}$$$(//h?r   c                 6    U R                  [        5       5        g rw   )r  rc   r  s     r~   r  #InstructionTranslatorBase.PUSH_NULLG  s    		,.!r   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)Nrj  r   r  r   r   )rw  rx  rt  r4  r_   r  r  r  r{  r  r  rc   r   r   r  r  )	r   r   call_kwr  contentsr  r|   r  r`  s	            r~   _callInstructionTranslatorBase._callJ  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 rw   r  r  s     r~   r0  InstructionTranslatorBase.CALLs  s    

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

DHH90EtzzRT~-

2

DHH9-r   c                     g rw   r   r  s     r~   CACHEInstructionTranslatorBase.CACHE  rn  r   c                 &    U R                  U5        g rw   r]  r  s     r~   BEFORE_WITH%InstructionTranslatorBase.BEFORE_WITH  ra  r   c           	      :   U R                  5       n[        U[        [        45      (       d#  [	        SSU 3SUR                  5        S3SS/S9  [        U[        5      (       a0  UR                  5       (       d  U R                  R                  U5        [        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 R!                  U5        U(       a  [        U ["        5      (       a:  U R                  R                  [%        X['        U R(                  5      U5      5        O8U R                  R                  [%        X['        U R(                  5      5      5        U R!                  UR+                  U 5      5        g )
NzUnsupported context managerz$Attempted SETUP_WITH/BEFORE_WITH on z%Dynamo does not know how to enter a `z` context manager.z,Avoid using the unsupported context manager.zFile an issue to PyTorch. Simple context managers can potentially be supported, but note that context managers can't be supported in generalrc  r  r<  )rt  r4  rM   rN   r*   python_type_namesupports_graph_breaksr  r   rO   r  rw  rx  r  r  rv  r  r  r   r   r4  enter)r   r   r  r  r  s        r~   r^  .InstructionTranslatorBase.setup_or_before_with  s   hhj)+IJ
 
 5>seDCCDXDXDZC[[mnBS		 s:;;--//0077< )+IJ
 
 	
 
 (KK

 w&
 !!$$%%,,D4D4DR4H4O4OO..<<CC[[F		$$ 566  ''#D#djj/3G   ''c$**o(VW		#))D/"r   c                 `    U R                   (       d   eU R                  R                  U5        g rw   )r6  r7  r   r  s     r~   r  ,InstructionTranslatorBase.append_prefix_inst  s%    &&&&  &r   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|  )rw  rx  r6  r4  r1  r6  rc   r   r[  track_cell_newr  r  s     r~   	MAKE_CELL#InstructionTranslatorBase.MAKE_CELL  sv    w&t/F/F d224;;?NNNN((779   - ##D)r   c                 &    U R                  U5        g rw   r  r  s     r~   COPY_FREE_VARS(InstructionTranslatorBase.COPY_FREE_VARS      %r   c                 &    U R                  U5        g rw   r  r  s     r~   RETURN_GENERATOR*InstructionTranslatorBase.RETURN_GENERATOR  r  r   c                 p    [         R                  S:  a  U R                  5         g U R                  S5        g )Nrj  r  )rw  rx  rt  r  r  s     r~   END_FOR!InstructionTranslatorBase.END_FOR  s$    w&HHJIIaLr   c                     [        U R                  UR                     [        5      (       a3  [	        SUR                  SUR                   3/ [
        R                  QS9  U R                  U5        g )Nz)LOAD_FAST_CHECK on uninitialized variablez/Attempted to load uninitialized local variable rc  )r4  r1  r6  rc   r*   r   r  r  r  s     r~   LOAD_FAST_CHECK)InstructionTranslatorBase.LOAD_FAST_CHECK  s[    d**4;;7FFCMdkk][5)445	 	tr   c                     UR                   U R                  ;  a  U R                  [        5       5        OU R	                  U5        [        5       U R                  UR                   '   g rw   )r6  r1  r  rc   r  r  s     r~   LOAD_FAST_AND_CLEAR-InstructionTranslatorBase.LOAD_FAST_AND_CLEAR  sD    ;;d222IIln%NN4 ,8NT[[)r   c                     U R                  [        R                  " USS95        UR                  S-  (       a  U R	                  U5        g U R                  U5        g )Nr  r  r   )r.  r   r  r  r  rA  r  s     r~   LOAD_SUPER_ATTR)InstructionTranslatorBase.LOAD_SUPER_ATTR  sB    ;..tA>?88a<T"OOD!r   c                    UR                   S:X  a  U R                  U5        g 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SUR                    3SUR                    S3/ [        R                  QS9  g )	Nrk        z Missing CALL_INTRINSIC_1 handlerzCALL_INTRINSIC_1 operand: z,No handler implemented for CALL_INTRINSIC_1 z instruction.rc  )
r6  r  UNARY_POSITIVEr  r_   rt  r  r*   r   r  r  s     r~   CALL_INTRINSIC_1*InstructionTranslatorBase.CALL_INTRINSIC_1  s    ;;!$$T*[[A%[[AIImDHHJ$H$H$NOP:4T[[MBJ4;;-Wde6)556	r   c                 f    U R                  5       nU R                  5         U R                  U5        g rw   ru  rs  s      r~   END_SEND"InstructionTranslatorBase.END_SEND  s!    hhj
		#r   c                 $    U R                  USS9  g )NT)r  r  r  s     r~   CALL_KW!InstructionTranslatorBase.CALL_KW  s    

4
&r   c                 <    U R                   R                  S;   d   eg )N)POP_JUMP_IF_TRUEPOP_JUMP_IF_FALSEr  )rv  r   r  s     r~   rm  !InstructionTranslatorBase.TO_BOOL  s'     $$++ 0
 
 	
 
r   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 )NrR  r  r  r   )	r  rt  r4  rU   rW  rX  rY  rV  r  )r   r   rS  r  attrs        r~   SET_FUNCTION_ATTRIBUTE0InstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE%  sp    XXZ"89999xxz4<JT\!NT\ MT\K		"r   c                 v    U R                  U R                  U R                  5       UR                  5      5        g rw   )r  r  rt  r6  r  s     r~   CONVERT_VALUE'InstructionTranslatorBase.CONVERT_VALUE6  s%    		$%%dhhj$++>?r   c                 P    U R                  [        R                  " S5      S5        g )Nr   r   )r  rL   r7  r  s     r~   FORMAT_SIMPLE'InstructionTranslatorBase.FORMAT_SIMPLE9  s    +2226:r   c                 D    U R                  U R                  5       S5        g r   )r  rt  r  s     r~   FORMAT_WITH_SPEC*InstructionTranslatorBase.FORMAT_WITH_SPEC<  s    488:q)r   c                 R    U R                   R                  5       S:  a	  S U l        gg)Nr   c                      gNTr   r   r   r~   r   >InstructionTranslatorBase.is_non_empty_graph.<locals>.<lambda>B  s    dr   TF)r   count_callsr  r   s    r~   r  ,InstructionTranslatorBase.is_non_empty_graph?  s%    ;;""$q(&2D#r   c           
          Uc  / nSR                  [        R                  " U R                  5       /[	        [        U5      5      -   5      5      $ )Nr   )r   rF  rQ  rp  r   ry   )r   additional_stack_framess     r~   format_frame_summary.InstructionTranslatorBase.format_frame_summaryF  sL    "*&(#ww!!##%&h7N.O)PP
 	
r   c           	          [         R                  " [        U R                  SS5      U R                  [        U R                  SS5      SS9$ )Nr=  	<unknown>rx  F)lookup_line)rF  FrameSummaryr  rw  r   r   s    r~   rp  'InstructionTranslatorBase.frame_summaryO  s?    %%DKK<KKDKKK8	
 	
r   c                     [        U R                  SS5      n[        R                  " S5      nUR	                  U5      S L$ )Nr=  rC  z.*torch/nn/modules.*)r  rw  recompilematch)r   r   nn_modules_patterns      r~   is_co_filename_from_nn_modules8InstructionTranslatorBase.is_co_filename_from_nn_modulesW  s:    4;;{CZZ(?@!''1==r   c                     U R                   R                  U[        R                  " U5      5      n[	        [        U5      R                  [        R                  5      5        U$ rw   )	r   install_global_by_idweakrefrefr.   r8   r  r-   WEAKREF_ALIVE)r   rd  r{  global_names       r~   store_global_weakref_by_id4InstructionTranslatorBase.store_global_weakref_by_id\  sJ    kk66vw{{5?QR,778R8RS	
 r   c                 B    U R                   R                  R                  $ rw   )r   tracing_context	fake_moder   s    r~   rX  #InstructionTranslatorBase.fake_modec  s    {{**444r   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   rZ  priors      r~   strict_translation_mode1InstructionTranslatorBase.strict_translation_modeg  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      $ r  )r   r   r   rw  r=  r   r5  r   s    r~   r  #InstructionTranslatorBase.speculates  s|    ''333''!+++##((KK##KK$$q(d66:;	
 	
r   r5  r  r  r  rY  rw  r  r   distributed_staterW  c                   > [         TU ]  5         Xl        Xl        Xl        Xpl        Xl        Xl        / U l        SU l	        S U l
        [        S5      U l        / U l        / U l        SU l        S U l        SU l        / U l        Xl        X l        [+        U R(                  5      U l        UU l        X@l        XPl        X`l        Xl        Ub&  [8        R:                  (       a  [=        U
UUS9U l        OS U l        0 U l         0 U l!        Xl"        SU l#        S U l$        S U l%        [L        RN                  S:  aC  SS	K(J)nJ*nJ+nJ,n  U
RZ                  UU-  U-  U-  -  (       a  U R]                  [_        S 5      5        Xl0        SU l1        S /[e        U
Rf                  5      -  U l4        [j        Rl                  " U
Rn                  U5        g )
Nr   r  r<  T)rU  rW  rY  F)rk  
   r   )CO_ASYNC_GENERATORCO_COROUTINECO_GENERATORCO_ITERABLE_COROUTINE)8r  r  r   ra  r   r1  r2  r3  r4  r   r>  r   r5  r  r  r   r  r6  r7  r;  r5  r   rO  r  r  r  rY  rw  r   replay_record_enabledr2   r<  nn_module_stack	num_callsr  	one_graphr:  r=  rw  rx  resume_executionrd  re  rf  rg  co_flagsr  rK   r8  r9  r   r  r  r  	lazycacher=  )r   r   r5  r  r  r  rY  r1  r2  r3  rw  r  r8  r   r;  ra  rW  rd  re  rf  rg  r  s                        r~   r  "InstructionTranslatorBase.__init__}  s   ( 	.!2 . 0-J*
#$ #5e#< UW,"&( 0</:4;L;L/M 	 *3*4,8&, 6#?#?!2W<"D "&D BD)+#'  $w&  |+.CCFXX 		/$/0().&BF#K
 B
 	F..	:r   )&rW  rJ  r  rR  r6  r  r  rY  r5  r:  ra  r<  r;  r  r  rw  r  r  r9  rO  r8  r   r5  r  r  r   ri  rj  rk  r   r7  r   r4  r>  r=  r2  r1  r3  rw   )F(  r   r   r   r   r0   r   r   r   rH   rj   r   r   r   r    r   rL   r   r   r   r  r2   r   r@  ro  rN  rT  rX  r^  r  rm  rs  r|  r  r  r  rw  rx  r  propertyrv  r  r  r  r  r  rt  r  r  r  r  r  r  LOAD_CLOSUREr  r-  r  r'  cached_propertyr  r  r  r   r   r$  r.  r=  rB  rH  r  r  JUMP_FORWARDJUMP_ABSOLUTEr  r2  not_r)  r3  r(  JUMP_IF_FALSE_OR_POPJUMP_IF_TRUE_OR_POPrS  rW  rZ  r_  rc  rf  ri  rl  rp  ru  ry  r  r   r  r1  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  r  r  r  r  r  r  rA  r  r  r  r  ru  rn  r  r  r  r  r"  r'  r]   r.  r1  BUILD_TUPLE_UNPACK_WITH_CALLr5  r9  BUILD_MAP_UNPACK_WITH_CALLr=  r@  rF  rJ  rN  rZ  r`  rj  r  rq  rx  r|  r  r@  r  r  r  r  r  r  r  r  r  r  r  DICT_UPDATEr  r  r  r  r  r,  r)  posr  negUNARY_NEGATIVEr  invertUNARY_INVERTpowBINARY_POWERmulBINARY_MULTIPLYmatmulBINARY_MATRIX_MULTIPLYfloordivBINARY_FLOOR_DIVIDEtruedivBINARY_TRUE_DIVIDEr  BINARY_MODULOBINARY_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_ORr  r  r/  r  r  r  r0  r  r  r  JUMP_BACKWARD_NO_INTERRUPTPOP_JUMP_FORWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_FORWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_FALSEr  r  r^  r  r  r	  r  r  r  r  r  r  r"  r%  rm  r-  r0  r3  r6  r  r@  rp  rL  rT  rX  
contextlibcontextmanagerr]  r  r8  CodeTyper   r   r
  CellTyper  r   r  r  s   @r~   r   r     sf	    #.//3/00#==  !#&$$o&&K'(({####!"233I  -..x(94(?@AA#.>'
=88 ?#8 S/)*	8,4UnW+=Z 7"%	+R	 ; ;
2%*N1 d?3  _  ;c ;d?3 ;!+FV/./ L*J, J J!E( # #$
2:7r:34 LM$X]]E:#HNNE:'t<&x~~t<UU(UU("
 "
H@0.
32y'v<:$*ObKPD  Q') ()
  Q'_; (_;B  Q'	- (	-GB )08
&



d 

  Q'= (=8((I
 +7 @ 8 $6 J

 "2
 951$
L:0
N(3
@"!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(9#v'	*&&;"$  Q'' ('
"@;*

>
 5 5 	*/9JD9P0Q 	* 	*
+ 
8 48%[;[; ;'[; sCx.	[;
 S>[; cN[; 38n[; c?23[; sO34[; (B[; [; [; [; ([; %[;  $$45![;$ %/0%[;& 
'[; [; [;r   )	metaclassc            
          ^  \ rS rSr\SS j5       r\R                  S 5       rS\	\
   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SrU =r$ )r  i  r   c                  "    [         R                  $ rw   )tls
current_txr   r   r~   r   InstructionTranslator.current_tx  s    ~~r   c              #      #    [        [        SS 5      nU [        l         S v   U[        l        g ! U[        l        f = f7f)Nr  )r  r  r  )r   r\  s     r~   set_current_tx$InstructionTranslator.set_current_tx  s0     \40	#"CNUCNs   A 0 A =A r5  r   r;  ra  Nc                   > [        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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["        R$                  " U5      R'                  S
S 5      nUR)                  5        Ho  u  nnUU;  d  M  S nU(       a)  [+        UR'                  U0 5      R)                  5       5      n[,        R.                  " U[1        USUS95      nUU R                  U'   Mq     U R                  R2                  nU R5                  5        Hy  nUU;   aJ  UU   n[1        USSS9n[,        R.                  " UU5      nUR7                  5       nUR9                  UU5        OUR7                  5       nUUl        UU R                  U'   M{     [=        U R?                  5       U5       Hf  u  nn[A        U5      n[1        USS9n [,        R.                  " URB                  U5      nURK                  UUU5      nUUl        UU R                  U'   Mh     [M        U5      U l'        / U l(        U(       a.  [F        R,                  RS                  U R                  5      U l        S S S 5        S S S 5        g ! [D         a    [F        RH                  " 5       n Nf = f! , (       d  f       N<= f! , (       d  f       g = f)Nztorchdynamo start tracing  r=  r   r>  )local_scoper  rw  torch_function_mode_stackr   )r   r5  r  r  r  rW  rY  r1  r2  r3  rw  r  r8  r   r;  ra  z4Export without one graph - something has gone wrong.dynamismT)is_inputr  )r  is_derefed_cell_contents)r  )*r   r   INFOrx  r  r  r0   _throw_if_in_functorchr   r   rW  r  rk  r  r1  r   rX  r#   get_contextr  r   	frozensetrZ   r7  r:   r[  rN  r  r  r  r  rT  r9   cell_contents
ValueErrorr   DeletedVariabletrack_cell_existingrj   r3  debug_localsrealize_all)r   r5  rw  r  r  r  rW  r  rY  compiler_fnrk  r  export_constraintsframe_stater   r;  ra  rX  r  r   r{  local_dynamismvarr[  contents_sourcer  cell_varr  cell_sourcer  s                                r~   r  InstructionTranslator.__init__  sb   & 	LL((8,}:U9VVWXdeuXvWwx	
 	"$&*C &!%*.+%/9 	 	
> 	##% T[[00143F3F3H#,N K{{~~ J~ $&D *-d.D.D.F*G#//7;;JMH'~~/e00%)N)28<<b3I3O3O3Q)R-44# %)%3C 25D((.  0"  ;;33L8#$TNE* '2td'O 5H4N4N5L  ,::<H ++HlC+::<H&*#-5$$T*G (N "$--/7;
d-d3"-dT"R?#6#=#=**O$L (;;| '+#-5$$T* <  2L)2D. VXD (1'D'D'P'P((($} 4I11Z " ?#,#<#<#>L?[ 4I3H11sQ   M&BM D=M>!L)A9MM)M	M
M	M
M	M
M-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b[  UR                  5       U;   aF  X!LaA  UR                  5       R                  R!                  5       nSU SU SU S3n[#        SSU/ S	9  g g g g )
Neagerr  zhIf you are reaching here, it means dynamo failed for one of the following reasons:
- Calling torch.func.zP(compiled_fn) function from eager mode is not supported. Ensure that torch.func.zp is also wrapped within a torch.compile function. For more information, see PyTorch issue #128711.
- torch.func.z2(fn) requires the function to be inlined by dynamoz%Unsupported functorch tracing attemptr   rc  )rL  _dynamolookup_backendr$  getattr_staticr   r  _C
_functorchpeek_interpreter_stackTransformTypeVmapGradJvpr  r   lowerr*   )r   r  r  ciforbidden_keysr   r}  s          r~   r  ,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>r   r  c                     [        U[        5      (       a  U R                  UR                     $ [        U[        5      (       a  U R
                  UR                     $ [        erw   )r4  r:   r  r  r7   r  rS  r  )r   r  s     r~   get_example_value'InstructionTranslator.get_example_value  sK    fk**==!2!233fl++>>&"4"455r   c                 "   > [         TU ]  5         g rw   )r  r  )r   r  s    r~   r  InstructionTranslator.run  s    r   c                 l   [         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                  (       + $ )Nr  r<  Fc              3   @   #    U  H  oR                  5       v   M     g 7frw   )r  r   r  s     r~   r   EInstructionTranslator.should_compile_partial_graph.<locals>.<genexpr>  s     :)9A)9   )	rw  rx  r5  r  r  r  rd  rk  r  )r   r   s     r~   rn  2InstructionTranslator.should_compile_partial_graph  s    w&,,::E$$D<L<LR<P<W<W(W:)9)9:: 9NN"9888	
r   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 )NrC  rD  r  c              3   d   >#    U  H%  nUT;   d  M  UTR                  5       ;  d  M!  Uv   M'     g 7frw   )rX  )r   r   r]  r   s     r~   r   >InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  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rw   r  __instancecheck__rc   r1  r   r   r   s     r~   r   r    s5      
!)),8L8LQ8OP A!
   0A 	A c              3      >#    U  H5  n[         R                  [        TR                  U   5      (       d  M1  Uv   M7     g 7frw   r  r  s     r~   r   r    s5      
!%%lD4H4H4KL A!r  r  r   z&variables should not be NULL in < 3.12r   r   rq  r  r  r  r  )r  __resume_at_c              3   L   #    U  H  oR                   R                  v   M     g 7frw   )r  rE  r  s     r~   r   r    s     <+;a((//+;s   "$c              3   @   #    U  H  oR                  5       v   M     g 7frw   )r  r  s     r~   r   r    s     :)9A++--)9r  orig_graphmodulec                      g rw   r   r   r   r~   r   =InstructionTranslator.create_call_resume_at.<locals>.<lambda>$  s    r   TF)4r   r   r   r6  r   r5  r
  r1  r<  rw  rx  r   r$   	enumerater4  r  r  rM   r   r  r   r  r  r   append_outputrc   ry   r  pop_nullr"   rE  r3   lookuprw  r   r  r#   r  r  rP  rQ  rS  r   install_global_unsafemake_function_with_closurer8  FunctionTyper  load_function_namecreate_loadr   r  )r   r   all_argnamesr  argnames_nullr  stack_ctx_varsr  r  r  r  argnames_ctx_varsr   
null_idxesnull_cntj	stack_lenr!  new_codeorig_graphmodule_mayber   r]  s   `                    @r~   ru  +InstructionTranslator.create_call_resume_at  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)	r1  rg  r4  rm   r  r  rL  nnModule)r   r   s     r~   $symbolic_locals_contain_module_class:InstructionTranslator.symbolic_locals_contain_module_class;  sU    %%,,.A!566:$$&< < 	 /
 r   c                     [        U R                  5      (       a\  U R                  S   =n(       aE  [        U[        5      (       a/  [	        UR                  U 5      [        5       S9U R                  S'   g g g g )Nr<  r   )r   r4  r4  rT   r\   r  rG   )r   rt  s     r~   "replace_tos_if_return_is_generator8InstructionTranslator.replace_tos_if_return_is_generatorC  se    

OO

2&&3 <==1--d3.0DJJrN > ' r   c           	         U R                  5         U R                  c   eU R                  c   e[        5       R	                  SU R                  U R                  -
  5        [
        R                  (       d|  U R                  R                  5       S:X  a^  U R                  (       dM  U R                  5       (       d8  U R                  (       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 [1        SU R3                  5       /S	S
9S9  UR(                  S:X  a  [5        S5      O[5        SUR6                  S9nU R                  R9                  U/5        [:        e)NrM  r   z#because no content in function callztorchdynamo done tracing r   rv  z%s triggered compilereturn_valueF)r  rh  rC  rD  r  )r&  r   r>  rA   rN  r   allow_empty_graphsr   r<  r9  r#  r  rk  r   rr  r   r   r  rw  rx  r   r   rX  rs  r/   rp  r   r6  ry  r  )r   r   return_insts      r~   _returnInstructionTranslator._returnN  sz   //1''333+++''0043C3CC	

 ))'')Q.22==??KKNN-- EFF#' LL'(;(;'<Bt{{m1M	
 			($++6$$%!3!3!5 6E 	% 	
 {{n, ~.#N4;;G 	
 	++[M:r   c                 &    U R                  U5        g rw   r,  r  s     r~   rC  "InstructionTranslator.RETURN_VALUEt      Tr   c                 &    U R                  U5        g rw   r/  r  s     r~   rD  "InstructionTranslator.RETURN_CONSTw  r1  r   )r  r  r   rk  r1  r3  )r   r  )r   r   r   r   staticmethodr  r  r  r  r   r    r   r  r   r   r  r  r;   r  r  rn  ru  r#  r&  r,  rC  rD  r   r  r  s   @r~   r  r    s      # #Z;'Z (Z  %!Z" $$45#Z$ 
%Zx> 
}%~	$L r   r  r  INPLACErk  BINARY_c                     ^  \ rS rSr% Sr\\   \S'   \S 5       r	\
S 5       r\
S\S\\   4S j5       rS	 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"$ )rL  i  z Trace and inline a called methodsymbolic_resultc                     [         R                  " [        S[        S   05         U R                  XX45      nUR	                  5       sS S S 5        $ ! , (       d  f       g = f)Nunimplementedrr  )r	   r   r>   build_inline_tracerinline_call_)r   rM  funcr|   r`  tracers         r~   rr  )InliningInstructionTranslator.inline_call  sE    ZZ?H]4K"LM,,V4HF&&( NMMs   "A
Ac                    U R                  5       (       a  [        S[        U 5      S/ S9  [        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3/nSU R                  5       ;  a  USU SU R                  5        S3S/-  n[        SSU SU R                  5        SU R                  5        SUR                    3SU S3US9  [#        U [$        5      (       ab  [&        R(                  " U R+                  5       SS
5      (       a7  [        S[        U R+                  5       5      SU R+                  5        S3S/S9  g U$ ) NzInline attempt with __self__zAttempted to inline a function with the `__self__` attribute. Dynamo is expected to decompose method calls into function calls with a `self` argument.rc  T)is_inlined_callr   )!produce_trampoline_autograd_applyr  _originFz"allowlist in dynamo known functionr   zAvoid calling the function `r  r  zRemove the function `z` or the file `zv` from torch/_dynamo/trace_rules.py. More graph breaks may occur as a result of attempting to trace into the function.z Please file an issue to PyTorch.z.Attempted to inline function marked as skippedz
qualname: z, name: z, filename: `z`, skip reason: z?Dynamo developers have intentionally marked that the function `z` should not be traced._torchdynamo_disablez2Skip inlining `torch.compiler.disable()`d functionzSkip inlining function z3 since it was wrapped with `torch.compiler.disable`z(Remove the `torch.compiler.disable` call)has_selfr*   r   r   check_verboseskippedtorch._dynamo.variables.miscrB  r	  r  r  rC  
SkipResultr   get_filenameget_namer   r4  rW   r$  r  get_function)r=  r  rB  fn_qualnamerg  s        r~   check_inlineable.InliningInstructionTranslator.check_inlineable  s   ==??6D	k **4F>>V wtT40)<<1U B #--?  3:$2E2E$''..2K.{m2>E  1 1 33+K=HYHYH[G\ ]= = 7	  H$[M$--/9J K"//122B6==/S]^i]j k( ( d011g6L6L!77
 7
 LD--/05d6G6G6I5JJ}~>	 Mr   r=  r|   c                 (  ^^^^ [        U[        5      (       a  [        SSU 3S/ S9  [        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SU SU 3S/ [0        R2                  QS9  M>     UR#                  5       mTR4                  S;   aS  U(       a"  [        US   [6        R8                  5      (       d*  [        SSTR4                   SU 3STR4                   S3/ S9  Sn	[:        R<                  R>                  R@                  RC                  S5      (       a'  S[D        RF                  " T5      RE                  5        3n	[H        RJ                  S:  ac  U RL                  mU RN                  mU RQ                  TRR                  RT                  S9mUUUU4S jn
[V        RY                  S[[        U
5      5        [\        RY                  STXR^                  5        U(       a  [        US   [`        5      (       a  U Rb                  Re                  US   Rf                  5      n[        U[:        Rh                  Rj                  5      (       aA  [l        Rn                  " U5      [p        Rr                  " URt                  Rv                  5      S'   [y        T5      (       a&  [{        U TUU R|                  U R~                  U5      nU$ [        U[        5      (       a   e[        U TUU R|                  U R~                  U5      nU$ ! [         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)NzEAttempted to inline function marked as skipped (SkipFunctionVariable)z+Attempted to inline a SkipFunctionVariable zdAttempted to inline a function that was previously determined to be marked as intentionally skipped.rc  Fz;{reason}.
  func = {func}, args = {args}, kwargs = {kwargs}'z' r   )r   r=  r|   r`  z:Encountered unconverted argument when attempting to inlinezfunc: z, arg: zWAn argument to an inlined function was not successfully converted to a VariableTracker.)r  __setattr__r   z2Unsupported __setitem__/__setattr__ inline attemptzcode name: z, args: zAttempted to inline z: where first argument (self) is not a user-defined object.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  rx  )r  rU  cur_instheaderparent_codes    r~   get_trace_call_log_strQInliningInstructionTranslator.build_inline_tracer.<locals>.get_trace_call_log_str  s5    1+xHOOQ,T\\N&4&QQr   r  zINLINING %s%s, %sr	  )@r4  rV   r*   rW   rU   rS   rT   rL  rN  rG  	bind_args	TypeErrorr%   r  r   rK  rJ  rq  r>  python_typere  rf  rg  rH   r   r  rx  r   rp   rL  rR  	_internal	log_stateis_artifact_enabledr  Bytecoderw  rx  r5  rw  r|  	positionsr   trace_call_logrX  rD   r   r   rf   r   r  r  r  r  rP  rQ  r#   r  forward__code__r!   &InliningGeneratorInstructionTranslatorr2  r3  )rM  r=  r|   r`  r  
sub_localsr  r  r   re  rX  moduler>  rU  rU  rV  rW  s                @@@@r~   r;  1InliningInstructionTranslator.build_inline_tracer  s    d011_EdVL C	 $*.,	
 
 	
 
 /??E~~&&&	f=J !2!2!45Aa11 X$TF'!5 y9-889	 6  $}}<<99ZQ)L)LMML%dll^8D6B24<<.@z{	  >>##--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&  "$(DEEEE2''44F a  		#NUUq6T]]_-R0A0A0C/DAdmmoFdFdEef7;<t//+t<!	 V  		s%   7M= =
PAP#O=<PPc                    U R                   nU R                  n[        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R                   R#                  U R                   5        U=R$                  U R$                  -  sl        [        R                  SU5        [&        R(                  (       d&  [+        U [,        5      (       a  U R.                  (       au  [1        U5      (       aY  [+        U [,        5      (       aD  U R2                  (       a3  [+        U [,        5      (       d   e[        R4                  " [6        U 5        g U R                  $ [1        U5      (       aP  [+        U [,        5      (       d   eU R                  R9                  5       b   e[;        U R<                  [?        5       S9$ U R                  $ ! , (       d  f       GN= f! [        R                   a#  nSU SU 3n[        R                  U5        e S nAf[        R                   a.  nSU SU 3n[        R                  U5        [        U5      UeS nAf[         a    [        R                  SU5        e f = f)Nz!Observed exception DURING INLING z : zSKIPPED INLINING r   zFAILED INLINING %szDONE INLINING %sr   ) rM  rw  r  nullcontextr=  r]  r  r   r  r   rX  rr  r+   r  r8  r  r2  r8  r9  r   rp  r4  re  is_generator_from_ctx_managerr!   generator_exhaustedraise_observed_exceptionr  r  r\   generated_itemsrG   )r   rM  rU  
strict_ctxr  r}  s         r~   r<  *InliningInstructionTranslator.inline_call_8  s$   {{$002
""55f6M6MNJ	
  ##///>>V---##**4+@+@A((D,J,JJ(		$d+44tCDD22 T""t%KLL,,!$(NOOOO,,]DA+++D!!!$(NOOOO++>>@HHH+(("2"4 
 +++_ $$ 	5dV3qcBCIIcN}} 	*%dV2aS1CIIcNc") 	II*D1	sB   H& H.H& 
H#H& #H& &J=:IJ=/)J%J=rM  rU  r1  r2  r3  funcvarr   Nc                 H  > 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                  UR                  S9  X`l        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   )r   r  r  r  r1  r2  r3  r5  rY  rw  r  r8  r   r;  ra  )get_globalsr4  r   __dict__r   r   r  r  r   r   r  r  r8  r   r;  ra  rq  rM  rj  r8  ri  r  rk  )r   rM  rU  r1  r2  r3  rq  r  r  r5  r   r  s              r~   r  &InliningInstructionTranslator.__init__q  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                  $ rw   )rM  rX  r   s    r~   rX  'InliningInstructionTranslator.fake_mode  s    {{$$$r   c                 ^    [         R                  " U R                  R                  5       5      $ rw   )r   r  rM  rp  r   s    r~   r  )InliningInstructionTranslator.run_ctx_mgr  s     ++DKK,E,E,GHHr   c                     gr   r   r   s    r~   rn  :InliningInstructionTranslator.should_compile_partial_graph  s    r   c                     [        SSS/ S9  g )NzGraph break in inlined functionr   z2Graph breaks in an inlined call are not supported.rc  )r*   r  s     r~   ru  3InliningInstructionTranslator.create_call_resume_at  s    5L		
r   c                 F    U R                  5       U l        S U l        [        erw   )rt  r8  r   r  r  s     r~   rC  *InliningInstructionTranslator.RETURN_VALUE  s    #xxz#' r   c                 H    U R                  U5      U l        S U l        [        erw   )r  r8  r   r  r  s     r~   rD  *InliningInstructionTranslator.RETURN_CONST  s#    #//5#' r   c                    SU R                   ;   a|  U R                   S   nU R                  U5      nSU;   a(  [        R                  R                  R
                  U   nO[        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   rL  r  r  r  r   rH   r  r5   r   rO  r7   r6   )	r   r   r  r  r  fglobals_vtglobal_sourceglobals_nameglobals_sources	            r~   get_globals_source_and_value:InliningInstructionTranslator.get_globals_source_and_value  s    '..4K ..{;M+-MM22LL#  "0!<)//mTK&};M;;;;"DNNL *,7N!^^N)//nUK-nCMM99r   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rw   )r   r  r  r  r  r6  r  r[  has_pending_mutation_of_attrr  	load_attrr  r  rH   r  )r   r   r   r}   r  r  r{  r  s          r~   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                 n  > U R                   R                  U R                  L a  [        TU ]  U5        g U R                  5       n[        U[        5      (       a  [        SUR                  S/ S9  UR                  nU R                  U5      u  pEnU R                   R                  R                  XSU5        g )Nz3Storing Tensor hook handle in globals (inline call)r  rc  )r   r  r  r  r  rt  r4  rl   r*   r6  r  r[  r  )r   r   r{  r   _fglobals_valuer  r}   r  s          r~   r  *InliningInstructionTranslator.STORE_GLOBAL  s    ;;##t~~5 G &HHJE%!899 Q KK 8	 ;;D.2.O.OPT.U+O!KK$$//5Ir   )rq  r   ri  rj  rk  rM  r8  )#r   r   r   r   r   r   rH   r   r   rr  r4  rN  r   r;  r<  r   r8  r  r   r   rj   rR   r  rp  rX  r  rn  ru  rC  rD  r  r  r  r   r  r  s   @r~   rL  rL    s   *o..) )
 8 8t jj ?#j jX7,r%*)%* nn%* c?23	%*
 sO34%* (B%* *%* 
%*N % %I


:0M&J Jr   rL  c                   v   ^  \ rS rSr% \\   \S'   SU 4S jjrS\4S jr	S r
U 4S jrU 4S jrS	 rS
 rSrU =r$ )re  i  rn  c                 P   > [         TU ]  " U0 UD6  / U l        SU l        SU l        g r   )r  r  rn  rl  rk  )r   r|   r`  r  s      r~   r  /InliningGeneratorInstructionTranslator.__init__  s-    $)&)!#( -2*r   r   c                 |   U R                  5       nU R                  R                  U5        [        U R                  5      [        :  a  [
        R                  " S[         35      eU R                  [        R                  " S 5      5        [        R                  (       d  U R                  (       a  X l        [        eg )NzqToo many yield values in generator. Maybe you are inlining an infinite generator. If not, please report a bug at )rt  rn  r   r   rY   r   InfiniteGeneratorErrorPT2_ISSUE_TRACKER_URLr  rL   r7  r   rp  rk  r8  r  )r   r   tops      r~   YIELD_VALUE2InliningGeneratorInstructionTranslator.YIELD_VALUE  s    hhj##C(t##$'99,,22G1HJ  			"))$/05511#& 	 2r   c                     U R                   S   n[        U[        5      (       dB  U R                  5         [	        [
        5      R                  X/0 5      nU R                  U5        g g r  )r4  r4  r\   rt  rK   r  r  r  )r   r   rt  ress       r~   GET_YIELD_FROM_ITER:InliningGeneratorInstructionTranslator.GET_YIELD_FROM_ITER  sO    jjn#344HHJ!$'55dE2FCIIcN 5r   c                 0   > SU l         [        TU ]	  U5      $ r:  )rl  r  rC  r   r   r  s     r~   rC  3InliningGeneratorInstructionTranslator.RETURN_VALUE      #' w#D))r   c                 0   > SU l         [        TU ]	  U5      $ r:  )rl  r  rD  r  s     r~   rD  3InliningGeneratorInstructionTranslator.RETURN_CONST  r  r   c                    [        U R                  5      S:  d   eU R                  5       nU R                  S   n[        U[        5      (       a  UR
                  b  [        SSS/ S9   UR                  U 5      n[        U R                  [        5      (       a  U R                  S:  d   eU =R                  S-  sl        U R                  U5        U R                  U5        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)	Nr  r<  Unreachable sub-generator coder   @Should only be encountered while implementing generator support.rc  r   r   )r   r4  rt  r4  rL   r{  r*   r~  r   r   r  r  r  r   r  r  r7  r   r   r  rt  exs        r~   
YIELD_FROM1InliningGeneratorInstructionTranslator.YIELD_FROM  s3   4::!###hhjjjn3 011cii6G 8^		###D)C 433S99,,q01 $$)$IIcNT"# s<<= 	9"c;;<<--d3 HHJII&--bhh788	9s   *C$ $E<>A4E77E<c                 D   [        U R                  5      S:  d   eU R                  5       nU R                  S   n[        U[        [
        45      (       dH  [        U[        5      (       a  [        UR                  [        R                  R                  5      (       aS  [        U[        5      (       a1  UR                  c$   UR                  U 5      nU R                  U5        g [+        SSS/ S9  g [+        SS	[-        U5       3S
[-        U5       S3/ S9  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)Nr  r<  r  r  r   r  rc  zSEND with bad typez
TOS type: z(Attempted to SEND with unsupported type r  )r   r4  rt  r4  r\   rT   rp   r{  r  r  IteratorrL   r~  r  r  r   r  rw  rx  r7  r  r*   rF   r  s        r~   SEND+InliningGeneratorInstructionTranslator.SENDB  sJ   4::!###hhjjjnc02NOPPs566399koo&>&>??#/00SYY5F#++D1C IIcN !< b	 ,$WS\N3Fws|nTUV	5 &s'D'DE 
$ '''1
II.55bhh?@IIdOO
$s   D F1A$FF)rn  rl  rk  r8  r   )r   r   r   r   r   rH   r   r  r    r  r  rC  rD  r  r  r   r  r  s   @r~   re  re    s>    /**3 "**$#L* *r   re  )r{   r   )r   FN)r   r  collections.abcr  r  r   r  r'  r   r$  re  r  r   r2  rH  rw  	threadingrF  r8  typingrP  r   r   r   r   r   r   unittest.mockr	   rL  torch._loggingtorch._dynamo.excr
   torch._guardsr   r   %torch.fx.experimental.symbolic_shapesr   torch.utils._functoolsr   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(   r)   r*   r+   funcname_cacher,   guardsr-   r.   output_graphr/   r0   replay_recordr1   r2   rl  r3   r4   r  r5   r6   r7   r8   r9   r:   r;   r<   r=   utilsr>   r?   r@   rA   rB   rC   rD   rE   variables.baserF   rG   rH   variables.builderrI   rJ   variables.builtinrK   variables.constantrL   variables.ctx_managerrM   rN   rO   variables.dictsrP   rQ   variables.functionsrR   rS   rT   rU   rV   rW   rX   variables.iterrY   variables.lazyrZ   variables.listsr[   r\   r]   r^   r_   variables.miscr`   ra   rb   rc   rd   re   variables.nn_modulerf   variables.tensorrg   rh   ri   variables.torch_functionrj   rk   variables.user_definedrl   rm   rn   ro   rp   	getLoggerr   r   rR  getArtifactLoggerrT  rb  r  r  localr  r   r  ru   r   r   r   containsrx   ru  r   r  cacher9  r   	dataclassr   r   r   r   r   	lru_cacher   r  r   r   r   ri  r   r  r  r  r  r)  r   r:  rW  r_  r  r  r  r  r  r   r  rx  _nb_opsr  r  rL  re  )r   r   r   r}   s   0000r~   <module>r     s  0      
        	 
      A A    < 1 < /  
 
 
 '    ) / 9 9 A   ;	 	 	 G F A . 0 
 <   / /   2 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  ) )!1!1 ) ) L L L( @ @ @F 
 
 
 2 2 23 3. T4 4 ) )" $ $ . . .B	~ 		I 	9 f- ?
%?oovhn-? ?D I
Xl6??F8T>: l$ l^{|J J2 Z Z Zzy";(y";xE]5 ]@ w 
 %IF	 	!#v-F12JWVABZL3I	
 %jJ$= jJZz-J zGz'Zns   4 S/.&S5