# ----------------------------------------------------------------------------- # Copyright (c) 2012 - 2021, Anaconda, Inc., and Bokeh Contributors. # All rights reserved. # # The full license is in the file LICENSE.txt, distributed with this software. # ----------------------------------------------------------------------------- """ 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/*'] """ # ----------------------------------------------------------------------------- # Boilerplate # ----------------------------------------------------------------------------- from __future__ import annotations import logging # isort:skip log = logging.getLogger(__name__) # ----------------------------------------------------------------------------- # Imports # ----------------------------------------------------------------------------- # Standard library imports from os import listdir from os.path import join # External imports from docutils import nodes from packaging.version import Version as V # Bokeh imports from bokeh import __version__ from bokeh.resources import get_sri_hashes_for_version # Bokeh imports from . import PARALLEL_SAFE from .bokeh_directive import BokehDirective from .templates import SRI_TABLE # ----------------------------------------------------------------------------- # Globals and constants # ----------------------------------------------------------------------------- __all__ = ("BokehReleases", "setup") # ----------------------------------------------------------------------------- # General API # ----------------------------------------------------------------------------- # ----------------------------------------------------------------------------- # Dev API # ----------------------------------------------------------------------------- class sri_table(nodes.General, nodes.Element): @staticmethod def visit_html(visitor, node): version = node["version"] table = node["table"] visitor.body.append(f'') visitor.body.append('