bokeh.util#

提供一组通用的实用工具,有助于实现Bokeh功能。

bokeh.util.browser#

用于帮助涉及浏览器操作的实用函数。

class DummyWebBrowser[源代码]#

一个“无操作”的网页浏览器控制器。

open(url: str, new: Literal[0, 1, 2] = 0, autoraise: bool = True) bool[源代码]#

接收标准参数但不采取任何行动。

get_browser_controller(browser: str | None = None) BrowserLike[source]#

返回一个浏览器控制器。

Parameters:

browser (strNone) –

浏览器名称,或 None(默认值:None) 如果传递字符串 'none',则返回一个虚拟的网页浏览器控制器。

否则,使用该值通过 webbrowser 标准库模块 选择一个合适的控制器。如果该值为 None,则使用系统默认值。

Returns:

一个网页浏览器控制器

Return type:

控制器

view(location: str, browser: str | None = None, new: Literal['same', 'window', 'tab'] = 'same', autoraise: bool = True) None[source]#

打开浏览器以查看指定位置。

Parameters:
  • location (str) – 要打开的位置 如果位置不是以“http:”开头,则假定 它是本地文件系统上的文件路径。

  • browser (strNone) – 使用哪种浏览器(默认值:None) 如果 None,则使用系统默认浏览器。

  • new (str) –

    如何打开位置。有效值为:

    'same' - 在当前标签页中打开

    'tab' - 在当前窗口中打开一个新标签页

    'window' - 在新窗口中打开

  • autoraise (bool) – 是否自动在新浏览器窗口中提升位置(默认值:True)

Returns:

bokeh.util.callback_manager#

提供 PropertyCallbackManagerEventCallbackManager 混合类,用于向类添加 on_changeon_event 回调 接口。

class EventCallbackManager(*args: Any, **kw: Any)[source]#

一个mixin类,用于在Python端提供注册和触发事件回调的接口。

on_event(event: str | type[Event], *callbacks: Callable[[Event], None] | Callable[[], None]) None[source]#

当此模型上发生指定事件时运行回调

并非所有模型都支持所有事件。 有关哪些模型能够触发这些事件的更多信息,请参见bokeh.events中的具体事件。

class PropertyCallbackManager(*args: Any, **kw: Any)[源代码]#

一个mixin类,用于提供注册和触发回调的接口。

on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None[source]#

在此对象上添加一个回调,当attr发生变化时触发。

Parameters:
  • attr (str) – 此对象上的一个属性名称

  • callback (callable) – 要注册的回调函数

Returns:

remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None[source]#

从此对象中移除一个回调函数

