bg4'dZddlmZmZddlZddlZddlZddlZddlZddl m Z ddl m Z ej dZ ddZddZd Zd Zdd Ze d fd ZddZddZe ddfdZdS)z raven.utils.stacks ~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. )absolute_importdivisionN) transform) iteritemszcoding[:=]\s*([-\w.]+)cd}|Vt|drF ||}n#ttf$rd}YnwxYw||}|. t j|}n#ttf$rYdSwxYw|sdStd||z }t|dz|zt|} d|||D}|| d} d||dz|D} n#t$rYdSwxYwt|t| t| fS) z Returns context_lines before and after lineno from file. Returns (pre_context_lineno, pre_context, context_line, post_context). N get_sourceNNNrc8g|]}|dS strip.0lines I/opt/cloudlinux/venv/lib64/python3.11/site-packages/raven/utils/stacks.py z'get_lines_from_file..As4    JJv     r c8g|]}|dSr rrs rrz'get_lines_from_file..Fs4    JJv     r)hasattrr ImportErrorIOError splitlines linecachegetlinesOSErrormaxminlenr IndexError slim_string) filenamelineno context_linesloader module_namesource lower_bound upper_bound pre_context context_line post_contexts rget_lines_from_filer.s F gfl;; &&{33FFW%   FFF   &&((F ~ $'11FF! $ $ $### $  a-/00Kfqj=0#f++>>K    {612   f~++F33    K78        K  L!!L!! s4,AAA33BBAD DDc8 ||S#t$r|cYSwxYw)z f_locals is not guaranteed to have .get(), but it will always support __getitem__. Even if it doesn't, we return ``default``. ) Exception)f_localskeydefaults r_getitem_from_framer4Us5 } s  ctdrj}n'tdrj}ntt fd|DS)zu Given something that closely resembles a dictionary, we attempt to coerce it into a propery dictionary. iterkeyskeysc3,K|]}||fVdSN)rkdictishs r zto_dict..ls+--AGAJ------r)rr6r7 ValueErrordict)r<ms` rto_dictrA`ss w ##"   & ! !" L!!! ------- - --rc#K|rkt|dr]t|jdi}t|ds|jt|ddfV|j}|rt|dYdSdSdSdS)z Given a traceback object, it will iterate over all frames that do not contain the ``__traceback_hide__`` local variable. tb_framer1__traceback_hide__ tb_linenoN)rgetattrrCr4tb_next)tbr1s riter_traceback_framesrIos Z((2; B77"8-ABB >+wr;=== = = = Z Z((rc#K|stjdd}dt|DD],\}}t|di}t |ds||fV-dS)z Given an optional list of frames (defaults to current stack), iterates over all frames that do not contain the ``__traceback_hide__`` local variable. r Nc36K|]}|d|dfVdS)rNr:)rfs rr=z$iter_stack_frames..s.AA11Q41,AAAAAArr1rD)inspectstackreversedrFr4)framesframer$r1s riter_stack_framesrSs %$AA0@0@AAA  v5*b11"8-ABB -     ricDt|dd}|sdSt|ts" t|}n#t$rYdSwxYwi}d}t |D]?\}}||}t t|}||z|kr |||<||z }@|S)Nr1r)rF isinstancer?rAr0rr repr) rR transformer max_var_sizer1f_varsf_sizer;vv_sizes rget_frame_localsr]suj$//H t h % % x((HH   44 F F(##1 KNNT!WW F?\ ) )F1I f F Ms< A  A cBd}g}g}|D]G}|dz }|dr||2||H||kr|S||z }t|}t||z d}|rht |dz } || | D]I}|dd|dd|dd|dz}JnL|D]I}|dd|dd|dd|dz}J|rg||z } t | dz } || | D]D}|dd|dd|ddE|S) z~ Removes various excess metadata from middle frames which go beyond ``frame_allowance``. Returns ``frames``. rr in_apprLvarsNr+r-)getappendr rintpop) rQframe_allowance frames_len app_frames system_framesrR remaining app_countsystem_allowancehalf_max app_allowances rslim_frame_datarosJJM((a 99X   (   e $ $ $ $   ' ' ' '_$$ _,IJI?Y6::'!+,,"8XI#56  E IIfd # # # IImT * * * IInd + + + NII  #  E IIfd # # # IImT * * * IInd + + + NII,!I- }q())( 23 , ,E IIfd # # # IImT * * * IInd + + + + Mrcd|s|St||kr|d|dz dzS|d|S)Nz...)r )valuelengths rr"r"sF   5zzF[fqj[!E)) &>rTcd}g}|D]}t|ttfr|\}}n |}|j}t |di} t | drPt |di} t |dd} | r|jj} |jj} nd} d} t | d}t | d}|r|d z}|| rt| |d ||\}}}nd \}}} tj | d d d j }| |tjdd d dtj}n#t$$r| }YnwxYw|s| }| ||pd| pd|d zd}|rt'||}|r||d<|||||d||dt-||i}|S)a Given a list of frames, returns a list of stack information dictionary objects that are JSON-ready. We have to be careful here as certain implementations of the _Frame class do not contain the necessary data to lookup all of the information we want. Tr1rD f_globalsf_codeN __loader____name__r r .rrLz )abs_pathr#modulefunctionr$)rWra)r+r,r-rQ)rf)rUlisttuplef_linenorFr4rw co_filenameco_namer.sysmodulessplit__file__rsplitosseplstripr0r]updatercro)rQrWcapture_localsrfrDresult frame_inforRr$r1rvrwr}rr&r'r+r,r- base_filenamer# frame_resultrY stackinfos rget_stack_infors FB$B$ j4- 0 0 )&ME66E(F5*b11 x)= > >  E;33 $//  |/H|+HHHH$Y ==))Z@@   aKF  ( #HfaMM 4K||7G 3K| K (9(9#q(A(A!(DENM~~$$RVQ//2A7779;;A6"&>> H   HHH  H! !)T /Kqj     .%eEEEF .'- V$  #   * , ,!!     l#### /&/JJJI s"BE11 F?F)NNr9)r^)rp)__doc__ __future__rrrNrrerrraven.utils.serializerrraven.utils.compatrcompile _coding_rer.r4rArIrSr]ror"rr:rrrsc10000000 ,,,,,,((((((RZ1 2 2 26;;;;| . . ."     )200000f(1#%UUUUUUr