
    [Th                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
JrJr  S SKrSSKJrJrJr  SSKJrJrJrJr  SSKJr  SS	KJrJr  SS
KJrJrJ r J!r!  SSKJ"r"J#r#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.  \(       a  S SK/J0r0  S r1S r2 " S S5      r3\Rh                  SS j5       r5\Rh                  SS j5       r6g)    N)MutableMapping)CellType)AnyOptionalTYPE_CHECKING   )graph_break_hintsutils	variables)bytecode_from_templatecreate_call_functioncreate_call_methodcreate_instruction)	PyCodegen)SideEffectsErrorunimplemented_v2)GlobalSourceLocalCellSourceLocalSourceSource)is_frozen_dataclassnn_module_new
object_new)AttributeMutationAttributeMutationExistingAttributeMutationNewis_side_effect_safeValueMutationExistingValueMutationNewVariableTracker)FrozenDataClassVariable)InstructionTranslatorc                     [        U5      R                  U   nUR                  U5        U R                  5        H  u  pEUR	                  XU5        M     g N)type__mro__clearitems__setitem__)	dict_fromdict_to	mro_index
dict_classkvs         R/var/www/auris/envauris/lib/python3.13/site-packages/torch/_dynamo/side_effects.py_manual_dict_setitemr1   )   sI    
 g&&y1JW!w1- "    c                 X    [         R                  U5        [         R                  X5        g r$   )listr'   extend)	list_fromlist_tos     r0   _manual_list_updater8   4   s    JJwKK#r2   c                   6  ^  \ rS rSr% Sr\\\4   \S'   \\\\	\4   4   \S'   \
\   \S'        S@U 4S jjrS\S\4S	 jrSS S\\	   4S
 jrS rS rS rS rS rS rS\S\	S\4S jrSAS jrS rS rS\S\	4S jrS\S\	S\4S jr\S 5       rS r S r!S r"S r#\$4S\S \4S! jjr%\%r&S\S \4S" jr'S#\(S$\S%\4S& jr)S' r*S( r+S) r,S* r-S+\\(   S,\.S-\4S. jr/S+\(S\4S/ jr0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6\74S7 jr8S8 r9S9 r:S: r;S; r<S6\74S< jr=S= r>S> r?S?r@U =rA$ )BSideEffects9   a0  
Maintain records of mutations and provide methods to apply them during code generation.

Handles tracking and applying side effects during PyTorch Dynamo compilation,
maintaining Python semantics by managing mutations, attribute modifications,
and other side effects that occur during program execution.

Key responsibilities:
- Tracks mutations to Python objects, lists, and dictionaries that need to be
applied after an FX graph is run.
- Manages attribute modifications and deletions
- Handles tensor hooks and backward pass state
- Tracks cell variable mutations and global variable changes
- Ensures correct ordering and application of side effects after graph execution

This ensures that optimized code behaves identically to the original Python code with
respect to object mutations and other side effects.
id_to_variablestore_attr_mutations	keepalivec                   > [         TU ]  5         [        R                  " U5      U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    / U l        U=(       d    / U l        U=(       d    0 U l	        SU l
        S U l        g )NF)super__init__weakrefrefoutput_graph_weakrefr<   r=   r>   save_for_backwardtensor_hooks_has_existing_dict_mutationca_final_callbacks_var)selfoutput_graphr<   r=   r>   rE   rF   	__class__s          r0   rA   SideEffects.__init__Q   st     	$+KK$=!,2$8$>B!"b!2!8b(.B ,1( '+#r2   otherreturnc                 "   [        U[        5      (       d   eU R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r$   )
isinstancer:   r<   r=   rE   rF   )rI   rM   s     r0   __eq__SideEffects.__eq__h   s}    %---- 5#7#77 8))U-G-GG8&&%*A*AA8 !!U%7%77		
r2   c                    U R                   UR                   :w  aB  U R                   R                  5       nUR                   R                  5       nX#:w  a  SU SU 3$ gU R                  UR                  :w  aB  U R                  R                  5       nUR                  R                  5       nXE:w  a  SU SU 3$ gU R                  UR                  :w  a  gU R                  UR                  :w  a  gg )Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffrE   rF   )r<   keysr=   rE   rF   )rI   rM   sk_itvok_itvsk_samok_sams         r0   diffSideEffects.diffr   s    %"6"66((--/F))..0F.vhd6(CC 2&&%*D*DD..335F//446F4VHDII7##u'>'>>&%"4"44!r2   c                 4   U R                  U R                  5       [        U R                  5      U R                  R                  5        VVs0 s H  u  pU[        U5      _M     snn[        U R                  5      U R                  U R                  S9$ s  snnf )zCreate a shallow copy)rJ   r<   r=   r>   rE   rF   )
rK   rD   dictr<   r=   r(   r4   r>   rE   rF   )rI   r.   r/   s      r0   cloneSideEffects.clone   s    ~~224 3 34'+'@'@'F'F'H"'Htq47
'H" 4>>*"44**  	
 		
