
    `ir5                         d dl Z d dlmZ d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ d dlZ G d d          Ze G d	 d
                      Ze G d d                      ZdefdZd Zd dlmZ ed             Zd Zd ZdS )    N)innermost_fn)_debug_get_cache_entry_list)CodeType)ListCallableDictUnionSet)	dataclassc                       e Zd ZU i Zeed f         ed<    e            Ze	e         ed<   e
defd            Ze
defd            Ze
ddedefd            Zdefd	Zd
 Zej        e
d                         ZdS )	CodeProxy	instancesused_instancesnamec                     d}| }|                     d          r'| d d         } 	 |  d| }|t          j        vrn|dz  }|S )Nr   :T_   )endswithr   r   )r   inew_names      g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/depyf/explain/utils.pyget_new_namezCodeProxy.get_new_name   si    S!! 	9D"==Q==9#666Q	
     c                 X    t                               |           }d t           j        |<   |S N)r   r   r   )r   r   s     r   consume_new_namezCodeProxy.consume_new_name   s'    ))$//(,	H%r   Fcodec                    ddl m} t          | d          r| j        } | j                            d          s| j                            d          r.t          | j                                                  }| j        }n+t          
                    |          }|s || |          }nd}t          |          }||_        d|j         d|j         d	|_        |t          j        |j        <   |S )
Nr   )decompile_ensure__code__transformed_code___transformed_code_ z<details>
  <summary>z</summary>

  ```python
