
    ^j͏                       d Z ddlmZ ddlZddlZddlZddlmZmZm	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 e	rddlZddlmZmZ dd	lmZ dd
lm Z  dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-d&dZ.d&dZ/d'dZ0	 d(	 	 	 	 	 	 	 d)dZ1d*dZ2 ejf                  d       G d d             Z4ejf                   G d  d!             Z5	 	 	 	 	 	 	 	 d+d"Z6d,d#Z7 G d$ d%      Z8y)-a  
This module provides functionality for resuming Python execution at specific points in code,
primarily used by PyTorch Dynamo for control flow handling and optimization. It implements
bytecode transformation and execution state management to enable:

- Resuming execution at arbitrary points in Python bytecode
- Managing context managers and their state across execution boundaries
- Transforming and generating new code objects with preserved execution state
- Supporting Python 3.11+ exception handling and block management
- Restoring torch function mode stacks and other execution context

The module is critical for PyTorch Dynamo's ability to optimize code while preserving
Python semantics and execution state.
    )annotationsN)AnycastTYPE_CHECKING   )add_push_nullbytecode_from_templatecreate_binary_subscrcreate_call_functioncreate_call_function_excreate_instructioncreate_jump_absolutecreate_load_constInstructionoverwrite_instructiontransform_code_object	unique_id)ExactWeakKeyDictionary)CallableIterable)AbstractContextManager)CodeOptions                @         i   torch_dynamo_resume_in__is_tracing_resume_prologue__resume_frame_valuesc                D    t        d|       t        |      t               gS )N	LOAD_FASTargval)r   r   r
   frame_values_nameindexs     i/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/resume_execution.pycreate_load_frame_valuer,   B   s%    ;/@A%      c                Z    t        d       t        d|       t        |      t        d      gS )Nr%   r&   STORE_SUBSCRr   r   r(   s     r+   create_clear_frame_valuer1   J   s/    $;/@A% >*	 r-   c                    t         j                  dk\  rK| j                  t        d             t         j                  dk  r| j                  t        dd             y y y )N      	PUSH_NULL)r4      SWAPr   arg)sysversion_infoappendr   )instss    r+   _initial_push_nullr?   T   sN    
7"'45g%LL+F:; & #r-   c                   t        | |      }|j                  t        d             |D ].  }|j                  s|j                  xj                  |z  c_        0 t        d t        |      D        d      \  }}|t        d      |t        d      t        |t        d      g       ||dz      j                  dk7  rt        d	||dz      j                         t        ||dz      t        d      g       |d |dz    ||dz   d  fS )
Nvarname_mapPOP_TOPc              3  d   K   | ](  \  }}|j                   d v r|j                  dk(  r||f * yw)r%   LOAD_FAST_BORROWdummyNopnamer'   ).0iinsts      r+   	<genexpr>z5_bytecode_from_template_with_split.<locals>.<genexpr>k   s9      	
4{{??w& I	
s   .0)NNz6LOAD_FAST dummy instruction not found in template codez,LOAD_FAST dummy instruction instance is NoneNOPr   z,Expected POP_TOP after LOAD_FAST dummy, got )
r	   r=   r   exn_tab_entrydepthnext	enumerateAssertionErrorr   rI   )templatestack_indexrB   template_coderL   	dummy_idx
dummy_insts          r+   "_bytecode_from_template_with_splitrY   \   s8   
 +8MM+I67  4$$3$4
 !	
$]3	
 	Iz UVVKLL *'9%'@&AB Y]#**i7:=UV;W;^;^:_`
 	
 -	A69KE9R8ST9q=)=Q+IIIr-   c                >    	 |  y #  t         j                           xY wN)$__import_torch_dot__dynamo_dot_utils_pop_torch_function_stack)rG   s    r+   _try_except_tf_mode_templater^      s     
