o
    #Zh                     @   sz   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 dZdS )    N)	FrameTypeTracebackType)UnionIterable)style_with_executing_nodeOptionsLine	FrameInfoLINE_GAPVariableRepeatedFrames)assert_c                   @   sH  e Zd Ze ddddddddddddddddd	d
dZdd Zd0ddddZd0ddddZddddZd0de	e
 fddZd0de	e
 fddZde	eeef  de	e
 fddZdede
fddZd eeeef de	e
 fd!d"Zd#ede
fd$d%Zd&ede
fd'd(Zd#ede	e
 fd)d*Zd+ede
fd,d-Zde
fd.d/ZdS )1	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                C   s   |r"|j s"|rt||}|d u rddlm} |dd|i|pi |_ || _|| _tt|dktd || _	|	p9d| _
|
| _|| _|| _|| _|| _|| _|| _|| _|| _d S )Nr   )Terminal256Formatterstyle   z3executing_node_underline must be a single character  )Zpygments_formatterr   Z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!   r&   r&   L/var/www/html/lang_env/lib/python3.10/site-packages/stack_data/formatting.py__init__   s:   



zFormatter.__init__c                    s    fdd}|t _d S )Nc                    s     | d S N)print_exception)Z_etypeZevalueZ_tbr)   r&   r*   
excepthookB   s   z&Formatter.set_hook.<locals>.excepthook)sysr/   )r)   r/   r&   r.   r*   set_hookA   s   
zFormatter.set_hookfilec                C   s   | j | ||d d S Nr2   )print_linesformat_exception)r)   er3   r&   r&   r*   r-   G   s   zFormatter.print_exceptionc                C   s*   |d u r	t  j}| j| ||d d S r4   )inspectcurrentframef_backr5   format_stack)r)   frame_or_tbr3   r&   r&   r*   print_stackJ   s   
zFormatter.print_stackc                C   s*   |d u rt j}|D ]	}t||dd q	d S )Nr%   )r3   end)r0   stderrprint)r)   linesr3   liner&   r&   r*   r5   P   s
   zFormatter.print_linesreturnc                 c   s    |d u rt  d }| jr6|jd ur!| |jE d H  tjV  n|jd ur6|js6| |jE d H  tj	V  dV  | 
|jE d H  tt||E d H  d S )Nr$   z#Traceback (most recent call last):
)r0   exc_infor    	__cause__r6   	traceback_cause_message__context____suppress_context___context_messager;   __traceback__format_exception_onlytype)r)   r7   r&   r&   r*   r6   V   s   


zFormatter.format_exceptionc                 c   s8    |d u r
t  j}| tj|| j| jdE d H  d S )N)r!   )r8   r9   r:   format_stack_datar	   
stack_datar   r!   )r)   r<   r&   r&   r*   r;   g   s   
zFormatter.format_stackstackc                 c   s8    |D ]}t |tr| |E d H  q| |V  qd S r,   )
isinstancer	   format_frameformat_repeated_frames)r)   rP   itemr&   r&   r*   rN   s   s   
zFormatter.format_stack_datarepeated_framesc                 C   s   d |jS )Nz&    [... skipping similar frames: {}]
)formatdescription)r)   rU   r&   r&   r*   rS   |   s   z Formatter.format_repeated_framesframec                 c   s    t |tst|| j}| |V  |jD ]}t |tr#| |V  qt|tu  | j	d V  q| j
rIz| |E d H  W d S  tyH   Y d S w d S )N
)rQ   r	   r   format_frame_headerrA   r   format_liner   r
   r   r   format_variables	Exception)r)   rX   rB   r&   r&   r*   rR      s    


zFormatter.format_frame
frame_infoc                 C   s&   dj || jr|j dS |jjdS )NzC File "{frame_info.filename}", line {frame_info.lineno}, in {name}
)r^   name)rV   r   Z	executingZcode_qualnamecodeco_name)r)   r^   r&   r&   r*   rZ      s   
zFormatter.format_frame_headerrB   c                 C   s   d}| j r|jr| j }ndt| j  }|d7 }| jr"|d|j7 }|p%d}|}||j| j| j| j	dd 7 }| j
rb| jsb|jD ]!}|j|j }|j|j }|d|t|  | j||   d 7 }q@|S )Nr%    z{:4} | z   )r   Zescape_htmlr   rY   )r   Z
is_currentr'   r   rV   linenorenderr   r   r   r   Zexecuting_node_rangesstartZleading_indentr>   r   )r)   rB   resultprefix
line_rangere   r>   r&   r&   r*   r[      s:   
zFormatter.format_linec              	   c   sD    t |jdd dD ]}z
| |d V  W q
 ty   Y q
w d S )Nc                 S   s   | j S r,   )r_   )vr&   r&   r*   <lambda>   s    z,Formatter.format_variables.<locals>.<lambda>)keyrY   )sorted	variablesformat_variabler]   )r)   r^   varr&   r&   r*   r\      s   zFormatter.format_variablesro   c                 C   s   d |j| |jS )Nz{} = {})rV   r_   format_variable_valuevalue)r)   ro   r&   r&   r*   rn      s   
zFormatter.format_variablec                 C   s   t |S r,   )repr)r)   rq   r&   r&   r*   rp      s   zFormatter.format_variable_valuer,   )__name__
__module____qualname__r   r+   r1   r-   r=   r5   r   strr6   r;   r   r	   r   rN   rS   r   r   rR   rZ   r   r[   r\   r   rn   rp   r&   r&   r&   r*   r      sJ    5
	 
"r   )r8   r0   rF   typesr   r   typingr   r   rO   r   r   r   r	   r
   r   r   Zstack_data.utilsr   r   r&   r&   r&   r*   <module>   s    $