
    ɯwg'                       U d dl Z d dlZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z! d dl"Z"d dl#Z"d dl$m%Z%m&Z& ddl'm(Z(m)Z)mZ*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; dd	l<m<Z< dd
l=m>Z> ddl)m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZFmGZG ddlHmIZImJZJ ddlKmLZLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddl+mYZYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc ddldmeZemfZfmgZgmhZh ddlimjZjmkZk ddllmmZm ddlnmoZo ddlpmqZqmrZrmsZs ddltmuZumvZv ddlwmxZxmyZymzZzm{Z{m|Z| ddl}m~Z~ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ erdd lmZ dd!lmZmZmZ  ej2                  e      Ze"j8                  j;                  ed"      Ze"j8                  j;                  ed#      Ze"j8                  j;                  ed$      Ze"j8                  j;                  ed%      Z ejD                         Z ejH                         D  ci c]  \  } }|  em|      jJ                   c}} Zeeef   ed&<    emejR                        jJ                  Z emejV                        jJ                  Zd' ed(<   d) ed*<   d+Zej\                   G d, d-             Zej\                   G d. d/             Zej\                   G d0 d1             Zej\                   G d2 d3             Z ejf                  d      d4        Zej\                   G d5 d6             Z G d7 d8e      Zd9ej*                  d:ef   fd;Zd<d=d>ej*                  egef   d?efd@Zd>ej*                  egef   d?efdAZdBZdC Z G dD dEe      Z G dF d=eG      Z G dH dIe      Zej                  dJk\  r6ej                  D cg c]  \  }} eedK|v r|dLd ndM|dLd         c}}Z G dN dOe      Z G dP dQeǫ      Zyc c}} w c c}}w )R    N)AnyCallablecastDequeDictListOptionalSetTupleTypeTYPE_CHECKINGUnion)patch)tracingTracingContext   )configexcloggingtrace_rules	variables)get_indexofJUMP_OPNAMESlivevars_analysispropagate_line_nums)	cleaned_instructionscreate_call_functioncreate_instructioncreate_jump_absolutecreate_swapget_code_keysInstructionis_generator	unique_id)code_context)	PyCodegen)ArgsMismatchErrorBackendCompilerFailedunimplementedUnsupported)get_funcname)GuardBuilderinstall_guard)GraphCompileReasonOutputGraph)DummyModuleExecutionRecorder)ContinueExecutionCacheReenterWith)
AttrSourceGetItemSourceGlobalSourceGlobalWeakRefSourceLocalSourceSourceTorchFunctionModeStackSource)is_builtin_constantis_forbidden)countersget_fake_valueget_instruction_source_311get_torch_function_mode_stackgraph_break_dup_warning_checkeristype
LazyStringproxy_args_kwargs)is_side_effect_safeMutableLocaltypestrVariableTracker)VariableBuilderwrap_fx_proxy)BuiltinVariable)ConstantVariable)ContextWrappingVariableGenericContextWrappingVariableWithExitFunctionVariable)ConstDictVariableSetVariable)BaseUserFunctionVariableNestedUserFunctionVariableSkipFunctionVariableUserFunctionVariableUserMethodVariable)MAX_ITERATOR_LIMIT)BaseListVariableListIteratorVariableListVariableSliceVariableTupleVariable)ClosureVariableGetAttrVariableInlinedClosureVariableNullVariablePythonModuleVariableUnknownVariable)NNModuleVariableUnspecializedNNModuleVariable)supported_comparison_opsSymNodeVariableTensorVariable)TorchFunctionModeVariable)RemovableHandleVariableUserDefinedClassVariableUserDefinedObjectVariablegraph_breaks
trace_calltrace_sourcetrace_bytecodecompare_op_handlersc                 2    t        | g t        |      i       S N)handle_containsreversedtxargs_s      c/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/_dynamo/symbolic_convert.py<lambda>rz      s    (4.21     inc           
      J    t        | t        | g t        |      i       gi       S rr   )
handle_notrs   rt   ru   s      ry   rz   rz      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.ymlc                   ^    e Zd ZU eed<   eed<   eed<   eed<   dZeed<   dZ	e
e   ed<   d	 Zy)
SpeculationEntryfilenamelinenoinstruction_pointerinstFfailedNreasonc                     d| _         | j                  | j                  j                  }nd}t        j                  |      )z\
        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     ry   fail_and_restart_analysisz*SpeculationEntry.fail_and_restart_analysis   s:     ;;"![[//N@N,,NKKr{   )__name__
__module____qualname__str__annotations__intr"   r   boolr   r	   r.   r    r{   ry   r   r      s8    MK
FD+/FH'(/	Lr{   r   c                   v    e Zd ZU dZ ej
                  e      Zee	   e
d<   dZee
d<   d Zd Zded	ed
e	fdZy)SpeculationLoga3  
    SpeculationLog replaces the prior copy_graphstate/restore_graphstate
    checkpointing.  Rather than saving/restoring state, we restart the
    dynamo conversion process over from the beginning -- but when we
    hit the start of the speculation that failed, we instead generate
    a graph break.
    default_factoryentriesr   indexc                     d| _         y Nr   )r   r   s    ry   restartzSpeculationLog.restart   s	    
r{   c                 F    | j                   j                          d| _        y r   )r   clearr   r   s    ry   r   zSpeculationLog.clear   s    
r{   r   r   returnc                 .   t        | j                        | j                  k(  r'| j                  j                  t	        ||||             | j                  | j                     }d}| j                  dk7  r]| j                  | j                  dz
     }d|j
                   d|j                   d|j                  j                   d|j                   d	}|j                  |k(  r|j
                  |k(  r|j                  |k(  sJ d	| j                   d
t        | j                         d|j
                   d|j                   d|j                  j                   d|j                   d| d| d|j                   d| d| d       | xj                  dz  c_        |S )z
        Lookup or create a SpeculationEntry() that is shared across
        RestartAnalysis calls.  Args are used only for debug checks.
         r   r   zPrevious instruction: :(z @ z)
z"
SpeculationLog diverged at index z
 (log had z entries):
- Expected:  (z at ip=z)
- Actual: a  
There are two usual reasons why this may have occured:
- When Dynamo analysis restarted, the second run took a different path than
  the first.  If this occurred, the previous instruction is the critical instruction that
  behaved differently.
- Speculation entries are only added under certain conditions (as seen in
  step()), e.g., there must exist operators in the graph; those conditions may
  have changed on restart.

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

Otherwise, please submit a bug report, ideally including the contents of TORCH_LOGS=+dynamo
)
lenr   r   appendr   r   r   r   opnamer   )r   r   r   r   r   entryprev_entry_msg
prev_entrys           ry   nextzSpeculationLog.next   s    t||

*LL 63F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{   N)r   r   r   __doc__dataclassesfieldlistr   r   r   r   r   r   r   r   r   r   r   r{   ry   r   r      sV     '8k&7&7&MGT"#ME3N**%(*	*r{   r   c                       e Zd ZU  ej                  e      Zeee	e
   f   ed<    ej                  e      Zeee	e
   f   ed<   y)
LocalStater   input_sizesinput_stridesN)r   r   r   r   r   dictr   r   r   r   r   r   r   r   r{   ry   r   r      sJ    (9(9(9$(OKc49n%O*;+*;*;D*QM4T#Y'Qr{   r   c                   <    e Zd ZU eed<   eed<   dZeee      ed<   y)DistributedState
compile_pglocal_stateN
all_states)	r   r   r   r   r   r   r   r	   r   r   r{   ry   r   r      s!    O-1Jj)*1r{   r   c                  4    t        j                  t              S rr   )torchdynamo_loggingget_step_loggerlogr   r{   ry   _step_loggerr     s    ..s33r{   c                   f    e Zd ZU eed<   eed<   dZee   ed<   dZee	e
ef      ed<   d Zd Zd Zy)	BlockStackEntryr   targetNstack_indexwith_contextc                     | j                   d uS rr   )r   r   s    ry   can_restorezBlockStackEntry.can_restore  s      ,,r{   c                    | j                   J | j                  r_t        | j                  d      rI| j                  j                  r3t	        | j                   t        | j                  j                              S t	        | j                         S )Ntarget_values)r   r   hasattrr   r3   tupler   s    ry   	resume_fnzBlockStackEntry.resume_fn  sq    +++))?;!!//t//t7H7H7V7V1WXXt//00r{   c                 T    | j                   J | j                   j                  |      S rr   )r   exit)r   rv   s     ry   r   zBlockStackEntry.exit  s+      ,,,  %%b))r{   )r   r   r   r"   r   r   r	   r   r   r   rM   rN   r   r   r   r   r{   ry   r   r     sR     !%K#% 	 (%'EEF -	1*r{   r   c                       e Zd Zy)ReturnValueOpN)r   r   r   r   r{   ry   r   r   #  s    r{   r   fn.c                     t        t        j                  |       j                        t	        |       t        j                  |       dddt        ffd       }|S )Nr   InstructionTranslatorr   c                 h    | j                  j                  | | j                        i              y rr   )pushcall_functionpopn)r   r   fn_varnargss     ry   implzstack_op.<locals>.impl+  s'    		&&&tTYYu-=rBCr{   )r   inspect	signature
parametersrK   	functoolswrapsr"   )r   r   r   r   s     @@ry   stack_opr   '  s]    !!"%001ER F__RD* D+ D D Kr{   r   InstructionTranslatorBasetruth_fnr   c                    |t         j                  us|ryt        | j                  t              sJ | j                  }| j
                  |   }t        j                  dk  r|j                  dk7  s|j                  dk7  ry|j                  dk7  ry|dz  }d}| j
                  |   }|j                  dk(  rrt        |j                  t              sy|j                  }|dz  }| j
                  |   }|j                  d	vry|dz  }|j                  d
k(  r|dz  }| j
                  |   }|j                  dk7  ry| j                  t        j                  |             y)NF)   	   LOAD_GLOBALAssertionErrorLOAD_ASSERTION_ERRORr   zassertion error
LOAD_CONST)CALL_FUNCTIONPRECALLCALLr   RAISE_VARARGST)operatortruth
isinstancer   r   instructionssysversion_infor   argvalr   r   rL   create)r   r   r   current_instruction_pointerr   	error_msgs         ry   &_detect_and_normalize_assert_statementr   2  sW   , 	&4d..444"&":":89D
& ;;-'4;;:J+J;;001$ "I89D{{l"$++s+KK	 	$q(#  !<=;;BB 	$q(#;;)#'1,'  !<={{o%II%%i01r{   c                 8     dfd	dddt         f fd}|S )Nc           	      @   | j                         st        d       | j                         r=d| j                          }t        j                  |       t        j                  |      | j                  |       t        j                  d       | j                  j                  | t        dt        |       | | j                         g             | j                          | j                  | j                         }r| j                  |       | j                  |j"                        }t$        j&                  dk\  r%| j                  j)                  t+        d      g       | j                  j)                  t+        |j,                  |d   	      g|z   |z          y )
N"should_compile_partial_graph=FalseBSkipping frame because there is a graph break in a for/while loop
zgeneric_jump triggered compilezgeneric_jump r   r      TO_BOOLr   )r   )should_compile_partial_graphr)   maybe_has_backedgeframe_summaryr   infor   	SkipFramer   debugoutputcompile_subgraphr.   rG   popcreate_call_resume_atnext_instructionr   r   r   add_output_instructionsr   r   )r   r   value	extra_msgmsgif_nextif_jumpr   s          ry   jump_graph_breakz&generic_jump.<locals>.jump_graph_breaky  sV   002>?""$U%%'(*  HHSM--$$		%		23$$%/	{;d>P>P>R=S 	% 	
 	