z
  ```
</details>
)depyf.utilsr!   hasattrr"   co_name
startswithopenco_filenamereadr   r   r   raw_coder   r   )r   r   skip_decompiler!   srcr   selfs          r   decompile_with_namezCodeProxy.decompile_with_name#   s   0000004$$ 	!=D<""#677 	4<;R;RSh;i;i 	t'((--//C|HH --d33H! &&tX66~~	I  	  	 *.	DI&r   c                 r    d                     d |                                D                       | _        d S )Nr%   c                 N    g | ]"}|                                 d k    d|z   dz   #S )r%   z  
)strip).0lines     r   
<listcomp>z&CodeProxy.__init__.<locals>.<listcomp>A   s4    TTTDQSASASTD[4ASASASr   )join
splitlinesr-   )r0   r   s     r   __init__zCodeProxy.__init__>   s8    TTDOO,=,=TTTV Vr   c                 X    t           j                            | j                   | j        S r   )r   r   addr   r0   s    r   __str__zCodeProxy.__str__C   s#     $$TY///yr   c               #   V   K   t                      t          _        t          j        V  d S r   )setr   r    r   r   recordzCodeProxy.recordG   s)       $'55	 &&&&&&r   N)F)__name__
__module____qualname__r   r   str__annotations__rA   r   r
   staticmethodr   r   r   r1   r;   r?   
contextlibcontextmanagerrC   rB   r   r   r   r      s!        (*ItC$%***"suuNCH$$$
3 
 
 
 \
 s    \
  ( #    \4VS V V V V
   ' ' \ ' ' 'r   r   c                   ~    e Zd ZU eed<   eed<   ee         ed<   eed<   eed<   eed<   e	edf         ed<   d	 Z
d
 ZdS )CacheResultoriginal_codetransformed_codeguardcompiled_subgraphcompiled_subgraph_proxytransformed_code_proxyDynamoOptimizationResultreferenced_global_functionsc                 v   || _         d}t          |d          rdnd}t          ||          }	 t          t          j        j        dd           pDt          t          j        j        dd           p$t          t          j        j        j        dd           }|J t          ||          }n# t          $ r Y nw xY w|s%|j	        }|j
        j        }	d |j        D             }
ndfdg }|j        } ||           t          |d          r'|                                D ]}t          ||           |j        t#                      }	g }
nLt#          |j                                                  }	t'          |j                                                  }
|| _        d	 t-          |	|
          D             | _        |j        }d
 |j        D             }t5          |          dk    sJ |rNt7          ||d                            | _        t:                              | j        |d         d          | _        nd | _        d | _        || _         t:                              | j         d          | _!        d |j        D             }i | _"        |D ]'}tG          ||         j
        ||          | j"        |<   (d S )NFguard_managercheck_fnGuardManagerWrapperGuardManagerc                     g | ]	}|j         
S rB   )cell_contents)r6   xs     r   r8   z(CacheResult.__init__.<locals>.<listcomp>r   s    QQQ!aoQQQr   c                     |                                  D ]A}t          |t          j        j        j        j                  rsdn1t          ||           B|                                 D ]} ||           d S )NT)	get_leaf_guards
isinstancetorch_C_dynamoguardsNO_TENSOR_ALIASINGappend_guard_codeget_child_managers)rootans
leaf_guardchildtensor_aliasing_guard_seenvisits       r   rm   z#CacheResult.__init__.<locals>.visitw   s    "&"6"6"8"8 7 7J!*eh.>.E.XYY %9 %9=66$%j#6666!4466 & &EE%%%%%& &r   get_epilogue_lambda_guardsc                     i | ]\  }}||	S rB   rB   r6   r   values      r   
<dictcomp>z(CacheResult.__init__.<locals>.<dictcomp>   s    [[[uu[[[r   c                 <    g | ]}|                     d           |S )
__compiledr)   r6   r   s     r   r8   z(CacheResult.__init__.<locals>.<listcomp>   s@     M M Mdool.K.KMM M Mr   r   r   T)r.   ztransformed_code:c                 <    g | ]}|                     d           |S )__resumeru   rv   s     r   r8   z(CacheResult.__init__.<locals>.<listcomp>   s@     K K Kdooj.I.IKK K Kr   )rN   function_namemodule)$rN   r'   getattrra   rc   rd   rb   r`   	Exception
code_partsr"   co_freevars__closure__rh   rn   rf   closure_varstuplekeyslistvaluesrP   zipfreevarsr   co_nameslenr   rQ   r   r1   rR   rO   rS   rU   rT   )r0   rN   rz   cache	cpp_guard	attr_namerW   klassguard_codesfreevar_namesfreevar_valuesrh   lambda_guardr   compiled_subgraphs
resume_fnsr   rl   rm   s                    @@r   r;   zCacheResult.__init__X   sX   *	
 (/uo'F'FVOOJ	y11	EM02GNN G,ndCCG(/FF  $$$"=%88II 	 	 	D	  $	K (2K)2>MQQ}7PQQQNN */&
& 
& 
& 
& 
& 
& K %D E$$$$t9:: A$($C$C$E$E A AL%lK@@@@)1 %!# %m&@&E&E&G&G H H!%m&@&G&G&I&I!J!J 
[[M>8Z8Z[[[zM M!]M M M%&&!++++ 	0%1&9KA9N2O%P%PD"+4+H+H&(:1(=d ,I ,T ,TD(( &*D"+/D( $&/&C&C!#6'8 '8#K K!]K K K
+-( 	 	D5M$Tl3"6 6 6D,T22	 	s   A9B+ +
B87B8c                     | j         t          | j                  | j        t          | j                  ndd | j                                        D             dS )Nz"No compiled subgraph."c                 >    i | ]\  }}||                                 S rB   to_data)r6   r   fns      r   rr   z'CacheResult.to_data.<locals>.<dictcomp>   s?     ,@ ,@ ,@(t bjjll,@ ,@ ,@r   )rP   rO   rQ   rU   )rP   rG   rS   rR   rU   itemsr>   s    r   r   zCacheResult.to_data   s    Z #+!- !- 261M1Y "%,". ". "._x,@ ,@6<<>>,@ ,@ ,@A A 	Ar   N)rD   rE   rF   r   rH   r   rG   r   r   r   r;   r   rB   r   r   rM   rM   N   s         9&&&&%%%%!%c+E&E!FFFFW W Wr	A 	A 	A 	A 	Ar   rM   c                   b    e Zd ZU eed<   eed<   eed<   eed<   ee	         ed<   d
dZ
d Zd	 ZdS )rT   ry   rz   rN   source_code_proxytransformed_code_entriesNc                     | _         |j        | _        n|| _        | _        t	                    }fd|D             | _        t                              | j         | j                  | _        d S )Nc                 2    g | ]}t          |          S rB   )rM   )r6   r   rz   rN   s     r   r8   z5DynamoOptimizationResult.__init__.<locals>.<listcomp>   s8     )K )K )K:?Kvu55)K )K )Kr   )	rN   r(   ry   rz   r   r   r   r1   r   )r0   rN   ry   rz   cachess    ` ` r   r;   z!DynamoOptimizationResult.__init__   s    * !.!6D!.D,];;)K )K )K )K )KCI)K )K )K%!*!>!> 2"4 "4r   c                 ^    | j         t          | j                  d | j        D             d}|S )Nc                 6    g | ]}|                                 S rB   r   )r6   entrys     r   r8   z4DynamoOptimizationResult.to_data.<locals>.<listcomp>   s3     )L )L )L$))L )L )Lr   )ry   source_coder   )ry   rG   r   r   )r0   datas     r   r   z DynamoOptimizationResult.to_data   sT    !/&( ()L )L-1-J)L )L )L	M M r   c           	         | j         j        }|                                d                             ddd          }|                                }| j        }|j        |j        z   }|j        d |         }dd	                    d |D                       z   dz   }|d	|z   z  }|d
z  }d}| j
        D ]}	d	                    d |	j                                        D                       }
