o
    tdf<!                     @   s   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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BlankLineRange
BlankLines)assert_c                   @   sR  e Zd Zddddddddddd	d
ddddddddddZdd Zd4ddddZd4ddddZddddZd4dee	 fddZ
d4d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+d, Zd%edee	 fd-d.Zd/ede	fd0d1Zde	fd2d3ZdS )5	FormatterNFTmonokaiz
bg:#005080^z-->z(...):z{:4} | )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line_number_gap_stringline_number_format_stringshow_variablesuse_code_qualnameshow_linenosstrip_leading_indenthtmlchaincollapse_repeated_framesc                C   s   |d u rt  }|r)|js)|rt||}|d u rddlm} |dd|i|p%i |_|| _|| _tt|dkt	d || _
|	p@d| _|
| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _| jsq| jjtjkrst	dd S d S )	Nr   )Terminal256Formatterstyle   z3executing_node_underline must be a single character z@BlankLines.SINGLE option can only be used when show_linenos=True )r   Zpygments_formatterr   Zpygments.formatters.terminal256r'   r   r   r   len
ValueErrorr   r   r   r   r   r    r"   r!   r#   r$   r%   r   r&   blank_linesr   ZSINGLE)selfr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r+   r+   ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/stack_data/formatting.py__init__   sL   


zFormatter.__init__c                    s    fdd}|t _d S )Nc                    s     | d S N)print_exception)Z_etypeZevalueZ_tbr/   r+   r0   
excepthookN   s   z&Formatter.set_hook.<locals>.excepthook)sysr5   )r/   r5   r+   r4   r0   set_hookM   s   
zFormatter.set_hookfilec                C   s   | j | ||d d S Nr8   )print_linesformat_exception)r/   er9   r+   r+   r0   r3   S   s   zFormatter.print_exceptionc                C   s*   |d u r	t  j}| j| ||d d S r:   )inspectcurrentframef_backr;   format_stack)r/   frame_or_tbr9   r+   r+   r0   print_stackV   s   
zFormatter.print_stackc                C   s*   |d u rt j}|D ]	}t||dd q	d S )Nr*   )r9   end)r6   stderrprint)r/   linesr9   liner+   r+   r0   r;   \   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):
)r6   exc_infor%   	__cause__r<   	traceback_cause_message__context____suppress_context___context_messagerA   __traceback__format_exception_onlytype)r/   r=   r+   r+   r0   r<   b   s   


zFormatter.format_exceptionc                 c   s8    |d u r
t  j}| tj|| j| jdE d H  d S )N)r&   )r>   r?   r@   format_stack_datar	   
stack_datar   r&   )r/   rB   r+   r+   r0   rA   s   s   
zFormatter.format_stackstackc                 c   s8    |D ]}t |tr| |E d H  q| |V  qd S r2   )
isinstancer	   format_frameformat_repeated_frames)r/   rV   itemr+   r+   r0   rT      s   
zFormatter.format_stack_datarepeated_framesc                 C   s   d |jS )Nz&    [... skipping similar frames: {}]
)formatdescription)r/   r[   r+   r+   r0   rY      s   z Formatter.format_repeated_framesframec                 c   s    t |tst|| j}| |V  |jD ]&}t |tr#| |V  qt |tr/| |V  qt	|t
u  | jd V  q| jrUz| |E d H  W d S  tyT   Y d S w d S )N
)rW   r	   r   format_frame_headerrG   r   format_liner   format_blank_lines_linenumbersr   r
   r   r    format_variables	Exception)r/   r^   rH   r+   r+   r0   rX      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}
)re   name)r\   r!   Z	executingZcode_qualnamecodeco_name)r/   re   r+   r+   r0   r`      s   
zFormatter.format_frame_headerrH   c                 C   s   d}| j r|jr| j }ndt| j  }|d7 }nd}| jr&|| j|j7 }|}||j| j| j	| j
dd 7 }| jrf| jsf|jD ]%}|j|j }|j|j }||kre|d|t|  | j||   d 7 }q@|S )Nr*       )r   Zescape_htmlr#   r_   )r   Z
is_currentr,   r"   r   r\   linenorenderr   r$   r#   r   Zexecuting_node_rangesstartZleading_indentrD   r   )r/   rH   resultprefix
line_rangerm   rD   r+   r+   r0   ra      s>   

zFormatter.format_linec                 C   sP   | j rdt| j  d }nd}|j|jkr || j|j d S |d| j S )Nri   rj   r_   z   {}
)r   r,   Zbegin_lineno
end_linenor   r\   r   )r/   
blank_linern   r+   r+   r0   rb      s   z(Formatter.format_blank_lines_linenumbersc              	   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 r2   )rf   )vr+   r+   r0   <lambda>   s    z,Formatter.format_variables.<locals>.<lambda>)keyr_   )sorted	variablesformat_variablerd   )r/   re   varr+   r+   r0   rc      s   zFormatter.format_variablesry   c                 C   s   d |j| |jS )Nz{} = {})r\   rf   format_variable_valuevalue)r/   ry   r+   r+   r0   rx      s   
zFormatter.format_variablec                 C   s   t |S r2   )repr)r/   r{   r+   r+   r0   rz      s   zFormatter.format_variable_valuer2   )__name__
__module____qualname__r1   r7   r3   rC   r;   r   strr<   rA   r   r	   r   rT   rY   r   r   rX   r`   r   ra   rb   rc   r   rx   rz   r+   r+   r+   r0   r      sP    @
	 
&
r   )r>   r6   rL   typesr   r   typingr   r   rU   r   r   r   r	   r
   r   r   r   r   Zstack_data.utilsr   r   r+   r+   r+   r0   <module>   s    ,