,,T-B-BCIIe,,T[[9w&KK//1CI1N0OP++GAJ?@7JWT	
r{   r   r   r   c                    | j                         }t        j                  rt        |       r| j                         }|j	                         r4t        |j                               r| j                  |      S  | ||       t        |t              rJ | j                  j                  dt        j                  gt        ||fi         | j                  |       y t        |t              r}|j                   }t        |t        j"                        s|dk7  }t        j$                  j&                  j(                  j+                  |      }|st-        d       | j                  |       y  | j                  j                  dt        j.                  gt        |fi        }t1        | |t3        |j4                  |             } | j                  j                  dt        j                  gt        ||fi         | j                  |       y |j	                         r< |j                               r%r| j7                  |       | j                  |       y y t        |t              r| j9                         r | ||       y t        |t:              rS| j                  j=                  |j>                        } |      r%r| j7                  |       | j                  |       y y t        |t@              r:|jB                  } |      r%r| j7                  |       | j                  |       y y t        |tD              r	 |jG                  | d      }	t        |	tN              r|	jQ                  | g i       }t        |tR              rWt        |jB                  t
        tT        f      r7 |jB                        r_r| j7                  |       | j                  |       y t-        d       y  d      r%r| j7                  |       | j                  |       y y y t        |t              sW|jW                  |       rF tY        |j[                  |                   r%r| j7                  |       | j                  |       y y t        |t              rJ	 |j]                  | j                        }
 |
      r%r| j7                  |       | j                  |       y y t        |t`        jb                        r. d      r%r| j7                  |       | j                  |       y y ddl2m3} |jd                  N ||jd                        r< |ji                               r%r| j7                  |       | j                  |       y y tI        j^                  tH        jj                  jl                  dd      # tH        jJ                  $ r] tI        jL                  |        	 |jG                  | d      }	n0# tH        jJ                  $ r tI        jL                  |        d }	Y nw xY wY w xY w# tH        j^                  $ r*}| j9                         r | ||d	| 
      cY d }~S  d }~ww xY w)Nr   r   zKAssertion failed on symbolic shapes. Did you make sure eager mode succeeds?)example_value__bool____len__z@generic_jump on UserDefined with __bool__ returning non-constantT
)r  r   )is_constant_sourcezDynamic control flow is not supported at the moment. Please use functorch.experimental.control_flow.cond to explicitly capture the control flow.cond_operands)	case_name)7r  r    rewrite_assert_with_torch_assertr   is_python_constantr   as_python_constantjumpr   rg   r  create_proxytorch_assert_asyncrD   rf   sym_numSymBoolfxexperimentalsymbolic_shapesexpect_truer)   scalar_tensorrJ   r>   noder   r   rc   get_submodule
module_keyrd   r  rk   var_getattrr   ObservedAttributeErrorhandle_observed_exceptionrV   r   rL   r   has_unpack_var_sequencer   unpack_var_sequenceevaluate_expr	UserErrorr   BackwardHookVariablesourcer  get_real_valueUserErrorTypeDYNAMIC_CONTROL_FLOW)r   r   r  r   sym_exprresultscalar_to_tensor_proxyscalar_to_tensormodxeval_resulter  r  r   r   s                ry   innerzgeneric_jump.<locals>.inner  s\   !%336tXtL)-I'')002399T?*$T47 %0(((#'' 'y'92>
 		$%1 !==!(EMM:'1}H..>>JJ8T!e 		$%=T[[%=%=!4!4&7H%SU7V&"  -&,-C-H-H$O  %DKK$$## #$4i#@"E
 IIdO##%0023IIe$		$ 4
 u~/D4U4U4WT4//0++++E,<,<=C}IIe$		$  <=++C}IIe$		$  89	%%dJ7 !/0r26f&67JLL4+=  - IIe,		$!Z
 D>		%(IIdO " . E>2u7T7T8
 E55d;<=IIe$		$ > /#11$++>
 $IIe$		$ % y==>~IIe$		$ 
 3||',>u||,LE0023		%(IIdO 4 mm%%::g-	 } -- --d3))$	:A11 11$7AN == 446+D$2aSRRsZ   V4 X' 4(X$W0/X$0*XX$XX$#X$'Y$:YY$YY$)r   )r"   )r   r   r?  r  s   `` @ry   generic_jumpr@  x  s(    !
FY/ Y{ Yv Lr{   Fc                       fd}|S )Nc                      t        j                         dddt        f fd       }dddt        dt        ffd|S )Nr   r   r   c                 h   | j                         }|j                  r"|j                  J  	| ||j                        S 	  
| |      S # t        $ r}| j                  dkD  r|j                          t        d       t        |t        j                        r | j                         s |j                  }	 |d   j                  |d   j                  f}n%# t        $ r | j                  }|d   |d   f}Y nw xY wt         j#                  t$        j&                        rXt(        sRt+        j,                  |      r=dj/                  t1        j2                  |            }t         j5                  d|d	       nt7        j4                  d
g|  | j9                         r>d| j;                          }t6        j=                  |       t        j>                  |      ||j                          |jA                  d       tC        |jD                  |      |_        Y d }~nd }~ww xY w|jG                          y )Nr   z0Graph break under GenericContextWrappingVariableco_filenameco_firstlinenor   z"Graph break: from user code at:
%sTexc_infoz<Unsupported break in user code at %s:%s (details suppressed)r   graph_break)$	speculater   r   r*   generic_context_manager_depthremove_from_statsr)   r   r   UncapturedHigherOrderOpErrorr   
real_stackr   r   
IndexErrorcode_optionsgraph_break_logisEnabledForr   DEBUGexplainrA   addjoin	tracebackformat_listr  r   r  r  r  r  add_to_statsr.   r  r   )r   r   speculationexcp
user_stack	frame_locrP  user_stack_formattedr  handle_graph_breakinner_fns            ry   wrapperz>break_graph_if_unsupported.<locals>.decorator.<locals>.wrapper?  s   ..*K!!"))555)$k6H6HII<Nd++ :N559 **,!"TUdC$D$DE88:!__
!+B!8!8*R.:O:O PI! #'#4#4L$]3$%56!I $00?#7;;IF+-7793H3H3T+U( $))=,!% *  IIV"
 **,]--/02  HHSM--,$6&&(!!-0%7*%M""u:Nv 113s>   A
 

H A"H7CHC85H7C88DHH r   c                 ~   | j                   j                  | |       t        |       }g }| j                  D ]  }|j                  J t        |j                  t              sJ |j                  j                  |       |j                  |j                         j                  |j                  |              | j                   j                  |j                                ~t        j                  dk\  r|j                   dk(  r| j"                  | j"                  j%                         nd}t'        |      dkD  r<t        j                  dk  sJ | j                   j                  t)        d|      g       | j                   j                  t+        |j,                  d	             nF|j.                  J t1        j0                  |      }d |_        | j                   j                  |g       | j                   j                  |       t        j                  dk\  rt        j                  d
k  rs|j                   dk(  rdt5        j6                  t4        j8                  d   |j,                        t5        j6                  t4        j8                  d   |j,                        z   }n*t5        j6                  |j:                  |j,                        }| j=                  
|z
         t?        
      D ]  }	| jA                  tC                       | j                   j                  | jE                  | jF                               y )Nr   r      r   r   r   r   KW_NAMESr   Fr      r   )$r  r  r&   block_stackr   r   rM   reconstruct_typeextend_outputr   
try_exceptrP  r  get_instructionsr   r   r   kw_namesr  r   r   r   argr   copyexn_tab_entrydisstack_effectopmapopcoder   ranger   rb   r	  r
  )r   r   r   cgcleanupbrn  	inst_copyrs  rx   r   s             ry   r_  zIbreak_graph_if_unsupported.<locals>.decorator.<locals>.handle_graph_break  s   
 KK((f(=4B)+G%% U~~111!!..2IJJJ//3  !9!9"//7!ST	U
 KK//0C0C0EF7*t{{f/D }}0 MM446 
 x=1$++g555KK77+JxHI 33(59
 {{*** IIdO	*.	'33YK@KK//8   G+$$w.KK6)  #//IIi($(( $$SYYv%6A B  #//TXXFIId\)*4[ -		/+,-KK//**4+@+@Ar{   )r   r   r"   r.   )r`  ra  r_  r   s   ` @ry   	decoratorz-break_graph_if_unsupported.<locals>.decorator>  sY    		"B	45 B	4[ B	4 
#B	4H:	-:	:	 ':	x r{   r   )r   r{  s   ` ry   break_graph_if_unsupportedr|  =  s    BH r{   c                   $     e Zd ZdZd fdZ xZS )BytecodeDistpatchTableMetazTInstalls a `cls.dispatch_table` on every subclass to speed up calls to self.OPCODE()c                 >   t         	|   |||       d }t        j                  j	                         D ci c]'  \  }}|t        | |t        j                  ||            ) }}}t        d      D cg c]  }|j                  |       c}| _
        y c c}}w c c}w )Nc                      t        d|         y )Nz	missing: r)   )r   rw   s     ry   _missingz5BytecodeDistpatchTableMeta.__init__.<locals>._missing  s    IfX./r{      )super__init__rr  rt  itemsgetattrr   partialrv  getdispatch_table)
clsnamebasesdctr  r   opr  i	__class__s
            ry   r  z#BytecodeDistpatchTableMeta.__init__  s    uc*	0
 "iioo/
 VY%6%6x%HII
 
 >C4[In003I	
 Js   ,B3Br   N)r   r   r   r   r  __classcell__r  s   @ry   r~  r~    s    ^
J 
Jr{   r~  c                       e Zd ZU eed<   eeef   ed<   eeef   ed<   ed   ed<   e	e   ed<   e
e   ed<   eed<   e	e   ed	<   eed
<   e
e   ed<   eed<   e	e   ed<   eed<   eed<   e
e   ed<   e	e   ed<   e	e   ed<   e
e   ed<   e
eegef      ed<   d Zd Zd Zd Zdede	e   deeef   fdZd ZddZd  Zd! Zd" Zej>                  d#k\  rd$ Z nd% Z e!d&        Z"d' Z#d( Z$d) Z%dd*e
e   d+efd,Z&d-e	e   fd.Z'd/efd0Z(d1ed/e	e   fd2Z)d3 Z*d4 Z+d5 Z,d6 Z-d7 Z.d8 Z/d9 Z0e/Z1d: Z2d; Z3d< Z4d= Z5e6jn                  d>        Z8d? Z9d@ Z:dA Z;dB Z<dC Z=dD Z>dE Z?dF Z@dG ZAdH ZBeBZCeBZD eEeFj                  dI      ZH eEeFj                  dI      ZJ eEeFj                  dJ      ZK eEeFj                  dJ      ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zc eddbc      dd        Ze eddbc      de        Zf eddbc      df        Zgdg Zhdh Zidi Zjdj Zkdk Zldl Zmdm Zndn Zodo Zpdp Zqd/efdqZr eddrc      ds        Zsdt Ztdu Zudv Zvdw Zwdx ZxeyfdyZzdz Z{e{Z|d{ Z}d| Z~e~Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Zd Zd Zd Zd Zd Z eeFj<                        Z eeFj@                        Z eeFj                        Z eeFjF                        Z eeFjJ                        Z eeFjN                        Z eeFjR                        Z eeFjV                        Z eeFjZ                        Z eeFj^                        Z eeFj^                        Z eeFjd                        Z eeFjh                        Z  eddbc       eeFjl                              Z eeFjp                        Z eeFjt                        Z eeFjx                        Z eeFj|                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Z eeFj                        Zd Zej>                  d#k\  rd Zd Zd Zd ZddZ eddbc      d        Zd Zd ZeBZeBZ eEeFj                  dI      Z eEeFj                  dI      Z eEeFj                  dI      Z eEeFj                  dI      Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z eddbc      d        Zd Zd Zd Zd Zd Zd ZddZ d Zd Zd Ze!d        Zd Zej                  deegef   fd       Zd/efdZ	dede	e   deeef   deeef   deeef   deeef   deeef   deeef   ded   dĐe
j                  dededƐede
e   d/df fdȄZ xZS )r   r  symbolic_localssymbolic_globalsrh   "symbolic_torch_function_mode_stackstackr   current_instructionri  r   rn  accept_prefix_instprefix_instsinline_depthinconsistent_side_effectscurrent_speculationr  exn_vt_stackexec_recorderstrict_checks_fnc                     d| _         y)z
        InstructionTranslator has encountered instructions which may cause
        dynamo to see a different version of history from eager
        See: https://github.com/pytorch/pytorch/issues/110765
        TN)r  r   s    ry   mark_inconsistent_side_effectsz8InstructionTranslatorBase.mark_inconsistent_side_effects  s     *.&r{   c                     | j                   j                  }| j                  J | j                  | j                  d  D ]8  }|j                  dv r y|j                  t
        v s&|j                  }||k  s8 y y)N)RETURN_VALUERETURN_CONSTFT)r  offsetr   r   r   r   r   )r   
cur_offsetr   jump_offsets       ry   r  z,InstructionTranslatorBase.maybe_has_backedge  s    ( --44
''333%%d&>&>&@A 	 D{{>>{{l*"kk+	  r{   c                 (   t        | d      s{t        | j                  d   xs g       t        | j                  d   xs g       z   | _        t	        | t
              r-| xj                  | j                  j                         z  c_        | j                  S )N_cell_and_freevarsco_cellvarsco_freevars)r   r   rP  r  r   InliningInstructionTranslatorparentcell_and_freevarsr   s    ry   r  z+InstructionTranslatorBase.cell_and_freevars  s    t12&+!!-06B'd''6<"='>D# $ =>''4;;+H+H+JJ'&&&r{   c                 B   t        | j                  | j                        }|t        | j	                               z  }| j
                  j                         D ci c]  \  }}||v s|| c}}| _        | j                  j                  j                  |        y c c}}w rr   )
r   r   r  setr  r  r  r  side_effectsprune_dead_object_new)r   readskvs       ry   prune_dead_localsz+InstructionTranslatorBase.prune_dead_locals  s    !$"3"3T5M5MN D22455!11779 
QQ%ZAqD 
 	  66t< 