|
rd|
z   }
dg}|	j        D ]}|                    dd| dz              |                    d           d	                    |          }|	j        j                            d          r!|	j        j                            dd          }nt$                              d          }|d|
z   d| dz   |z   z  }|	j        <|	j        j        }|dz  }|d| dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|d| dz  }|dt+          |	j        j                  z   dz   z  }|	j                                        D ]\  }}|                                |z   }|d	d| d z   d!z   d"|	j        j         d#d	                    |           d$z   z  }|d%t+          | j         j                  z   dz   z  }|d&d"| j         j         d#d	                    |           d$z   z  }||z   d'| j         d(z   S ))Nr   zdef zdef transformed_r   z__local_dict = {z, c                     g | ]
}d | d| S )"z": rB   rv   s     r   r8   z3DynamoOptimizationResult.to_src.<locals>.<listcomp>   s)    AAAt*4**D**AAAr   }z
    z
    __global_dict = globals()r%   c                 ,    g | ]\  }}|d v	| d| dS ))__builtins__z = '''z'''
rB   rp   s      r   r8   z3DynamoOptimizationResult.to_src.<locals>.<listcomp>   sZ       G   G   Geim  vF  jF  jF4 ; ;u ; ; ;  jF  jF  jFr   zD# Note: the following variables are used inside the guard function.
z    __guard_hit = True
z    z__guard_hit = __guard_hit and r4   z    return __guard_hit
r$   __guard_zguard:z(L, G, **___kwargs_ignored):
z*# Note: please refer to the graph code in z*.py.
zP# Captured Graph: Dynamo generated graph (debuggable when using eager backend).
z?# Joint graph: joint forward+backward graph from aot autograd.
z\# Forward graph: forward graph from aot autograd (debuggable when using aot_eager backend).
z^# Backward graph: backward graph from aot autograd (debuggable when using aot_eager backend).
z;# AFTER XXX: graph processed by inductor (not debuggable).
z(*args, **kwargs):
    pass
zif z(__local_dict, __global_dict):
z        zreturn ()z
# Note: if there is a transformed version below, this function might well not be executed directly. Please check the transformed version if possible.
z
    # Note: this function might well not be executed directly. It might well be transformed again, i.e. adding one more guards and transformed code.
    z

