
    fD                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZ d dlmZmZmZmZmZmZ d dlmZ  ej2                  e      Z G d d	      Zy)
    N)Counter)escape)	FrameTypeTracebackType)UnionIterableList)style_with_executing_nodeOptionsLine	FrameInfoVariableRepeatedFrames)some_strc                      e Zd ZdddddddddddddddZddee   fd	Zd
edefdZddee   fdZ	de
eeef      de
e   fdZdedefdZdeeeef   defdZd ZdedefdZdede
e   fdZdedefdZd ZdefdZdedefdZy)
SerializerNFTmonokaiz
bg:#005080)options	pygmentedshow_executing_nodepygments_formatter_clspygments_formatter_kwargspygments_styleexecuting_node_modifieruse_code_qualnamestrip_leading_indenthtmlchaincollapse_repeated_framesshow_variablesc                   |
t               }|r>|j                  s2|rt        ||      }||
rddlm} nddlm}  |dd|i|xs i |_        || _        || _        |	| _	        |
| _
        || _        || _        || _        || _        y )Nr   )HtmlFormatter)Terminal256Formatterstyle )r   pygments_formatterr
   pygments.formatters.htmlr"   pygments.formatters.terminal256r#   r   r   r   r   r   r   r   r    )selfr   r   r   r   r   r   r   r   r   r   r   r   r    s                 Q/var/www/cvtools/html/venv/lib/python3.12/site-packages/stack_data/serializing.py__init__zSerializer.__init__   s    " ?iGW77"!:"$;" &- *@ *$*+1r*G&
 #!2$8!	
(@%,    returnc                    |t        j                         d   }g }| j                  r|j                  @| j	                  |j                        }t
        j                  j                         |d   d<   nW|j                  K|j                  s?| j	                  |j                        }t
        j                  j                         |d   d<   |j                  | j                  |             |S )N   tail)sysexc_infor   	__cause__format_exception	traceback_cause_messagestrip__context____suppress_context___context_messageappendformat_traceback_part)r)   eresults      r*   r5   zSerializer.format_exceptionJ   s    9q!A::{{&..q{{;%.%=%=%C%C%Er
6"*13I3I..q}}=%.%?%?%E%E%Gr
6"d0034r,   r>   c           	          t        | j                  |j                  xs t        j                         d         t        t        |      j                  t        |            d      S )N   )typemessage )frames	exceptionr1   )dictformat_stack__traceback__r2   r3   rB   __name__r   )r)   r>   s     r*   r=   z Serializer.format_traceback_part[   sR    $$Q__%Iq8IJ!W%%  
 	
r,   c           	          |t        j                         j                  }t        | j	                  t        j                  || j                  | j                                    S )N)r   )	inspectcurrentframef_backlistformat_stack_datar   
stack_datar   r   )r)   frame_or_tbs     r*   rH   zSerializer.format_stacke   sX    !..077K""$$LL-1-J-J
 	
r,   stackc              #      K   |D ]a  }t        |t              r1| j                  |      s%t        dddi| j	                  |       Dt        dddi| j                  |       c y w)NrB   framerepeated_framesr%   )
isinstancer   should_include_framerG   format_frameformat_repeated_frames)r)   rS   items      r*   rP   zSerializer.format_stack_datas   sr       	XD$	*006CC4+<+<T+BCCW 1WT5P5PQU5VWW	Xs   A(A*rV   c                     t        t        |j                        j                         d       }t	        |D cg c]   \  \  }}}t	        |j
                  ||      " c}}}      S c c}}}w )Nc                 2    | d    | d   d   j                   fS )Nr/   r   )co_name)r[   s    r*   <lambda>z3Serializer.format_repeated_frames.<locals>.<lambda>   s    tAwhQ
(:(:; r,   key)namelinenocount)rE   )sortedr   
frame_keysitemsrG   r^   )r)   rV   countscoderc   rd   s         r*   rZ   z!Serializer.format_repeated_frames~   ss    O../557;
  .4  *NT6E !	
 		
s   %A*rU   c           
         t        |t              st        || j                        }t        | j                  r|j
                  j                         n|j                  j                  |j                  |j                  t        | j                  |j                                    }| j                  rt        | j                  |            |d<   |S )N)rb   filenamerc   lines	variables)rW   r   r   rG   r   	executingcode_qualnameri   r^   rk   rc   rO   format_linesrl   r    format_variables)r)   rU   r?   s      r*   rY   zSerializer.format_frame   s    %+eT\\2E )) --/ZZ''^^<<t((56	
 "&t'<'<U'C"DF;r,   c              #      K   |D ]?  }t        |t              rt        dddi| j                  |       2t        d       A y w)NrB   lineline_gap)rB   r%   )rW   r   rG   format_line)r)   rl   rs   s      r*   rp   zSerializer.format_lines   sH      	,D$%AA$*:*:4*@AA
++		,s   AArs   c           	          t        |j                  |j                  |j                  | j                  | j
                  | j                              S )N)r   escape_htmlr   )
is_currentrc   text)rG   rx   rc   renderr   r   r   )r)   rs   s     r*   ru   zSerializer.format_line   sE    ;;.. II%)%>%>  
 	
r,   
frame_infoc              #      K   	 t        |j                  d       D ]  }| j                  |        y # t        $ r t        j                  d       Y y w xY ww)Nc                     | j                   S N)rb   )vs    r*   r_   z-Serializer.format_variables.<locals>.<lambda>   s
    !&& r,   r`   z Error in getting frame variables)re   rm   format_variable	ExceptionlogrF   )r)   r{   vars      r*   rq   zSerializer.format_variables   sT     	>j228HI 0**3//0 	>MM<=	>s%   A05 AAAAAr   c                     t        | j                  |j                        | j                  | j                  |j                                    S )N)rb   value)rG   format_variable_partrb   format_variable_valuer   )r)   r   s     r*   r   zSerializer.format_variable   s>    **3884++D,F,Fsyy,QR
 	
r,   c                 4    | j                   rt        |      S |S r~   )r   rw   )r)   ry   s     r*   r   zSerializer.format_variable_part   s    99t$$Kr,   c                     t        |      S r~   )repr)r)   r   s     r*   r   z Serializer.format_variable_value   s    E{r,   c                      y)NTr%   )r)   r{   s     r*   rX   zSerializer.should_include_frame   s    r,   r~   )rJ   
__module____qualname__r+   r	   rG   r5   BaseExceptionr=   rH   r   r   r   r   rP   rZ   r   r   rY   rp   r   ru   rq   r   r   r   strr   boolrX   r%   r,   r*   r   r      s(     #"&  ,!!%0-d$t* "
} 
 

T
 
	XeI~$=>?	X	$	X
n 
 
 %	9m(K"L QU $,	
 	
 	
>9 >$ >
8 
 
c y T r,   r   )rL   loggingr2   r6   collectionsr   r   r   rw   typesr   r   typingr   r   r	   rQ   r
   r   r   r   r   r   stack_data.utilsr   	getLoggerrJ   r   r   r%   r,   r*   <module>r      sM      
   & * ( (  &g!r rr,   