,FFHs    T)frozenc                  b    e Zd ZU ded<   dZded<   	 	 	 	 	 	 d	dZ	 	 	 	 	 	 d	dZ	 	 	 	 	 	 d
dZy)ReenterWithintrU   Nztuple[Any, ...] | Nonetarget_valuesc                P    t        t        | j                        \  }}||z   |dd |S )z
        Codegen based off of:
        try:
            (rest)
        except:
            (pop the torch function mode that was pushed for this context)
            raise
        N)rY   r^   rU   )selfcode_optionscleanupsetup_try_exceptepilogues        r+   try_except_torch_function_modez*ReenterWith.try_except_torch_function_mode   s7     &H(&
"( '
r-   c                   g }| j                   r"| j                   D cg c]  }t        |       }}t        d| j                         }||d   vr|dxx   |fz  cc<   dD ]  }||d   vs|dxx   |fz  cc<    g }t	        |       |j                  g |t        t        |      d      t        d|             dd	}t        || j                  d|i
      \  }	}
|
|z   |dd ||	z   S c c}w )z
        Codegen based off of:
        load args
        enter context
        try:
            (rest)
        finally:
            exit context
        ___context_manager_co_varnames	__enter____exit__co_namesF
STORE_FASTr&   ctxc                    | j                          	 | | j                  d d d        y # | j                  d d d        w xY wr[   rn   rs   rG   s     r+   	_templatez*ReenterWith.try_finally.<locals>._template   s4    MMO/T4.T4.s   ( =rA   Nrs   zAbstractContextManager[Any]rG   r   returnNone)
rc   r   r   rU   r?   extendr   lenr   rY   )re   rf   rg   	load_argsvalctx_namename
create_ctxrv   setup_try_finallyri   s              r+   try_finallyzReenterWith.try_finally   s1    	;?;M;MNC*3/NIN243C3C2DEF<66'H;6'- 	4D<
33Z(TG3(	4 )+
:&%c)ne< #<A	
	/ 'It''eX5F'
#8 '
---; Os   C+c                   g }| j                   r"| j                   D cg c]  }t        |       }}g }t        j                  dk  rt	        |       |j                  g |t        t        |      d             d
d}t        || j                        \  }}||z   |dd t        d |D        d      }	|	t        d      t        |	t        d      g       d |D        }
t        |
d      }t        |
d      t        d	      ||z   |fS c c}w )zR
        Codegen based off of:
        with ctx(args):
            (rest)
        )r4      Fc                6    | 5  | d d d        y # 1 sw Y   y xY wr[    ru   s     r+   rv   z'ReenterWith.__call__.<locals>._template   s       s   Nc              3  Z   K   | ]#  }|j                   d v r|j                  dk(  r| % yw)rE   rs   NrH   rJ   rL   s     r+   rM   z'ReenterWith.__call__.<locals>.<genexpr>   s1      ;;"CCKK5( s   )+z1LOAD_FAST ctx instruction not found in setup_withrN   c              3  @   K   | ]  }|j                   d k(  s|  yw)PUSH_EXC_INFON)rI   r   s     r+   rM   z'ReenterWith.__call__.<locals>.<genexpr>  s       
)GD
s   z)Expected only 1 PUSH_EXC_INFO in epiloguerw   )rc   r   r;   r<   r?   rz   r   r{   rY   rU   rQ   rS   r   r   )re   rf   rg   r|   r}   r   rv   
setup_withri   load_fast_ctx_instpush_exc_info_genpush_exc_info_insts               r+   __call__zReenterWith.__call__   sC    	;?;M;MNC*3/NIN(*
g%z*%c)ne<	
	  Bt'' 

H '
!& 
 % !TUU03Ee3L2MN
%
 ""3T:!4(4 !LMMJ&(:::[ Os   D)rf   r   rg   list[Instruction]rx   r   )rf   dict[str, Any]rg   r   rx   z,tuple[list[Instruction], Instruction | None])__name__
__module____qualname____annotations__rc   rj   r   r   r   r-   r+   ra   ra      sk    ,0M)0 ' 2C 	 *-.'-.2C-.	-.^9;*9;5F9;	59;r-   ra   c                      e Zd ZU ded<    ej
                  e      Zded<   dZded<    ej
                  e      Z	d	ed
<    ej
                  e
      Zded<   y)ResumeFunctionMetadatatypes.CodeTypecode)default_factoryr   instructionsFbool