s   B'Br   rw   kwargsc                    t        |t              sJ t        |t              sJ t        |t              sJ t	        d t        j                  ||j                               D              sJ d }t        |d      r|j                  }t        |d      r|j                  }|r$t        |      rt        |      rt        d|       | j                  |j                  | ||             y )Nc              3   <   K   | ]  }t        |t                y wrr   )r   rH   ).0r<  s     ry   	<genexpr>z:InstructionTranslatorBase.call_function.<locals>.<genexpr>3  s      
 q/*
   r  r   z$Attempt to trace forbidden callable )r   rH   r   r   all	itertoolschainvaluesr   r  r   callabler<   r   r   r   )r   r   rw   r  r`  s        ry   r   z'InstructionTranslatorBase.call_function*  s     "o...$%%%&$''' 
__T6==?;
 
 	
 
 2wxxH2tuuH*|H/E #Gz!RSS		"""4v67r{   c                 2    t         j                  | |||      S )zF
        A call to some user defined function by inlining it.
        )r  inline_call)r   r   rw   r  s       ry   inline_user_function_returnz5InstructionTranslatorBase.inline_user_function_return@  s     -88r4PPr{   Nc                     || j                   }| j                  dkD  rd| j                   dnd}t        | j                  j                  |      }|dnd| d}| j                  j                   d| d| j                  j
                   | | S )Nr   z (inline depth: )r   r   r   z in )r   r  r+   f_coderE  co_name)r   r   inline_depth_strfuncnamefuncname_strs        ry   get_line_of_code_headerz1InstructionTranslatorBase.get_line_of_code_headerF  s    >[[F7;7H7H17Lt0013RT 	   7 7@%-rRz3C++))*!F848K8K7L\N[kZlmmr{   c                     d| j                          d}t        j                  | j                  j                  | j
                        j                         }|d| z  }|S )NzTRACE starts_line r  z    )r  	linecachegetliner  rE  r   rstrip)r   log_strlines      ry   get_log_starts_line_log_strz5InstructionTranslatorBase.get_log_starts_line_log_strP  sX    &t'C'C'E&FbI  !8!8$++FMMOT$= r{   c                    | j                   |k(  ry || _         t        j                  | j                  j                  || j                  j
                         ddlm}  || j                  j                         t        j                  t        j                        r*t        j                  dt        | j                               y y )Nr   )	dump_file%s)r   r   set_current_locr  rE  r  torch._logging.structuredr  trace_source_logrR  r   rS  r  rC   r  )r   r   r  s      ry   starts_linez%InstructionTranslatorBase.starts_lineV  s    ;;& &&KK##VT[[-@-@	
 	8$++))*((7""4D4T4T)UV 8r{   c                    | j                   }|y| j                  |   x| _        }|dz   | _         |j                  r| j                  |j                         | j                  s\| j                         rL| j                         r<| j                         | _        | j                  j                  r| j                  |      S t        j                  t        j                        r6t        j                  d|j                   |j"                  | j                         | j%                  |       	  | j&                  |j(                     | |       | j*                  j,                   S # t.        j0                  $ r}| j3                  |       Y d}~yd}~wt4        $ r Y yt6        $ r< | j                  t8        j                  d        t8        j                  dd       Y nw xY w| j                  j;                          y)	z<Process exactly one instruction, return False we should exitNFr   zTRACE %s %s %sTzempty checkpointzstep triggered compilerG  )r   r   r  r  r  r   is_non_empty_graphrJ  r  r   step_graph_breaktrace_bytecode_logrR  r   rS  r  r   r   update_block_stackr  ru  r  should_exitr   ObservedExceptionexception_handlerr   r*   r   r   )r   ipr   r>  s       ry   stepzInstructionTranslatorBase.stepc  s   %%:*.*;*;B*?? 4#%6 T--. 

113'')'+~~'7D$''..,,T22**7==9$$ $++t{{DJJ 	%	?,D,T48{{....$$ 	""1% 	 	?''/		,-II.I>		? 	  ::<s%   *6E! !G4F

GAGGrc  c                    |j                   }|rt        | j                        dk\  rg|j                  | j                  d   j                  urA|j                  | j                  d   j                  u r| j                  j	                          y y y y | j                  rD|j
                  dvr5t        | j                        dk(  sJ | j                  j	                          y y y )N   rD  )NOPJUMP_BACKWARDr   )rq  r   ri  r   r  r   )r   r   r   s      ry   r  z,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                      y rr   r   r   r   s     ry   r  z,InstructionTranslatorBase.update_block_stack  s    r{   c                 4    | j                   | j                     S rr   )r   r   r   s    ry   r
  z*InstructionTranslatorBase.next_instruction  s      !9!9::r{   c           	      "   | j                   j                  rJ | j                  J | j                   j                  | dt	        d| j                         g             | j                   j                  t        |      g| j                  z          y )NTstep_unsupported)partial_convertr   )	r  output_instructionsr  r  r.   r  r  r   r   )r   continue_insts     ry   r  z*InstructionTranslatorBase.step_graph_break  s    ;;2222''333$$ %&84;M;M;O:PQ 	% 	

 	++!-01D4E4EE	
r{   c                 ,    t        j                  d       S rr   )r   current_framer   s    ry   run_ctx_mgrz%InstructionTranslatorBase.run_ctx_mgr  s     ++D11r{   c                 t   | j                         5  	 | j                  j                  |        | j                         r	 | j                         r| j                  j                          t        | t              r| j                  j                          	 d d d        y # t        $ r  t
        $ r1}| j                  r| j                  j                         |_         d }~ww xY w# | j                  j                          t        | t              r| j                  j                          w w xY w# 1 sw Y   y xY wrr   )r  r  push_txr  r(   	Exceptionr  
get_recordexec_recordpop_txr   r   rx  )r   r>  s     ry   runzInstructionTranslatorBase.run  s     	**##D)iik iik ""$ d$9:KK'')'	* 	*
 )  %%$($6$6$A$A$CAM
 ""$ d$9:KK'') ;%	* 	*s<   D.<BAD.C!0,CC!!C$$AD++D..D7valr  c                 <   |#t        |t              sJ dt        |              | j                  j	                  |       t
        j                  dk\  rI| j                  j	                  |       t        | j                        t        | j                        k(  sJ y y )Nz"push expects VariableTracker, got r   )	r   rH   rG   r  r   r   r   
name_stackr   )r   r  r  s      ry   r   zInstructionTranslatorBase.push  s    {j
 	?/~>	? 
 	

#w&OO""4(tzz?c$//&:::: 'r{   valsc                 4    |D ]  }| j                  |        y rr   r   )r   r  r  s      ry   	push_manyz#InstructionTranslatorBase.push_many  s     	CIIcN	r{   r   c                     t         j                  dk\  rGt        | j                        t        | j                        k(  sJ | j                  j                          | j                  j                         S )Nr   )r   r   r   r  r  r  r   s    ry   r  zInstructionTranslatorBase.pop  sP    w&tzz?c$//&::::OO!zz~~r{   nc                 p    g t        t        |      D cg c]  }| j                          c}      S c c}w rr   )rt   rv  r  )r   r  rx   s      ry   r   zInstructionTranslatorBase.popn  s*    :uQx8!488:89::8s   3
c                     t        |      S Nr  )r]   r   r  s     ry   _load_closurez'InstructionTranslatorBase._load_closure  s    D))r{   c                    | j                   r7|| j                  v r)| j                   j                  || j                  |          	 | j                  | j                  |   j                         |       |j                  d      r| j                  j                  |       y y # t        $ r t        j                  dk\  r5|| j                         v r#| j                  | j                  |      |       nj|j                  d      rN	 |j                  dd      }| j                  | j                  |   |       n%# t        $ r t        d       Y nw xY wt        d       Y w xY w)Nr  r   .implicitzundefined LOAD_FAST (implicit)zundefined LOAD_FAST___stack)r  f_localsadd_local_varr   r  unwrapKeyErrorr   r   r  r  
startswithreplacer)   r  )r   r  new_names      ry   
_load_fastz$InstructionTranslatorBase._load_fast  s4   $$--"7,,T4==3FG	5IId**40779IE( ??:&  $$T* ''  	57*tt7M7M7O/O 		$,,T2	>%D#||C<HIId228<8IL D!"BCD 34!	5s7   .B! !A"E2D76E7EEEEEc                 :    | j                  |j                         y rr   )r  r   r  s     ry   	LOAD_FASTz#InstructionTranslatorBase.LOAD_FAST  s    $r{   c                    |j                   | j                         v sJ | j                  rU|j                   | j                  v r=| j                  j	                  |j                   | j                  |j                             |j                   | j
                  vrt        d|j                           | j                  | j
                  |j                             y )Nzundefined LOAD_DEREF )r   r  r  r  r  r  r)   r   r  s     ry   
LOAD_DEREFz$InstructionTranslatorBase.LOAD_DEREF!  s    {{d446666$++">,,T[[$--:TU;;d2221$++?@		$&&t{{34r{   c                 d    | j                         }|j                  |       || j                  |<   y rr   )r  set_name_hintr  )r   r  	loaded_vts      ry   _store_fastz%InstructionTranslatorBase._store_fast+  s+    HHJ	%%.T"r{   c                 :    | j                  |j                         y rr   )r!  r   r  s     ry   
STORE_FASTz$InstructionTranslatorBase.STORE_FAST0  s    %r{   c                 2    | j                   |j                  = y rr   )r  r   r  s     ry   DELETE_FASTz%InstructionTranslatorBase.DELETE_FAST3  s      -r{   c                 X    | j                  | j                  |j                               y rr   )r   r  r   r  s     ry   LOAD_CLOSUREz&InstructionTranslatorBase.LOAD_CLOSURE8  s    		$$$T[[12r{   c                     |j                   }| t        j                  |j                        S | j                  |   }|s/t        j                  |j                        x| j                  |<   }|S )Nr  )ro  rL   r   r   _constants_cache)r   r   r  r  s       ry   _load_constz%InstructionTranslatorBase._load_const;  sa    HH9#**==##A&-=-D-D4;;-WWD!!!$s
r{   c                 D    | j                  | j                  |             y rr   )r   r+  r  s     ry   r   z$InstructionTranslatorBase.LOAD_CONSTD  s    		$""4()r{   c                    |j                   }| j                  rn|| j                  v r*| j                  j                  || j                  |          n6|| j                  v sJ | j                  |   | j                  j
                  |<   || j                  v r\| j                  j                  | j                  |      }| j                  | j                  j                  j                  ||             y 	 | j                  |   }t        |      }| j                   t        | |      |             y # t        $ r | j                  |      cY S w xY wrr   )r   r  	f_globalsadd_global_var
f_builtinsbuiltinsr  r  r  r   load_globalr  load_builtinr6   rI   )r   r   r  variabler  r3  s         ry   _load_globalz&InstructionTranslatorBase._load_globalG  s   {{t~~%""11$t8LMt...48OOD4I""++D14((({{//0E0Ed0KLHIIdkk..::8TJK	+NN4(E d#		//$/67	  	+$$T**	+s   2D. .E
Ec                 v    d}| j                  |      }t        j                  |      } t        | |      |      S )Nztorch.nn.modules.module)import_source	importlibimport_modulerI   )r   module_namemodule_sourcefglobals_values       ry   nn_modules_globals_vtz/InstructionTranslatorBase.nn_modules_globals_vt^  s;    /**;7"00=3t]3NCCr{   c                    t         j                  dk\  r3t         j                  dk  r |j                  dz  r| j                  |       | j	                  |       t         j                  dk\  r"|j                  dz  r| j                  |       y y y )Nrc  r   r  )r   r   ro  	PUSH_NULLr5  r  s     ry   r   z%InstructionTranslatorBase.LOAD_GLOBALe  sn    w&3+;+;g+E$((UV,NN4 $w&488a<NN4  ,8&r{   c                    | j                         }|j                  }t        |      }|| j                  vrt	               | j                  |<   | j
                  j                  j                  || j                  |         }t        |t              rt        d       | j
                  j                  j                  |||       y Nz Storing handles in globals - NYI)r  r   r6   r  objectr  r  track_global_existingr   ri   r)   store_global)r   r   r  r  r3  r4  s         ry   STORE_GLOBALz&InstructionTranslatorBase.STORE_GLOBALl  s    
{{d#t,,,*0(D!!$';;++AAD))$/
 e45<=  --heDr{   c                    d|v rZt         j                  j                  j                  |   }|j	                  dd      j	                  dd      j	                  dd      }n*t        j                  |      }d|j	                  dd       }| j                  j                  }||vs	||   |u sJ |||<   | j                  j                  |       t        |      S )z-Create an alias to a module for use in guardstorch_package>rx   <r  _dot_	__import_)r  packagepackage_importer_package_imported_modulesr  r8  r9  r  global_scopeupdate_co_namesr6   )r   r:  r  aliasr.  s        ry   r7  z'InstructionTranslatorBase.import_sourcey  s    k)MM22LLE ##C-55c3?GGWU  ++K8E 3 3C ABCEKK,,	I%5)9U)BBB 	%##E*E""r{   c                 ~    |j                  d|dz
        }t        |      |k  rt        d      |d   }|r| d| S |S )z
        Copied from the Cpython implementation of __import__
        Resolve a relative module name to an absolute one.
        https://github.com/python/cpython/blob/5a094f0255eea1db58fb2cf14c200971e64ec36e/Lib/importlib/_bootstrap.py#L902
        r  r   z2attempted relative import beyond top-level packager   )rsplitr   ImportError)r   r  rL  levelbitsbases         ry   resolve_namez&InstructionTranslatorBase.resolve_name  sQ     ~~c519-t9uRSSAw#'$q1T1r{   c                    | j                   j                  d      }| j                   j                  d      }|6|2||j                  k7  r#t        j	                  d||j                  d       |S ||j                  S t        j	                  dd       | j                   d   }d| j                   vr|j                  d	      d
   }|S )z
        Copied from the Cpython implementation of __import__
        https://github.com/python/cpython/blob/5a094f0255eea1db58fb2cf14c200971e64ec36e/Lib/importlib/_bootstrap.py#L1090
        __package____spec__z)__package__ != __spec__.parent (%r != %r)r   )
stacklevelzYcan't resolve package from __spec__ or __package__, falling back on __name__ and __path__r   __path__r  r   )r.  r  r  r   warning
rpartition)r   rL  specs      ry   calc_packagez&InstructionTranslatorBase.calc_package  s    
 ..$$]3~~!!*-Gt{{$:?KK 	   N;;KK8  
 nnZ0G/!,,S1!4r{   c                 .   | j                  d      \  }}|j                         }|j                         }|j                  }t        j                   d| d| d| }|| j
                  v r| j
                  |   }t        |      }n{	 t        |||| j
                        }|dk7  r#| j                         }| j                  |||      }|s&|j                  d      d   }	| j                  |	      }n| j                  |      }| j                  r| j                  j                  |       t!        t"        j$                  t&        f      r| j)                  t+        ||             y t        dt-        |              y # t        $ r t        d       Y w xY w)	Nr  rx   )fromlistrU  globalsz#import a module that does not existr   r  r3  zIMPORT_NAME )r   r  r   r1   LOCAL_MOD_PREFIXr.  r6   
__import__rT  r)   ra  rX  	partitionr7  r  add_local_modrB   types
ModuleTyper0   r   ra   rG   )
r   r   rU  rc  r:  recorded_namer  r3  pkgtop_level_module_names
             ry   IMPORT_NAMEz%InstructionTranslatorBase.IMPORT_NAME  s   ))A,x((*..0kk !112!E7!H:Q{mT 	 DNN*NN=1E!-0FE"% NN	 z'')"//S%H (3(=(=c(B1(E%++,AB++K8,,]EB%%**K89II*5@AL(89:1  ECDEs   E= =FFc                 H    | j                  |       | j                  |       y rr   )DUP_TOP
_load_attrr  s     ry   IMPORT_FROMz%InstructionTranslatorBase.IMPORT_FROM  s    Tr{   c                 p   || j                   vrt        d| d      | j                   |   }t        |      rMt        | j                  j
                        }t        ||      }| j                   t        | |      |             y t        |      sJ | j                  t        j                  |             y )Nzname 'z' is not definedr)  )r0  	NameErrorr  r6   r  %name_of_builtins_dict_key_in_fglobalsr5   r   rI   r;   rL   r   )r   r   r  builtins_source
var_sources        ry   load_builtin_from_argvalz2InstructionTranslatorBase.load_builtin_from_argval  s    (fVH,<=>>oof%C=*AAO '?JII7odJ7<=&s+++II&--C89r{   c                 :    | j                  |j                         y rr   )ry  r   r  s     ry   r3  z&InstructionTranslatorBase.load_builtin  s    %%dkk2r{   c                 @    | j                   |j                     | _        y rr   )indexofr   r   r  s     ry   r  zInstructionTranslatorBase.jump  s    #'<<#< r{   FTc                 b    | j                   j                  t        ||j                               y rr   ri  r   r   r   r  s     ry   
SETUP_LOOPz$InstructionTranslatorBase.SETUP_LOOP  !    dkk BCr{   c                 b    | j                   j                  t        ||j                               y rr   r~  r  s     ry   SETUP_EXCEPTz&InstructionTranslatorBase.SETUP_EXCEPT  r  r{   c                 8    | j                   j                          y rr   )ri  r  r  s     ry   	POP_BLOCKz#InstructionTranslatorBase.POP_BLOCK  s    r{   c                 &    | j                  |       y rr   setup_or_before_withr  s     ry   
SETUP_WITHz$InstructionTranslatorBase.SETUP_WITH      !!$'r{   c                 b    | j                   j                  t        ||j                               y rr   r~  r  s     ry   SETUP_FINALLYz'InstructionTranslatorBase.SETUP_FINALLY  s!    dkk BCr{   c                 &    | j                  d        y rr   r  r  s     ry   BEGIN_FINALLYz'InstructionTranslatorBase.BEGIN_FINALLY  s    		$r{   c                     | j                  d      \  }}|J | j                  |       | j                  |j                  | t        j                  d       gdz  i              y )Nr  r   )r   r   r   rL   r   )r   r   r   r   s       ry   WITH_CLEANUP_STARTz,InstructionTranslatorBase.WITH_CLEANUP_START  sX    IIaL	c{{		#		$$$T,<,C,CD,I+JQ+NPRSTr{   c                 H    | j                  d       | j                  d        y )Nr  )r   r   r  s     ry   WITH_CLEANUP_FINISHz-InstructionTranslatorBase.WITH_CLEANUP_FINISH  s    		!		$r{   c                     | j                   | j                     }| j                  t        j                  |             | j                  |       y)z|
        pushes the address of the next instruction onto the stack and increments
        bytecode counter by delta
        N)r|  r
  r   rL   r   r  )r   r   addrs      ry   CALL_FINALLYz&InstructionTranslatorBase.CALL_FINALLY"  s;     ||D112		"))$/0		$r{   c                 p    | j                         }t        |t              r|j                         | _        y y rr   )r  r   rL   r  r   r   r   toss      ry   END_FINALLYz%InstructionTranslatorBase.END_FINALLY,  s.     hhjc+,'*'='='?D$r{   c                     |j                   }|r| j                         }| j                         }|r| j                         y y rr   )r   r  r   )r   r   preserve_tosr  rx   s        ry   POP_FINALLYz%InstructionTranslatorBase.POP_FINALLY5  s7    {{((*CHHJIIcN r{   c                    | j                         j                         }	 |j                  |       }| j                  |       | j                  |       y # t        t
        j                  f$ r}t        |t
        j                        rt        j                  |        t        j                  dk\  r5| j                  |       | j                  t        j                  d              | j                  |       Y d }~y d }~ww xY wNrg  )r  realizenext_variabler   StopIterationr   ObservedUserStopIterationr   r-  r   r   rL   r   r  )r   r   itr  r>  s        ry   FOR_ITERz"InstructionTranslatorBase.FOR_ITER>  s    XXZ!	""4(CIIbMIIcNs<<= 	!S::;--d3 7*
 		"		*11$78IIdOO	s   3A C?-BC::C?c                    | j                         }t        |t        j                        r|j	                  | g i       }| j
                  j                  |       t        |t        j                        rNt        j                  j                  |j                        x}r |d|       t        j                  d|       t        dt                y )Nzraised exception zraise )r  r   r   rK   r   r  r   ExceptionVariabler   observed_exception_mapr  exc_typer  r)   )r   r   r  observed_exception_types       ry   _raise_exception_variablez3InstructionTranslatorBase._raise_exception_variableR  s    hhj c9445 ##D"b1C 	  % c9667*-*D*D*H*H*VV&V-0A#.GHH''*;C5(ABBsen%r{   c                    |j                   dk(  rt        d       y |j                   dk(  r| j                  |       y | j                         }t	        |t
              r|j                  | j                  |       t        d       y )Nr   zre-raiser   zraise ... from ...)ro  r)   r  r  r   rL   r  )r   r   from_vts      ry   r   z'InstructionTranslatorBase.RAISE_VARARGSh  sf    88q=*%XX]**40 hhjG'#349N..t4./r{   c                 b    t         j                  dk\  r| j                  |       t        d       y )Nrc  RERAISE)r   r   r  r)   r  s     ry   r  z!InstructionTranslatorBase.RERAISEu  s&    w&**40i r{   c                    t         j                  dk\  r0| j                  j                  }|rt	        | j
                        |j                  kD  r3| j                          t	        | j
                        |j                  kD  r3|j                  r8| j                  t        j                  | j                  j                               t	        | j                        sJ | j                  | j                  d          | j                  |       y | j
                  j                          t!        |       t"        u rt%        d      |t	        | j&                        rt	        | j                        sJ | j                  d   }| j&                  j                         }|j(                  j*                  dk(  r| j-                  d       t	        | j&                        dk(  r8| j
                  j                          t!        |       t"        u rt%        d      || j&                  j                         }|j(                  j*                  dk(  r|j(                  j*                  dk7  rt/        d|j(                          t1        d	dd d      }| j&                  j3                  t5        |d              t	        | j                        d
k\  rr| j                  d   }| j                  t        j6                                | j                  |       | j                  t        j8                  |j:                               nl| j                  t        j                  d              | j                  t        j                  d              | j                  t        j                  d              | j                  t        j6                                | j                  |       | j                  t        j8                  |j:                               | j                  |       y | j
                  j                          t!        |       t"        u rt%        d      |)Nrc  rD  zObserved exceptionEXCEPT_HANDLERr   r   r  zvexception is raised when top of the block stack is not exception handler (e.g. try .. with .. except). Current TOS is g    .Ar  r  )r   r   r  rq  r   r  depthr  lastir   r   rL   r  r  r  r   typer   r*   ri  r   r   r   r)   r"   r   r   rb   rK   r  )r   raised_exceptionrq  exception_varblock_stack_entryexcept_handler_instold_exceptions          ry   r  z+InstructionTranslatorBase.exception_handler{  sf   w& 44BBM
 $**o(;(;;HHJ $**o(;(;; !&&II!2243K3K3R3RS
 4,,---		$++B/0 		-( 

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

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

  ":!66%&:;;&&r{   c                     | j                         }t        | j                        sJ | j                  | j                  d          | j                  |       y NrD  )r  r   r  r   r   r   r  s      ry   PUSH_EXC_INFOz'InstructionTranslatorBase.PUSH_EXC_INFO  sC    hhj4$$%%%		$##B'(		#r{   c                 4   t         j                  dk\  r^| j                         }t        |t        j
                        sJ t        | j                        sJ | j                  j                          y t        | j                        dkD  sJ | j                  d   j                  j                  dk7  rt        d      | j                  j                          | j                  d       t        | j                        sJ | j                  j                          y )Nrc  r   rD  r  zYBug in Dynamo tracing of exception handling.Top of the block stack is not EXCEPT_HANDLER.r   )r   r   r  r   r   r  r   r  ri  r   r   r   r   r  s      ry   
POP_EXCEPTz$InstructionTranslatorBase.POP_EXCEPT  s    w&((*Cc9#>#>??? t(()))!!#t''(1,,,#((//3CC$D    "IIaL t(()))!!#r{   c                    t        | j                        dk\  sJ | j                         }t        j                  dk\  r| j                  d   }n| j                  j                         }t        |t        t        f      st        d|        t        j                  dk\  r(t        |t        j                        st        d|        t        |t              r|j                  }n|g}|D ]  }t        |t              st        d|        t        |t        j                        r"t        |j                  |j                        r yt        |t        j                        sxt        |j                  |j                        s y y)	Nr  rc  rD  z+except has an unsupported types of objects zCexcept expects to recieve an object of exception type but received z*except has an unsupported types of object TF)r   r  r  r   r   r   rK   r\   r)   r   r  r  
issubclassr  r   )r   expected_exc_typesexc_instanceexpected_typesexpected_types        ry   check_if_exc_matchesz.InstructionTranslatorBase.check_if_exc_matches  s_   4::!###!XXZw&  ::b>L
  ::>>+L ,.NO=>P=QR w&lI,G,GHYZfYgh (-8/55N #N , 	Mm_=@P ,	(C(CD%%}'7'7J L)*C*CD!1!1J 	 r{   c                 h    | j                  t        j                  | j                                      y rr   )r   r   rL   r  r  s     ry   CHECK_EXC_MATCHz)InstructionTranslatorBase.CHECK_EXC_MATCH.  s"    		),,T-F-F-HIJr{   c                 H    | j                         s| j                  |       y y rr   )r  r  r  s     ry   JUMP_IF_NOT_EXC_MATCHz/InstructionTranslatorBase.JUMP_IF_NOT_EXC_MATCH1  s    ((*IIdO +r{   c                     |j                   dk(  r| j                  |       y | j                  t        |j                      | | j	                  d      i              y )Nzexception matchr  )r   r  r   rp   r   r  s     ry   
COMPARE_OPz$InstructionTranslatorBase.COMPARE_OP5  sD    ;;++  &II)$++6tTYYq\2NOr{   c                 b    | j                  t        t              | j                         gi        y rr   )r   rK   iterr  r  s     ry   GET_ITERz"InstructionTranslatorBase.GET_ITER;  s!    ?40488:,Cr{   r   r  c                     | j                  |j                        }| j                         }| j                  ||i        y rr   r   r   r  r   )r   r   rw   r   s       ry   r   z'InstructionTranslatorBase.CALL_FUNCTION>  s1    yy%XXZ2tR(r{   c                    |j                   dk(  rt        i       }| j                         }n;|j                   dk(  r!| j                         }| j                         }nt        d       t        j
                  dk\  r"| j                         }t        |t              sJ | j                         }t        j
                  dk\  r5t        j
                  dk  r"| j                         }t        |t              sJ t        |t              r0t        |j                  t              rj                         }|j                  dk(  r#t        t        t        f      rt        |g      }n|j                  dk(  r[t        t              rKt        |j                         dk(  r3t        |t              r#t        j"                  d      |v rt        d	       ni|j                  d
k(  rZt        t              rJt        |j                         dk(  r2t        |t              r"t        j"                  d      |v rt        d       t        t$              s+|j'                  |       rt        |j)                  |             }t        t*              rt-        j.                  | t0        |      }t        |t$              rt        |t              s#t        dt3        |       dt3        |              |j5                         }| j7                  ||j                   |       y )Nr   r   CALL_FUNCTION_EXr   rc  viewrandom_fromz&random_ op is called with from keyworduniform_z'uniform_ op is called with from keywordznon-static call  )r   rP   r  r)   r   r   r   r`   r^   objrg   r  r  rL   r\   r   r  r   rX   has_force_unpack_var_sequenceforce_unpack_var_sequencerk   rK   call_custom_dictr   rG   keys_as_python_constantr   )r   r   
kwargsvarsargsvarsnullr   s         ry   r  z*InstructionTranslatorBase.CALL_FUNCTION_EXD  s_    ;;!*2.JxxzH[[AJxxzH,-w&88:DdL111XXZw&3+;+;g+E88:DdL111b/*z"&&./Q#++-Jww& Z+^<& )(49$x7'1,z+<=$++F3zA FG:%x7'1,z+<=$++F3zA GH&
44T:$X%G%G%MNH j";<(99$jQJ($45Z)>
 ,WX->,?qAT@UVW  779
2x~~z:r{   c                    | j                         }| j                  |j                        }| j                         }t        |t              r|j                         sJ |j                         }|d t        |        |t        |       d  }}t        t        ||            }t        |      t        |      k(  sJ | j                  |||       y rr   )r  r   r   r   r\   r  r  r   r   zipr   )r   r   argnamesrw   r   kwargs_listr  s          ry   CALL_FUNCTION_KWz*InstructionTranslatorBase.CALL_FUNCTION_KW  s    88:yy%XXZ(M2x7R7R7TTT..0 !1CM>2D#h-9I4Jkc(K016{c(m+++2tV,r{   c                 R   | j                  t        j                  |d             |j                  d   }| j                  d   |   }t
        j                  dk  r'| j                  t        j                  ||             y | j                  t        j                  ||             y )Nr  rf  r   co_namesrc  )	r   r   r  r   rP  r   r   rr  LOAD_METHODr   r   ro  r   s       ry   LOAD_METHOD_SUPERz+InstructionTranslatorBase.LOAD_METHOD_SUPER  s    ;..tA>?kk!n"":.s3g%OOK//VDE[00fEFr{   c                     | j                  t        j                  |d             |j                  d   }| j                  d   |   }| j                  t        j                  ||             y )Nr  rf  r   r  )r   r   r  r   rP  rr  r  s       ry   LOAD_ATTR_SUPERz)InstructionTranslatorBase.LOAD_ATTR_SUPER  sX    ;..tA>?kk!n"":.s3++D@Ar{   c                 b   | j                  |       | j                         }t        j                  dk\  r#| j	                  |       | j                  |       y t        j                  dk\  r#| j                  |       | j	                  |       y | j	                  |       | j	                  d        y )Nr   rc  )rr  r  r   r   r   r?  r   r   r  s      ry   r  z%InstructionTranslatorBase.LOAD_METHOD  s{    hhjw&IIcNNN4 ( NN4 IIcNIIcNIIdOr{   c                     | j                  |j                        }| j                         }|J | j                         }| j                  ||i        y rr   r  )r   r   rw   dummyr   s        ry   CALL_METHODz%InstructionTranslatorBase.CALL_METHOD  sF    yy%
}}XXZ2tR(r{   c                     | j                         }t        t              j                  | |t	        j
                  |j                        gi       }| j                  |       y rr   )r  rK   r  r   rL   r   r   r   )r   r   r  r8  s       ry   rr  z$InstructionTranslatorBase._load_attr  sL    hhj )773(//<=r
 			&r{   c                     t         j                  dk\  r!|j                  dz  r| j                  |       y | j	                  |       y )Nrg  r  )r   r   ro  r  rr  r  s     ry   	LOAD_ATTRz#InstructionTranslatorBase.LOAD_ATTR  s8    w&xx!|  &r{   c                 j   | j                         }|j                  r| j                  |      S | j                  d      \  }}t	        |t
              r1t	        |t              s!| j                  rJ d|j                   d       	 t        t              j                  | |t        j                  |j                        |gi        y # t        $ rS}| j                         s t        j!                  dd       |j#                          |j%                  d       Y d }~nd }~ww xY w|j'                          y )Nr  zMutating module attribute z during export.zSTORE_ATTR triggered compileTrG  rI  )rJ  r   store_attr_graph_breakr   r   rc   rL   exportr   rK   setattrr   r   r*   r   r   r  rL  rY  r   )r   r   rZ  r  r  r>  s         ry   
STORE_ATTRz$InstructionTranslatorBase.STORE_ATTR  s
   nn&..t4499Q<Sc+,ZEU5V KKI+DKK=HI
	*G$22s,33DKK@#F  	*446II4tID!NN=))	* 	--/s   A C 	D!A	DD!c                    | j                         st        d       | j                  j                  | t	        d| j                         g             | j                  j                  t        j                  |      g       | j                  d       | j                  j                  | j                  | j                               y )Nr   
store_attrr   r  )r   r)   r  r  r.   r  r  rp  r   r	  r
  r  s     ry   r  z0InstructionTranslatorBase.store_attr_graph_break  s    002>?$$+L4;M;M;O:PQ 	% 	
 	++TYYt_,=>		!++&&t'<'<=	
r{   c                     | j                         }t        t              j                  | |t	        j
                  |j                        gi        y rr   )r  rK   delattrr   rL   r   r   r  s      ry   DELETE_ATTRz%InstructionTranslatorBase.DELETE_ATTR  s<    hhj ..3(//<=r	
r{   c                 0    t        dt        |              )Nz1create_call_resume_at not overridden by subclass r   r  r   r  s     ry   r	  z/InstructionTranslatorBase.create_call_resume_at  s    ?T
|L
 	
r{   c                 0    t        dt        |              )Nz8should_compile_partial_graph not overridden by subclass r  r   s    ry   r   z6InstructionTranslatorBase.should_compile_partial_graph  s    FtDzlS
 	
r{   r   c                 Z    | j                  d      \  }}}|j                  | d||gi       }y )Nr   __setitem__r   call_method)r   r   r  r  keyr8  s         ry   STORE_SUBSCRz&InstructionTranslatorBase.STORE_SUBSCR  s-    		!S#}sCj"Er{   c                 V    | j                  d      \  }}|j                  | d|gi        y )Nr  __delitem__r  )r   r   r  r  s       ry   DELETE_SUBSCRz'InstructionTranslatorBase.DELETE_SUBSCR  s'    99Q<SmcUB7r{   c                     d }t         j                  dk\  r#t        | j                  |j                   d        }| j                  |j                        }| j                  t        |      |       y )Nr   r  )r   r   r   r  r   r   r   r\   )r   r   
name_tupler  s       ry   BUILD_TUPLEz%InstructionTranslatorBase.BUILD_TUPLE  sW    
w&t|~>?J		$++&		-&Z	8r{   c                 n    | j                  |j                        }| j                  t        |             y rr   )r   r   r   r[   r   r   r  s      ry   BUILD_SLICEz%InstructionTranslatorBase.BUILD_SLICE  s%    		$++&		-&'r{   c                     | j                  |j                        }| j                  t        |t	                            y Nmutable_local)r   r   r   rZ   rF   r  s      ry   
BUILD_LISTz$InstructionTranslatorBase.BUILD_LIST  s)    		$++&		,uLNCDr{   c                     t         j                  rt        d       | j                  |j                        }t        |t                     }| j                  |       y )Nzmissing: BUILD_SETr  )r   +inject_BUILD_SET_unimplemented_TESTING_ONLYr)   r   r   rQ   rF   r   )r   r   r  new_sets       ry   	BUILD_SETz#InstructionTranslatorBase.BUILD_SET   s@    ==./		$++&e<>B		'r{   c                 
   | j                  |j                        }g }|D ]#  }	 |j                  |j                  |              % | j                   ||t                            y # t        $ r t        d|        Y aw xY w)NzBUILD_LIST_UNPACK r  )r   r   extendr  NotImplementedErrorr)   r   rF   )r   r   r  seqsr  seqs         ry   BUILD_LIST_UNPACKz+InstructionTranslatorBase.BUILD_LIST_UNPACK'  s|    yy% 	:C:S::4@A	:
 			#e<>:; ' : 23%89:s    A((BBc                 2    | j                  |t               y )N)r  )r  r\   r  s     ry   BUILD_TUPLE_UNPACKz,InstructionTranslatorBase.BUILD_TUPLE_UNPACK1  s    t7r{   c           	          | j                  |j                  dz        }t        t        |d d d   |dd d               }| j	                  t        |t                            y )Nr  r   r  )r   r   r   r  r   rP   rF   )r   r   r  ds       ry   	BUILD_MAPz#InstructionTranslatorBase.BUILD_MAP6  sQ    		$++/*U3Q3Zqt!t-.		#A\^DEr{   c                 T   | j                  |j                        }|D cg c]#  }t        t              j	                  | |gi       % }}i }|D ]/  }t        |t              sJ |j                  |j                         1 | j                  t        |t                            y c c}w r  )r   r   rK   r   r   r   rP   updater  r   rF   )r   r   r  r<  r8  s        ry   BUILD_MAP_UNPACKz*InstructionTranslatorBase.BUILD_MAP_UNPACK;  s    		$++&MRS&44TA3CSS 	#Aa!2333MM!''"	# 			*n	
 Ts   (B%c           
      d   | j                         }| j                  |j                        }t        |t              sJ |j                         sJ |j                  |       }t        |      t        |      k(  sJ | j                  t        t        t        ||            t                            y r  )r  r   r   r   r\   r  r  r   r   rP   r   r  rF   )r   r   keysr  s       ry   BUILD_CONST_KEY_MAPz-InstructionTranslatorBase.BUILD_CONST_KEY_MAPL  s    xxz4;;'$...&&(((--d34yCK'''		Sv&'*n	
r{   c                     | j                  d      \  }}|j                  dkD  sJ | j                  |j                      j	                         }t        |t              sJ |j                  | d||fi        y )Nr  r   r  )r   r   r  ro  r  r   rP   r  )r   r   r  r  r  s        ry   MAP_ADDz!InstructionTranslatorBase.MAP_ADD\  sg    yy|1{{Qjj$((#++-#0111maVR8r{   c                     | j                         }|j                  dkD  sJ | j                  |j                      }t	        |t
              sJ |j                  sJ |j                  | d|gi       S )Nr   rU  r  r   r  ro  r   rQ   r  r  r   r   r  r  s       ry   SET_ADDz!InstructionTranslatorBase.SET_ADDc  sg    HHJ{{Qjj$((##{+++    tUQC44r{   c                     | j                         }|j                  dkD  sJ | j                  |j                      }t	        |t
              sJ |j                  sJ |j                  | d|gi        y Nr   r%  r-  r.  s       ry   
SET_UPDATEz$InstructionTranslatorBase.SET_UPDATEk  sd    HHJ{{Qjj$((##{+++    hR0r{   c                 V   | j                         }|j                  dkD  sJ | j                  |j                      j	                         }t        |t              sJ |j                  sJ | j                  j                  j                  |       |j                  j                  |       y r   )r  r   r  ro  r  r   rZ   r  r  r  mutationr  r   r.  s       ry   LIST_APPENDz%InstructionTranslatorBase.LIST_APPENDs  s    HHJ{{Qjj$((#++-#|,,,      ))#.		r{   c                    |j                   }t        | j                        }t        j                  dk  r| j                         }| j                         }t        j                  dk\  rBt        |j                  d      sJ t        j                  |j                  j                        }d }d }d }d }	t        j                  dk  rT|dz  r| j                         }|dz  r| j                         }|dz  r| j                         }	|dz  r| j                         }| j                  t        || j                  ||	||| 	             y )
Nrc  co_qualnamer)  r         r  r   )closure_scope)ro  r   r  r   r   r  r   r  rL   r   r7  r   rS   r.  )
r   r   flags	old_stackfn_namecodedefaultsclosureannotations
kwdefaultss
             ry   MAKE_FUNCTIONz'InstructionTranslatorBase.MAKE_FUNCTION|  s   $	g%hhjGxxzw& 4::}555&--DJJ4J4JKG
g%t|((*t|"hhjt|!XXZ
t|88:		&"		
r{   c                    | j                         }t        |t              r'|j                  | t	        |j
                              }nt        |t              rxt        |j                  t              r^t        |j                  j                         |j                        }t	        |j
                        D cg c]  }t        | ||          }}n1|j                  |       r|j                  |       }nt        d|        t              |j
                  k7  rt        d       t!        |      D ]  }| j#                  |        y c c}w )N)idxeszUNPACK_SEQUENCE zUNPACK_SEQUENCE length mismatch)r  r   rg   r/  rv  r   r^   r  r  as_proxyr  rJ   r  r  r)   r   rt   r   )r   r   r  r  proxyr  s         ry   UNPACK_SEQUENCEz)InstructionTranslatorBase.UNPACK_SEQUENCE  s    hhjc>*))$eDKK6H)IC_-*SWWn2UCGG,,.9E:?:LMQ=uQx0MCM..t4//5C,SE23s8t{{";<# 	AIIaL	 Ns   7Ec                 4   d|j                   cxk  rdk  sJ  J |j                   dz  }|j                   dz	  }| j                         }|j                  |       rt        |j	                  |             }t        |      ||z   k\  sJ |d | }||t        |      |z
   }|t        |      |z
  d  }t        |      D ]  }	| j                  |	        | j                  t        |             t        |      D ]  }	| j                  |	        y t        d|        y )Nr   i     r8  z
UNPACK_EX )
r   r  r  r   r  r   rt   r   r\   r)   )
r   r   prefixsuffixr  r  vals_prefix	vals_listvals_suffixitems
             ry   	UNPACK_EXz#InstructionTranslatorBase.UNPACK_EX  s   DKK)6)))))t#!hhj,,T255d;<Dt9///w-KVc$i&&89Is4y6134K -  		$ IImI./ -  		$  Jse,-r{   c                      y rr   r   r  s     ry   r  zInstructionTranslatorBase.NOP      r{   c                 $    | j                          y rr   r  r  s     ry   POP_TOPz!InstructionTranslatorBase.POP_TOP      
r{   c                     | j                         }| j                         }| j                  |       | j                  |       y rr   r  r   r   r   ary  s       ry   ROT_TWOz!InstructionTranslatorBase.ROT_TWO  s.    HHJHHJ		!		!r{   c                     | j                         }| j                         }| j                         }| j                  |       | j                  |       | j                  |       y rr   rY  )r   r   r[  ry  cs        ry   	ROT_THREEz#InstructionTranslatorBase.ROT_THREE  sD    HHJHHJHHJ		!		!		!r{   c                    | j                         }| j                         }| j                         }| j                         }| j                  |       | j                  |       | j                  |       | j                  |       y rr   rY  )r   r   r[  ry  r^  r"  s         ry   ROT_FOURz"InstructionTranslatorBase.ROT_FOUR  sZ    HHJHHJHHJHHJ		!		!		!		!r{   c                 h    | j                         }| j                  |       | j                  |       y rr   rY  )r   r   r[  s      ry   rq  z!InstructionTranslatorBase.DUP_TOP  s#    HHJ		!		!r{   c                     | j                         }| j                         }| j                  |       | j                  |       | j                  |       | j                  |       y rr   rY  rZ  s       ry   DUP_TOP_TWOz%InstructionTranslatorBase.DUP_TOP_TWO  sD    HHJHHJ		!		!		!		!r{   c                    |j                   }|dz  dk(  r| j                         }nt        j                  d      }| j                         }t	        |t
              r>ddlm}m} |j                   |||      |j                        }| j                  |       y |dz  dk(  r"t        t              j                  | |gi       }nS|dz  dk(  r"t        t              j                  | |gi       }n)|dz  dk(  r!t        t              j                  | |gi       }t        j                  d	|j!                         z   d
z         }| j                  t        t        j"                        ||gi        y )Nr9  r   r   )LazySymNodeFormatStringLazyVariableTrackerre  r   r   r  {:})ro  r  rL   r   r   rf   torch._dynamo.variables.lazyrf  rg  r3  r   rK   r   r   reprasciir  format)r   r   r;  fmt_specr  rf  rg  fmt_vars           ry   FORMAT_VALUEz&InstructionTranslatorBase.FORMAT_VALUE  s=   DLT!xxzH'..r2H
e_-
 (..'x8 / E IIeDLT!#C(66teWbIEdlt##D)77ugrJEdlt##E*88wKE"))$1L1L1N*NQT*TU?3::6%8H"Mr{   c                    g }g }i }| j                  |j                        D ]  }t        |t              r#|j	                  d       |j	                  |       7t        |t
        j                        r|j	                  |j                         |j                  |j                         t        |j                               t        |j                  j                               z  rt        d| d|j                          |j                  |j                         t        d|         | j                  t
        j                  j!                  dj#                  |      ||             y )Nz{}zBUILD_STRING key conflict z & zBUILD_STRING r   )r   ro  r   rL   r   r   StringFormatVariableformat_stringr  sym_argsr  r(  
sym_kwargsr)   r%  r   r   rV  )r   r   format_string_partsrw   r  parts         ry   BUILD_STRINGz&InstructionTranslatorBase.BUILD_STRING  s   )+&(-/IIdhh' 	6D$ 01#**40D!D)"@"@A#**4+=+=>DMM*v{{}%DOO,@,@,B(CC!4VHC?PQ doo.dV45	6 			**11+,dF	
r{   c                     |j                   dk(  s|j                   dk(  sJ |j                   dk(  rd}nd}t        d|      }| j                  |       y )Nr   r   iszis notr  rf  )r   r   r  )r   r   
new_argvalnew_insts       ry   IS_OPzInstructionTranslatorBase.IS_OP)  sM    {{a4;;!#333;;!J!J%l:F!r{   c                     |j                   dk(  s|j                   dk(  sJ | j                  d      \  }}|j                   }| j                  |j                  | d|gi              |dk(  r| j	                  |       y y )Nr   r   r  __contains__)r   r   r   r  	UNARY_NOT)r   r   leftrightr  s        ry   CONTAINS_OPz%InstructionTranslatorBase.CONTAINS_OP2  sp    {{a4;;!#333iile[[		%##D.4&"EF7NN4  r{   c                     | j                         }|j                  dkD  sJ | j                  |j                      }t	        |t
              sJ |j                  sJ |j                  | d|gi        y )Nr   r  )r  r   r  ro  r   rZ   r  r  r.  s       ry   LIST_EXTENDz%InstructionTranslatorBase.LIST_EXTEND:  sd    HHJ{{Qjj$((##|,,,    hR0r{   c                     | j                  t        t              j                  | | j	                         gi              y rr   )r   rK   r   r   r  r  s     ry   LIST_TO_TUPLEz'InstructionTranslatorBase.LIST_TO_TUPLEB  s*    		/%(66tdhhj\2NOr{   c                     | j                         }|j                  dkD  sJ | j                  |j                      j	                         }t        |t              sJ |j                  sJ |j                  | d|gi        y r1  )	r  r   r  ro  r  r   rP   r  r  r.  s       ry   
DICT_MERGEz$InstructionTranslatorBase.DICT_MERGEE  sn    HHJ{{Qjj$((#++-#0111    hR0r{   c                 $    | j                          y rr   rU  r  s     ry   	GEN_STARTz#InstructionTranslatorBase.GEN_STARTO  rW  r{   c                     | j                   d   }|j                         r<| j                  t        j                  t        |j                                            y | j                  |j                  | dg i              y )NrD  r  )r  r  r   rL   r   r   r  r  r  s      ry   GET_LENz!InstructionTranslatorBase.GET_LENR  s\    jjn!!#II&--c#2H2H2J.KLMIIcoodIr2>?r{   c                 4   | j                   d   }t        |t              sJ t        |j                  t        j
                  j                        r%| j                  t        j                  d             y | j                  t        j                  d             y NrD  TF)
r  r   rP   r  collectionsabcMappingr   rL   r   r  s      ry   MATCH_MAPPINGz'InstructionTranslatorBase.MATCH_MAPPINGY  sh    jjn#0111cii!8!89II&--d34II&--e45r{   c                 v   | j                   d   }|j                         sJ |j                         }t        |t        j
                  j                        r@t        |t        t        t        f      s%| j                  t        j                  d             y | j                  t        j                  d             y r  )r  r  r  r   r  r  Sequencer   bytes	bytearrayr   rL   r   )r   r   r  	tos_values       ry   MATCH_SEQUENCEz(InstructionTranslatorBase.MATCH_SEQUENCEa  s    jjn%%'''**,	i!9!9::UI.D
 II&--d34II&--e45r{   c                 2   | j                   d   }| j                   d   t        t              sJ t        fd|D              rq| j	                  t        |D cg c]  }j                  | |       c}             t        j                  dk  r%| j	                  t        j                  d             y y | j	                  t        j                  d              t        j                  dk  r%| j	                  t        j                  d             y y c c}w )NrD  r  c              3   &   K   | ]  }|v  
 y wrr   r   )r  r  tos1s     ry   r  z7InstructionTranslatorBase.MATCH_KEYS.<locals>.<genexpr>q  s     &QqDy&s   rc  TF)r  r   rP   r  r   r\   getitem_constr   r   rL   r   )r   r   r  r  r  s       @ry   
MATCH_KEYSz$InstructionTranslatorBase.MATCH_KEYSl  s    jjnzz"~$ 1222&#&&IIm#$NQT%7%7a%@$NOP')		*11$78 * II&--d34')		*11%89 * %Os   Dc                 &    | j                  d       y )Nr   )ry  r  s     ry   r   z.InstructionTranslatorBase.LOAD_ASSERTION_ERRORz  s    %%&67r{   c                 p    |j                   dk(  r| j                  |       d| _        y | j                  rJ y )Nr   F)ro  append_prefix_instr  r  s     ry   RESUMEz InstructionTranslatorBase.RESUME  s5    88q=##D)&+D#.....r{   c                 4    t        |j                     | |      S rr   )_binary_op_lookupro  r  s     ry   	BINARY_OPz#InstructionTranslatorBase.BINARY_OP  s    $TXX.tT::r{   c                      y rr   r   r  s     ry   r   z!InstructionTranslatorBase.PRECALL  rS  r{   c                     | j                   d   |j                     }t        |t              sJ |D ]  }t        |t              rJ  | j
                  J t        j                  |      | _        y )N	co_constsr)  )rP  ro  r   r   r   rn  rL   r   )r   r   rn  r  s       ry   re  z"InstructionTranslatorBase.KW_NAMES  sl    $$[1$((;(E*** 	)DdC(((	)}}$$$(//h?r{   c                 6    | j                  t                      y rr   )r   r`   r  s     ry   r?  z#InstructionTranslatorBase.PUSH_NULL  s    		,.!r{   c                    |rXt         j                  dk\  sJ | j                         }t        |t              r|j                         sJ |j                         }n$| j                  r| j                  j                  nd}| j                  |j                  dz         }t         j                  dk\  r!|d   }t        |d   t              rg n|d   g}n&t        |d   t              r|d   }g }n|d   }|d   g}|rO||dt        |        z   }|t        |       d  }t        t        ||            }t        |      t        |      k(  sJ ||dd  z   }i }	 | j                  |||       d | _        y # d | _        w xY w)Nr   r   r  r   r   )r   r   r  r   r\   r  r  rn  r  r   ro  r`   r   r   r  r   )	r   r   call_kwrn  contentsr   rw   r  r  s	            ry   _callzInstructionTranslatorBase._call  sn    ##w...xxzHh68;V;V;XXX224H.2mmt}}**H99TXX\*w&!B#HQK>2Xa[MD(1+|4a[a[ }(1H~66D"CM>#34K#h45Fv;#h-///(12,&DF	! r40 DMDDMs   E. .	E7c                 &    | j                  |       y rr   r  r  s     ry   r   zInstructionTranslatorBase.CALL  s    

4r{   c                 V    | j                  | j                  |j                             y rr   )r   r  ro  r  s     ry   COPYzInstructionTranslatorBase.COPY  s    		$**dhhY'(r{   c                     | j                   |j                      | j                   d   c| j                   d<   | j                   |j                   <   y r  )r  ro  r  s     ry   SWAPzInstructionTranslatorBase.SWAP  s=    04

DHH90EtzzRT~-

2

DHH9-r{   c                      y rr   r   r  s     ry   CACHEzInstructionTranslatorBase.CACHE  rS  r{   c                 &    | j                  |       y rr   r  r  s     ry   BEFORE_WITHz%InstructionTranslatorBase.BEFORE_WITH  r  r{   c           	         | j                         }t        |t        t        f      st	        |j
                   d|        t        |t              r| xj                  dz  c_        t        |t        t        f      sJ t        ||j                        }t        j                  dk\  rk|j                  r>| j                  r/|j                  j                  | j                  d   j                  urd }n-| j                  j                  j                  }n|j                  }|rpt        | t              r;| j                  j                  t!        ||t#        | j$                        |             n%| j                  j                  t!        ||             | j'                  |       | j'                  |j)                  |              y )Nr  r   rc  rD  )r  r   rM   rN   r)   r   rK  rO   r   r   r   rq  ri  r
  r   r   r   r   r  r   enter)r   r   ctxr   r   s        ry   r  z.InstructionTranslatorBase.setup_or_before_with  sn   hhj)+IJ
 T[[M3%01c9:..!3. )+IJ
 	
 
 (KK

 w&
 !!$$%%,,D4D4DR4H4O4OO..<<CC[[F$ 56  ''#D&#djj/3G   ''f(EF		$		#))D/"r{   c                 V    | j                   sJ | j                  j                  |       y rr   )r  r  r   r  s     ry   r  z,InstructionTranslatorBase.append_prefix_inst+	  s%    &&&&  &r{   c                 .   t         j                  dk\  rq| j                  set        | j                  |j
                     t              sJ | j                  j                  j                         | j                  |j
                  <   y | j                  |       y r  )r   r   r  r   r  r   r`   r  r  track_cell_newr  r  s     ry   	MAKE_CELLz#InstructionTranslatorBase.MAKE_CELL/	  sx    w&t/F/F d224;;?NNN ((779    ##D)r{   c                 &    | j                  |       y rr   r  r  s     ry   COPY_FREE_VARSz(InstructionTranslatorBase.COPY_FREE_VARS:	      %r{   c                 &    | j                  |       y rr   r  r  s     ry   RETURN_GENERATORz*InstructionTranslatorBase.RETURN_GENERATOR=	  r  r{   c                 n    t         j                  dk\  r| j                          y | j                  d       y )Nr   r  )r   r   r  r   r  s     ry   END_FORz!InstructionTranslatorBase.END_FORD	  s$    w&HHJIIaLr{   c                     t        | j                  |j                     t              rt	        d       | j                  |       y )Nz)LOAD_FAST_CHECK on uninitialized variable)r   r  r   r`   r)   r  r  s     ry   LOAD_FAST_CHECKz)InstructionTranslatorBase.LOAD_FAST_CHECKJ	  s0    d**4;;7FEFtr{   c                     |j                   | j                  vr| j                  t                      n| j	                  |       t               | j                  |j                   <   y rr   )r   r  r   r`   r  r  s     ry   LOAD_FAST_AND_CLEARz-InstructionTranslatorBase.LOAD_FAST_AND_CLEARO	  sD    ;;d222IIln%NN4 ,8NT[[)r{   c                     | j                  t        j                  |d             |j                  dz  r| j	                  |       y | j                  |       y )Nr  rf  r   )r   r   r  ro  r  rr  r  s     ry   LOAD_SUPER_ATTRz)InstructionTranslatorBase.LOAD_SUPER_ATTRV	  sB    ;..tA>?88a<T"OOD!r{   c                    |j                   dk(  r| j                  |       y |j                   dk(  r8| j                  t        | j	                         j                  |                    y t        d|j                           y )N      z!missing CALL_INTRINSIC_1 operand )r   UNARY_POSITIVEr   r\   r  r  r)   r  s     ry   CALL_INTRINSIC_1z*InstructionTranslatorBase.CALL_INTRINSIC_1]	  s^    ;;!%[[AIImDHHJ$H$H$NOP=dkk]KLr{   c                 f    | j                         }| j                          | j                  |       y rr   rY  r  s      ry   END_SENDz"InstructionTranslatorBase.END_SENDg	  s!    hhj
		#r{   c                 *    | j                  |d       y )NT)r  r  r  s     ry   CALL_KWz!InstructionTranslatorBase.CALL_KWo	  s    

4
&r{   c                 8    | j                   j                  dv sJ y )N)POP_JUMP_IF_TRUEPOP_JUMP_IF_FALSEr  )r
  r   r  s     ry   r   z!InstructionTranslatorBase.TO_BOOLs	  s'     $$++ 0
 
 	
 
r{   c                    |j                   }| j                         }t        |t              sJ | j                  d   }| j                         }|dz  rYt        |t
              rt        d |D              sJ t        |D cg c]  }| j                  |       c}      |_	        | |_
        n&|dz  r||_        n|dz  r||_        n|dz  r||_        | j                  |       y c c}w )NrD  r8  c              3   <   K   | ]  }t        |t                y wrr   )r   r   )r  r  s     ry   r  zCInstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE.<locals>.<genexpr>	  s      9*.
4%9r  r9  r  r   )ro  r  r   rS   r  r   r  r\   r  r@  r:  rA  rB  r?  r   )r   r   r;  r   
attr_namesattrr  s          ry   SET_FUNCTION_ATTRIBUTEz0InstructionTranslatorBase.SET_FUNCTION_ATTRIBUTE}	  s    XXZ"8999__R(
xxz4< j%0S 92<9 6   '6@Ad##D)ABJ  $BT\!BNT\ BMT\BK		" Bs    C$c                 >   | j                         }t        |t              r(t        j                  t        |j                              }t        j                  d|j                         z   dz         }| j                  t        t
        j                        ||gi        y )Nrh  ri  )r  r   rf   rL   r   r   r!  r  r   rK   rm  )r   rn  r  ro  s       ry   _format_value_313z+InstructionTranslatorBase._format_value_313	  st    
e_-$++C,>?E"))$1L1L1N*NQT*TU?3::6%8H"Mr{   c                 L    | j                  t        j                  d             y Nr   )r  rL   r   r  s     ry   FORMAT_SIMPLEz'InstructionTranslatorBase.FORMAT_SIMPLE	  s    /66r:;r{   c                 B    | j                  | j                                y rr   )r  r  r  s     ry   FORMAT_WITH_SPECz*InstructionTranslatorBase.FORMAT_WITH_SPEC	  s    txxz*r{   c                 P    | j                   j                         dkD  r	d | _        yy)Nr   c                       y)NTr   r   r{   ry   rz   z>InstructionTranslatorBase.is_non_empty_graph.<locals>.<lambda>	      r{   TF)r  count_callsr  r   s    ry   r  z,InstructionTranslatorBase.is_non_empty_graph	  s%    ;;""$q(&2D#r{   c           
          |g }dj                  t        j                  | j                         gt	        t        |            z               S r  )rV  rW  rX  r  r   rt   )r   additional_stack_framess     ry   format_frame_summaryz.InstructionTranslatorBase.format_frame_summary	  sL    "*&(#ww!!##%&h7N.O)PP
 	
r{   c           	          t        j                  t        | j                  dd      | j                  t        | j                  dd      d      S )NrE  	<unknown>r  F)lookup_line)rW  FrameSummaryr  r  r   r   s    ry   r  z'InstructionTranslatorBase.frame_summary	  s?    %%DKK<KKDKKK8	
 	
r{   c                     t        | j                  dd      }t        j                  d      }|j	                  |      d uS )NrE  r  z.*torch/nn/modules.*)r  r  recompilematch)r   r   nn_modules_patterns      ry   is_co_filename_from_nn_modulesz8InstructionTranslatorBase.is_co_filename_from_nn_modules	  s:    4;;{CZZ(?@!''1==r{   c                     | j                   j                  |t        j                  |            }t	        t        |      j                  t        j                               |S rr   )	r  install_global_by_idweakrefrefr-   r7   
make_guardr,   WEAKREF_ALIVE)r   rK  r  global_names       ry   store_global_weakref_by_idz4InstructionTranslatorBase.store_global_weakref_by_id	  sJ    kk66vw{{5?QR,778R8RS	
 r{   c                 B    | j                   j                  j                  S rr   )r  tracing_context	fake_moder   s    ry   r   z#InstructionTranslatorBase.fake_mode	  s    {{**444r{   c                 X    | j                   j                         D ]  \  }}||u s|c S  y rr   )r  r  )r   tensor_variabler  r  s       ry   find_symbolic_locals_namez3InstructionTranslatorBase.find_symbolic_locals_name	  s6    ..446 	JC'
	 r{   check_fnc              #   b   K   | j                   }|| _         	 d || _         y# || _         w xY ww)zx
        Strict mode is enabled on a per-VariableTracker level depending on the return value of check_fn(node).
        N)r  )r   r  priors      ry   strict_translation_modez1InstructionTranslatorBase.strict_translation_mode	  s3     
 %% (	*$)D!ED!s   /# /	,/c                    | j                   J | j                   dkD  sJ | j                  j                  | j                  j                  | j
                  | j                   dz
  | j                  | j                   dz
           S )Nr   r   )r   speculation_logr   r  rE  r   r   r   s    ry   rJ  z#InstructionTranslatorBase.speculate	  s|    ''333''!+++##((KK##KK$$q(d66:;	
 	
r{   r   r  r.  r0  rP  r  r  r	  distributed_statec                 ~   t         |           || _        || _        || _        || _        || _        |	| _        g | _        g | _	        d| _
        t        d      | _        g | _        d| _        d| _        d | _        d| _        g | _        g | _        || _        t+        | j(                        | _        || _        || _        || _        || _        |
| _        t8        j:                  rt=        |
|      | _        nd | _        i | _         || _!        d| _"        d | _#        d | _$        tJ        jL                  dk\  r>dd	l'm(}m)}m*}m+} |
jX                  ||z  |z  |z  z  r| j[                  t]        d              || _/        d| _0        d gtc        |
jd                        z  | _3        ti        jj                  |
jl                  |       y )
Nr   r  rD  T)r>  rP  F)r   
   r   )CO_ASYNC_GENERATORCO_COROUTINECO_GENERATORCO_ITERABLE_COROUTINE)7r  r  r	  r
  r  r  r  r  r  r  r   r   r  ri  rK  r   rn  r  r  r  r   r   r|  r  r.  r0  rP  r  r   replay_record_enabledr1   r  nn_module_stackr  	one_graphr  r  r   r   resume_executionr  r  r  r  co_flagsr   rK   r  r  r   r  r*  r  	lazycacherE  )r   r  r   r  r.  r0  rP  r  r  r  r  r  r  r	  r
  r  r  r  r  r  s                      ry   r  z"InstructionTranslatorBase.__init__	  s   " 	.!2 . 02T/
%'#$ #5e#< -.*"& 0</:4;L;L/M  	 *3*4,8&, ''!2,"D "&D BD#'  $w&  |+.CCFXX 		/$/0().&BF#K
 B
 	F..	:r{   rr   )F(  r   r   r   r/   r   r   r   rH   r   r   r	   r   r"   r   rL   r   r   r   r1   r   r  r  r  r  r   r  r  r  r  r  r   r   r  propertyr
  r  r  r  r   r  r  r   r  r  r  r  r!  r#  r%  STORE_DEREFr'  r+  r   r5  r   cached_propertyr=  r   rE  r7  rX  ra  ro  rs  ry  r3  r  JUMP_FORWARDJUMP_ABSOLUTEr@  r   not_r  r   r  JUMP_IF_FALSE_OR_POPJUMP_IF_TRUE_OR_POPr  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r|  r   r  r  r  r  r  r  rr  r  r  r  r  r	  r   r  r	  r  r  r  r  rZ   r  r   BUILD_TUPLE_UNPACK_WITH_CALLr#  r&  BUILD_MAP_UNPACK_WITH_CALLr)  r+  r/  r2  r5  rC  rH  rQ  r  rV  r\  r_  ra  rq  rd  rp  rx  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_REMAINDERrU  
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   re  r?  r  r   r  r  r  JUMP_BACKWARD_NO_INTERRUPTPOP_JUMP_FORWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_FORWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_FALSEr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  
contextlibcontextmanagerr  rJ  rj  CodeTyper   r   r  r  r  s   @ry   r   r     s	    #.//3/00(-.I(JJ  !#&$$o&&K'(({####!"233I''-..x(94(?@AA.>
'	=88 ?#8 S/)*	8,QnW)=V 7"%	+R	 ; ;
2*,;1 ; ;d?3  _  ;c ;d?3 ;*+8%5/
&. K3*8. D D!E#$
2:-;^:3= LM$X]]E:#HNNE:'t<&x~~t<DD(DU(&,0!]'~$.5nKPD  Q') ()
  Q'K; (K;Z  Q'	- (	-GB )04





d 

  Q'F (F89(E +7 <8 $6 F

 "2
 951&
P".&
N<
0"!1P1 K@6	6:8 hll+Nhll+N'IHOO,LHLL)Lx||,O%hoo6"8#4#45!("2"23X\\*M-(,,'Jx||,O6.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(,#\'	*&&
;"M  Q'' ('
:N<+

>
 5 5 	*/9JD9P0Q 	* 	*
