Repository URL to install this package:
|
Version:
2.4.3 ▾
|
#-----------------------------------------------------------------------------
# Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors.
# All rights reserved.
#
# The full license is in the file LICENSE.txt, distributed with this software.
#-----------------------------------------------------------------------------
''' Define standard endpoints and their associated views for a Bokeh Server
application.
These will be added by the :class:`~bokeh.server.tornado.BokehTornado`
application. The Bokeh Tornado application can then be served using Tornado's
built-in ``HTTPServer``.
.. data:: toplevel_patterns
:annotation:
Top-level routes, independent of any applications. They will be prefixed
with any configured prefix.
.. code-block:: python
[
( r'/?', RootHandler ), # <prefix>/
( r'/static/(.*)', StaticHandler ), # <prefix>/static/
]
.. data:: per_app_patterns
:annotation:
Per-application routes. These be prefixed with the application path, as
well as with any configured prefix.
.. code-block:: python
[
( r'/?', DocHandler ), # <prefix>/<app>/
( r'/ws', WSHandler ), # <prefix>/<app>/ws
( r'/metadata', MetadataHandler ), # <prefix>/<app>/metadata
( r'/autoload.js', AutoloadJsHandler ), # <prefix>/<app>/autoload.js
]
'''
# Please update the docstring above if any changes are made below
#-----------------------------------------------------------------------------
# Boilerplate
#-----------------------------------------------------------------------------
from __future__ import annotations
import logging # isort:skip
log = logging.getLogger(__name__)
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Standard library imports
from typing import (
Any,
Dict,
List,
Tuple,
Type,
Union,
)
# External imports
from tornado.web import RequestHandler
# Bokeh imports
from ..embed.bundle import extension_dirs
from .views.autoload_js_handler import AutoloadJsHandler
from .views.doc_handler import DocHandler
from .views.metadata_handler import MetadataHandler
from .views.multi_root_static_handler import MultiRootStaticHandler
from .views.root_handler import RootHandler
from .views.static_handler import StaticHandler
from .views.ws import WSHandler
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
__all__ = (
'per_app_patterns',
'toplevel_patterns',
)
#-----------------------------------------------------------------------------
# General API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Dev API
#-----------------------------------------------------------------------------
RouteContext = Dict[str, Any]
URLRoutes = List[
Union[
Tuple[str, Type[RequestHandler]],
Tuple[str, Type[RequestHandler], RouteContext],
],
]
toplevel_patterns: URLRoutes = [
(r'/?', RootHandler),
(r'/static/extensions/(.*)', MultiRootStaticHandler, dict(root=extension_dirs)),
(r'/static/(.*)', StaticHandler),
]
per_app_patterns: URLRoutes = [
(r'/?', DocHandler),
(r'/ws', WSHandler),
(r'/metadata', MetadataHandler),
(r'/autoload.js', AutoloadJsHandler),
]
#-----------------------------------------------------------------------------
# Private API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------