boxed_callz	list[int] prefix_block_target_offset_remapz%dict[tuple[int, int], dict[int, int]]block_target_offset_remapN)r   r   r   r   dataclassesfieldlistr   r   r   dictr   r   r-   r+   r   r     si    
&7k&7&7&ML#MJ 3D+2C2C3$i 
 	$/ D r-   r   c                    t        |      }g }	 t        |      }| D ](  } |||      s|j                  |       t        |      }* 	 |S # t        $ r Y |S w xY w)z
    Two-pointer conditional filter.
    e.g. _filter_iter(insts, sorted_offsets, lambda i, o: i.offset == o)
    returns the instructions with offsets in sorted_offsets
    )iterrQ   r=   StopIteration)l1l2conditrescurr}   s          r+   _filter_iterr   )  sl     
bBC2h 	CC~

32h	 J  Js   A
 A
 
	AAc                    g }t        |       |j                  d | D               |j                  t        t        |       d             |S )Nc              3  2   K   | ]  }t        |        y wr[   )r   )rJ   r}   s     r+   rM   z'_load_tuple_and_call.<locals>.<genexpr>C  s     7C"3'7s   F)r?   rz   r   r{   )tupr>   s     r+   _load_tuple_and_callr   @  s>    !Eu	LL7377	LL%c#h67Lr-   c                      e Zd Z e       Z e       Ze	 	 	 	 	 	 	 	 	 	 dd       Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zed	d       Z	e
d
d       Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zy)ContinueExecutionCachec                    || j                   vri | j                   |<   t        |      }|| j                   |   vr% | j                  |||g| | j                   |   |<   | j                   |   |   S r[   )cachetuplegenerate)clsr   linenoinit_offsetkeys        r+   lookupzContinueExecutionCache.lookupL  so     syy  CIIdOCjciio%#/3<<fk#PC#PCIIdOC yys##r-   c                   	
 t        d      |j                  t        t        z  t        z  t
        z  z  rt        d      |j                  t        z  st        d      |t        j                  v r j                  ||	
      S t        j                  dk\  t        |      	 	 	 	 	 	 d 
	fd}t        ||      \  }}t        j                  |<   |S )Nzresume_offset must not be NonezLCannot generate resume function for generator, coroutine, or async generatorz+Code object must have CO_OPTIMIZED flag setr3   c                    t        j                  |       (_        t        -fd| D              }t	        !        j                  d t        *      D               t         -fd| D              (_        ddg(j                  rj                  t               n9t        *      D cg c]  }d| 	 c}z  j                  fd!D               t        |d   xs g       t        |d	   xs g       z   }t        t        |            }t         d
|d    d' |d<   &rk|d   j                  dd      }t!        |      dk(  r	|d   |d<   n>t!        |      dk7  rt#        dt!        |             |\  }}| dt         d
| d' |d<   '|d<   d|d<   ||d	<   t!              |d<   d|d<   d|d<   !D cg c]	  }|vs| }	}#D cg c]  }|vs||	vs| }
}t        |	z   |
z   |d   D cg c]  }|vr
||	vr||
vr| c}z   t$        gz         |d<   |d   t&        t(        z   z  |d<   g }&rC|r%|j                  t+        dt!        |                   |j                  t+        dd             |j                  t+        dd       t+        d!t$               g       g }/D ci c]  }|j,                  | }}t/        /      D ci c]  \  }}|j,                  .|    }}}| D ci c]  }|j0                  | }}i }d}d}t3        0      }t        *t!        +      z         D ]8  }|t!        +      k  r(+|   |k(  r |j                  t+        d"             |dz  }n(j                  r?|j                  t5        t        |             |j                  t7        t        |             n|j                  t+        d#d|               %r!||v r|j                  t9        ||                |dz  }||v s|j;                  |      } |||      \  }}|j                  |       &s|j;                  |      }||   }(j<                  j                  |       |||<   ; &r#t?        tA        (j<                              (_        |rt#        d$|       (j                  rrt/        !      D ]d  \  }}*|z   }|j                  t5        t        |             |j                  t+        d!|              |j                  t7        t        |             f %r\"D ]W  \  }}|j                  t+        d#|              |j                  t9        |             |j                  t+        d!|              Y #rptB        jD                  d%k  rt#        d&tB        jD                         #D ]<  }|v rt#        d'|d(      |j                  t+        d"      t+        d!|       g       > )r$jG                  )d)         }|j                  g tI        t+        d#d       t+        dd)       tK               g      t+        d#d       t+        dd)       t+        d*      t+        d#d       t+        d#d       t+        d+d             |r?|j                  t+        d#d       t+        dd)       tK               t+        d,d      g       n>|j                  t+        d#d       t+        dd)       tK               t+        d-d      g       |j                  t+        d#d       t+        dd)       t+        d*      t+        d.d       t+        d.d       t+        dd/       t+        d!t$               gtM        d/d/             ,rH|j                  t+        d0             n-|j                  t+        dd/       t+        d!t$               g       |j                  tO        |             | D ]?  }|j0                  |j0                  k(  r n$d |_(        tB        jD                  d1k\  s9d |_)        A |r1|j                  |       |j                  $jU                  |             |rb&st#        d2      | D ]P  }|jV                  s|jV                  jX                  |v s)||jV                  jX                     |jV                  _,        R || z   | d d  y c c}w c c}w c c}w c c}w c c}w c c}}w c c}w )3Nc              3  B   K   | ]  }|j                   k(  s|  y wr[   offset)rJ   rK   resume_offsets     r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>  s     OQXX5N!O   c              3  &   K   | ]	  }d |   yw)___stackNr   )rJ   rK   s     r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>  s     $Kxs^$Ks   c              3     K   | ]D  }|j                   d k(  xr/ |j                  v xr |j                  duxr |j                  k\   F yw)DELETE_FASTN)rI   r'   r   )rJ   rL   frame_value_namesr   s     r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>  s_      "
 	 }, 1KK#441KKt+1 KK=01"s   A