+ 
X;X; ;'X; sCx.	X;
 S>X; cNX; 38nX; c?23X; sO34X; -22M,NX; X; X; X; (X; $$45X;  
!X; X;r{   )	metaclassc            
            e Zd ZU ee   ed<   edd       Zej                  d        Z
dee   dee   dedee   ddf
 fd	Zd
 Zd ZdefdZ fdZd Zd Zd Zd Zd Zd Zd Z xZS )r   mutated_closure_cell_contentsr   c                  "    t         j                  S rr   )tls
current_txr   r{   ry   rj  z InstructionTranslator.current_txK
  s    ~~r{   c              #      K   t        t        dd       }| t        _        	 d  |t        _        y # |t        _        w xY ww)Nrj  )r  ri  rj  )r   r  s     ry   set_current_txz$InstructionTranslator.set_current_txO
  s1     \40	#"CNUCNs   A 0 A =A r   r	  r
  Nc                 v    t               t        j                  d|j                   d|d    d|d           t        |   t        ||| |	|
||||	      |||||i i t        j                         ||	d||       | j                          t        | j                  j                        5  | j                         5  || _        |	| _        || _        | j                  r| j                  sJ d	       t#        |d
         }| j%                         D cg c]	  }||vs| }}|j'                  |       t)        |      }|D ci c]8  }||v r2|t*        j,                  j/                  ||   t1        |||v             : c}| _        | j5                          g | _        |	r.t*        j,                  j9                  | j2                        | _        i | _        | j<                  d   D ]"  }||v st?        ||         | j:                  |<   $ 	 d d d        d d d        y c c}w c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)Nztorchdynamo start tracing r  rE  r   rF  )local_scoperO  r  r   )r  r   r  r.  r0  rP  r  r  r  r  r  r  r	  r
  z4Export without one graph - something has gone wrong.co_varnames)cell_or_freevarre  r  ) r   r   INFOr  r  r  r/   r  deque_throw_if_in_functorchr   r  r  rl  r  r  rg  r   r  r  r  r   rg  r   r8   r  _init_torch_function_mode_stackdebug_localsrealize_all_freevars_idsrP  id)r   r   r  r  r.  r0  rP  compiler_fnr  r  export_constraintsrg  frame_stater	  r
  varsr<  cells_and_freevarscells_and_freevars_setr  r  r  s                        ry   r  zInstructionTranslator.__init__X
  s~   " 	LL((8,}:U9VVWXdeuXvWwx	
 	"$&
 &!%/:/@/@/B+/3 	 	
