o
    Ni                     @  sv   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ er.d dlmZ dddZddddZdS )    )annotationsN)NamedTemporaryFile)TYPE_CHECKING)SphinxParallelError)strip_escape_sequences)SphinxappSphinx | NoneexcBaseExceptionreturnstrc                 C  s*  ddl }ddl}ddl}ddl}ddl}t|trd|j }nt }| du r,d }}	n| j	
 }
ddd | jD }ddd |
D }	td	d
ddd<}|dtj  d|   d|j d|  d|  d|j d|j d|j d| d|	 d| d W d   |jS 1 sw   Y  |jS )z9Save the given exception's traceback in a temporary file.r   Nz(Error in parallel process)
 
c                 s  s"    | ]}d t |  V  qdS )#   N)r   strip).0s r   J/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/util/exceptions.py	<genexpr>"   s    
z!save_traceback.<locals>.<genexpr>c                 s  s0    | ]}|j d krd|j d|j  dV  qdS )builtinr    ()N)versionname)r   extr   r   r   r   %   s    
wz.logzsphinx-err-F)suffixprefixdeletez# Platform:         z; (z)
# Sphinx version:   z
# Python version:   r   z)
# Docutils version: z
# Jinja2 version:   z
# Pygments version: z

# Last messages:
z

# Loaded extensions:
z

# Traceback:
)platformdocutilsjinja2pygmentssphinx
isinstancer   	traceback
format_exc
extensionsvaluesjoin
messagelogr   writesys__display_version__python_versionpython_implementation__version__r   )r   r
   r!   r"   r#   r$   r%   
exc_format	last_msgs	exts_listr)   fr   r   r   save_traceback   s`   




	
r7      xintc                 C  sH   t  \}}}g }t|}|||  d 7 }|t||7 }d|S )z?Format an exception with traceback, but only the last x frames.Nr   )r.   exc_infor'   	format_tbformat_exception_onlyr+   )r9   typvaltbrestbresr   r   r   format_exception_cut_framesB   s   

rC   )r   r	   r
   r   r   r   )r8   )r9   r:   r   r   )
__future__r   r.   r'   tempfiler   typingr   sphinx.errorsr   sphinx.util.consoler   sphinx.applicationr   r7   rC   r   r   r   r   <module>   s    
3