A__nested_resume_fns__nested_frame_valuesr   c              3  ,   K   | ]  }|vs|  y wr[   r   )rJ   vargss     r+   rM   zBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>  s     A!1D=AAs   	co_cellvarsco_freevars_co_name_at_co_qualname.r   )maxsplitr   z-Expected qualified path to have 2 parts, got co_firstlinenor   co_argcountr   co_posonlyargcountco_kwonlyargcountrm   co_flagsCOPY_FREE_VARSr9   RESUME
LOAD_CONSTTr&   rr   r6   r%   zUnprocessed hooks remaining: )r4      z)argnames_null requires Python 3.12+, got zargnames_null variable z should not be in argsDELETE_SUBSCR
BUILD_LISTLIST_APPENDLIST_EXTENDr   FrC   r3   z+old_hook_target_remap requires Python 3.11+)-copydeepcopyr   rQ   setupdaterangeanyr   r=   RESUME_FRAME_VALUES_VARNAMErz   r   sortedTORCH_DYNAMO_RESUME_IN_PREFIXrsplitr{   rS   "IS_TRACING_RESUME_PROLOGUE_VARNAME
CO_VARARGSCO_VARKEYWORDSr   rU   rR   r   r   r,   r1   r   popr   r   reversedr;   r<   uses_boxed_callr   r
   r   r   starts_line	positionsunreachable_codesrO   target)1r   rf   r   rK   freevarsqualified_pathmodule_namer   r   local_argnamesnull_local_argnamesprefixrg   fnhookshook_target_offsetsrL   offset_to_instold_hook_target_remapstack_inull_istack_ctx_vars_dhook
hook_insts
exn_targethook_target_offsetold_hook_targetr   frame_value_indexvalsnested_uses_boxed_callr   r   argnamesargnames_ctx_varsargnames_nullr   handle_inactive_ctxis_py311_plusr   metanested_code_objsnstack
null_idxespop_nested_resume_resultr   setup_fn_target_offsets	setup_fnsstack_ctx_varss1                                  @@r+   r   z/ContinueExecutionCache.generate.<locals>.update  s	    !%l ;DO\OOF !$H$$$KU6]$KK! "
 )" DO *+BCD78v?A8A3??AxAA\-8>B?%]+1rC H VH-.H01<	3J2K4PVxX # !-m!<!C!CCRS!C!T~&!+2>y2IL/>*a/,KCP^L_K`a  ,:(K&-q)F(Gq	QUV\U]^ !/ .4L)**,L'*2L'*-d)L'12L-.01L,-)1CAQd]aCNC(#ATMa~>U# # +0 !%&
 *-8}/!44	 	 66