8 	##% T[[001 $	B43F3F3H $	B#,DN DK1ND.{{NNJIJ" ]34D-1-C-C-E!WRV!!W!WKK*+%();%<" $
 = 90077QK&q!?U:UV 8  $D  002UWD (1'D'D'P'P((($ "$D))-8 B8#/1(4./AD&&t,BE$	B $	B $	B "X$$	B $	B $	B $	BsP   *H/;AH#	HH"H# =H=A,H#*H#H/
H##H,	(H//H8c                    t         j                  j                  d      }t        j                  | j
                  j                  d| j
                  j                        }t         j                  j                  j                         }t         j                  j                  j                  j                  t         j                  j                  j                  j                  t         j                  j                  j                  j                  f}|X|j                         |v rE||ur@|j                         j                  j!                         }d| d| d| d}t#        |       y y y y )Neagerry  zhIf you are reaching here, it means dynamo failed for one of the following reasons:
- Calling torch.func.zP(compiled_fn) function from eager mode is not supported. Ensure that torch.func.zp is also wrapped within a torch.compile function. For more information, see PyTorch issue #128711.
- torch.func.z2(fn) requires the function to be inlined by dynamo)r  _dynamolookup_backendr   getattr_staticr  ry  _C
_functorchpeek_interpreter_stackTransformTypeVmapGradJvpr  r  lowerr)   )r   r  ry  ciforbidden_keysr  r  s          ry   rs  z,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[PU=U668==&&(D((,v .**. 0  !%v%WY  # >V8>r{   c           	         ddl m} |j                          t        j                         | _        t        d      }|r1t        |d   t        j                  j                  j                        }t        |      D ]H  \  }}| j
                  j                  t        j                  j!                  |t#        |                   J y )Nr   )TorchFunctionModeStackVariableF)filter_ignoredr   re  )variables.torch_functionr  resetr  rr  r  r@   r   r  utils_deviceDeviceContext	enumerater   r   rg  r   r:   )r   r  py_stackhas_device_contextr  r  s         ry   rt  z5InstructionTranslator._init_torch_function_mode_stack
  s    L&,,.  	/ 1F!+U[[00>>"  ) 	FAs33::--44 <Q ? 5 	r{   r3  c                     t        |t              r| j                  |j                     S t        |t              r| j
                  |j                     S t        rr   )r   r8   r  
local_namer6   r.  r  r  )r   r3  s     ry   get_example_valuez'InstructionTranslator.get_example_value
  sE    fk*==!2!233fl+>>&"4"455r{   c                 "    t         |           y rr   )r  r  )r   r  s    ry   r  zInstructionTranslator.run
  s    r{   c                     	 |j                   }t        |      | j                  j	                  |      k7  ry| j
                  |   S # t        $ r Y yw xY w)z@Match a cell in this method to one in a function we are inliningN)cell_contents
ValueErrorrx  rw  r  r  )r   r  cellr  s       ry   match_nested_cellz'InstructionTranslator.match_nested_cell
  sY    	&&E e9**..t44##D))  		s   A 	AAc                 4   t         j                  dk\  rJ| j                  j                  }|r2| j                  r%|j
                  | j                  d   j
                  uryt        d | j                  D              xr | j                   xr | j                  dk(  S )Nrc  rD  Fc              3   <   K   | ]  }|j                           y wrr   )r   r  ry  s     ry   r  zEInstructionTranslator.should_compile_partial_graph.<locals>.<genexpr>  s     :A:r  r   )	r   r   r  rq  ri  r   r  r  rK  )r   r   s     ry   r   z2InstructionTranslator.should_compile_partial_graph
  s    w&,,::E$$D<L<LR<P<W<W(W:)9)9:: 8NN"822a7	
