
    hi                        U d Z ddlmZ ddlmZ ddl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mZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  ddZ!ddZ"h dZ#de$d<    G d de           Z%dS )aE  This optional pass adds logging of various executed operations.

Some subset of the executed operations are logged to the mypyc_trace.txt file.

This is useful for performance analysis. For example, it's possible
to identify how frequently various primitive functions are called,
and in which code locations they are called.
    )annotations)Final)FuncIR)BoxCallCallCCastCStringDecRefGetAttrIncRefLoadLiteral
LoadStaticOpPrimitiveOpSetAttrUnboxValue)none_rprimitive)LowLevelIRBuilder)CompilerOptions)log_trace_event)IRTransformfnr   optionsr   returnNonec                    t          d |          }t          || j        j                  }|                    | j                   |j        | _        d S N)r   LogTraceEventTransformdeclfullnametransform_blocksblocks)r   r   builder	transforms       i/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/transform/log_trace.pyinsert_event_trace_loggingr(   '   sH    g..G&w0@AAIry)))BIII    opr   
str | Nonec                   | j         }|dk    rw| j        d         }t          |t                    rU|j        dk    rJ|j        dk    r?t          | j        d         t                    rt          | j        d         j                  S d S )NCPyDict_GetItemr   staticglobals   )	function_nameargs
isinstancer   	namespace
identifierr   strvalue)r*   nameargs      r'   get_load_global_namer:   .   s    D   gajsJ''	))))++271:{33 , rwqz'(((4r)   >   r-   CPyList_GetItemCPyList_PopLastCPyDict_GetWithNoneCPyList_GetItemShortlist_get_item_unsafer   primitives_that_inc_refc                       e Zd Zd( fdZd)dZd*dZd+dZd,dZd-dZd.dZ	d/dZ
d0dZd1dZd2dZd3d Zd4d$Zd5d'Z xZS )6r    r%   r   r"   r6   r   r   c                ~    t                                          |           |                    d          | _        d S )Nutf-8)super__init__encoder"   )selfr%   r"   	__class__s      r'   rE   zLogTraceEventTransform.__init__I   s2    !!! 00r)   r*   r   r   c                D    |                      |d|j        j                  S )Ncall)logr   r"   rG   r*   s     r'   
visit_callz!LogTraceEventTransform.visit_callM   s    xxFBEN333r)   r   c                    |                      |d|j        j                  }|j        j        t          v r|                     |           |S )Nprimitive_op)rK   descr8   r@   log_inc_refrG   r*   r7   s      r'   visit_primitive_opz)LogTraceEventTransform.visit_primitive_opQ   sD    ^RW\::7<222U###r)   r   c                   t          |          x}r|                     |d|          S |j        }|dk    rTt          |j        d         t
                    r4t          |j        d                   x}r|                     |d|          S n|dk    rTt          |j        d         t                    r4|                     |dt          |j        d         j                            S |dk    rTt          |j        d         t                    r4|                     |d	t          |j        d         j                            S |                     |d
|          }|t          v r| 
                    |           |S )Nglobals_dict_get_itemPyObject_Vectorcallr   python_call_globalCPyObject_GetAttrr0   python_get_attrPyObject_VectorcallMethodpython_call_methodcall_c)r:   rK   r1   r3   r2   r   r   r6   r7   r@   rQ   )rG   r*   global_name	func_namer7   s        r'   visit_call_cz#LogTraceEventTransform.visit_call_cW   s^   .r222; 	F88B 7EEE$	---*RWQZ2O2O-2271:>>>{ Gxx$8+FFFG---*RWQZ2U2U-88B 13rwqz7G3H3HIII555*RWQZQ\:]:]588B 4c"'!*:J6K6KLLLXy11///U###r)   r   c                    |                      |d|j        j         d|j                   }|j        s!|j        j        r|                     |           |S )Nget_attr.)rK   
