
    IЦi\                     J   S SK r S SKrS SKrS SKrS SKJrJrJrJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJr  SSKJr  SrSrSrSrS	rS
rSrSrSrSr Sr!S r"SS jr#S r$\RJ                  " SS9 " S S5      5       r&\RJ                   " S S5      5       r'S r(S r) " S S5      r*g)    N)AnycastDictListOptionalTuple   )	bytecode_from_templatecreate_call_functioncreate_instructioncreate_jump_absolutecreate_load_constInstructionoverwrite_instructiontransform_code_object	unique_id)ExactWeakKeyDictionary                @         i   torch_dynamo_resume_inc                     [         R                  S:  aI  U R                  [        S5      5        [         R                  S:  a  U R                  [        SSS95        g g g )N      	PUSH_NULL)r      SWAPr   arg)sysversion_infoappendr   )instss    ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/resume_execution.py_initial_push_nullr+   &   sN    
7"'45g%LL+F:; & #    c                    [        XS9nUR                  [        S5      5        U H5  nUR                  (       d  M  UR                  =R                  U-  sl        M7     [        S [        U5       5       S5      u  pVUc   e[        U[        S5      /5        X5S-      R                  S:X  d   e[        X5S-      [        S5      /5        US US-    X5S-   S  4$ )Nvarname_mapPOP_TOPc              3   t   #    U  H.  u  pUR                   S :X  d  M  UR                  S:X  d  M)  X4v   M0     g7f)	LOAD_FASTdummyNopnameargval).0iinsts      r*   	<genexpr>5_bytecode_from_template_with_split.<locals>.<genexpr>9   s:      	
3{{k) .2kkW.D QI3s   88
8)NNNOPr	   )	r
   r(   r   exn_tab_entrydepthnext	enumerater   r5   )templatestack_indexr/   template_coder9   	dummy_idx
dummy_insts          r*   "_bytecode_from_template_with_splitrF   .   s    *8MM+I67 $$3$ 
 !	
$]3	

 	I     *'9%'@&AB Q'..);;;-A69KE9R8ST9q=)=Q+IIIr,   c                 @     U   g !   [         R                  U5        e = fN)$__import_torch_dot__dynamo_dot_utilsset_torch_function_mode_stack)r3   stack_var_names     r*   _try_except_tf_mode_templaterL   L   s'    ,JJ	
 	s    T)frozenc                   l    \ rS rSr% \\S'   Sr\\\	S4      \S'   S\
\   4S jrS\
\   4S jrS	 rS
rg)ReenterWithY   rB   N.target_valuescleanupc                 d    SSK Jn  [        [        U R                  SU" 5       0S9u  pEXR-   USS& U$ )z^
Codegen based off of:
try:
    (rest)
except:
    (restore previous tf mode stack)
    raise
r	   )get_prev_stack_var_namerK   r.   N)variables.torch_functionrT   rF   rL   rB   )selfcode_optionsrR   rT   setup_try_exceptepilogues         r*   try_except_torch_function_mode*ReenterWith.try_except_torch_function_mode^   sB     	F%G()+B+DE&
"
 '