r{   c                 Z    d  _         |j                  dk(  rt        d      gS |j                  dk(  rt        d|j                        gS t	         j
                  |      t         fd j                  j                         D              }t         fd|D              }t         fd|D              }t        j                  dk  rt        |      dk(  sJ d	       t               }g }t         j                        D ]  \  }}t        j!                  t"        |      s!t%        t"        |      }	|	j&                  d
nt        |	j&                        }
|j)                  ||
f       |	j+                  |       |j-                  t/        t         j                        |z
  dz                |j1                  t        d              g }|D ]  }t        j!                  t"         j                  |   x}      s-t%        t"        |      }	|	j&                  d
nt        |	j&                        }
|j)                  ||
f       |	j+                  |       |j1                  t        d|              g }t        j                  dk\  rt         j                        D ]1  \  }}t        j!                  t2        |      s!|j)                  |       3 d}t        t5         j                              D ]w  \  }}t        j!                  t2        |      s!t7        d|dz   |z
        D ]  }|j1                  t        d|               |j-                  |j9                                |dz  }y t         j                        t        |      z
  }|t        |      z   }t;        d|j<                         }t?        j@                   jB                   jD                  |j<                  t        d  jF                  D              |||t        d  jF                  D              t        |      t        |      t        |            } tI        jJ                   jB                        jM                  dd              }|+tO        jP                  |      tI        jJ                  |      d<   |jR                  r1 jT                  jW                  ||       |jY                  ||d|       n] jT                  jW                  |t[        j\                  | j^                  |             |j-                  |ja                  |d|             |j-                  |D cg c]  }|jc                  |       c}       |j-                  te        |d             |j1                  t        d             |jg                         S c c}w )Nr  r  rf  c              3   N   K   | ]  }|v r|j                         vr|  y wrr   )r  )r  r  r  r   s     ry   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  s0      