#============ end of z ============#
)r   r-   r:   replacer5   rN   co_argcountco_kwonlyargcountco_varnamesr9   r   r   r   rP   appendrS   r   r)   r   r   rR   remove_indentationrU   to_srcry   )r0   r-   	signaturer   code_objnormal_arg_count	arg_namesarg_dictadditional_coder   r   guard_linesr]   rP   guard_func_namesubgraph_namer   funcs                     r   r   zDynamoOptimizationResult.to_src   s5   )2 ''))!,44&+ +	   %#/(2LL():*:):;	%IIAAyAAABBCEHI))<<2 &	Z &	ZE ww   G   Gu~OcOcOeOe   G   G   G  H  HH nbemm;<K[ U U""7-Sa-S-S-S#STTTT?@@@GGK((E+0;;<QRR G"'">"C"K"KLacm"n"n"+"<"<X"F"Fth1g1g1g1ggjoooO,8 % = B4'#fP]#f#f#ff#ww#ff  $D  D  $F  F#bb#W-#W#W#WW t"5#?#HII JLP Q QO $?EEGG B B
d"&++--/"ANGoGGGHJQR UZ^c^z^  UZ  UZ  CG  CL  CL  MV  CW  CW  UZ  UZ  UZZ ZDD 	  |t5>??@BFG 	G 	 U 6 ;UUdii	>R>RUUUV 	V%L(:LLLM 	Mr   )NN)rD   rE   rF   rG   rH   dictr   r   r   rM   r;   r   r   rB   r   r   rT   rT      s         LLL    ";////4 4 4 4  BM BM BM BM BMr   rT   r   c                     |                                  }t          |d                   t          |d                                                   z
  d                    fd|D                       S )Nr   r%   c                 *    g | ]}|d          dz   S )Nr4   rB   )r6   r7   indents     r   r8   z&remove_indentation.<locals>.<listcomp>#  s&    ;;;TDMD(;;;r   )r:   r   lstripr9   )r   linesr   s     @r   r   r      sc    OOEq]]Sq!2!2333F77;;;;U;;;<<<r   c                     |                                  D ]+}|                                }|                    |           ,d S r   )verbose_code_partsr5   r   )rP   ri   verbose_strs      r   rf   rf   %  sM    //11    !''))

;   r   )rK   c              #      K   | dz   }ddl m} dd l} ||          }	 |5  d V  d d d            n# 1 swxY w Y   d S # w xY w)Nz.lockr   )FileLock)filelockr   os)path_template	lock_pathr   r   locks        r   lock_on_filer   ,  s      'I!!!!!!III8ID 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s!   > 1> 5> 5> A c                    t          |          5  dd l}d}	 |t          |          z  }|j                            |          s>t          |d          5 }|                    |            d d d            n# 1 swxY w Y   n.t          |                                          }|| k    rn|dz  }|cd d d            S # 1 swxY w Y   d S )Nr   Twr   )r   r   rG   pathexistsr*   writer,   )r/   r   r   countnew_filepathfexisting_codes          r   write_code_to_file_templater   9  s[   	m	$	$  			
	(3u::5L7>>,// ,,, !GGCLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ..3355M##QJE
	                  s6   AB>A6*B>6A:	:B>=A:	>3B>>CCc                  |    dd l } ddlm} ddlm} t	           ||                    dz
  }dt          |          z   S )Nr   )_unique_id_counter)copyr   __compiled_fn_)ra   %torch._dynamo.bytecode_transformationr   r   nextrG   )ra   r   r   current_counts       r   get_current_compiled_fn_namer   K  sa    LLLHHHHHH 01122Q6Mc-0000r   )ra   torch._dynamo.eval_framer   r   inspectdistypesr   typingr   r   r   r	   r
   dataclassesr   rJ   r   rM   rT   rG   r   rf   rK   r   r   r   rB   r   r   <module>r      s    1 1 1 1 1 1 @ @ @ @ @ @  



       3 3 3 3 3 3 3 3 3 3 3 3 3 3 ! ! ! ! ! !    ?' ?' ?' ?' ?' ?' ?' ?'D kA kA kA kA kA kA kA kA\ _M _M _M _M _M _M _M _MD=S = = = =
     
 & % % % % %	 	 	  $1 1 1 1 1r   