Source code for bokeh.command.subcommands.settings
#-----------------------------------------------------------------------------
# Copyright (c) Anaconda, Inc., and Bokeh Contributors.
# All rights reserved.
#
# The full license is in the file LICENSE.txt, distributed with this software.
#-----------------------------------------------------------------------------
'''
To display all available Bokeh settings and their current values,
type ``bokeh settings`` on the command line.
.. code-block:: sh
bokeh settings
This will print all settings to standard output, such as:
.. code-block:: none
Bokeh Settings:
==========================================================================
Setting Environment Variable Value
--------------------------------------------------------------------------
allowed_ws_origin BOKEH_ALLOW_WS_ORIGIN []
auth_module BOKEH_AUTH_MODULE None
browser BOKEH_BROWSER None
cdn_version BOKEH_CDN_VERSION None
chromedriver_path BOKEH_CHROMEDRIVER_PATH None
compression_level BOKEH_COMPRESSION_LEVEL 9
cookie_secret BOKEH_COOKIE_SECRET None
default_server_host BOKEH_DEFAULT_SERVER_HOST localhost
default_server_port BOKEH_DEFAULT_SERVER_PORT 5006
docs_cdn BOKEH_DOCS_CDN None
docs_version BOKEH_DOCS_VERSION None
ico_path BOKEH_ICO_PATH /path/to/ico
ignore_filename BOKEH_IGNORE_FILENAME False
log_level BOKEH_LOG_LEVEL info
minified BOKEH_MINIFIED True
nodejs_path BOKEH_NODEJS_PATH None
perform_document_validation BOKEH_VALIDATE_DOC True
pretty BOKEH_PRETTY False
py_log_level BOKEH_PY_LOG_LEVEL None
resources BOKEH_RESOURCES cdn
rootdir BOKEH_ROOTDIR None
secret_key BOKEH_SECRET_KEY None
serialize_include_defaults BOKEH_SERIALIZE_INCLUDE_DEFAULTS False
sign_sessions BOKEH_SIGN_SESSIONS False
simple_ids BOKEH_SIMPLE_IDS True
ssl_certfile BOKEH_SSL_CERTFILE None
ssl_keyfile BOKEH_SSL_KEYFILE None
ssl_password BOKEH_SSL_PASSWORD None
validation_level BOKEH_VALIDATION_LEVEL none
xsrf_cookies BOKEH_XSRF_COOKIES False
--------------------------------------------------------------------------
This will display all available Bokeh settings in a table format with their
current values and environment variables.
To get detailed help for a specific setting, use the -v option:
.. code-block:: sh
bokeh settings -v log_level
bokeh settings -v minified
This will show detailed information about the specified setting including its
help text, default values, and current value.
'''
#-----------------------------------------------------------------------------
# Boilerplate
#-----------------------------------------------------------------------------
from __future__ import annotations
import logging # isort:skip
log = logging.getLogger(__name__)
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Standard library imports
from argparse import Namespace
from typing import Any
# Bokeh imports
from bokeh.settings import PrioritizedSetting, _Unset
from bokeh.util.settings import get_all_settings
# Bokeh imports
from ..subcommand import Argument, Subcommand
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
__all__ = (
'Settings',
)
#-----------------------------------------------------------------------------
# General API
#-----------------------------------------------------------------------------
[docs]
class Settings(Subcommand):
''' Subcommand to print information about Bokeh settings.
'''
name = "settings"
help = "Print information about Bokeh settings and their current values"
args = (
(('-v', '--verbose'), Argument(
action="store_true",
help="Show detailed help for a specific setting",
)),
('setting_name', Argument(
nargs='?',
help="Name of a specific setting to show detailed help for (use with -v)",
)),
)
[docs]
def invoke(self, args: Namespace) -> None:
'''
'''
all_settings = get_all_settings()
if args.setting_name:
if args.setting_name in all_settings:
if args.verbose:
self._print_setting_detail(args.setting_name, all_settings[args.setting_name])
else:
print("To get detailed help for a specific setting, use:")
print(" bokeh settings [-v | --verbose] <setting_name>")
print("\nFor a list of all settings, use:")
print(" bokeh settings")
else:
print(f"Setting '{args.setting_name}' not found.")
print("Available settings:")
for name in sorted(all_settings):
print(f" {name}")
else:
self._print_settings_table(all_settings)
def _print_settings_table(self, all_settings: dict[str, PrioritizedSetting[Any]]) -> None:
''' Print all settings in a table format.
'''
print("Bokeh Settings:")
print("=" * 80)
print(f"{'Setting':<30} {'Environment Variable':<35} {'Value':<25}")
print("-" * 80)
for name, descriptor in all_settings.items():
print(f"{name:<30} {descriptor.env_var:<35} {descriptor()!s:<25}")
print("-" * 80)
def _print_setting_detail(self, setting_name: str, descriptor: PrioritizedSetting[Any]) -> None:
''' Print detailed help for a specific setting.
'''
''' Print all settings in a table format. '''
print(f"Setting: {setting_name}")
print("=" * 60)
print(f"Current Value: {descriptor()}")
print(f"Default Value: {descriptor.default}")
if descriptor.dev_default is not _Unset:
print(f"Dev Default: {descriptor.dev_default}")
print(f"Environment Variable: {descriptor.env_var}")
print("\nHelp:")
print(f"{descriptor.help.strip()}")
#-----------------------------------------------------------------------------
# Dev API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Private API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------