Ezat'='='?? 
s   "%c              3   p   K   | ]-  }t         j                  t        j                  |         s| / y wrr   r  __instancecheck__r`   r  r  r  r   s     ry   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  s4      
)),8L8LQ8OP 
   36c              3   p   K   | ]-  }t         j                  t        j                  |         r| / y wrr   r  r  s     ry   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>  s4      
%%lD4H4H4KL 
r  rg  r   z&variables should not be NULL in < 3.12r   r   rV  r#  rc  r  r  )ro  __resume_at_c              3   H   K   | ]  }|j                   j                    y wrr   )r   r  r  s     ry   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>b  s     <a!((//<s    "c              3   <   K   | ]  }|j                           y wrr   )r   r  s     ry   r  z>InstructionTranslator.create_call_resume_at.<locals>.<genexpr>f  s     :A!++-:r  orig_graphmodulec                       y rr   r   r   r{   ry   rz   z=InstructionTranslator.create_call_resume_at.<locals>.<lambda>o  r  r{   TF)4r   r   r   r   r   r   r   r  r(  r   r   r   r&   r  r  r  r  rM   r   r   r   rj  rk  r    append_outputr`   rt   rv  pop_nullr$   r  r2   lookupr  r   ri  r%   get_contextr  r  r  r  r  install_global_unsafemake_function_with_closurerj  FunctionTyper.  load_function_namecreate_loadr   rm  )r   r   all_argnamesr  argnames_nullrw  stack_ctx_varsr  varr  r   argnames_ctx_varsr  
null_idxesnull_cntj	stack_lenr   new_codeorig_graphmodule_mayber  r  s   `                    @ry   r	  z+InstructionTranslator.create_call_resume_at  s    #' ;;.(&~677[[N*&~dkkJKK!$"3"3T: 
))..0
 
  
!
 

  
!
 

 g%}%*T,TT*t_
 

+ 
	@FAs%%&=sC2C8++3Bs?P?P9Q  %%q-&89$$R(  S_q-@1-D!EF  !3I!>?
	@  	PD%%'0D0DT0J)J 2C8++3Bs?P?P9Q  "(($)>?$$R(  !3L!NO	P$ !#
w&#DJJ/ )3)),<%%a() H#HTZZ$89 "3)),<"1a!eh&67 L(();F)JKL$$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>"..+>?
-eU;<
+N;<""$$ ?s   V(c                     | j                   j                         D ]G  }t        |t              st	        |j                         t        j                  j                        sG y y)NTF)	r  r  r   rj   r  r  r  nnModule)r   r  s     ry   $symbolic_locals_contain_module_classz:InstructionTranslator.symbolic_locals_contain_module_class  sR    %%,,. 	A!56:$$&< 		
 r{   c                    | j                   j                         dk(  r=| j                  s1| j                         s!| j                  st        j                  d      d | _         t               t        j                  d| j                  j                   d|j                   d       t        j                  d|j                         | j                   j!                  | t#        d| j%                         gd	      
       |j                  dk(  rt'        d      nt'        d|j(                        }| j                   j+                  |g       t,        )Nr   z#because no content in function callztorchdynamo done tracing r   r  z%s triggered compilereturn_valueF)rI  r   r  r  rf  )r  r  r  r  r  r   r  r   r   r   rq  r  r  r   r   r  r  r.   r  r   r   r  r   )r   r   return_insts      ry   _returnzInstructionTranslator._return  s   KK##%*22==?KK-- EFF#' LL'(;(;'<Bt{{m1M	
 			($++6$$%!3!3!5 6E 	% 	
 {{n, ~.#N4;;G 	
 	++[M:r{   c                 &    | j                  |       y rr   r  r  s     ry   r  z"InstructionTranslator.RETURN_VALUE      Tr{   c                 &    | j                  |       y rr   r  r  s     ry   r  z"InstructionTranslator.RETURN_CONST  r  r{   )r   r   )r   r   r   r
   r   r   staticmethodrj  rb  rc  rl  r   r"   r   r	   r   r  rs  rt  r9   r  r  r  r   r	  r  r  r  r  r  r  s   @ry   r   r   H
  s    #&s8+  # #YB;'YB (+3xYB (YB $$45YB  
!YBv4. 	*
}%~8r{   r   rc  INPLACEr   BINARY_c                   2    e Zd ZU dZee   ed<   ed        Ze	d        Z
e	dedee   fd       Zded	ej                   d
eeef   deeef   ded   deeef   deddf fdZed        Zd Zd Z fdZd Zd Zd Zd Zd Zd Z d Z! fdZ" fdZ# xZ$S ) r  z Trace and inline a called methodsymbolic_resultc                     t        j                  t        dt        d   i      5  | j                  ||||      cd d d        S # 1 sw Y   y xY w)Nr)   r  )r   r   r=   inline_call_)r  r  funcrw   r  s        ry   r  z)InliningInstructionTranslator.inline_call  sG    ZZ?H]4K"LM 	@##FD$?	@ 	@ 	@s   AAc                    | j                         rt        d       t        j                  | d      }|j                  rddlm} t        t        | dd       d      r/| j                  j                  |fv rt        j                  dd	      S t        | d      r| j                  j                  nd
}t        d| d| j                          d| j                          d|j                   d	       t!        | t"              rBt%        j&                  | j)                         dd      rt        d| j)                                 y |S )Nzinline with __self__T)is_inlined_callr   )!produce_trampoline_autograd_applyr   _originFz"allowlist in dynamo known functionr   z'inline in skipfiles: z | r  z, '_torchdynamo_disablez.call torch._dynamo.disable() wrapped function )has_selfr)   r   check_verboseskippedtorch._dynamo.variables.miscr  r   r  r   r  
SkipResultr   get_nameget_filenamer   r   rU   r   r  get_function)r  r8  r  fn_qualnames       ry   check_inlineablez.InliningInstructionTranslator.check_inlineable  s&   ==?01**4F>>V wtT40)<1U B #--?  3:$2E$''..2K(S8I4K\K\K^J__abhboboappqr d01g6L6L!77
 @ARARAT@UV Mr{   r  rw   c                    t        |t              rt        d       t        |t        t        f      sJ t
        j                  |      }|j                  du sJ 	 |j                  | ||      \  }}t%        j&                  |j)                         |j)                               D ]!  }	t        |	t*              rt        d|	        # |j                         j,                  d	v rG|r-t        |d
   t.        j0                  t.        j2                  f      st        dj,                          d}
t4        j6                  j8                  j:                  j=                  d      r&dt?        j@                        j?                          }
tB        jD                  dk\  re| jF                  | jH                  | jK                  jL                  jN                        fd}tP        jS                  dtU        |             tV        jS                  d|
|jX                         |rt        |d
   tZ              r| j\                  j_                  |d
   j`                        }t        |t4        jb                  jd                        r?tg        jh                  |      tk        jl                  |jn                  jp                        d<   ts              r&tu        | || jv                  | jx                  ||      }n%t        | || jv                  | jx                  ||      }t{        j|                         }| j~                  r|j                  | j~                        }	 |5  |j                          d d d        |j                  J |j                  | |       |j                  | j                  u r%| jv                  j                  |jv                         | xj                  |j                  z  c_M        tV        jS                  d       ts              rMt        |tt              sJ |j                  j                         J t        |j                  t                     S |j                  S # t        $ r}t        dj                  t        |      d|j                          d|j                          d|j                         j                    |D cg c]  }|j#                          nc c}w c}|            d }~ww xY w# 1 sw Y   xY w# t        j                  $ rH}d d| }| j                  j                  |j                         tV        jS                  |        d }~wt        j                  $ r.}d d| }tV        jS                  |       t        |      |d }~wt        $ r}tV        jS                  d        d }~ww xY w)Nz#inline with functions in skip filesFz;{reason}.
  func = {func}, args = {args}, kwargs = {kwargs}r  z' r   )r   r  rw   r  zunconverted arg )r  __setattr__r   zinline r   bytecoder  rc  )r   c                  b    t              j                         } dj                   d d|  S )NzTRACE inlined call z from r  )r?   r  r  )r  r>  cur_instheaderparent_codes    ry   get_trace_call_log_strzJInliningInstructionTranslator.inline_call_.<locals>.get_trace_call_log_str  s5    1+xHOOQ,T\\N&4&QQr{   r  zINLINING %s%s, %sr  z!Observed exception DURING INLING z : zSKIPPED INLINING z: zFAILED INLINING %szDONE INLINING %sr  )Rr   rT   r)   rU   rS   r  r  r  	bind_args	TypeErrorr'   rm  r   r  r  get_coderF  python_typer  r  r  rH   r  r   CustomizedDictVariablerk   r  _logging	_internal	log_stateis_artifact_enabledrr  Bytecoder   r   r  r  r  	positionsr   trace_call_logr  rC   r   r   rc   r  r)  r*  r#  GraphModuler  r  r%   r  forward__code__r#   &InliningGeneratorInstructionTranslatorr  r  rb  nullcontextr  r  r  r   r  r  r  r  r*   r  r  export_freevarsr.  r%  r  r  rY   generated_itemsrF   )r  r  rw   r  r8  
