3
Ah`#              D   @   s*  d Z ddlmZ ddlmZ dd Zdd ZyddlmZ	 W n e
k
rT   d	Z	Y nX ydd	lZW n e
k
rz   d	ZY nX ydd	lZW n e
k
r   d	ZY nX ydd	lZW n e
k
r   d	ZY nX ydd	lZW n e
k
r   d	ZY nX ydd	lZW n e
k
r   d	ZY nX d
ejkr0ejd
g e_ydd	lZdZdZdd ZW n e
k
rj   d	Zd	ZY nX y8dd	lZddlmZ ddlmZmZ dd Zdd ZW n* e
k
r   d	Zdd Zdd ZY nX ed	k	red	k	rdd	lZddlmZ G dd deZ dd Z!ndd Z!d!Z"d"Z#d#Z$d	S )$z
The `compat` module provides support for backwards compatibility with older
versions of Django/Python, and compatibility wrappers around optional packages.
    )settings)Viewc             C   s   t | tr| jdS | S )Nz
iso-8859-1)
isinstancebytesdecode)value r   D/tmp/pip-build-9m32_hle/djangorestframework/rest_framework/compat.pyunicode_http_header	   s    

r
   c             C   s6   t j| j d dkr.|jt| jddddS | j S )NZENGINEzdjango.db.backends.oraclepkT)Zflat)Zpk__in)r   Z	DATABASESdbfiltersetZvalues_listdistinct)Zquerysetbaser   r   r	   r      s    r   )fieldsNpatchzmarkdown.extensions.tocZ	baselevelc             C   s2   t g}t tdii}tj||d}t| |j| S )z}
        Simple wrapper around :func:`markdown.markdown` to set the base level
        of '#' style headers to <h2>.
        2)
extensionsextension_configs)HEADERID_EXT_PATHLEVEL_PARAMmarkdownZMarkdownmd_filter_add_syntax_highlightconvert)textr   r   mdr   r   r	   apply_markdownL   s    

r   )HtmlFormatter)	TextLexerget_lexer_by_namec             C   s&   t |dd}td|d}tj| ||S )NF)ZstripallT)Znowrapstyle)r    r   pygments	highlight)r   langr!   lexer	formatterr   r   r	   pygments_highlightf   s    r'   c             C   s   t | d}|jdS )N)r!   z
.highlight)r   Zget_style_defs)r!   r&   r   r   r	   pygments_cssk   s    
r(   c             C   s   | S )Nr   )r   r$   r!   r   r   r	   r'   r   s    c             C   s   d S )Nr   )r!   r   r   r	   r(   u   s    )Preprocessorc               @   s.   e Zd ZejdejejB Ze Z	dd Z
dS )CodeBlockPreprocessorz^\s*``` *([^\n]+)\n(.+?)^\s*```c                s*    fdd} j j|dj|}|jdS )Nc                sx   yt | jd}W n ttfk
r0   t }Y nX | jdjdd}tj|| j}|jddjddjd	d
}d| S )N      	z    z

z
&nbsp;

z<br />z\@@z

%s

)	r    group
ValueError	NameErrorr   replacer"   r#   r&   )mr%   code)selfr   r	   repl   s    z'CodeBlockPreprocessor.run.<locals>.replr.   )patternsubjoinsplit)r6   linesr7   retr   )r6   r	   run   s    	zCodeBlockPreprocessor.runN)__name__
__module____qualname__recompileMSr8   r   r&   r>   r   r   r   r	   r*      s   r*   c             C   s   | j jt dd dS )Nr#   (   T)Zpreprocessorsregisterr*   )r   r   r   r	   r      s    r   c             C   s   dS )NFr   )r   r   r   r	   r      s    ,:, : )rH   rI   )rJ   rK   )rH   rK   )%__doc__Zdjango.confr   Zdjango.views.genericr   r
   r   Zdjango.contrib.postgresr   Zpostgres_fieldsImportErrorZcoreapiZuritemplateZ
coreschemaZyamlrequestsZhttp_method_namesr   r   r   r   r"   Zpygments.formattersr   Zpygments.lexersr   r    r'   r(   rB   Zmarkdown.preprocessorsr)   r*   r   ZSHORT_SEPARATORSZLONG_SEPARATORSZINDENT_SEPARATORSr   r   r   r	   <module>   sr   







