U
    /e                     @  s   d Z ddlmZ ddlmZ ee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Ze ZG dd deZdd ZdddddZdddddZdS )a   Include plot metadata for plots shown in Bokeh gallery examples.

The ``bokeh-example-metadata`` directive can be used by supplying:

    .. bokeh-example-metadata::
        :sampledata: `sampledata_iris`
        :apis: `~bokeh.plotting.Figure.vbar`, :func:`~bokeh.transform.factor_cmap`
        :refs: `userguide_categorical_bars`
        :words: bar, vbar, legend, factor_cmap, palette



    )annotations)logging)	unchanged)SphinxError   )PARALLEL_SAFE)BokehDirective)EXAMPLE_METADATA)get_sphinx_resources)BokehExampleMetadataDirectivesetupc                   @  s*   e Zd ZdZdZeeeedZdd ZdS )r   Tr   
sampledataapisrefskeywordsc                 C  s   | j  | j @ }|s td| j | j   }|rHtd| dtjt| jdd t| jdd | jdd	dd	 | jd
d	dd	 d}| 
|dS )NzBbokeh-example-metadata requires at least one option to be present.z.bokeh-example-metadata unknown options given: .r   r   r    #r   r   r   z<bokeh-example-metadata>)option_speckeysoptionsr   r	   render_sampledataget_apissplitparse)selfZpresentextraZrst_text r    J/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/sphinxext/bokeh_example_metadata.pyrunL   s    z!BokehExampleMetadataDirective.runN)__name__
__module____qualname__Zhas_contentZrequired_argumentsr   r   r"   r    r    r    r!   r   @   s   r   c                 C  s   |  dt tS )z+ Required Sphinx extension setup function. zbokeh-example-metadata)Zadd_directiver   r   )Zappr    r    r!   r   _   s    r   z
str | None)modsreturnc                 C  sF   | d krd S |  dd  } dd |  dD } ddd | D S )Nr   r   c                 s  s   | ]}|  V  qd S Nstrip.0modr    r    r!   	<genexpr>p   s     z_sampledata.<locals>.<genexpr>,, c                 s  s    | ]}d | d| dV  qdS )z:ref:`bokeh.sampledata.z <sampledata_>`Nr    r+   r    r    r!   r.   r   s     )r   r*   join)r&   r    r    r!   r   i   s
    r   )r   r'   c                 C  s   | d krd S |  dd  } g }dd |  dD D ]}| dd }|drl|d	| d
| d q6d|kr|d| d
| d q6d|kr|d| d
| d q6|d| d q6d|S )Nr   r   c                 s  s   | ]}|  V  qd S r(   r)   )r,   apir    r    r!   r.   }   s     z_apis.<locals>.<genexpr>r/   r   zbokeh.modelsz:class:`bokeh.models.z <r1   zFigure.z:meth:`Figure.zGMap.z:meth:`GMap.z:class:``r0   )r   r*   
startswithappendr2   )r   resultsr3   lastr    r    r!   r   t   s    
r   N)__doc__
__future__r   Zsphinx.utilr   	getLoggerr#   logZdocutils.parsers.rst.directivesr   Zsphinx.errorsr   r   r   Zbokeh_directiver   Z	templatesr	   utilr
   __all__Z	RESOURCESr   r   r   r   r    r    r    r!   <module>   s   