7+L' (4J'?^+C (L$ FMM*+;XO 0qAB
 MM&|DA&$-O *,G2;<BR^^R'<E< 'y1#Ar  7 ::# # =IIDdkk4/INI %'!GF#N36C
O34 "LC
O+
60Ba0GMM"4["ABaKF3 ;W
 4 ;W .{XgYCWX +w:J/J &:;KG;T&UVqLG: 99Q<D-1,-H*J
MM*-$-@-D-DQ-G**89K*L==DDEWXAK-o>E"LH  9=TBBC95 $'DUG%LMM(2 GAt(.
%MM/79J
 MM"4\$"OPMM079J  #"3 QJD$MM"4["NOMM"6t"<=MM"4\$"OPQ ##g-(CCDTDTCUV  ' 
ADy,5aU:PQ  MM.{;.|AF
  ),)<)<=Mb=Q)R&& 2$/8M!" !3< K 4 6 +;?TU +<C +?;  +;?TU!" +;?VW#$ +<Q?%, *MM / +4K /|BG02.}!D
 MM / +4K /|BG02 /}!D   +;?VW*<C*?;*=AVW*)2I
 +<F*(1S" 1>#* ,MM"4Y"?@ *<F*(1S MM.v67
 % *;;&--/#' ##w.%)DN* g&c33LAB %$()VWW( D** ..559NN4I ..555**1 %|3LOC	 @8 D#D =# Js<   ,c<	cc	ccc8c
2c"c'7c-r   r   rf   r   rx   ry   )rS   r   CO_GENERATORCO_COROUTINECO_ITERABLE_COROUTINECO_ASYNC_GENERATORCO_OPTIMIZEDr   generated_code_metadata&generate_based_on_original_code_objectr;   r<   r   r   )r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   new_coder   r  r  s   ` ` ````````````   @@r+   r   zContinueExecutionCache.generateW  s%   0   !ABB==<'*??BTT
 !^  , !NOO)AAA=='#! ( $ ((G3%d+x	4+x	4;Ix	4x	4 x	4 x	4t	 ,D&9!CG66x@r-   c                j    | j                   j                  |      }t        |xr |j                        S r[   )r!  getr   r   )r   r   r  s      r+   r   z&ContinueExecutionCache.uses_boxed_call  s,    **..t4D,T__--r-   c                2    t        d      t        dd      gS )zACodegen a `raise None` to make analysis work for unreachable codeNRAISE_VARARGSr   r9   r0   )rf   s    r+   r   z(ContinueExecutionCache.unreachable_codes  s      d#A6
 	
r-   c                   t         j                     dfd} ||      } ||      }	|	dk  rt        d      t        j                  dk\  rR||	fj
                  vr+i xj
                  <   	 	 	 	 	 	 dfd}
t        |
       t        fdD              t        j                  j                  |||	g| S )	a>  
        This handles the case of generating a resume into code generated
        to resume something else.  We want to always generate starting
        from the original code object so that if control flow paths
        converge we only generated 1 resume function (rather than 2^n
        resume functions).
        c                D     d	 	 	 	 	 	 d fd}t        |       S )Nr   c           	        fd| D        \  t        fdt        t        |       t        j                              D              }|sy t	        |      dk7  rt        dt	        |             |d   }j                  |j                  k7  r%t        dj                   d|j                         |j                  t        d      |j                  y )	Nc              3  B   K   | ]  }|j                   k(  s|  y wr[   r   )rJ   rK   
cur_offsets     r+   rM   zContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform.<locals>.<genexpr>  s     O1J8NQOr   c              3  0   K   | ]  \  }}|u r|  y wr[   r   )rJ   i1i2r   s      r+   rM   zContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform.<locals>.<genexpr>  s&      )B V|	 )s   r   z(Expected exactly 1 matching target, got r   zOpcode mismatch: target has z, new_target has z"new_target.offset must not be None)r   zipr   r   r{   rS   opcoder   )r   rf   new_target_tuple
new_targetr   r,  r  orig_offsets       @r+   find_orig_offset_transformz{ContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform  s     PO	#( )"% .9J9J0K#) $  ( '(A-(B3GWCXBYZ  .a0
==J$5$55(6v}}o F**4*;*;)<>  $$,()MNN(//r-   r  )r   )r,  r5  r4  r   r  s   ` @r+   find_orig_offsetzWContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset  s9    K!0/!0?M!0!0F "$(BCr-   r   z>resume instruction not found in original code - this is a bug.r3   c           
       
 g }| D ]F  }t        |      t        j                        k(  r n#|j                  dk(  s6|j                  |       H t	        |j                        D ]"  \  }}|t        t        |j                        <   $ |rt        t        |d   j                        nd
t        
fdD              }t        | |d       }t        t        t	        t        |       t        j                              t        |      d             }t	        ||      D ]!  \  }}	|d   j                  |	j                  <   # y )Nr   r   c              3  .   K   | ]  }|kD  s	|  y wr[   r   )rJ   ncur_start_offsets     r+   rM   zmContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<genexpr>T  s      .aBR>R.s   
c                     | j                   |k(  S r[   r   )rL   os     r+   <lambda>zlContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>X  s    WXHX r-   c                    | d   |u S )Nr   r   )v1v2s     r+   r=  zlContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>a  s    2a5B; r-   r   )r{   r   rI   r=   r0  r   rb   r   r   r   r   r   )r   rf   prefix_blocksrL   r<  cur_inst_offsetstargetsorig_targetsorigr   r:  r   r  r  s             @r+   remap_block_offsetszZContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets4  sX    8:M , 
7
 }- AA2  ";;/9)006
