NL iUdZddlmZddlmZddlmZddlmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZddlmZddlmZddlmZdd lmZdd lm Z dd Z!dd Z"hd Z#de$d<Gdde Z%y)aEThis 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)BoxCallCallCCastCStringDecRefGetAttrIncRef LoadLiteral LoadStaticOp PrimitiveOpSetAttrUnboxValue)none_rprimitive)LowLevelIRBuilder)CompilerOptions)log_trace_event) IRTransformctd|}t||jj}|j |j |j |_yN)rLogTraceEventTransformdeclfullnametransform_blocksblocks)fnoptionsbuilder transforms _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/transform/log_trace.pyinsert_event_trace_loggingr&'sAg.G&w0@0@AI ryy)BIc|j}|dk(r||jd}t|tr]|jdk(rN|j dk(r?t|jdt r"t|jdjSy)NCPyDict_GetItemrstaticglobals) function_nameargs isinstancer namespace identifierrstrvalue)opnameargs r%get_load_global_namer7.ss  D   ggaj sJ ' ))+2771:{3rwwqz''( ( r'>r)CPyList_GetItemCPyList_PopLastCPyDict_GetWithNoneCPyList_GetItemShortlist_get_item_unsaferprimitives_that_inc_refceZdZdfd ZddZddZddZddZddZddZ ddZ dd Z dd Z dd Z dd Zdd ZddZxZS)rcPt|||jd|_y)Nutf-8)super__init__encoder)selfr#r __class__s r%rBzLogTraceEventTransform.__init__Is  ! 0 r'cP|j|d|jjS)Ncall)logr!rrDr4s r% visit_callz!LogTraceEventTransform.visit_callMsxxFBEENN33r'c|j|d|jj}|jjtvr|j ||S)N primitive_op)rHdescr5r= log_inc_refrDr4r3s r%visit_primitive_opz)LogTraceEventTransform.visit_primitive_opQs@^RWW\\: 77<<2 2   U # r'ct|x}r|j|d|S|j}|dk(rJt|jdt r-t|jdx}r|j|d|S|dk(rPt|jdt r3|j|dt|jdjS|dk(rPt|jdt r3|j|d t|jdjS|j|d |}|tvr|j||S) Nglobals_dict_get_itemPyObject_Vectorcallrpython_call_globalCPyObject_GetAttrr,python_get_attrPyObject_VectorcallMethodpython_call_methodcall_c) r7rHr-r/r.rrr2r3r=rN)rDr4 global_name func_namer3s r% visit_call_cz#LogTraceEventTransform.visit_call_cWs(.r2 2; 288B 7E E$$ - -*RWWQZ2O22771:>>{>xx$8+FF - -*RWWQZ2U88B 13rwwqz7G7G3HI I 5 5*RWWQZQ\:]88B 4c"''!*:J:J6KL LXy1 / /   U # r'c|j|d|jjd|j}|js'|j j r|j||S)Nget_attr.)rH class_typer5attr is_borrowedtype is_refcountedrNrOs r%visit_get_attrz%LogTraceEventTransform.visit_get_attrisTZBMM,>,>+?q )JK~~"''"7"7   R  r'c|jsdnd}|j|||jjd|jS)Nset_attr set_attr_initr_)is_initrHr`r5ra)rDr4r5s r%visit_set_attrz%LogTraceEventTransform.visit_set_attros<!#zxxDR]]%7%7$8"''"CDDr'c|jjtur|j|S|j |dt |jjS)Nbox)srcrcraddrHr2rIs r% visit_boxz LogTraceEventTransform.visit_boxss@ 66;;/ )88B< 88Bs266;;'78 8r'cN|j|dt|jS)Nunbox)rHr2rcrIs r% visit_unboxz"LogTraceEventTransform.visit_unboxzsxxGS\22r'c|j|dt|j}|js|j ||S)Ncast)rHr2rcrbrNrOs r% visit_castz!LogTraceEventTransform.visit_cast}s6VS\2~~   U # r'cb|j|dt|jjSNinc_refrHr2rmrcrIs r% visit_inc_refz$LogTraceEventTransform.visit_inc_ref"xxIs266;;'788r'cb|j|dt|jjS)Ndec_refryrIs r% visit_dec_refz$LogTraceEventTransform.visit_dec_refr{r'cd|jdt|j|jyrw) log_eventr2rcline)rDr3s r%rNz"LogTraceEventTransform.log_inc_refs y#ejj/5::>r'c^|j|||j|j|Sr)rrrn)rDr4r5detailss r%rHzLogTraceEventTransform.logs$ tWbgg.xx|r'c *|dk\r t|}nd}|jjtt |j t |j dt |j dt |j dg|y)Nrasciir@)r2r#rLrr rrC)rDr5rrline_strs r%rz LogTraceEventTransform.log_eventsu 194yHH !!  &01 G,-w/0    r')r#rrr2returnNone)r4rrr)r4rrr)r4rrr)r4r rr)r4rrr)r4rrr)r4rrr)r4r rz Value | None)r4r rr)r4r rr)r3rrr)r4rr5r2rr2rr)r5r2rr2rintrr)__name__ __module__ __qualname__rBrJrPr\rerjrorrrurzr~rNrHr __classcell__)rEs@r%rrHsJ14 $ E93 99? r'rN)r!rr"rrr)r4rrz str | None)&__doc__ __future__rtypingrmypyc.ir.func_irr mypyc.ir.opsrrrr r r r r rrrrrrrmypyc.ir.rtypesrmypyc.irbuild.ll_builderr mypyc.optionsrmypyc.primitives.misc_opsrmypyc.transform.ir_transformrr&r7r=__annotations__rr'r%rsf##",6)54  "V [V r'