a
    0a                  
   @   s  U d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
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 ddlmZ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' ddl(m)Z)m*Z* ddl+m,Z,m-Z- e,.e/Z0i Z1ee2ef e3d< eeddeeddeeddeeddeedddeeddeedddZ4ee2ef e3d< e5dde5dde5ddiZ6d Z7d!Z8e	9ej:d"kre7e87 Z7G d#d$ d$Z;d%S )&z
    sphinx.highlighting
    ~~~~~~~~~~~~~~~~~~~

    Highlight code blocks using Pygments.

    :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )partial)import_module)AnyDict)version)__version__)	highlight)
ErrorToken)	Formatter)HtmlFormatterLatexFormatter)Lexer)CLexerPython3LexerPythonConsoleLexerPythonLexerRstLexer	TextLexerget_lexer_by_nameguess_lexer)Style)get_style_by_name)ClassNotFound)__)	NoneStyleSphinxStyle)logging	texescapelexersF)stripnlT)python3r   )nonepythonr    pyconpycon3restclexer_classes\z	\PYGZbs{}{z	\PYGZob{}}z	\PYGZcb{}z(
\renewcommand\PYGZsq{\textquotesingle}
a  
\makeatletter
% fix for Pygments <= 2.7.4
\let\spx@original@fcolorbox\fcolorbox
\def\spx@fixpyg@fcolorbox{\fboxsep-\fboxrule\spx@original@fcolorbox}
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+%
             {\let\fcolorbox\spx@fixpyg@fcolorbox\PYG@do{#2}}}
\makeatother
)         c                	   @   s   e Zd ZeZeZdeeeddddZee	ddd	Z
eed
ddZdeeeeeedddZdeeeeeeedddZedddZdS )PygmentsBridgehtmlsphinxN)dest	stylenamelatex_enginereturnc                 C   sH   || _ || _| |}d|i| _|dkr2| j| _n| j| _d| jd< d S )Nstyler/   ZPYGZcommandprefix)r1   r3   	get_styleformatter_argshtml_formatter	formatterlatex_formatter)selfr1   r2   r3   r5    r<   2lib/python3.9/site-packages/sphinx/highlighting.py__init__M   s    


zPygmentsBridge.__init__)r2   r4   c                 C   sR   |d u s|dkrt S |dkr tS d|v rF|dd\}}tt||S t|S d S )Nr0   r!   .   )r   r   rsplitgetattrr   r   )r;   r2   moduler<   r<   r=   r6   Z   s    zPygmentsBridge.get_style)kwargsr4   c                 K   s   | | j | jf i |S )N)updater7   r9   )r;   rD   r<   r<   r=   get_formattere   s    zPygmentsBridge.get_formatterF)sourcelangoptsforcelocationr4   c                 C   s   |si }|dv r&| dr d}qBd}n|dv rB| dr>d}nd}|tv rRt| S |tv rnt| f i |}nhz.|dkrt|fi |}nt|fi |}W n8 ty   tjtd	||d
 td f i |}Y n0 |s|	d |S )N)pyr"   z>>>r#   r"   )Zpy3r    defaultr$   r    Zguessz#Pygments lexer name %r is not known)rK   r!   Zraiseonerror)

startswithr   r'   r   r   r   loggerwarningr   Z
add_filter)r;   rG   rH   rI   rJ   rK   lexerr<   r<   r=   	get_lexeri   s4    


zPygmentsBridge.get_lexer)rG   rH   rI   rJ   rK   rD   r4   c           
   
   K   s   t |ts| }| |||||}| jf i |}zt|||}	W nR ty   |dkr\ntjt	d|dd|d | |d|||}t|||}	Y n0 | j
dkr|	S t|	| jS d S )NrM   z:Could not lex literal_block as "%s". Highlighting skipped.ZmiscZhighlighting_failure)typeZsubtyperK   r!   r/   )
isinstancestrdecoderR   rF   r   r	   rO   rP   r   r1   r   Zhlescaper3   )
r;   rG   rH   rI   rJ   rK   rD   rQ   r9   Zhlsourcer<   r<   r=   highlight_block   s&    


zPygmentsBridge.highlight_block)r4   c                 C   s,   |   }| jdkr|dS | t S d S )Nr/   z
.highlight)rF   r1   Zget_style_defs_LATEX_ADD_STYLES)r;   r9   r<   r<   r=   get_stylesheet   s    

zPygmentsBridge.get_stylesheet)r/   r0   N)NFN)NFN)__name__
__module____qualname__r   r8   r   r:   rU   r>   r   r6   r   r
   rF   r   boolr   rR   rW   rY   r<   r<   r<   r=   r.   G   s(       '  r.   N)<__doc__	functoolsr   	importlibr   typingr   r   Z	packagingr   Zpygmentsr   Zpygmentsversionr   Zpygments.filtersr	   Zpygments.formatterr
   Zpygments.formattersr   r   Zpygments.lexerr   Zpygments.lexersr   r   r   r   r   r   r   r   Zpygments.styler   Zpygments.stylesr   Zpygments.utilr   Zsphinx.localer   Zsphinx.pygments_stylesr   r   Zsphinx.utilr   r   Z	getLoggerrZ   rO   r   rU   __annotations__r'   ordZescape_hl_charsrX   Z_LATEX_ADD_STYLES_FIXPYGparsereleaser.   r<   r<   r<   r=   <module>   sH   
(






	