o
    Ni                     @  s  U d Z ddlmZ ddlmZ ddlmZ ddlmZm	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mZmZmZmZ ddlm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$ er}ddl%m&Z& ddl'm(Z( ddl)m*Z* e+e,e-e
j./ddd dk rddl%m&Z& e0dd e&_1e#2e3Z4i Z5de6d< eeddeeddeeddeeddeedddZ7de6d< e8dd e8d!d"e8d#d$iZ9d%Z:G d&d' d'Z;dS )(z%Highlight code blocks using Pygments.    )annotations)partial)import_module)TYPE_CHECKINGAnyN)	highlight)
ErrorToken)HtmlFormatterLatexFormatter)CLexerPythonConsoleLexerPythonLexerRstLexer	TextLexerget_lexer_by_nameguess_lexer)get_style_by_name)ClassNotFound)__)	NoneStyleSphinxStyle)logging	texescape)	Formatter)Lexer)Style.   )r      c                 C  s   | S )N )clsnamer   r   G/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/highlighting.py<lambda>%   s    r#   zdict[str, Lexer]lexersF)stripnl)nonepythonpyconrestcz'dict[str, type[Lexer] | partial[Lexer]]lexer_classes\z	\PYGZbs{}{z	\PYGZob{}}z	\PYGZcb{}aS  
% Sphinx redefinitions
% Originally to obtain a straight single quote via package textcomp, then
% to fix problems for the 5.0.0 inline code highlighting (captions!).
% The \text is from amstext, a dependency of sphinx.sty.  It is here only
% to avoid build errors if for some reason expansion is in math mode.
\def\PYGZbs{\text\textbackslash}
\def\PYGZus{\_}
\def\PYGZob{\{}
\def\PYGZcb{\}}
\def\PYGZca{\text\textasciicircum}
\def\PYGZam{\&}
\def\PYGZlt{\text\textless}
\def\PYGZgt{\text\textgreater}
\def\PYGZsh{\#}
\def\PYGZpc{\%}
\def\PYGZdl{\$}
\def\PYGZhy{\sphinxhyphen}% defined in sphinxlatexstyletext.sty
\def\PYGZsq{\text\textquotesingle}
\def\PYGZdq{"}
\def\PYGZti{\text\textasciitilde}
\makeatletter
% use \protected to allow syntax highlighting in captions
\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+{\PYG@do{#2}}}
\makeatother
c                   @  sp   e Zd Zee Zee Z			d$d%ddZd&ddZ	d'ddZ
			d(d)ddZ			d(d*d d!Zd+d"d#ZdS ),PygmentsBridgehtmlsphinxNdeststr	stylenamelatex_engine
str | NonereturnNonec                 C  sJ   || _ || _| |}d|i| _|dkr| j| _d S | j| _d| jd< d S )Nstyler0   PYGcommandprefix)r2   r5   	get_styleformatter_argshtml_formatter	formatterlatex_formatter)selfr2   r4   r5   r9   r   r   r"   __init__f   s   

zPygmentsBridge.__init__type[Style]c                 C  sJ   |r|dkrt S |dkrtS d|v r!|dd\}}tt||S t|S )Nr1   r&   r      )r   r   rsplitgetattrr   r   )rA   r4   moduler   r   r"   r<   w   s   zPygmentsBridge.get_stylekwargsr   r   c                 K  s   | | j | jdi |S )Nr   )updater=   r?   )rA   rH   r   r   r"   get_formatter   s   zPygmentsBridge.get_formatterFsourcelangoptsdict | Noneforceboollocationr   c                 C  s   |si }|dv r| drd}nd}|dkrd}|tv r t| S |tv r.t| di |}n4z|dkr<t|fi |}nt|fi |}W n tya   tjtd||d td	 di |}Y nw |si|	d
 |S )N>   pypy3r'   defaultpython3z>>>r(   r'   pycon3guessz#Pygments lexer name %r is not known)rQ   r&   raiseonerrorr   )

startswithr$   r+   r   r   r   loggerwarningr   
add_filter)rA   rK   rL   rM   rO   rQ   lexerr   r   r"   	get_lexer   s4   


zPygmentsBridge.get_lexerc                 K  s   t |ts	| }| |||||}| jd	i |}zt|||}	W n? tya }
 z3|dkr1d}ntjt	d||t|
dd|d |rFd}nd}| |||||}t|||}	W Y d }
~
nd }
~
ww | j
dkri|	S t|	| jS )
NrT   r&   z\Lexing literal_block %r as "%s" resulted in an error at token: %r. Retrying in relaxed mode.mischighlighting_failure)typesubtyperQ   Tr0   r   )
isinstancer3   decoder^   rJ   r   r   rZ   r[   r   r2   r   hlescaper5   )rA   rK   rL   rM   rO   rQ   rH   r]   r?   hlsourceerrr   r   r"   highlight_block   s<   
	
zPygmentsBridge.highlight_blockc                 C  s(   |   }| jdkr|dS | t S )Nr0   z
.highlight)rJ   r2   get_style_defs_LATEX_ADD_STYLES)rA   r?   r   r   r"   get_stylesheet   s   

zPygmentsBridge.get_stylesheet)r0   r1   N)r2   r3   r4   r3   r5   r6   r7   r8   )r4   r3   r7   rC   )rH   r   r7   r   )NFN)rK   r3   rL   r3   rM   rN   rO   rP   rQ   r   r7   r   )rK   r3   rL   r3   rM   rN   rO   rP   rQ   r   rH   r   r7   r3   )r7   r3   )__name__
__module____qualname__r	   r3   r>   r
   r@   rB   r<   rJ   r^   rh   rk   r   r   r   r"   r/   `   s$    

/1r/   )<__doc__
__future__r   	functoolsr   	importlibr   typingr   r   pygmentsr   pygments.filtersr   pygments.formattersr	   r
   pygments.lexersr   r   r   r   r   r   r   pygments.stylesr   pygments.utilr   sphinx.localer   sphinx.pygments_stylesr   r   sphinx.utilr   r   pygments.formatterr   pygments.lexerr   pygments.styler   tuplemapint__version__splitclassmethod__class_getitem__	getLoggerrl   rZ   r$   __annotations__r+   ordescape_hl_charsrj   r/   r   r   r   r"   <module>   sH    $	"