class_typer8   attris_borrowedtypeis_refcountedrQ   rR   s      r'   visit_get_attrz%LogTraceEventTransform.visit_get_attri   s[    ZBM,>)J)J)J)JKK~ 	!"'"7 	!R   r)   r   c                n    |j         sdnd}|                     |||j        j         d|j                   S )Nset_attrset_attr_initrb   )is_initrK   rc   r8   rd   )rG   r*   r8   s      r'   visit_set_attrz%LogTraceEventTransform.visit_set_attro   s=    !#@zzxxDR]%7"C"C"'"C"CDDDr)   r   c                    |j         j        t          u r|                     |          S |                     |dt          |j         j                            S )Nbox)srcrf   r   addrK   r6   rL   s     r'   	visit_boxz LogTraceEventTransform.visit_boxs   sC    6;/))88B<<88Bs26;'7'7888r)   r   c                T    |                      |dt          |j                            S )Nunbox)rK   r6   rf   rL   s     r'   visit_unboxz"LogTraceEventTransform.visit_unboxz   s     xxGS\\222r)   r	   Value | Nonec                    |                      |dt          |j                            }|j        s|                     |           |S )Ncast)rK   r6   rf   re   rQ   rR   s      r'   
visit_castz!LogTraceEventTransform.visit_cast}   sB    VS\\22~ 	$U###r)   r   c                ^    |                      |dt          |j        j                            S Ninc_refrK   r6   rp   rf   rL   s     r'   visit_inc_refz$LogTraceEventTransform.visit_inc_ref   $    xxIs26;'7'7888r)   r   c                ^    |                      |dt          |j        j                            S )Ndec_refr}   rL   s     r'   visit_dec_refz$LogTraceEventTransform.visit_dec_ref   r   r)   r7   c                b    |                      dt          |j                  |j                   d S r{   )	log_eventr6   rf   line)rG   r7   s     r'   rQ   z"LogTraceEventTransform.log_inc_ref   s(    y#ej//5:>>>>>r)   r   r8   detailsc                d    |                      |||j                   |                     |          S r   )r   r   rq   )rG   r*   r8   r   s       r'   rK   zLogTraceEventTransform.log   s*    tWbg...xx||r)   r   intc                d   |dk    rt          |          }nd}| j                            t          t	          | j                  t	          |                    d                    t	          |                    d                    t	          |                    d                    g|           d S )Nr    asciirC   )r6   r%   rO   r   r
   r"   rF   )rG   r8   r   r   line_strs        r'   r   z LogTraceEventTransform.log_event   s    1994yyHHH!!&&0011G,,--w//00	 		
 		
 		
 		
 		
r)   )r%   r   r"   r6   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r   r   r   )r*   r	   r   rv   )r*   r   r   r   )r*   r   r   r   )r7   r   r   r   )r*   r   r8   r6   r   r6   r   r   )r8   r6   r   r6   r   r   r   r   )__name__
__module____qualname__rE   rM   rS   r_   rh   rm   rr   ru   ry   r~   r   rQ   rK   r   __classcell__)rH   s   @r'   r    r    H   sE       1 1 1 1 1 14 4 4 4      $   E E E E9 9 9 93 3 3 3   9 9 9 99 9 9 9? ? ? ?   
 
 
 
 
 
 
 
r)   r    N)r   r   r   r   r   r   )r*   r   r   r+   )&__doc__
__future__r   typingr   mypyc.ir.func_irr   mypyc.ir.opsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   mypyc.ir.rtypesr   mypyc.irbuild.ll_builderr   mypyc.optionsr   mypyc.primitives.misc_opsr   mypyc.transform.ir_transformr   r(   r:   r@   __annotations__r     r)   r'   <module>r      s     # " " " " "       # # # # # #                                 " , + + + + + 6 6 6 6 6 6 ) ) ) ) ) ) 5 5 5 5 5 5 4 4 4 4 4 4       " " "     V
 V
 V
 V
 V
[ V
 V
 V
 V
 V
r)   