7 $'%t'L'L$ Na MN1$sDKK2HIN @MS-"3":":;RT % (. .#:. ($ +$&68XG $,$ 6ARAR8ST$W-6$L &)w%? O	c@DQ1#**=Or-   c              3  B   K   | ]  }j                      |     y wr[   )r   )rJ   r9  r  
offset_keys     r+   rM   zPContinueExecutionCache.generate_based_on_original_code_object.<locals>.<genexpr>k  s)      , ..z:1=,s   )r,  rb   rx   rb   r  )
r   r!  rS   r;   r<   r   r   r   r   r   )r   r   r   r   r   r  r   r6  orig_init_offsetorig_resume_offsetrF  r   r  rH  s    `   `     @@@r+   r"  z=ContinueExecutionCache.generate_based_on_original_code_object  s   $ (>'U'U(
'	R ,K8 .m<# P  w&
 +,>?J !?!?? )D,J,J-
1O"31OCQ1O1Of &d,?@ ', ,0, '# &,,II#
 
 	
r-   N)
r   r   r   rb   r   rb   r   r   rx   r   ) r   r   r   rb   r   rb   r   rb   r  tuple[int, ...]r  rb   r  tuple[str, ...]r  rL  r  ztuple[ReenterWith, ...]r  r   r  z'tuple[tuple[int, tuple[Any, ...]], ...]r  z'tuple[tuple[str, tuple[Any, ...]], ...]r  rK  r  ztuple[types.CodeType]r  r   rx   r   )r   r   rx   r   )rf   r   rx   r   )r   r   r   rb   r   rb   r   rb   r  rK  r   r   rx   r   )r   r   r   r   r   r!  classmethodr   r   r   staticmethodr   r"  r   r-   r+   r   r   H  s   "$E46$!$+.$=@$HK$	$ $ ss s 	s
 s "1s s "s 's +s "s @s Cs $s" 0#s* #'+s, 
-s sj . . 
 
 [
[
 [
 	[

 [
 "1[
 [
 
[
 [
r-   r   )r)   strr*   rb   rx   r   )r>   r   rx   ry   r[   )rT   zCallable[..., Any]rU   rb   rB   zdict[str, Any] | Nonerx   z+tuple[list[Instruction], list[Instruction]])rG   r   rx   ry   )r   Iterable[Any]r   rP  r   zCallable[[Any, Any], bool]rx   z	list[Any])r   ztuple[Any, ...]rx   r   )9__doc__
__future__r   r   r   r;   typingr   r   r   bytecode_transformationr   r	   r
   r   r   r   r   r   r   r   r   r   utilsr   typescollections.abcr   r   
contextlibr   output_graphr   r   CO_NEWLOCALSr   r   	CO_NESTEDr  	CO_NOFREEr  r  r  r   r   r   r,   r1   r?   rY   r^   	dataclassra   r   r   r   r   r   r-   r+   <module>r^     s]   #   
 + +    * 21) 
		   !9 %C "5 < *.&J &J&J '&J 1	&JR	 d#A; A; $A;H   $ % 	.n
 n
r-   