B
    dG                 @   s  U d Z ddlmZ ddlmZ ddl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 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/ee0ef e1d< eeddeeddeeddeeddeedddZ2ee0e
e	e df f e1d< e3dde3dde3ddiZ4dZ5G dd dZ6d S )!z%Highlight code blocks using Pygments.    )partial)import_module)AnyDictOptionalTypeUnion)	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	texescapelexersF)stripnl)nonepythonpyconrestcz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e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edddZde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)r,   r.   	get_styleformatter_argshtml_formatter	formatterlatex_formatter)selfr,   r-   r.   r0    r7   `/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sphinx/highlighting.py__init__S   s    


zPygmentsBridge.__init__)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   )r6   r-   moduler7   r7   r8   r1   `   s    zPygmentsBridge.get_style)kwargsr/   c             K   s   | | j | jf |S )N)updater2   r4   )r6   r?   r7   r7   r8   get_formatterk   s    zPygmentsBridge.get_formatterF)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^y&|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>   python3defaultpyr!   py3z>>>r"   r!   Zpycon3guessz#Pygments lexer name %r is not known)rF   r    raiseonerror)

startswithr   r%   r   r   r   loggerwarningr   
add_filter)r6   rB   rC   rD   rE   rF   lexerr7   r7   r8   	get_lexero   s.    

zPygmentsBridge.get_lexer)rB   rC   rD   rE   rF   r?   r/   c       
   
   K   s   t |ts| }| |||||}| jf |}yt|||}	W nT 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 )NrH   z:Could not lex literal_block as "%s". Highlighting skipped.miscZhighlighting_failure)typesubtyperF   r    r*   )
isinstancestrdecoderR   rA   r	   r
   rN   rO   r   r,   r   Zhlescaper.   )
r6   rB   rC   rD   rE   rF   r?   rQ   r4   Zhlsourcer7   r7   r8   highlight_block   s$    


zPygmentsBridge.highlight_block)r/   c             C   s,   |   }| jdkr|dS | t S d S )Nr*   z
.highlight)rA   r,   Zget_style_defs_LATEX_ADD_STYLES)r6   r4   r7   r7   r8   get_stylesheet   s    

zPygmentsBridge.get_stylesheet)r*   r+   N)NFN)NFN)__name__
__module____qualname__r   r3   r   r5   rW   r   r9   r   r1   r   r   rA   r   boolr   rR   rY   r[   r7   r7   r7   r8   r)   M   s     #  r)   N)7__doc__	functoolsr   	importlibr   typingr   r   r   r   r   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   rW   __annotations__r%   ordZescape_hl_charsrZ   r)   r7   r7   r7   r8   <module>   s6   $




,&