U
    /eo                     @  s   d Z ddlmZ ddl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
dlmZ d
dlmZ d
dlmZ dZG dd dejejZG dd deZdd ZdS )a   Publish all Bokeh release notes on to a single page.

This directive collect all the release notes files in the ``docs/releases``
subdirectory, and includes them in *reverse version order*. Typical usage:

.. code-block:: rest

    .. toctree::

    .. bokeh-releases::

To avoid warnings about orphaned files, add the following to the Sphinx
``conf.py`` file:

.. code-block:: python

    exclude_patterns = ['docs/releases/*']

    )annotationsN)listdir)join)nodes)Version)__version__)get_sri_hashes_for_version   )PARALLEL_SAFE)BokehDirective)	SRI_TABLE)BokehReleasessetupc                   @  s"   e Zd Zedd ZejdfZdS )	sri_tablec                 C  sZ   |d }|d }| j d| d | j d | j tj|d | j d tjd S )NversiontablezM<button type="button" class="bk-collapsible">Table of SRI Hashes for version z	</button>z$<div class="bk-collapsible-content">)r   z</div>)bodyappendr   renderr   ZSkipNode)Zvisitornoder   r    r   B/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/sphinxext/bokeh_releases.py
visit_htmlI   s    zsri_table.visit_htmlN)__name__
__module____qualname__staticmethodr   __func__htmlr   r   r   r   r   G   s   
	r   c                   @  s   e Zd Zdd ZdS )r   c              	   C  s   g }| j jj}dd tt|ddD }|jtdd |D ]n}|| d| dd	7 }z&t|}|t	|t
| d
g7 }W q: tk
r   |tkrtd|Y q:X q:|S )Nc                 S  s    g | ]}| d r|d qS ).rst)endswithrstrip).0xr   r   r   
<listcomp>[   s     
 z%BokehReleases.run.<locals>.<listcomp>ZdocsZreleasesT)keyreversez.. include:: releases/r   z<bokeh-releases>)r   r   z*Missing SRI Hash for full release version )envappsrcdirr   r   sortVparser   r   sorteditemsKeyErrorr   RuntimeError)selfZrstr)   versionsvhashesr   r   r   runW   s    
zBokehReleases.runN)r   r   r   r5   r   r   r   r   r   V   s   r   c                 C  s    |  dt | jttjd tS )z+ Required Sphinx extension setup function. zbokeh-releases)r   )Zadd_directiver   add_noder   r   r
   )r(   r   r   r   r   j   s    r   ) __doc__
__future__r   logging	getLoggerr   logosr   os.pathr   Zdocutilsr   Zpackaging.versionr   r+   Zbokehr   Zbokeh.resourcesr    r
   Zbokeh_directiver   Z	templatesr   __all__ZGeneralElementr   r   r   r   r   r   r   <module>   s    