"s   Bc                 2    [        U5      U R                  ;   $ r$   )idr<   rI   items     r0   __contains__SideEffects.__contains__   s    $x4....r2   c                 2    U R                   [        U5         $ r$   )r<   r`   ra   s     r0   __getitem__SideEffects.__getitem__   s    ""2d8,,r2   c                     U R                  5       nU=(       a[    UR                  R                  R                  R                  =(       a*    UR                  R                  R                  R
                  $ r$   )rD   
current_txoutputcurrent_tracerunder_activation_checkpoint#allow_side_effects_under_checkpointrI   rJ   s     r0   *should_allow_side_effects_under_checkpoint6SideEffects.should_allow_side_effects_under_checkpoint   sZ    002 b''..==YYb''..==aa	
r2   c                     U R                  5       nU=(       a*    UR                  R                  R                  R                  $ r$   )rD   ri   rj   rk   is_reconstructing_generatorrn   s     r0   rr   'SideEffects.is_reconstructing_generator   s;    002  Z''..==YY	
r2   c                     SSK Jn  [        X5      (       a  gU R                  5       (       a  gU R	                  5       (       a  [        S5      e[        UR                  5      (       d  [        SSS/ S9  g g )	Nr   )AutogradFunctionContextVariableTzCannot reconstruct a generator with variable mutations. Dynamo needs to fully exhaust the generator, which may cause unintended variable modifications.zOHigherOrderOperator: Mutating a variable not in the current scope (SideEffects) This is not supported.gb_typecontextexplanationhints)	torch._dynamo.variables.miscru   rP   ro   rr   r   r   mutation_typer   )rI   rb   ru   s      r0   check_allowed_side_effect%SideEffects.check_allowed_side_effect   sv    P d<<::<<++-- #5 
 #4#5#566i4	 7r2   rb   namevaluec                     U R                  U5      (       d   eU R                  U5        XR                  ;  a  0 U R                  U'   X0R                  U   U'   g r$   )is_attribute_mutationr   r=   )rI   rb   r   r   s       r0   
store_attrSideEffects.store_attr   sV    ))$////&&t,000.0D%%d+05!!$'-r2   c                     U(       a  U R                  U5      (       d   eU R                  U   U   nU(       dA  [        U[        R                  5      (       a"  [        SSU SU 3S/ [        R                  QS9  U$ )Nz$Attempted to read a deleted variablezitem: z, name: rv   rx   )r   r=   rP   r   DeletedVariabler   r	   
USER_ERROR)rI   rb   r   
deleted_okcheckresults         r0   	load_attrSideEffects.load_attr   sz    --d3333**406j1J1JKK> htf55)445	 r2   c                    UR                  5       (       a"  [        SSU SU 3S/ [        R                  QS9  [	        U[
        R                  5      (       d   e[	        U[
        R                  5      (       d   eU R                  USU5        g )NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.rx   cell_contents)	is_immutabler   r	   	DIFFICULTrP   r   CellVariabler    r   )rI   cellvarr   s      r0   
store_cellSideEffects.store_cell   s    !!1#G9IeW=d4)334	 '9#9#9::::%!:!:;;;;%8r2   c                    [        U[        R                  5      (       d   eU R                  US5      (       a  U R	                  USSS9$ UR
                  (       a  UR
                  $ [        S[        U5      S/ [        R                  QS9  g )Nr   F)r   zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.rx   )
rP   r   r   has_pending_mutation_of_attrr   pre_existing_contentsr   strr	   r   )rI   r   s     r0   	load_cellSideEffects.load_cell   s|    '9#9#9::::,,WoFF>>'?%>HH((000-L\1%001		
r2   gvarc                 f    [        U[        R                  5      (       d   eU R                  X5      $ r$   )rP   r   r    r   )rI   r   r   s      r0   load_globalSideEffects.load_global   s*    $	 9 9::::~~d))r2   c                     [        U[        R                  5      (       d   e[        U[        R                  5      (       d   eU R                  XU5        g r$   )rP   r   r    r   )rI   r   r   r   s       r0   store_globalSideEffects.store_global   sB    $	 9 9::::%!:!:;;;;E*r2   c                     [         R                  " U SS 5      [        R                  [        R                  [
        R                  [        R                  [        R                  [        R                  4;   $ )N__getattribute__)	inspectgetattr_staticobjectr   r\   intr   r4   BaseException)clss    r0   "cls_supports_mutation_side_effects.SideEffects.cls_supports_mutation_side_effects   s[    %%c+=tD##!!    !!**I
 
 	
r2   c                 6    [        UR                  [        5      $ r$   )rP   r~   r   ra   s     r0   r   !SideEffects.is_attribute_mutation  s    $,,.?@@r2   c                 z    U R                  U5      =(       a$    [        U R                  R                  U5      5      $ r$   )r   boolr=   getra   s     r0   has_pending_mutation SideEffects.has_pending_mutation	  s5    ))$/ 
D%%))$/5
 	
r2   c                 n    U R                  U5      =(       a    X R                  R                  US5      ;   $ )N )r   r=   r   )rI   rb   r   s      r0   r   (SideEffects.has_pending_mutation_of_attr  s6    ))
 >//33D"==	>r2   c                 x   UR                  5       (       a  g[        UR                  [        [        45      (       a  g[        U[
        R                  5      (       a&  XR                  ;   =(       d    UR                  U 5      $ U R                  U5      (       a  XR                  ;   $ UR                  R                  $ )NFT)r   rP   r~   r   r   r   UserDefinedObjectVariabler=   is_underlying_vt_modifiedr   is_modifiedra   s     r0   r   SideEffects.is_modified  s    d((+?AQ*RSSdI??@@444 8V8V9  %%d++4444!!---r2   variablec           
      N   UR                   c   e[        U5      U R                  ;   a>  [        U SUR                    SU R                  [        U5         R                    S35      eU" 5       Ul        X R                  [        U5      '   U R
                  R                  U5        U$ )z*Start tracking a new variable for mutationz is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: .)sourcer`   r<   AssertionErrorr~   r>   append)rI   rb   r   mutation_type_clss       r0   
_track_objSideEffects._track_obj$  s     ***d8t*** * ) *2(9 :88<8K8KBtH8U8\8\7]]^	`  "3!4(0BtH%d#r2   c                 ,    U R                  UU[        S9$ )N)r   )r   r   )rI   rb   r   s      r0   track_object_existing!SideEffects.track_object_existing=  s#    
 7  
 	
r2   
cls_sourceuser_clsvariable_clsc                    U[         R                  R                  R                  L a<  [        R
                  " SS9   [         R                  R                  5       nS S S 5        O[        U5      nU" W4S[        U5      0UD6nX`R                  [        U5      '   U R                  R                  U5        U$ ! , (       d  f       NV= f)NT)recordr~   )torchautogradfunctionFunctionCtxwarningscatch_warningsFunctionr   r   r<   r`   r>   r   )rI   r   r   r   optionsobjr   s          r0   track_object_newSideEffects.track_object_newH  s     u~~..:::((5nn--/ 65 X&C
.z:
 

 (0BsG$c" 65s   B77
Cc                    SSK Jn  SSKJn  SSKJn  SSKJn  [        R                  n[        X5      (       a  UR                  U5      (       a  UnGOQ[        US5      (       a"  [        US5      (       a  U" U5      (       d  UnGO[        U[        R                  R                  5      (       a  [        R                   nO[        U["        [$        R&                  45      (       a  [        R(                  nO[        U[*        5      (       a  [        R,                  nO[        U[.        5      (       a  [        R0                  nOb[        U[2        5      (       a  [        R4                  nO<[7        U5      (       a  [8        nO%[        U[:        5      (       a  [        R<                  n[        U[        R                  5      (       d   eU$ )	Nr   )TorchFunctionModer   )GenericContextWrappingVariable)TorchFunctionModeVariable)is_forbidden_context_manager	__enter____exit__)torch.overridesr   variables.ctx_managerr   variables.torch_functionr   variables.user_definedr   r   r   
issubclass is_supported_torch_function_modehasattrr   nnModuleUnspecializedNNModuleVariabler\   collectionsOrderedDictUserDefinedDictVariabletupleUserDefinedTupleVariabler4   UserDefinedListVariabler   MutableMappingVariabler   r!   r   "UserDefinedExceptionObjectVariable)rI   r   r   r   r   r   r   s          r0   get_variable_clsSideEffects.get_variable_cls]  sB   5IGH // 	 
 
'HHRR4LHk***--0::9L%((//22$BBL4)@)@"ABB$<<L%(($==L$''$<<L.11$;;L **2L-00$GGL,	(K(KLLLLr2   c                    UR                   n[        U[        R                  R                  5      (       a  [        U5      nU$ [        U[        R                  5      (       a  UR                  nO:[        U[        R                  5      (       a  UR                   nO[        SU 35      e[        R                  R                  UR                  5      (       d   eUR                  U5      nU$ )NzUnexpected base_cls_vt )r   r   r   r   r   r   rP   r   BuiltinVariablefnUserDefinedClassVariableRuntimeErroris_supported_new_method__new__)rI   base_cls_vtcls_vt	init_argsr   r   base_clss          r0   get_example_valueSideEffects.get_example_value  s     <<h00)C( 
% +y'@'@AA&>>K)K)KLL&,,"%<[M#JKK55MM      ""8,C
r2   c           	         UR                   nUR                  nU R                  U5      nU R                  XU5      nU" UUR                   UU[	        U5      S9nXR
                  [        U5      '   U R                  R                  U5        U$ )a  
Creates a UserDefinedObjectVariable (or its subclass) variable tracker
and mark it for attribute mutation tracking.

Also records the variable trackers to call __new__ method on
reconstruction. Roughly, the reconstruction looks like this
    base_cls_vt.__new__(user_cls, *init_args)
)r   r   r   r~   )	r   r   r   r   r   r<   r`   r>   r   )	rI   r   r   r   r   r   r   r   r   s	            r0   track_new_user_defined_object)SideEffects.track_new_user_defined_object  s     ]]
<<,,X6$$[)D}}#.z:
 (0BsG$c"r2   c                     [        5       n[        R                  " [        5       S9nX R                  [        U5      '   U R                  R                  U5        U$ )Nr~   )r   r   r   r   r<   r`   r>   r   )rI   r   r   s      r0   track_cell_newSideEffects.track_cell_new  sL     h)).0
 (0BsG$c"r2   r   cellcontentsc                     [         R                  " Uc  S O	[        5       UUS9nX@R                  [	        U5      '   U R
                  R                  U5        U$ )N)r~   r   r   )r   r   r   r<   r`   r>   r   )rI   r   r  r	  r   s        r0   track_cell_existingSideEffects.track_cell_existing  sT     )) #).$6O6Q"*
 )1BtH%d#r2   c                     [         R                  " [        5       US9nX0R                  [	        U5      '   U R
                  R                  U5        U$ )N)r~   r   )r   NewGlobalVariabler   r<   r`   r>   r   )rI   r   rb   r   s       r0   track_global_existing!SideEffects.track_global_existing  sF    ..35
 )1BtH%d#r2   c                 ~    [        U[        R                  5      (       d   eU R                  R	                  X45        g r$   )rP   r   ru   rE   r   )rI   ctxargss      r0   track_save_for_backward#SideEffects.track_save_for_backward  s1    #yHHIIII%%sk2r2   c                     UR                    H`  n[        U5      nUR                  U   nX0R                  ;  d  M.  [        U[        R
                  5      (       d  MO  U R                  X$5        Mb     g r$   )r>   r`   r<   rP   r   TensorVariabler   )rI   rM   
other_itemother_idother_variables        r0   1track_tensor_variables_from_runahead_side_effects=SideEffects.track_tensor_variables_from_runahead_side_effects  s^      //J*~H"11(;N222z	 8 88 8 **:F *r2   c                   ^ ^^^	 [        5       m	[        5       mS[        4UU UU	4S jjmS[        4U4S jjnT R                  R                  5        Vs/ s H&  n[	        UR
                  [        5      (       a  M$  UPM(     nn[        R                  " TUR                  UR                  UUR                  R                  T R                  45        @T R                  R                  5        VVs0 s H  u  pVU" U5      (       d  M  XV_M     snnT l        T R                  R                  5        VVs0 s H  u  pVU" U5      (       d  M  XV_M     snnT l        g s  snf s  snnf s  snnf )Nvarc                    > U T;   a  g TR                  U 5        [        U R                  [        5      (       a  TR                  U 5        U TR                  ;   a%  [
        R                  " TTR                  U    5        g g r$   )addrP   r~   r   r=   r    visit)r  live_new_objectsrI   r!  visiteds    r0   r!  0SideEffects.prune_dead_object_new.<locals>.visit  so    g~KK#++-ABB $$S) d///%%--c2 0r2   c                 N   > [        U R                  [        5      (       a  U T;   $ gNT)rP   r~   r   )r  r"  s    r0   is_live2SideEffects.prune_dead_object_new.<locals>.is_live  s&    #++-ABB...r2   )setr    r<   valuesrP   r~   r   r!  stacksymbolic_localsrj   backward_staterF   r(   r=   )
rI   txr'  r  pre_existing_varsr.   r/   r"  r!  r#  s
   `      @@@r0   prune_dead_object_new!SideEffects.prune_dead_object_new  s=   (+14	 	 	 	 	 **113
3c//1EF 3 	 
 	 ""!		((!!
	
  "00668
8TQGAJDAD8
 "66<<>%
>TQ'!*DAD>%
!E
>
%
s$   #E;E/EE2E$	E$c                 8   U R                  U5        [        UR                  [        5      (       a  SUR                  l        UR
                  (       aH  [        U[        R                  5      (       a(  [        U[        R                  5      (       d  SU l	        g g g g r&  )
r   rP   r~   r   r   r   r   ConstDictVariableSetVariablerG   rI   r  s     r0   mutationSideEffects.mutation1  sv    &&s+c'')>??,0C)JJ3	 ; ;<<sI$9$9::/3D, ; = r2   c                     U R                   $ r$   )rG   rI   s    r0   has_existing_dict_mutation&SideEffects.has_existing_dict_mutation<  s    ///r2   c                     U R                   R                  5        Vs/ s H  oR                  U5      (       d  M  UPM     sn$ s  snf r$   )r<   r*  r   r5  s     r0   _get_modified_varsSideEffects._get_modified_vars?  s7    #2299;U;?O?OPS?T;UUUs
   AAcgc           	      X  ^^ U R                  5        GH  m[        TR                  [        5      (       a  [        T[        R
                  5      (       a  TR                  c`  TR                  U4S j5        TR                  [        SS5      5        TR                  T5        [        TR                  T   5      Tl        M  TR                  c  [        TR                  5      Tl        M  M  [        TR                  [        5      (       Ga  [        T[        R                  5      (       a  [!        SSS/ S9  [        T[        R"                  5      (       a  UU4S jnTR                  U5        OTR                  U4S	 j5        T" TR                  R$                  5        TR&                   H  nT" U5        M     TR                  [        S
[)        TR&                  5      -   S5      5        TR                  T5        [        TR                  T   5      Tl        GM  TR                  b  GM   e   U R*                   Hi  u  pET" UR                  5        TR-                  S5        U H  nT" U5        M     TR                  / [/        [)        U5      5      Q[1        S5      P5        Mk     g )Nc                  D   > T R                  [        R                  S5      $ )N	make_cellload_import_fromr
   __name__r?  s   r0   <lambda>3SideEffects.codegen_save_tempvars.<locals>.<lambda>O       3 3ENNK Pr2   r   Fz<AutogradFunctionContextVariable escaped Dynamo-traced regionrv   zAWe cannot reconstruct a torch.autograd.Function's context object.rx   c                     > TR                   c   eT " TR                   5        T R                  T R                  S5      /5        g )Nr   )r   extend_outputcreate_load_attrr?  r  s   r0   load_new_method:SideEffects.codegen_save_tempvars.<locals>.load_new_methodd  s;    ":::3??+(("*=*=i*H)IJr2   c                  D   > T R                  [        R                  S5      $ )Nr   rC  rF  s   r0   rG  rH  l  s     3 3ENNL Qr2   r   rE   POP_TOP)r=  rP   r~   r   r   r   
local_nameadd_push_nullrK  r   	add_cacher   tempvarsr   r   ru   r   r   r   r   lenrE   load_methodr   r   )rI   r?  rN  argr  r  r  s    `    @r0   codegen_save_tempvars!SideEffects.codegen_save_tempvarsB  s'    **,C#++-ABBzY++H H >>)$$P $$%9!U%CDLL%!,R[[-=!>CJZZ'!0!@CJ (C--/CDDc9#L#LMM$ ^ "$g 	 c9#F#FGGK
 $$_5$$Q 3$$//0 ==CsG )   !5a#cmm:L6Le!TUS!(S)9:
 zz---o -r //ICszzNNN./3 'D	2&y1 0r2   c                    [        U[        R                  5      (       d   e[        U[        R                  5      (       d   e[        U[        R                  5      (       a  UR                  5       (       d   e[        [        R                  U5      (       d   e[        U R                  R                  5       5      nXPR                  ;   a  US-  nXPR                  ;   a  M  XX44U R                  U'   UR                  (       a   eXSl        g )Nr   )rP   r   r  r    RemovableHandleVariable
is_mutabler   r   TensorrV  rF   rT   idx)rI   tensorhookhandler   r_  s         r0   register_hookSideEffects.register_hook  s    &)":":;;;;$	 9 9::::vy@@AA!!##	
$ u||T****$##((*+&&&1HC &&&"(!=#::~
r2   c                     U R                   U	 g r$   )rF   )rI   r_  s     r0   remove_hookSideEffects.remove_hook  s    c"r2   c                    ^^^ U R                   R                  5        Hm  u  mnnmTR                  (       d   S5       eUUU4S jnTR                  U5        T" U5        TR	                  [        SS5      5        TR                  U5        Mo     g )Nz4Hooks on non input tensors NYI - should not get herec                  X   > T " T5        T R                  T R                  T5      /5        g r$   )rK  rL  )r?  r   r`  s   r0   gen_fn)SideEffects.codegen_hooks.<locals>.gen_fn  s&    6
  ""5"5d";!<=r2   r   F)rF   r*  r   rS  rK  r   rT  )rI   r?  ra  rb  rj  r   r`  s    `   @@r0   codegen_hooksSideEffects.codegen_hooks  s     %%'
F ==X"XX=> V$tH1!U;< LL ] (r2   c                 ~    SSK Jn  U R                  c  [        R                  " / U" 5       S9U l        U R                  $ )Nr   )r   r  )variables.baser   rH   r   ListVariable)rI   r   s     r0   get_ca_final_callbacks_var&SideEffects.get_ca_final_callbacks_var  s;    4&&.*3*@*@"2"4+D' ***r2   c           
      T  ^^ / nU R                  5        G
H  m[        T[        R                  5      (       ap  T" TSS9  T" TR                  5        TR                  TR                  S 5      TR                  S 5      [        SSS9/5        UR                  [        S5      /5        M  [        T[        R                  R                  5      (       a  [        TR                  [        R                  5      (       a  TR                  R                  b  [        SSS	S
/S9  T" TR                  5        TR                  S5        T" TSS9  UR                  / [!        S5      Q[        S5      P5        T" TR                  5        TR                  S5        UR                  / [!        S5      Q[        S5      P5        GM  [        T[        R"                  5      (       a  TR%                  5       (       a  T" TR                  5        TR                  S5        T" TSS9  TR&                  (       a#  T" TR                  5        TR                  S5        UR                  / [!        S5      Q[        S5      P5        TR&                  (       a*  UR                  / [!        S5      Q[        S5      P5        GM  GM  GM  [        T[        R(                  R*                  5      (       Ga  TR-                  U4S j5        TR/                  SS5        [        R(                  R1                  5       nTR2                  S==   U4-  ss'   TR5                  [        SUS95        TR-                  U4S j5        TR7                  TR8                  5        TR5                  [        S[;        TR8                  5      S95        TR/                  SS5        TR5                  [        S5      5        GM  [        T[        R<                  5      (       ag  TR>                  bZ  TU R@                  ;   aG  U RC                  T5      nT" U5        UR                  TRE                  TR>                  5      /5        GMO  GMR  U RG                  T5      (       Ga  [        T[        RH                  5      (       GaX  U RK                  TRL                  5      (       Ga7  0 n[N        RP                  RR                   H)  nTRT                  RV                  RY                  5       XS'   M+      [[        TR                  5      R\                  R_                  [`        Rb                  5      nTR                  [        SUS9[        SUS   S9/5        T" TR                  5        TR                  [        SUS   S9/5        T" TRL                  SS9  TR                  [        SUS   S9/5        [i        [N        US9nUR                  / UQ[        S5      P5        GO[        T[        Rj                  5      (       a  U RK                  TRl                  5      (       a  0 n[n        RP                  RR                   H)  nTRT                  RV                  RY                  5       XS'   M+     T" TR                  5        TR                  [        SUS   S9/5        T" TRl                  SS9  TR                  [        SUS   S9/5        [i        [n        US9nUR                  / UQ[        S5      P5        [q        U R@                  Rs                  T0 5      Ru                  5       5       GHS  u  p9[        T[        Rv                  5      (       aj  TRT                  RV                  Ry                  U5        T" U	5        [        TR                  [z        5      (       d   eUR                  [        SUS9/5        M  [        U	[        R|                  5      (       a  [        TR~                  [        5      (       as  [        [        TS S 5      U5      (       aT  TRT                  RV                  Ry                  U5        T" TR                  5        UR                  [        S!US9/5        GM=  GM@  GMC  [        T[        R                  5      (       a  TR                  5       (       a  TR                  S"S#5        TR                  S$5        T" TR                  5        T" [        R                  " U5      5        T" U	5        UR                  / [!        S%5      Q[        S5      P5        GM  TRT                  RV                  Ry                  U5        T" U	5        T" TR                  5        UR                  [        S&US9/5        GMV     G	M  [        T[        R                  5      (       ah  [        TR^                  5       HL  n
TR-                  U4S' j5        T" TR                  5        TR/                  SS5        TR                  5         MN     G
M  [        T[        R                  5      (       ar  UU4S( jnTR-                  U5        T" TR                  TR                  R                  5       5      5        UR                  / [        SS5      Q[        S5      P5        G
M  [        [[        T5      5      e   [q        U5       H  nTR                  U5        M     g ! [d         a6    [[        TR                  5      R\                  R_                  [f        5      n GNf = f))NF)allow_cacheBUILD_SLICE   )rX  STORE_SUBSCRz1Side effect on existing deque with limited maxlenrv   rw   z*Don't use a deque with `maxlen` specified.rx   r5   r   rQ  r'   r   updatec                  D   > T R                  [        R                  S5      $ )Nget_torch_function_mode_stackrC  rF  s   r0   rG  4SideEffects.codegen_update_mutated.<locals>.<lambda>8      B//(Gr2   co_varnames
STORE_FAST)argvalc                  D   > T R                  [        R                  S5      $ )Nset_torch_function_mode_stackrC  rF  s   r0   rG  r{  A  r|  r2   
BUILD_LIST
LOAD_CONSTr,   r+   r*   )varname_mapr7   r6   STORE_GLOBALr   DELETE_ATTRbuiltinsr   __setattr__   
STORE_ATTRc                  D   > T R                  [        R                  S5      $ )N	iter_nextrC  rF  s   r0   rG  r{    rI  r2   c                  L   > T " TR                   5        T R                  S5        g )Nsetstate)r   r   rM  s   r0   rj  2SideEffects.codegen_update_mutated.<locals>.gen_fn  s    szzNLL,r2   )Or=  rP   r   rp  r   rK  create_load_constr   r   listsDequeVariablemaxlenConstantVariabler   r   rW  r   r3  has_new_itemsshould_reconstruct_alltorch_functionTorchFunctionModeStackVariablerS  call_functionget_prev_stack_var_namecode_optionsappend_outputforeachsymbolic_stackrV  r   rR  r=   r   create_store_derefr   r   r   _dict_vtr1   __code__r}  r.  rj   new_varr%   r&   indexr   r   
ValueErrorr\   r   r   _list_vtr8   reversedr   r(   r  update_co_namesr   r   r~   r   r   getattrr   needs_slow_setattrrD  ListIteratorVariablerangepop_topRandomVariable
wrap_staterandomgetstater   r   )rI   r?  suffixesr   contents_varr  r,   dict_update_instslist_update_instsr   _rj  suffixr  s    `           @r0   codegen_update_mutated"SideEffects.codegen_update_mutated  sP	   **,C#y55663E*3::  ,,T2,,T2*=a@ !3N!C DEC!>!>?? szz9+E+EFF

((0$ S "$<H	 3::x(3E*+A.*95 3::w'+A.*95 C!<!<== $$&&szzNNN8,s.113::w/OO/2.y9 11 !!3A!6 29 = 2! '4 Y--LL    
   E* //GGI.4'9.  !3L!NO   

3--.  &|S=O=O9PQ   E*  !3I!>?C!7!788S^^=W $333#'>>##6L|$OOR%:%:3>>%J$KL 4
 ++C00:: &&s||44 #%K 4 = = I I,.EELL,@,@,B) !JH$(O$;$;$A$A'33%	 $$.|IN. ,[5M szzN$$. ,[5K s||7$$. ,[5M )?,+)% OO..y9  :: &&s||44 #%K 3 < < H H,.EELL,@,@,B) !I szzN$$. ,[5K s||7$$. ,[5M )?+)% OO..y9. $,--11#r:@@B$KD "#y'B'BCC44T:5	)#**lCCCC /tLM $E9+D+DEE%--/H %gc7D&A4HHEELL88>szzN$OO!3M$!O P I #3	(K(KLL2244 ++JA}53::955d;<5	 S03S5G	5RS 44T:5	3:: );LQU)V(WXI$J C!?!?@@syy)A$$P szzN$$Q.JJL * C!9!9::-   (3>>#**"5"5"789-a7*95 %T#Y//A	 -F	 x(FV$ )} & H$(O$;$;$A$A$$G	Hs   	<k''<l'&l'c                     [        [        U R                  U R                  R	                  5       5      5      =(       d2    U R
                  =(       d    U R                  =(       d    U R
                  (       + $ r$   )anymapr   r<   r*  rF   rE   r9  s    r0   is_emptySideEffects.is_empty  s\    D$$d&9&9&@&@&BCD !  !%%!   	
 	
r2   c                 l    U R                   R                  5         U R                  R                  5         g r$   )r>   r'   r<   r9  s    r0   r'   SideEffects.clear  s$    !!#r2   )rG   rH   r<   r>   rD   rE   r=   rF   )NNNNN)FF)BrE  
__module____qualname____firstlineno____doc__r\   r   r    __annotations__r   r4   r   rA   r   r   rQ   r   rY   r]   rc   rf   ro   rr   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   track_mutabler   r   r   r   r   r  r  r   r  r  r  r  r0  r6  r:  r=  r   rY  rc  rf  rl  rq  r  r  r'   __static_attributes____classcell__)rK   s   @r0   r:   r:   9   s#   & o-..S/5I0JJKKCy
 !+.
F 
t 
- HSM ,
/-

46 6c 6/ 6
9
* *s *+ + +O +
 
 
A

>
.* 0	 ". M	
	
 "	
  	*#J><	v&.6BQF # 3
G>
@	40VF	 FP #4!l+f% f%P	
$ $r2   r:   c              #   L  #    U R                   R                  R                  (       d   eU R                   R                  R                  n SU R                   R                  l        S v   XR                   R                  l        g ! XR                   R                  l        f = f7fr&  )rj   rk   rl   rm   r.  orig_vals     r0   rm   rm     sn     99##????yy''KKHPGK		  DGO		  Dx		  Ds   AB$B *B$B!!B$c              #      #    U R                   R                  R                  n SU R                   R                  l        S v   XR                   R                  l        g ! XR                   R                  l        f = f7fr&  )rj   rk   rr   r  s     r0   "disallow_side_effects_in_generatorr    sU     yy''CCHH?C		  <?G		  <x		  <s   !A=A A=A::A=)r.  r"   )7r   
contextlibr   r   rB   collections.abcr   typesr   typingr   r   r   torch.nnr   rv   r	   r
   r   bytecode_transformationr   r   r   r   codegenr   excr   r   r   r   r   r   r   r   r   r   ro  r   r   r   r   r   r   r    r   r!   torch._dynamo.symbolic_convertr"   r1   r8   r:   contextmanagerrm   r  r   r2   r0   <module>r     s         *  / /  1 1   3 F F A A   < D.$
U$ U$p P P H Hr2   