trigger(attr: str, old: Any, new: Any, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None[source]#

触发此对象上attr的回调。

bokeh.util.compiler#

提供函数和类以帮助进行各种JS和CSS编译。

exception CompilationError(error: dict[str, str] | str)[源代码]#

一个用于报告JS编译错误的RuntimeError子类。

class AttrDict[source]#

提供一个支持通过命名属性访问的字典子类。

class CustomModel(cls: type[HasProps])[source]#

表示一个自定义(用户定义的)Bokeh模型。

class FromFile(path: str)[source]#

从单独的源文件中读取的自定义模型实现。

Parameters:

path (str) – 包含扩展源代码的文件的路径

class Implementation[source]#

表示Bokeh自定义模型实现的基类。

class Inline(code: str, file: str | None = None)[source]#

用于表示Bokeh自定义模型实现的基类,这些实现可能以某种语言的代码形式给出。

Parameters:
  • code (str) – 实现功能的源代码

  • 文件 (str, 可选) – 包含源文本的文件路径(默认值:无)

class JavaScript(code: str, file: str | None = None)[source]#

一个用JavaScript实现的Bokeh自定义模型

Example

class MyExt(Model):
    __implementation__ = JavaScript(""" <JavaScript code> """)
class Less(code: str, file: str | None = None)[source]#

Less CSS样式表的实现。

class TypeScript(code: str, file: str | None = None)[source]#

一个用TypeScript实现的Bokeh自定义模型

Example

class MyExt(Model):
    __implementation__ = TypeScript(""" <TypeScript code> """)
bundle_all_models() str | None[源代码]#

创建所有模型的捆绑包。

bundle_models(models: Sequence[type[HasProps]] | None) str | None[source]#

创建一组选定的模型

calc_cache_key(custom_models: dict[str, CustomModel]) str[source]#

生成一个密钥以缓存自定义扩展实现。

除了模型类之外没有其他元数据,因此这是生成缓存键的唯一基础。

我们从model.full_name列表中构建模型键。这并不理想,但可能以后能找到更好的解决方案。

get_cache_hook() Callable[[CustomModel, Implementation], AttrDict | None][源代码]#

返回当前用于查找给定CustomModel和Implementation的已编译代码的缓存钩子。

set_cache_hook(hook: Callable[[CustomModel, Implementation], AttrDict | None]) None[源代码]#

设置一个编译模型缓存钩子,用于根据CustomModel和Implementation查找编译后的代码

bokeh.util.dependencies#

用于检查依赖项的实用工具

import_optional(mod_name: str) ModuleType | None[source]#

尝试导入一个可选的依赖项。

如果请求的模块不可用,则静默返回 None。

Parameters:

mod_name (str) – 尝试导入的可选模块的名称

Returns:

导入的模块或None,如果导入失败

import_required(mod_name: str, error_msg: str) ModuleType[source]#

尝试导入所需的依赖项。

如果请求的模块不可用,则引发RuntimeError。

Parameters:
  • mod_name (str) – 尝试导入的所需模块的名称

  • error_msg (str) – 当模块缺失时引发的错误信息

Returns:

导入的模块

Raises:

RuntimeError

uses_pandas(obj: Any) bool[source]#

检查一个对象是否是pandas对象。

在条件import pandas as pd之前使用此方法。

bokeh.util.deprecation#

bokeh.util.functions#

用于函数内省的实用工具。

get_param_info(sig: Signature) tuple[list[str], list[Any]][source]#

查找具有默认值的参数并返回它们。

Parameters:

sig (签名) – 一个函数签名

Returns:

带有默认值的参数

Return type:

tuple(list, list)

bokeh.util.hex#

用于处理六边形平铺的有用函数。

有关此处使用的概念的更多信息,请参阅此信息页面

axial_to_cartesian(q: Any, r: Any, size: float, orientation: str, aspect_scale: float = 1) tuple[Any, Any][源代码]#

将轴向 (q,r) 坐标映射到瓦片中心的笛卡尔 (x,y) 坐标。

此函数可用于将其他Bokeh图形符号定位到与六边形平铺相关的笛卡尔坐标系中。

此函数改编自:

https://www.redblobgames.com/grids/hexagons/#hex-to-pixel

Parameters:
  • q (数组[float]) – 用于分箱的q坐标的NumPy数组

  • r (数组[float]) – 用于分箱的r坐标的NumPy数组

  • size (float) –

    六边形平铺的大小。

    大小定义为从六边形中心到“pointytop”方向的顶角的距离,或从中心到“flattop”方向的边角的距离。

  • orientation (str) – 六边形瓦片的朝向应该是“pointytop”还是“flattop”。

  • aspect_scale (float, optional) –

    在“交叉”维度上缩放六边形。

    对于“pointytop”方向,六边形在水平方向上缩放。对于“flattop”方向,它们在垂直方向上缩放。

    当处理aspect_scale != 1的图表时,设置此值以匹配图表可能很有用。

Returns:

(数组[int], 数组[int])

cartesian_to_axial(x: Any, y: Any, size: float, orientation: str, aspect_scale: float = 1) tuple[Any, Any][源代码]#

将笛卡尔坐标 (x,y) 点映射到包围瓦片的轴向坐标 (q,r)

此函数改编自:

https://www.redblobgames.com/grids/hexagons/#pixel-to-hex

Parameters:
  • x (数组[float]) – 要转换的x坐标的NumPy数组

  • y (数组[float]) – 要转换的y坐标的NumPy数组

  • size (float) –

    六边形平铺的大小。

    大小定义为从六边形中心到“pointytop”方向的顶角的距离,或从中心到“flattop”方向的边角的距离。

  • orientation (str) – 六边形瓦片的朝向应该是“pointytop”还是“flattop”。

  • aspect_scale (float, optional) –

    在“交叉”维度上缩放六边形。

    对于“pointytop”方向,六边形在水平方向上缩放。对于“flattop”方向,它们在垂直方向上缩放。

    当处理aspect_scale != 1的图表时,设置此值以匹配图表可能很有用。

Returns:

(数组[int], 数组[int])

hexbin(x: Any, y: Any, size: float, orientation: str = 'pointytop', aspect_scale: float = 1) Any[source]#

对数据点进行等权重分箱,将其分配到六边形瓦片中。

对于更复杂的用例,例如加权分箱或根据其他数量按比例缩放单个图块,请考虑使用HoloViews。

Parameters:
  • x (数组[float]) – 用于分箱的x坐标的NumPy数组

  • y (数组[float]) – 用于分箱的y坐标的NumPy数组

  • size (float) –

    六边形平铺的大小。

    大小定义为从六边形中心到“pointytop”方向的顶角的距离,或从中心到“flattop”方向的边角的距离。

  • orientation (str, optional) – 六边形瓦片的方向应为“pointytop”还是“flattop”。(默认值:“pointytop”)

  • aspect_scale (float, optional) –

    匹配绘图的长宽比缩放。

    当处理长宽比缩放不为1的绘图时,可以设置此参数以匹配绘图,以便绘制规则的六边形(而不是“拉伸”的六边形)。

    这大致相当于在“屏幕空间”中进行分箱,当绘图的长宽比缩放不为1时,使用轴对齐的矩形分箱可能更好。

Returns:

DataFrame

生成的DataFrame将包含指定轴向坐标中六边形瓦片位置的列qr,以及提供每个瓦片计数的列counts

警告

六边形分箱仅在线性尺度上起作用,即不在对数图上起作用。

bokeh.util.info#

print_info() None[source]#

打印关于Bokeh、Python、操作系统和一组选定依赖项的版本信息。

bokeh.util.logconfig#

为Bokeh配置日志系统。

默认情况下,日志记录未配置,以便Bokeh用户可以完全控制日志记录策略。然而,在开发Bokeh时,能够任意启用日志记录是很有用的。这可以通过设置环境变量BOKEH_PY_LOG_LEVEL来实现。有效值按严重程度递增的顺序为:

  • debug

  • info

  • warn

  • error

  • fatal

  • none

默认的日志记录级别是 none

basicConfig(**kwargs: Any) None[source]#

一个logging.basicConfig()的包装器,它还取消了默认的Bokeh特定配置。

bokeh.util.options#

用于指定、验证和记录配置选项的工具。

class Options(kw: dict[str, Any])[source]#

利用Bokeh属性类型系统来指定和验证配置选项。

Options 的子类使用标准的 Bokeh 属性来指定一组配置选项:

class ConnectOpts(Options):

    host = String(default="127.0.0.1", help="a host value")

    port = Int(default=5590, help="a port value")

然后可以通过传递一个包含与配置选项对应的键和值的字典来创建一个ConnectOpts,以及任何额外的键和值。与ConnectOpts上的属性对应的项将从字典中移除。这对于那些除了接受一组Bokeh模型属性外,还接受自己的一组配置关键字参数的函数来说非常有用。

bokeh.util.paths#

bokehjs_path(dev: bool = False) Path[source]#

获取bokehjs源文件的位置。

默认情况下,使用bokeh/server/static中的文件。如果devTrue,则优先使用bokehjs/build中的文件。然而,如果不可用,则会发出警告并使用前者的文件作为备用。

bokehjsdir(dev: bool = False) str[source]#

获取bokehjs源文件的位置。

默认情况下,使用bokeh/server/static中的文件。如果devTrue,则优先使用bokehjs/build中的文件。然而,如果不可用,则会发出警告并使用前者的文件作为备用。

自版本 3.4.0 起已弃用:请改用 bokehjs_path()

server_path() Path[source]#

获取服务器子包的位置。

serverdir() str[source]#

获取服务器子包的位置。

自版本 3.4.0 起已弃用:请改用 server_path()

static_path() Path[source]#

获取服务器静态目录的位置。

bokeh.util.serialization#

用于帮助序列化和反序列化Bokeh对象的函数。

某些NumPy数组数据类型可以被序列化为二进制格式以提高性能和效率。支持的数据类型列表如下:

  • np.bool

  • np.uint8

  • np.float32

  • np.int32

  • np.uint16

  • np.float64

  • np.int16

  • np.uint32

  • np.int8

array_encoding_disabled(array: npt.NDArray[Any]) bool[source]#

确定一个数组是否可以进行二进制编码。

可以编码的NumPy数组数据类型有:

  • np.bool

  • np.uint8

  • np.float32

  • np.int32

  • np.uint16

  • np.float64

  • np.int16

  • np.uint32

  • np.int8

Parameters:

array (np.ndarray) – 要检查的数组

Returns:

布尔

convert_date_to_datetime(obj: date) float[source]#

将日期对象转换为日期时间

Parameters:

obj (date) – 要转换的对象

Returns:

日期时间

convert_datetime_array(array: npt.NDArray[Any]) npt.NDArray[np.floating[Any]][源代码]#

将NumPy日期时间数组转换为自纪元以来的毫秒数数组。

Parameters:

array

(obj) 一个要转换的日期时间NumPy数组

如果传入的值不是NumPy数组,它将按原样返回。

Returns:

数组

convert_datetime_type(obj: Any | pd.Timestamp | pd.Timedelta | dt.datetime | dt.date | dt.time | np.datetime64) float[源代码]#

将任何识别的日期、时间或日期时间值转换为自纪元以来的浮点毫秒数。

Parameters:

obj (object) – 要转换的对象

Returns:

毫秒

Return type:

float

convert_timedelta_type(obj: timedelta | timedelta64) float[source]#

将任何识别的时间增量值转换为浮点绝对毫秒。

Parameters:

obj (object) – 要转换的对象

Returns:

毫秒

Return type:

float

is_datetime_type(obj: Any) TypeGuard[time | datetime | datetime64][source]#

一个对象是否是Bokeh识别的任何日期、时间或日期时间类型。

Parameters:

obj (object) – 要测试的对象

Returns:

如果 obj 是日期时间类型,则为 True

Return type:

bool

is_timedelta_type(obj: Any) TypeGuard[timedelta | timedelta64][source]#

一个对象是否是Bokeh识别的任何timedelta类型。

Parameters:

obj (object) – 要测试的对象

Returns:

如果 obj 是 timedelta 类型,则为 True

Return type:

bool

make_globally_unique_css_safe_id() ID[source]#

返回一个全局唯一的CSS安全UUID。

某些情况下,例如在HTML文档中动态创建的Divs的标识,总是需要全局唯一的ID。使用此函数生成的ID可以用于像document.querySelector("#id")这样的API中。

Returns:

字符串

make_globally_unique_id() ID[源代码]#

返回一个全局唯一的UUID。

某些情况下,例如在HTML文档中识别动态创建的Divs,总是需要全局唯一的ID。

Returns:

字符串

make_id() ID[source]#

返回一个Bokeh对象的新唯一ID。

通常,此函数将返回简单的单调递增整数ID(作为字符串),用于在文档中识别Bokeh对象。然而,如果希望每个对象都具有全局唯一性,可以通过设置环境变量BOKEH_SIMPLE_IDS=no来覆盖此行为。

Returns:

字符串

transform_array(array: npt.NDArray[Any]) npt.NDArray[Any][source]#

将ndarray转换为可序列化的ndarray。

将不可序列化的数据类型转换为可序列化的JSON格式

Parameters:

array (np.ndarray) – 一个需要转换的NumPy数组

Returns:

ndarray

transform_series(series: pd.Series[Any] | pd.Index[Any] | pd.api.extensions.ExtensionArray) npt.NDArray[Any][源代码]#

将Pandas系列转换为序列化形式

Parameters:

series (pd.Series) – 要转换的Pandas系列

Returns:

ndarray

bokeh.util.token#

用于生成和操作会话ID的工具。

会话ID通常与查看应用程序或图表的每个浏览器标签相关联。每个会话都有其自己的状态,与服务器托管的任何其他会话分开。

check_session_id_signature(session_id: str, secret_key: bytes | None = None, signed: bool | None = False) bool[source]#

检查会话ID的签名,如果有效则返回True。

服务器使用此函数来检查会话ID是否使用正确的密钥生成。如果签名会话被禁用,此函数始终返回True。

check_token_signature(token: str, secret_key: bytes | None = None, signed: bool = False) bool[source]#

检查令牌的签名和包含的签名。

服务器使用此函数来检查令牌和包含的会话ID是否使用正确的密钥生成。如果签名会话被禁用,此函数始终返回True。

Parameters:
  • token (str) – 要检查的token

  • secret_key (str, optional) – 密钥(默认值:BOKEH_SECRET_KEY 环境变量的值)

  • signed (bool, optional) – 是否检查任何内容(默认值:BOKEH_SIGN_SESSIONS环境变量的值)

Returns:

布尔

generate_jwt_token(session_id: ID, secret_key: bytes | None = None, signed: bool = False, extra_payload: dict[str, Any] | None = None, expiration: int = 300) str[源代码]#

生成一个JWT令牌,给定一个session_id和额外的有效载荷。

Parameters:
  • session_id (str) – 要添加到令牌中的会话ID

  • secret_key (str, optional) – 密钥(默认值:BOKEH_SECRET_KEY 环境变量的值)

  • signed (bool, optional) – 是否对会话ID进行签名(默认值:BOKEH_SIGN_SESSIONS环境变量的值)

  • extra_payload (dict, optional) – 包含在Bokeh会话令牌中的额外键/值对

  • expiration (int, optional) – 过期时间

Returns:

字符串

generate_secret_key() str[source]#

生成一个新的安全生成的密钥,适用于SHA-256 HMAC签名。

此密钥可用于签署Bokeh服务器会话ID,例如。

generate_session_id(secret_key: bytes | None = None, signed: bool = False) ID[source]#

生成一个随机的会话ID。

通常,连接到Bokeh应用程序的每个浏览器标签都有其自己的会话ID。在生产环境中部署Bokeh应用程序时,会话ID应该是随机且不可猜测的——否则应用程序的用户可能会相互干扰。

get_session_id(token: str) ID[源代码]#

从JWT令牌中提取会话ID。

Parameters:

token (str) – 一个包含 session_id 和其他数据的 JWT 令牌。

Returns:

字符串

get_token_payload(token: str) dict[str, Any][source]#

从令牌中提取有效载荷。

Parameters:

token (str) – 一个包含 session_id 和其他数据的 JWT 令牌。

Returns:

字典

bokeh.util.strings#

用于字符串操作或编码的有用函数。

append_docstring(docstring: str | None, extra: str) str | None[source]#

安全地附加到文档字符串。

当Python使用-OO选项执行时,文档字符串被移除并替换为None值。此函数在这种情况下防止附加额外内容。

Parameters:
  • docstring (strNone) – 要格式化的文档字符串,或为 None

  • extra (str) – 如果docstring不为None,则附加的内容

Returns:

字符串或无

format_docstring(docstring: None, *args: Any, **kwargs: Any) None[source]#
format_docstring(docstring: str, *args: Any, **kwargs: Any) str

安全地格式化文档字符串。

当Python使用-OO选项执行时,文档字符串被移除并替换为None值。此函数在这种情况下防止应用字符串格式化选项。

Parameters:
  • docstring (strNone) – 要格式化的文档字符串,或 None

  • args (tuple) – 用于文档字符串的字符串格式化参数

  • kwargs (dict) – 用于文档字符串的字符串格式化参数

Returns:

字符串或无

indent(text: str, n: int = 2, ch: str = ' ') str[source]#

将给定文本块中的所有行缩进指定的量。

Parameters:
  • 文本 (str) – 要缩进的文本

  • n (int, optional) – 每行缩进的量(默认值:2)

  • ch (char, 可选) – 用于填充缩进的字符(默认值:“ ”)

nice_join(seq: Iterable[str], *, sep: str = ', ', conjunction: str = 'or') str[源代码]#

将字符串序列连接成适合英语的短语,在适当的时候使用连词 or

Parameters:
  • seq (seq[str]) – 一个要优雅连接的字符串序列

  • sep (str, optional) – 使用的序列分隔符(默认值:“, ”)

  • 连接词 (strNone, 可选) – 用于最后两个项目的连接词,或 None 以重现基本的连接行为(默认值:“or”)

Returns:

一个连接的字符串

示例

>>> nice_join(["a", "b", "c"])
'a, b or c'
snakify(name: str, sep: str = '_') str[source]#

将CamelCase转换为snake_case。

bokeh.util.tornado#

与Tornado相关的内部工具

bokeh.util.terminal#

提供用于格式化终端输出的实用工具。

bokeh.util.version#

为Bokeh库提供一个版本。

此模块使用versioneer来管理版本字符串。在开发过程中, versioneer会根据当前的git修订版计算版本字符串。 对于基于标签的打包发布,版本字符串在分发的文件中是硬编码的。

__version__#

此安装的Bokeh库的完整版本字符串

Functions:
base_version:

返回基本版本字符串,不附加任何“dev”、“rc”或本地构建信息。

is_full_release:

返回当前安装的版本是否为完整版本。

bokeh.util.warnings#

提供Bokeh特定的警告子类。

这些子类的主要用途是默认情况下强制它们无条件地显示给用户。

exception BokehDeprecationWarning[source]#

一个特定于Bokeh的DeprecationWarning子类。

用于选择性过滤Bokeh弃用信息以无条件显示。

exception BokehUserWarning[source]#

一个特定于Bokeh的UserWarning子类。

用于选择性过滤Bokeh警告以进行无条件显示。

find_stack_level() int[source]#

找到堆栈中不在Bokeh内部的第一个位置。

灵感来源:pandas.util._exceptions.find_stack_level