
    *b                         d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZ  G d d          ZdS )    N)	FrameTypeTracebackType)UnionIterable)style_with_executing_nodeOptionsLine	FrameInfoLINE_GAPVariableRepeatedFrames)assert_c                   z   e Zd Z e            ddddddddddddddddd	d
Zd Zd!dddZd!dddZdddZd!de	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	e
         fdZdede
f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e
fd ZdS )"	FormatterFTNmonokaiz
bg:#005080^z-->z(...))options	pygmentedshow_executing_nodepygments_formatter_clspygments_formatter_kwargspygments_styleexecuting_node_modifierexecuting_node_underlinecurrent_line_indicatorline_gap_stringshow_variablesuse_code_qualnameshow_linenosstrip_leading_indenthtmlchaincollapse_repeated_framesc                   |r2|j         s+|rt          ||          }|ddlm}  |dd|i|pi |_         || _        || _        t          t          |          dk    t          d                     || _	        |	pd| _
        |
| _        || _        || _        || _        || _        || _        || _        || _        || _        d S )Nr   )Terminal256Formatterstyle   z3executing_node_underline must be a single character  )pygments_formatterr   pygments.formatters.terminal256r%   r   r   r   len
ValueErrorr   r   r   r   r   r   r    r!   r"   r   r#   )selfr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   s                     5lib/python3.11/site-packages/stack_data/formatting.py__init__zFormatter.__init__   s.   (  	W7 	" !:"$;" " &-. . . . . . *@)? * *$*+1r* *G&
 ##6 ())Q.LMM	
 	
 	
 )A%&<&B#.,(!2$8!	