r,   c                    / nU R                   (       a%  U R                    Vs/ s H  n[        U5      PM     nn[        SU R                   35      nXQS   ;  a  US==   U4-  ss'   S H  nXaS   ;  d  M  US==   U4-  ss'   M     / n[	        U5        UR                  / UQ[        [        U5      S5      Q[        SUS9P5        S n[        XR                  S	U0S
9u  pX-   USS& Xy-   $ s  snf )zY
Codegen based off of:
load args
enter context
try:
    (rest)
finally:
    exit context
___context_manager_co_varnames	__enter____exit__co_namesF
STORE_FASTr6   c                     U R                  5          U  U R                  S S S 5        g ! U R                  S S S 5        f = frH   r_   ctxr3   s     r*   	_template*ReenterWith.try_finally.<locals>._template   s4    MMO/T4.T4.s   ( =rg   r.   N)
rQ   r   r   rB   r+   extendr   lenr   rF   )rV   rW   rR   	load_argsvalctx_namename
create_ctxrh   setup_try_finallyrY   s              r*   try_finallyReenterWith.try_finallyt   s"    	;?;M;MN;MC*3/;MIN243C3C2DEF66'H;6'-D
33Z(TG3( . )+
:&%c)ne< #<A	
	/ 'I''eX5F'
# '
--; Os   C-c                    / nU R                   (       a%  U R                    Vs/ s H  n[        U5      PM     nn/ n[        U5        UR                  / UQ[	        [        U5      S5      Q5        S n[        X`R                  5      u  pxX-   USS& [        S U 5       S5      n	U	c   e[        U	[        S5      /5        S U 5       n
[        U
S5      n[        U
S5      b   eXW-   U4$ s  snf )z2
Codegen based off of:
with ctx(args):
    (rest)
Fc                 @    U    U  S S S 5        g ! , (       d  f       g = frH    rf   s     r*   rh   'ReenterWith.__call__.<locals>._template   s     s   
Nc              3   n   #    U  H+  nUR                   S :X  d  M  UR                  S:X  d  M'  Uv   M-     g7f)r2   rg   Nr4   r7   r9   s     r*   r:   'ReenterWith.__call__.<locals>.<genexpr>   s6      &D;;+- 26++2F &s   55	5r<   c              3   H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)PUSH_EXC_INFON)r5   ry   s     r*   r:   rz      s      
%T)GDDXs   "	")rQ   r   r+   rj   r   rk   rF   rB   r?   r   r   )rV   rW   rR   rl   rm   rp   rh   
setup_withrY   load_fast_ctx_instpush_exc_info_genpush_exc_info_insts               r*   __call__ReenterWith.__call__   s$    	;?;M;MN;MC*3/;MIN(*
:&%c)ne<	
	  B'' 

 '
!&
 
 "---03Ee3L2MN
%
 ""3T:%t,444&(:::Q Os   C'rv   )__name__
__module____qualname____firstlineno__int__annotations__rQ   r   r   r   r   r   rZ   rr   r   __static_attributes__rv   r,   r*   rO   rO   Y   sG    /3M8E#s(O,3 DDU  ,*.k1B *.X1;r,   rO   c                       \ rS rSr% \R
                  \S'   \R                  " \	S9r
\\   \S'   \R                  " \	S9r\\   \S'   Sr\\\\4      \S'   Srg)	ResumeFunctionMetadata   code)default_factoryinstructions prefix_block_target_offset_remapNblock_target_offset_remaprv   )r   r   r   r   typesCodeTyper   dataclassesfieldlistr   r   r   r   r   r   r   r   r   rv   r,   r*   r   r      sa    
..&1&7&7&ML${#M 3>2C2C3$d3i  ;?xS#X7>r,   r   c                     [        U5      n/ n [        U5      nU  H.  nU" Xe5      (       d  M  UR                  U5        [        U5      nM0     U$ ! [         a     U$ f = f)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
)iterr?   r(   StopIteration)l1l2conditrescurrm   s          r*   _filter_iterr      sg     
bBC2hCC~~

32h  J  Js   A  A 
AAc                     / n[        U5        UR                  S U  5       5        UR                  [        [        U 5      S5      5        U$ )Nc              3   8   #    U  H  n[        U5      v   M     g 7frH   )r   )r7   rm   s     r*   r:   '_load_tuple_and_call.<locals>.<genexpr>   s     73C"3''3s   F)r+   rj   r   rk   )tupr)   s     r*   _load_tuple_and_callr      s>    !Eu	LL7377	LL%c#h67Lr,   c                   :   \ rS rSr\" 5       r\" 5       r\S 5       r\S\	S\
\	S4   S\	S\
\S4   S\
\S4   S	\
\S4   S
\
\
\	\
\   4   S4   S\
\
\\
\   4   S4   S\
\	S4   S\R                  4S j5       r\S\\   4S j5       r\S\	S\
\	S4   4S j5       rSrg)ContinueExecutionCache   c                     XR                   ;  a  0 U R                   U'   [        U5      nX0R                   U   ;  a#  U R                  " X/UQ76 U R                   U   U'   U R                   U   U   $ rH   )cachetuplegenerate)clsr   linenokeys       r*   lookupContinueExecutionCache.lookup  sc    yy  CIIdOCjiio%#&<<#Cs#CCIIdOC yys##r,   offsetsetup_fn_target_offsets.nstackargnamesargnames_null	setup_fnsstack_ctx_varsargnames_ctx_vars
null_idxesreturnc                   ^ ^^^^^^^^	^
^^^ Tc   eUR                   [        [        -  [        -  [        -  -  (       a   eUR                   [
        -  (       d   eU[        R                  ;   a  T R                  UTTTTTTTT	T
T5      $ [        R                  S:  m[        U5      mS[        [           S[        [        [         4   4UU
UU UUUUUUUUU	4S jjn[#        X5      nT[        R                  U'   U$ )Nr   r   rW   c           	      &  >^ [         R                  " U 5      T"l        [        T#5       Vs/ s H  nSU 3PM
     snmTR	                  U4S jT 5       5        [        US   =(       d    / 5      [        US   =(       d    / 5      -   n[        [        U5      5      n[         SUS    ST! 3US'   T (       aT  US   R                  S	S
S9n[        U5      S
:X  a	  US   US'   O)[        U5      S:X  d   eUu  pVU S	[         SU ST! 3US'   T!US'   SUS'   X1S'   [        T5      US'   SUS'   SUS'   [        TT Vs/ s H  owT;  d  M
  UPM     sn-   US    Vs/ s H  owT;  d  M
  UPM     sn-   5      US'   US   [        [        -  ) -  US'   [        U%4S jU  5       5      n/ n	T (       aB  U(       a"  U	R                  [        S[        U5      S95        U	R                  [        SSS95        / n
T' Vs0 s H  oR                  U_M     nn[!        T'5       VVs0 s H  u  p+UR                  T&U   _M     nnnU  Vs0 s H  oR"                  U_M     nn0 nSn[%        T(5      n[        T#5       GH  nU[        T$5      :  aH  T$U   UU-   :X  a<  U	R                  [        S5      5        US
-  nU[        T$5      :  a  T$U   UU-   :X  a  M<  U	R                  [        SSU 3S95        X,;   aj  UR'                  U5      nU" X5      u  nnU	R	                  U5        T (       a6  UR'                  U5      nUU   nT"R(                  R                  U5        UUU'   UU-   nUU;   d  M  U	R	                  [+        UU   5      5        GM     T (       a#  [-        [/        T"R(                  5      5      T"l        U(       a   eT HR  u  nnU	R                  [        SUS95        U	R	                  [+        U5      5        U	R                  [        SUS95        MT     T(       aK  [0        R2                  S:  d   eT H/  nUT;  d   eU	R	                  [        S5      [        SUS9/5        M1     U	R                  [5        U5      5        U  HC  nUR"                  UR"                  :X  a    O(S Ul        [0        R2                  S:  d  M<  S Ul        ME     U
(       a1  U	R	                  U
5        U	R	                  TR;                  U5      5        U(       ai  T (       d   eU  HZ  nUR<                  (       d  M  UR<                  R>                  U;   d  M2  UUR<                  R>                     UR<                  l        M\     X-   U S S & g s  snf s  snf s  snf s  snf s  snnf s  snf )N___stackc              3   6   >#    U  H  oT;  d  M
  Uv   M     g 7frH   rv   )r7   vargss     r*   r:   BContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>7  s     =8a}8   		co_cellvarsco_freevars_co_name_at_co_qualname.r	   )maxsplitr   co_firstlinenorv   co_argcountr   co_posonlyargcountco_kwonlyargcountr^   co_flagsc              3   J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7frH   r   r7   r8   r   s     r*   r:   r   W  s     H\XX5G!!\   #	#COPY_FREE_VARSr$   RESUMEr!   r2   rd   rc   )r      r   ) copydeepcopyr   rangerj   r   sortedTORCH_DYNAMO_RESUME_IN_PREFIXrsplitrk   
CO_VARARGSCO_VARKEYWORDSr?   r(   r   rB   r@   r   dictpopr   r   r   reversedr&   r'   r   starts_line	positionsunreachable_codesr=   target))r   rW   r8   freevarsqualified_pathmodule_namer   r   r   prefixrR   fnhookshook_target_offsetsr9   offset_to_instold_hook_target_remapnull_idxes_istack_ctx_vars_dhook
hook_insts
exn_targethook_target_offsetold_hook_targetreal_iro   valsr   r   r   r   r   is_py311_plusr   metar   r   r   r   r   r   s)                              @r*   update/ContinueExecutionCache.generate.<locals>.update3  s    $l ;D,1&M:MqhqcNM:DKK=8==\-8>B?%]+1rC H VH-.H 11<	3J2K4PVxX  !-m!<!C!CCRS!C!T~&!+2>y2IL/~.!333+9(K '-q)F(Gq	QUV\U]^ !% .4L)**,L'*2'*-d)L'12L-.01L,-*/+=m}1m=>*=9K9d]19KL+L'
 (4J'?^+C (L$ H\HHFFMM*+;XO 0qAB)+G2;<)B^^R')E< 'y1#1EA  7 ::1   # =IILDkk4/LNI$&!L#N36] 3z?2"<0A4DDMM"4["AB A%L	 !3z?2"<0A4DD 0xPQs^TU: 99Q<D-1,-H*J
MM*-$-@-D-DQ-G**89K*L==DDEWXAK-o>\)-- MM"67G7O"PQ+ #.  9=TBBC95 9 0
d0TJK24890dKL 0 ''7222&AD=(=MM.{;.|AF ' MM.v67
 %;;&--/#' ##w.%)DN % g&c33LAB %$$}(D*** ..559NN4I ..555**1 ) %3LOM ;6 >K  =# Js/   U4:	U9
U9
	U>
%U>
4VV=V)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   strr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   new_coder   r   s   ` ``````````  @@r*   r   ContinueExecutionCache.generate  s    !!!MMl*-BBEWWY	
 
 }}|+++)AAA=='!  ((G3%d+I	4k!2 I	4$sCx. I	4 I	4 I	4V )6CG66x@r,   c                 ,    [        S5      [        SSS9/$ )zACodegen a `raise None` to make analysis work for unreachable codeNRAISE_VARARGSr	   r$   )r   r   )rW   s    r*   r   (ContinueExecutionCache.unreachable_codes  s      d#A6
 	
r,   c                   ^^^^	^
 [         R                  U   m	Sm
S[        [           S[        [
        [        4   4U	U
U4S jjn[        X5        [        R                  S:  ad  T	R                  (       d>  0 =mT	l
        S[        [           S[        [
        [        4   4UU	U4S jjn[        X5        [        U	4S jT 5       5      m[         R                  " T	R                  UT
T/UQ76 $ )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).
Nr   rW   c                    >^ U4S jU  5       u  mU4S j[        [        U 5      [        TR                  5      5       5       u  nTR                  UR                  :X  d   eUR                  mg )Nc              3   J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7frH   r   r   s     r*   r:   iContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_new_offset.<locals>.<genexpr>  s     GLqHH4FLr   c              3   :   >#    U  H  u  pUTL d  M  Uv   M     g 7frH   rv   )r7   i1i2r   s      r*   r:   r    s#      VFB< Vs   	)zipr   r   opcoder   )r   rW   
new_targetr   r   
new_offsetr   s      @r*   find_new_offsetVContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_new_offset  s_     HLGIV!(<"8(4CTCT:UVMZ
 ==J$5$5555#**Jr,   r   c                 |  >^
 / nU  HJ  n[        U5      [        TR                  5      :X  a    O'UR                  S:X  d  M9  UR                  U5        ML     [	        UTR                  5       H"  u  p4UT[        [        UR                  5      '   M$     U(       a  [        [        US   R                  5      OSm
[        U
4S jT 5       5      n[        XS 5      n[        [	        [        U 5      [        TR                  5      5      US 5      n[	        Xv5       H!  u  pUS   R                  TU	R                  '   M#     g )Nr|   c              3   6   >#    U  H  oT:  d  M
  Uv   M     g 7frH   rv   )r7   nold_start_offsets     r*   r:   mContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<genexpr>  s      .#:aBR>R#:r   c                      U R                   U:H  $ rH   r   )r9   os     r*   <lambda>lContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>  s    WXHXr,   c                     U S   UL $ )Nr   rv   )v1v2s     r*   r  r     s    r!u{r,   r	   )rk   r   r5   r(   r  r   r   r   r   r   r   r   )r   rW   prefix_blocksr9   r  old_inst_offsetstargetsnew_targetsnewoldr  r   r   r   s             @r*   remap_block_offsetsZContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets  s-    8:M ,}- AA2  ";;/9)006 !- $'%t'L'L$ MN1$sDKK2HI$ @MS-"3":":;RT % (. .#:. ($ +$8XG #/H\2HT=N=N4OP2#K
 %($=@CA1#**= %>r,   c              3   B   >#    U  H  nTR                   U   v   M     g 7frH   )r   )r7   r  r   s     r*   r:   PContinueExecutionCache.generate_based_on_original_code_object.<locals>.<genexpr>   s       ,;Ra..q1;Rs   )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  s      ``   @@@r*   r  =ContinueExecutionCache.generate_based_on_original_code_object  s     (>'U'U(
 
	+{+	+;?S>	+ 	+ 	d4w&
 11MOO)D,J(N"&{"3(NCGS>(N (NT &d@ ', ,;R, '# &,,IIvz+B
EI
 	
r,   rv   N)r   r   r   r   r   r   r  classmethodr   r   r   r  rO   r   r   r   r   staticmethodr   r   r   r  r   rv   r,   r*   r   r      sV   "$E46$ $ s 	s
 "'sCxs s S/s S#Xs c)*s eCsO4c9:s !sE#J!7!<=s #s(Os 
s sj 
4+< 
 
 Z
#&Z
AFsCxZ
 Z
r,   r   rH   )+r   r   r&   r   typingr   r   r   r   r   r   bytecode_transformationr
   r   r   r   r   r   r   r   r   utilsr   r  CO_NEWLOCALSr   r   	CO_NESTEDr   	CO_NOFREEr   r   r   r   r+   rF   rL   	dataclassrO   r   r   r   r   rv   r,   r*   <module>r8     s      
  9 9
 
 
 * 
		   !9 <J<
 d#w; w; $w;t ? ? ?&f
 f
R	Hr,   