Source code for bokeh.util.paths
#-----------------------------------------------------------------------------
# Copyright (c) Anaconda, Inc., and Bokeh Contributors.
# All rights reserved.
#
# The full license is in the file LICENSE.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Boilerplate
#-----------------------------------------------------------------------------
from __future__ import annotations
import logging # isort:skip
log = logging.getLogger(__name__)
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Standard library imports
from pathlib import Path
# Bokeh imports
from .deprecation import deprecated
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
# Root dir of Bokeh package
ROOT_DIR = Path(__file__).absolute().resolve().parent.parent
__all__ = (
    "bokehjs_path",
    "bokehjsdir",
    "server_path",
    "serverdir",
    "static_path",
)
#-----------------------------------------------------------------------------
# General API
#-----------------------------------------------------------------------------
[docs]
def server_path() -> Path:
    """ Get the location of the server subpackage.
    """
    return ROOT_DIR / "server" 
[docs]
def static_path() -> Path:
    """ Get the location of server's static directory.
    """
    return server_path() / "static" 
[docs]
def bokehjs_path(dev: bool = False) -> Path:
    """ Get the location of the bokehjs source files.
    By default the files in ``bokeh/server/static`` are used.  If ``dev``
    is ``True``, then the files in ``bokehjs/build`` preferred. However,
    if not available, then a warning is issued and the former files are
    used as a fallback.
    .. note:
        This is a low-level API. Prefer using ``settings.bokehjs_path()``
        instead of this function.
    """
    if dev:
        js_dir = ROOT_DIR.parent.parent / "bokehjs" / "build"
        if js_dir.is_dir():
            return js_dir
        else:
            log.warning(f"bokehjs' build directory '{js_dir}' doesn't exist; required by 'settings.dev'")
    return static_path() 
#-----------------------------------------------------------------------------
# Legacy API
#-----------------------------------------------------------------------------
[docs]
def serverdir() -> str:
    """ Get the location of the server subpackage.
    .. deprecated:: 3.4.0
        Use ``server_path()`` instead.
    """
    deprecated((3, 4, 0), "serverdir()", "server_path()")
    return str(server_path()) 
[docs]
def bokehjsdir(dev: bool = False) -> str:
    """ Get the location of the bokehjs source files.
    By default the files in ``bokeh/server/static`` are used.  If ``dev``
    is ``True``, then the files in ``bokehjs/build`` preferred. However,
    if not available, then a warning is issued and the former files are
    used as a fallback.
    .. note:
        This is a low-level API. Prefer using ``settings.bokehjsdir()``
        instead of this function.
    .. deprecated:: 3.4.0
        Use ``bokehjs_path()`` instead.
    """
    deprecated((3, 4, 0), "bokehjsdir()", "bokehjs_path()")
    return str(bokehjs_path(dev)) 
#-----------------------------------------------------------------------------
# Dev API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Private API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------