U
    \ShJ                     @  sr  U d 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 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 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+Z,i Z-de.d< eeddeeddeeddeeddeedddZ/de.d< e0dde0dde0ddiZ1dZ2G d d! d!Z3d"S )#z%Highlight code blocks using Pygments.    )annotations)partial)import_module)Any)	highlight)
ErrorToken)	Formatter)HtmlFormatterLatexFormatter)Lexer)CLexerPythonConsoleLexerPythonLexerRstLexer	TextLexerget_lexer_by_nameguess_lexer)Style)get_style_by_name)ClassNotFound)__)	NoneStyleSphinxStyle)logging	texescapez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                	   @  s   e Zd ZeZeZd ddddddd	Zdd
dddZdddddZ	d!dddddddddZ
d"ddddddddddZddddZdS )#PygmentsBridgehtmlsphinxNstrz
str | NoneNone)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)r+   r-   	get_styleformatter_argshtml_formatter	formatterlatex_formatter)selfr+   r,   r-   r/    r6   F/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/highlighting.py__init__\   s    


zPygmentsBridge.__init__r   )r,   r.   c                 C  sR   |d ks|dkrt S |dkr tS d|krF|dd\}}tt||S t|S d S )Nr(   r   .   )r   r   rsplitgetattrr   r   )r5   r,   moduler6   r6   r7   r0   i   s    zPygmentsBridge.get_styler   r   )kwargsr.   c                 K  s   | | j | jf |S )N)updater1   r3   )r5   r>   r6   r6   r7   get_formattert   s    zPygmentsBridge.get_formatterFzdict | Noneboolr   )sourcelangoptsforcelocationr.   c                 C  s   |si }|dkr$| dr d}nd}|dkr0d}|tkr@t| S |tkrXt| f |}n^z&|dkrpt|f|}nt|f|}W n6 tk
r   tjtd||d td	 f |}Y nX |s|	d
 |S )N>   py3pyr   python3defaultz>>>r   r   Zpycon3guessz#Pygments lexer name %r is not known)rF   r   raiseonerror)

startswithr   r"   r   r   r   loggerwarningr   
add_filter)r5   rB   rC   rD   rE   rF   lexerr6   r6   r7   	get_lexerx   s0    

zPygmentsBridge.get_lexer)rB   rC   rD   rE   rF   r>   r.   c           
      K  s   t |ts| }| |||||}| jf |}zt|||}	W nV tk
r   |dkrZntjt	d||dd|d | |d|||}t|||}	Y nX | j
dkr|	S t|	| jS d S )NrJ   z=Could not lex literal_block %r as "%s". Highlighting skipped.miscZhighlighting_failure)typesubtyperF   r   r'   )
isinstancer)   decoderR   r@   r   r   rN   rO   r   r+   r   Zhlescaper-   )
r5   rB   rC   rD   rE   rF   r>   rQ   r3   Zhlsourcer6   r6   r7   highlight_block   s*    

  
zPygmentsBridge.highlight_block)r.   c                 C  s,   |   }| jdkr|dS | t S d S )Nr'   z
.highlight)r@   r+   Zget_style_defs_LATEX_ADD_STYLES)r5   r3   r6   r6   r7   get_stylesheet   s    

zPygmentsBridge.get_stylesheet)r'   r(   N)NFN)NFN)__name__
__module____qualname__r	   r2   r
   r4   r8   r0   r@   rR   rX   rZ   r6   r6   r6   r7   r&   V   s          $    r&   N)4__doc__
__future__r   	functoolsr   	importlibr   typingr   pygmentsr   Zpygments.filtersr   Zpygments.formatterr   Zpygments.formattersr	   r
   Zpygments.lexerr   Zpygments.lexersr   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   	getLoggerr[   rN   r   __annotations__r"   ordZescape_hl_charsrY   r&   r6   r6   r6   r7   <module>   s@   $	





	  