(@%%%    c                 *      fd}|t           _        d S )Nc                 2                         |           d S N)print_exception)_etypeevalue_tbr.   s      r/   
excepthookz&Formatter.set_hook.<locals>.excepthookB   s      (((((r1   )sysr9   )r.   r9   s   ` r/   set_hookzFormatter.set_hookA   s)    	) 	) 	) 	) 	) $r1   filec                Z    |                      |                     |          |           d S Nr<   )print_linesformat_exception)r.   er=   s      r/   r5   zFormatter.print_exceptionG   s/    ..q11=====r1   c                    |t          j                    j        }|                     |                     |          |           d S r?   )inspectcurrentframef_backr@   format_stack)r.   frame_or_tbr=   s      r/   print_stackzFormatter.print_stackJ   sF    !.007K**;77dCCCCCr1   c                P    |t           j        }|D ]}t          ||d           d S )Nr(   )r=   end)r:   stderrprint)r.   linesr=   lines       r/   r@   zFormatter.print_linesP   s?    <:D 	+ 	+D$Tr*****	+ 	+r1   returnc              #     K   |t          j                    d         }| j        rr|j        /|                     |j                  E d {V  t
          j        V  n<|j        5|j        s.|                     |j                  E d {V  t
          j	        V  dV  | 
                    |j                  E d {V  t          j        t          |          |          E d {V  d S )Nr'   z#Traceback (most recent call last):
)r:   exc_infor"   	__cause__rA   	traceback_cause_message__context____suppress_context___context_messagerG   __traceback__format_exception_onlytype)r.   rB   s     r/   rA   zFormatter.format_exceptionV   s     9q!A: 	1{&00=========.....-+0 ,00?????????00004444$$Q_5555555552477A>>>>>>>>>>>r1   c              #      K   |t          j                    j        }|                     t	          j        || j        | j                            E d {V  d S )N)r#   )rD   rE   rF   format_stack_datar
   
stack_datar   r#   )r.   rH   s     r/   rG   zFormatter.format_stackg   s      !.007K)) )-)F  
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r1   stackc              #      K   |D ]J}t          |t                    r|                     |          E d {V  3|                     |          V  Kd S r4   )
isinstancer
   format_frameformat_repeated_frames)r.   r_   items      r/   r]   zFormatter.format_stack_datas   sy        	8 	8D$	** 8,,T222222222211$777777		8 	8r1   repeated_framesc                 6    d                     |j                  S )Nz&    [... skipping similar frames: {}]
)formatdescription)r.   re   s     r/   rc   z Formatter.format_repeated_frames|   s     8??'
 
 	
r1   framec              #     K   t          |t                    st          || j                  }|                     |          V  |j        D ]Q}t          |t
                    r|                     |          V  /t          |t          u            | j	        dz   V  R| j
        r/	 |                     |          E d {V  d S # t          $ r Y d S w xY wd S )N
)ra   r
   r   format_frame_headerrN   r	   format_liner   r   r   r   format_variables	Exception)r.   ri   rO   s      r/   rb   zFormatter.format_frame   s     %++ 	3eT\22E&&u-----K 	2 	2D$%% 2&&t,,,,,,()))*T11111 	0077777777777   	 	s   %C 
CC
frame_infoc                     d                     || j        r|j                                        n|j        j                  S )NzC File "{frame_info.filename}", line {frame_info.lineno}, in {name}
)rp   name)rg   r   	executingcode_qualnamecodeco_name)r.   rp   s     r/   rl   zFormatter.format_frame_header   sL    U\\! )(
$22444' ] 
 
 	
r1   rO   c                    d}| j         r+|j        r| j         }ndt          | j                   z  }|dz  }| j        r|d                    |j                  z  }|pd}|}||                    | j        | j        | j	                  dz   z  }| j
        rX| j        sQ|j        D ]I}|j        |j        z
  }|j        |j        z
  }|d|t          |          z   z  | j        ||z
  z  z   dz   z  }J|S )Nr(    z{:4} | z   )r   escape_htmlr    rk   )r   
is_currentr,   r   rg   linenorenderr   r!   r    r   executing_node_rangesstartleading_indentrK   r   )r.   rO   resultprefix
line_ranger~   rK   s          r/   rm   zFormatter.format_line   s;   & 	 @4s4#>???cMF 	4i&&t{333F5$++n	!%!:  
 
 	 	 # 	DN 	"8  
"(4+>> nt'::us6{{2373;GH r1   c              #      K   t          |j        d           D ]-}	 |                     |          dz   V  # t          $ r Y *w xY wd S )Nc                     | j         S r4   )rr   )vs    r/   <lambda>z,Formatter.format_variables.<locals>.<lambda>   s    af r1   )keyrk   )sorted	variablesformat_variablero   )r.   rp   vars      r/   rn   zFormatter.format_variables   sz      *.4D4DEEE 	 	C**3//$66666   	 	s   8
AAr   c                 h    d                     |j        |                     |j                            S )Nz{} = {})rg   rr   format_variable_valuevalue)r.   r   s     r/   r   zFormatter.format_variable   s2    H&&sy11
 
 	
r1   c                      t          |          S r4   )repr)r.   r   s     r/   r   zFormatter.format_variable_value   s    E{{r1   r4   )__name__
__module____qualname__r   r0   r;   r5   rI   r@   r   strrA   rG   r   r
   r   r]   rc   r   r   rb   rl   r	   rm   rn   r   r   r   r)   r1   r/   r   r      s_        GII $#'&*$$0%(#(# "!%%)%3A 3A 3A 3A 3Aj$ $ $>d > > > > >DD D D D D D *. + + + + +? ?(3- ? ? ? ?"

 

 

 

 

 

8!%	>(A"BC8	#8 8 8 8
n 
 
 
 
 

%	9m(K"L QYZ]Q^    &
i 
C 
 
 
 
           D9 #    
8 
 
 
 
 
c      r1   r   )rD   r:   rT   typesr   r   typingr   r   r^   r   r   r	   r
   r   r   r   stack_data.utilsr   r   r)   r1   r/   <module>r      s     



     * * * * * * * * " " " " " " " " n n n n n n n n n n n n n n n n n n $ $ $ $ $ $C C C C C C C C C Cr1   