B
    \              
   @   s  d 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
 ddlmZmZ ddl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 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( e$)e*Z+e,eddeddeddeddedddeddedddZ-xe-. D ]Z/e/0d qBW e1dde1dde1ddiZ2dZ3G d d! d!e4Z5dS )"z
    sphinx.highlighting
    ~~~~~~~~~~~~~~~~~~~

    Highlight code blocks using Pygments.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	highlight)
ErrorToken)HtmlFormatterLatexFormatter)Lexer)get_lexer_by_nameguess_lexer)PythonLexerPython3LexerPythonConsoleLexerCLexer	TextLexerRstLexer)get_style_by_name)ClassNotFound)	text_type)RemovedInSphinx30Warning)doctest)__)SphinxStyle	NoneStyle)logging)
htmlescape)tex_hl_escape_map_newF)stripnlT)python3r   )nonepythonr   pyconpycon3restcraiseonerror\z	\PYGZbs{}{z	\PYGZob{}}z	\PYGZcb{}z(
\renewcommand\PYGZsq{\textquotesingle}
c               @   s@   e Zd ZeZeZdddZdd Zdd	 Z	dddZ
dd ZdS )PygmentsBridgehtmlsphinxNc             C   s   || _ |d ks|dkrt}nF|dkr*t}n8d|krZ|dd\}}tt|d d dg|}nt|}d|i| _|dkr~| j| _	n| j
| _	d| jd	< || _|d k	rtjd
tdd d S )Nr(   r   .   __name__styler'   ZPYGZcommandprefixz?trim_doctest_flags option for PygmentsBridge is now deprecated.   )
stacklevel)destr   r   rsplitgetattr
__import__r   formatter_argshtml_formatter	formatterlatex_formattertrim_doctest_flagswarningswarnr   )selfr/   Z	stylenamer7   r,   module r<   2lib/python3.7/site-packages/sphinx/highlighting.py__init__G   s&    


zPygmentsBridge.__init__c             K   s   | | j | jf |S )N)updater3   r5   )r:   kwargsr<   r<   r=   get_formatter`   s    zPygmentsBridge.get_formatterc             C   sN   t jdtdd | jdkr*dt| d S |t}|t}d| d S d S )	Nz1PygmentsBridge.unhighlighted() is now deprecated.r-   )r.   r'   z<pre>z</pre>
z&\begin{Verbatim}[commandchars=\\\{\}]
z\end{Verbatim}
)r8   r9   r   r/   r   	translateescape_hl_charsr   )r:   sourcer<   r<   r=   unhighlightede   s    



zPygmentsBridge.unhighlightedFc       
   
   K   s  t |ts| }|dkr8|dr.td }qtd }n|dkr^|drTtd }qtd }n|dkryt|}W q tk
r   td	 }Y qX nj|tkrt| }nXyt|f|pi  }t|< W n0 tk
r   t	j
td
||d td	 }Y nX |d t |tr,| jr,tjd|}tjd|}| jf |}yt|||}	W nJ tk
r   |dkrfnt	j
td|dd|d t|td	 |}	Y nX | jdkr|	S |	tS d S )N)pyr   z>>>r   r   )Zpy3r   defaultr   r   Zguessr   z#Pygments lexer name %r is not known)locationr"    rG   z:Could not lex literal_block as "%s". Highlighting skipped.ZmiscZhighlighting_failure)typeZsubtyperH   r'   )
isinstancer   decode
startswithlexersr   	Exceptionr   r   loggerZwarningr   
add_filterr   r7   r   Zblankline_resubZdoctestopt_rerA   r   r   r/   rB   r   )
r:   rD   ZlangZoptsrH   Zforcer@   Zlexerr5   Zhlsourcer<   r<   r=   highlight_blocks   sR    










zPygmentsBridge.highlight_blockc             C   s,   |   }| jdkr|dS | t S d S )Nr'   z
.highlight)rA   r/   Zget_style_defs_LATEX_ADD_STYLES)r:   r5   r<   r<   r=   get_stylesheet   s    

zPygmentsBridge.get_stylesheet)r'   r(   N)NNF)r+   
__module____qualname__r   r4   r   r6   r>   rA   rE   rS   rU   r<   r<   r<   r=   r&   A   s   

<r&   )6__doc__r8   Zpygmentsr   Zpygments.filtersr   Zpygments.formattersr   r   Zpygments.lexerr   Zpygments.lexersr   r   r	   r
   r   r   r   r   Zpygments.stylesr   Zpygments.utilr   Zsixr   Zsphinx.deprecationr   Z
sphinx.extr   Zsphinx.localer   Zsphinx.pygments_stylesr   r   Zsphinx.utilr   Zsphinx.util.pycompatr   Zsphinx.util.texescaper   Z	getLoggerr+   rP   dictrN   valuesZ_lexerrQ   ordrC   rT   objectr&   r<   r<   r<   r=   <module>
   sB    