sub_localsclosure_cellsr>  ro  r  rL  r  moduletracer
strict_ctxr  r>  r  r  r  s                   @@@@ry   r  z*InliningInstructionTranslator.inline_call_  s    d01?@!#=>
 	
 
 /??E~~&&&	(,vtV(L%J !2!2!4m6J6J6LM 	6Aa1 045	6  $}}<<99Q1193V3VW
 GDLL>23 >>##--AA*M#,,t,00234Fw&11H --K338;M;M;T;T3UFR   z2H'IJ		%tVV]]C JtAw(89]]00a1C1CDF&%(("6"67
 KK' (()@)@A&
 ;''99F 3''99F %002
""778O8OPJ	 

" %%111VV,v///##**6+B+BC((F,L,LL(		$d+f&LMMM))<<>FFF'&&*n 
 )))g  		#NUUq6T]]_-R0A0A0C/DAdmmoFdFdEef7;<#//+<<!	 V  		^ $$ 	5dV3qcBC &&v':':;IIcN}} 	*%dV2aS1CIIcNc") 	II*D1	sn   Q' T S>)T '	S;0AS6S$#S66S;>TT WAU!!W7)V  W,WWr  r>  r  r  r  rh   r  funcvarr   Nc                    |j                         }|d   }	t        |	t              s|	j                  }	t	        |      }
t        |
       t        |   |j                  i ||	||||
t               D ci c]  }|t        ||       c}||j                  |j                  dz   |j                  |j                         || _        d | _        || _        |j$                  j'                         | _        |j(                  | _        y c c}w )N__builtins__r   )r  r  r.  r0  r  r  r  r   rP  r  r  r  r	  r
  )get_globalsr   r   __dict__r   r   r  r  r  r!   r  r  r  r	  r
  r  r  r  r  rp  r  )r   r  r>  r  r  r  r  r
  r.  r0  r   r  r  s               ry   r  z&InliningInstructionTranslator.__init__h  s     '')	~.
*d+#,,J+D1L)==!+-/Q%7DG!!WT1--G==,,q0"22$66 	 	
  #*%55::<)) Hs   0Dc                 .    | j                   j                  S rr   )r  r   r   s    ry   r   z'InliningInstructionTranslator.fake_mode  s    {{$$$r{   c                 \    t        j                  | j                  j                               S rr   )r   r  r  r  r   s    ry   r  z)InliningInstructionTranslator.run_ctx_mgr  s     ++DKK,E,E,GHHr{   c                    |j                   | j                  v r| j                  |j                      }| j                         }t        |t              rS| j
                  j                         st        d       || j
                  j                  j                  |j                  <   y | j
                  j                  j                  ||       y | j                  j                  |j                         }t        |t        j                        rL| j
                  j                  j                  | j                  |j                      | j                                y ||j                   j                         | j
                  j                  j"                  vrW| j
                  j                  j"                  j%                  |j                   j                                t&        j(                  t        d       y )NzSHigherOrderOperator: Mutating a variable not in the current scope (ClosureVariable)z#write to __closure__ while inlining)r   r  r  r   r]   r  is_root_tracerr)   root_txr  r  r  
store_cellr  r   NewCellVariabler3  rg  rU  r   UnspecializeRestartAnalysis)r   r   r  r  
maybe_cells        ry   r  z)InliningInstructionTranslator.STORE_DEREF  sr   ;;$,,,%%dkk2D((*C$0{{113!m BE##33DII>((33D#>--11$++>J)) ((33((5txxz
 *"))..0;;..LLM KK''EEII"))..0 999CDr{   c                 t   |j                   | j                  v r| j                  |j                      }t        |t              r=| j	                  | j
                  j                  j                  |j                            y | j	                  | j
                  j                  j                  |             y | j                  j                  |j                   d       }t        |t        j                        r5| j	                  | j
                  j                  j                  |             y t        | =  |       y rr   )r   r  r   r]   r   r  r  r  r  r  	load_cellr  r   r  r  r  )r   r   r  maybe_sym_localr  s       ry   r  z(InliningInstructionTranslator.LOAD_DEREF  s    ;;$,,,%%dkk2D$0		$++--==diiHI		$++22<<TBC"2266t{{DIO/9+D+DE		$++22<<_MN"4(r{   c                 |    || j                         v sJ || j                  v r| j                  |   S t        |      S r
  )r  r  r_   r  s     ry   r  z+InliningInstructionTranslator._load_closure  sC    t--////4%%%%%d++)t44r{   c                 F    t        |j                        st        d       y y )NzOHigherOrderOperator: Mutating a variable not in the current scope (replace_all))rE   r  r)   )r   oldvars     ry   check_replace_is_safez3InliningInstructionTranslator.check_replace_is_safe  s     "6#7#78a 9r{   c                      y)NFr   r   s    ry   r   z:InliningInstructionTranslator.should_compile_partial_graph  s    r{   c                     t        d       y )Nzcant resume while inliningr  r  s     ry   r	  z3InliningInstructionTranslator.create_call_resume_at  s    23r{   c                 F    | j                         | _        d | _        t        rr   )r  r  r   r   r  s     ry   r  z*InliningInstructionTranslator.RETURN_VALUE  s    #xxz#' r{   c                 H    | j                  |      | _        d | _        t        rr   )r+  r  r   r   r  s     ry   r  z*InliningInstructionTranslator.RETURN_CONST  s#    #//5#' r{   c                    d| j                   v r| j                   d   }| j                  |      }d|v r(t        j                  j                  j
                  |   }nt        j                  |      } t        | |      |      }t        ||      }n[| j                  j                  d| j                         }t        |      }| j                   } t        | |      |      }t        ||      }|||fS )Nr   rG  ___unnamed_scope)r.  r7  r  rL  rM  rN  r8  r9  rI   r4   r  r  r6   r5   )	r   r  r:  r;  r<  fglobals_vtglobal_sourceglobals_nameglobals_sources	            ry   get_globals_source_and_valuez:InliningInstructionTranslator.get_globals_source_and_value  s    '..4K ..{;M+-!&!?!?!Y!YZe!f!*!8!8!E>/$>~NK&}d;M;;;;"DNNL *,7N!^^N?/$?OK).$?M{M99r{   c                    | j                   j                  | j                  u rt        |   |       y |j
                  }| j                  |      \  }}}| j                   j                  j                  ||      r6| j                  | j                   j                  j                  ||             y 	 | j                  |   }| j                   t        | |      |             y # t        $ r | j                  |      cY S w xY wrr   )r  rO  r.  r  r5  r   r)  r  has_pending_mutation_of_attrr   	load_attrr  r3  rI   )r   r   r  rx   r%  r&  r  r  s          ry   r5  z*InliningInstructionTranslator._load_global  s    ;;##t~~5G &;;D,0,M,Md,S)A{M{{''DD[RVW		$++22<<[$OP3 NN40E 		>/$>uEF   3,,T223s   2C# #D ?D c                 P   | j                   | j                  j                   u rt        |   |       y | j	                         }t        |t              rt        d       |j                  }| j                  |      \  }}}| j                  j                  j                  |||       y rA  )r.  r  r  rE  r  r   ri   r)   r   r)  r  r  r  )r   r   r  r  r<  r%  rx   r  s          ry   rE  z*InliningInstructionTranslator.STORE_GLOBAL  s    >>T[[222G &HHJE%!89@A;;D-1-N-Nt-T*NKKK$$//T5Ir{   )%r   r   r   r   r	   rg   r   classmethodr  r  r  rH   r   r  r   rj  rd  r   r   r   rR   r  r  r   r  r  r  r  r  r   r	  r  r  r)  r5  rE  r  r  s   @ry   r  r    s>   *n--@ @  > @*%@*-1/-B@* @*D$*)$* nn$* c?23	$*
 sO34$* -22M,N$* C01$* *$* 
$*L % %I%EN)54

:(G"	J 	Jr{   r  c                   P     e Zd ZU ee   ed<   d fdZdefdZd Z	d Z
d Z xZS )	r  r  c                 2    t        |   |i | g | _        y rr   )r  r  r  )r   rw   r  r  s      ry   r  z/InliningGeneratorInstructionTranslator.__init__  s    $)&)!r{   r   c                     | j                   j                  | j                                t        | j                         t        kD  rt        dt                | j                  t        j                  d              y )NzqToo many yield values in generator. Maybe you are inlining an infinite generator. If not, please report a bug at )
r  r   r  r   rW   r)   PT2_ISSUE_TRACKER_URLr   rL   r   r  s     ry   YIELD_VALUEz2InliningGeneratorInstructionTranslator.YIELD_VALUE  sc    ##DHHJ/t##$'9922G1HJ 			"))$/0r{   c                     | j                   d   }t        |t              sC| j                          t	        t
              j                  | |gi       }| j                  |       y y r  )r  r   rY   r  rK   r  r   r   )r   r   r  ress       ry   GET_YIELD_FROM_ITERz:InliningGeneratorInstructionTranslator.GET_YIELD_FROM_ITER(  sN    jjn#34HHJ!$'55dSE2FCIIcN 5r{   c                    t        | j                        dk\  sJ | j                         }| j                  d   }t        |t              r|j
                  t        d       	 |j                  |       }| j                  |       | j                  |       t        | j                  t              r| j                  dkD  sJ | xj                  dz  c_
        y # t        t        j                  f$ rw}t        |t        j                        rt        j                  |        | j                          | j                  t	        j                   |j
                               Y d }~y d }~ww xY w)Nr  rD  Unreachable sub-generator coder   r   )r   r  r  r   rL   r  r)   r  r   r3  r   r   r  r   r  r-  r   r   r   r  r  exs        ry   
YIELD_FROMz1InliningGeneratorInstructionTranslator.YIELD_FROM/  s!   4::!###hhjjjn3 01cii6G :;	*##D)C IIcNT" 433S9,,q01 $$)$# s<<= 	9"c;;<--d3 HHJII&--bhh788	9s   "C E&/A-E!!E&c                    t        | j                        dk\  sJ | j                         }| j                  d   }t        |t              s>t        |t
              rzt        |j                  t        j                  j                        rLt        |t              r0|j                  $	 |j                  |       }| j                  |       y t)        d       y t)        dt+        |              y # t        t        j                  f$ rl}t         j"                  dk  r| j                          | j                  t        j$                  |j                               | j'                  |       Y d }~y d }~ww xY w)Nr  rD  rg  r8  zSEND )r   r  r  r   rY   rk   r  r  r  IteratorrL   r  r   r  r   r  r   r   r   r  r)   rG   r9  s        ry   SENDz+InliningGeneratorInstructionTranslator.SENDP  s   4::!###hhjjjnc/0s56399koo&>&>?#/0SYY5F#++D1C IIcN >?E'#,01+ &s'D'DE 
$ '''1
II.55bhh?@IIdOO
$s   %C, ,E1A"E,,E1r  )r   r   r   r   rH   r   r  r"   r3  r6  r;  r>  r  r  s   @ry   r  r    s/    /**"1 1*B 2r{   r  )r  collections.abcrb  rp  r   rr  r   r8  r   r  r  r   r   r  r   	threadingrW  rj  typingr  r   r   r   r   r   r   r	   r
   r   r   r   r   unittest.mockr   r  torch._loggingtorch._guardsr   r   r   r   r   r   r   r   bytecode_analysisr   r   r   r   bytecode_transformationr   r   r   r   r    r!   r"   r#   r$   r%   codegenr&   r'   r(   r)   r*   funcname_cacher+   guardsr,   r-   output_graphr.   r/   replay_recordr0   r1   r  r2   r3   r3  r4   r5   r6   r7   r8   r9   r:   r;   r<   r  r=   r>   r?   r@   rA   rB   rC   rD   variables.baserE   rF   rG   rH   variables.builderrI   rJ   variables.builtinrK   variables.constantrL   variables.ctx_managerrM   rN   rO   variables.dictsrP   rQ   variables.functionsrR   rS   rT   rU   rV   variables.iterrW   variables.listsrX   rY   rZ   r[   r\   variables.miscr]   r^   r_   r`   ra   rb   variables.nn_modulerc   rd   variables.tensorre   rf   rg   r  rh   variables.user_definedri   rj   rk   	getLoggerr   r   r  getArtifactLoggerrQ  r  r  r  localri  r  r   rp   r   r   containsrs   r  r~   r2  	dataclassr   r   r   r   	lru_cacher   r   r  r   rB  r   r   r   r@  rT  r|  r  r~  r   r   r   _nb_opsr  r  r  r  )r  r  r   rx   s   0000ry   <module>r`     s=        
        	 
             1 Q Q 
 
 
 '  U U ( / 9 9 A   ;	 	 	 X W = . 0 
 <  /   Q W W C  g!..228^L11(LI>>33HnM ^^55h@PQ ioo4R4L4R4R4T',0AqAq'''' T#s(^  "("3"34BBX]]+99
 D ! H 
 D  L L L( = = =@ R R R 2 2 2 T4 4 * * *8	I 	f- C
%Coovhn-C CL6??F8T>: $ D EPJ J p;(p;f;f5 fR w 
 FA	 	!#v-F12JWVABZL3I	
ZJ$= ZJz
X2-J X2Wd'JYs   Q"Q