bokeh.document#

提供Document类,它是Bokeh模型的容器,用于反映到客户端BokehJS库。

举个具体的例子,考虑一个包含SliderSelect小部件的列布局,以及一个带有某些工具、轴和网格,以及用于圆形的字形渲染器的绘图。此文档的简化表示可能如下图所示

../../_images/document.svg

Bokeh文档是Bokeh模型的集合(例如,绘图、工具、字形等),可以序列化为单个集合。#

class Document(*, theme: ~bokeh.themes.theme.Theme = <bokeh.themes.theme.Theme object>, title: str = 'Bokeh Application')[source]#

Bokeh 的基本序列化单元。

Document 实例收集 Bokeh 模型(例如绘图、布局、小部件等),以便它们可以被反映到 BokehJS 客户端运行时。由于模型可能引用其他模型(例如,一个绘图 *拥有* 一个渲染器列表),因此将单个模型转换为 JSON 通常没有用处或意义。因此,Document 因此是 Bokeh 的最小序列化单元。

add_next_tick_callback(callback: Callback) NextTickCallback[source]#

在事件循环的下一次滴答时添加要调用的回调。

参数:

callback (callable) – 下次滴答时要执行的回调函数。

返回值:

可用于 remove_next_tick_callback

返回类型:

NextTickCallback

注意

下次滴答回调仅在 Bokeh 服务器会话的上下文中有效。当 Bokeh 输出到独立的 HTML 或 Jupyter 笔记本单元格时,此函数将不起作用。

add_periodic_callback(callback: Callback, period_milliseconds: int) PeriodicCallback[source]#

添加一个将在会话中定期调用的回调。

参数:
  • callback (callable) – 要定期执行的回调函数

  • period_milliseconds (int) – 每次回调执行之间的毫秒数。

返回值:

可用于 remove_periodic_callback

返回类型:

PeriodicCallback

注意

定期回调仅在 Bokeh 服务器会话的上下文中有效。当 Bokeh 输出到独立的 HTML 或 Jupyter 笔记本单元格时,此函数将不起作用。

add_root(model: Model, setter: Setter | None = None) None[source]#

将模型添加为此 Document 的根。

对该模型的任何更改(包括对它引用的其他模型的更改)都将触发在此文档上注册的 on_change 回调。

参数:
  • model (Model) – 要添加为该文档根的模型。

  • setter (ClientSession or ServerSession or None, optional) –

    这用于防止对 Bokeh 应用程序的“回旋镖”更新。(默认值:无)

    在 Bokeh 服务器应用程序的上下文中,传入的属性更新将用执行更新的会话进行注释。该值会通过更新触发的任何后续更改通知进行传播。会话可以将事件设置程序与自身进行比较,并抑制来自自身的所有更新。

add_timeout_callback(callback: Callback, timeout_milliseconds: int) TimeoutCallback[source]#

添加一个将在指定超时时间过去后调用的回调。

参数:
  • callback (callable) – 超时后要执行的回调函数

  • timeout_milliseconds (int) – 回调执行之前的毫秒数。

返回值:

可用于 remove_timeout_callback

返回类型:

TimeoutCallback

注意

超时回调仅在 Bokeh 服务器会话的上下文中有效。当 Bokeh 输出到独立 HTML 或 Jupyter 笔记本单元格时,此函数将不起作用。

apply_json_patch(patch_json: PatchJson | Serialized[PatchJson], *, setter: Setter | None = None) None[source]#

应用 JSON 修补对象并处理任何产生的事件。

参数:
  • patch (JSON-data) – 包含要应用的修补程序的 JSON 对象。

  • setter (ClientSession or ServerSession or None, optional) –

    这用于防止对 Bokeh 应用程序的“回旋镖”更新。(默认值:无)

    在 Bokeh 服务器应用程序的上下文中,传入的属性更新将用执行更新的会话进行注释。该值会通过更新触发的任何后续更改通知进行传播。会话可以将事件设置程序与自身进行比较,并抑制来自自身的所有更新。

返回值:

clear() None[source]#

从文档中删除所有内容,但不要重置标题。

返回值:

classmethod from_json(doc_json: DocJson | Serialized[DocJson]) Document[source]#

从 JSON 加载文档。

doc_json (JSON-data)

一个 JSON 编码的文档,用于从中创建一个新的 Document。

返回类型:

文档

classmethod from_json_string(json: str) Document[source]#

从 JSON 加载文档。

json (str)

包含 JSON 编码文档的字符串,用于从中创建一个新的 Document。

返回类型:

文档

get_model_by_id(model_id: ID) Model | None[source]#

在当前文档中查找给定 ID 的模型,如果未找到则返回 None

参数:

model_id (str) – 要搜索的模型的 ID

返回值:

模型或无

get_model_by_name(name: str) Model | None[source]#

在当前文档中查找给定名称的模型,如果未找到则返回 None

参数:

name (str) – 要搜索的模型的名称

返回值:

模型或无

hold(policy: Literal['combine', 'collect'] = 'combine') None[source]#

激活文档保留。

在保留处于活动状态时,不会应用任何模型更改或触发回调。调用 unhold 后,将在保留期间收集的事件根据保留策略应用。

参数:

hold ('combine''collect', 可选) –

在保留期间收集的事件是否应尝试组合(默认:‘combine’)

当设置为 'collect' 时,所有事件都将被收集并按原样按顺序重播,当调用 unhold 时。

当设置为 'combine' 时,Bokeh 会尝试将兼容的事件组合在一起。通常,更改同一模式上同一属性的不同事件可以组合在一起。例如,如果发生以下序列

doc.hold('combine')
slider.value = 10
slider.value = 11
slider.value = 12

然后只会触发一个回调,用于最后的 slider.value = 12

返回值:

注意

hold 仅适用于文档更改事件,即设置模型上的属性。它不适用于诸如 ButtonClick 之类的事件。

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

如果收到 Bokeh 事件,则提供要调用的 JS 回调。

on_change(*callbacks: DocumentChangeCallback) None[source]#

提供回调,如果文档或其根部可到达的任何模型发生更改,则调用该回调。

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

当接收到 bokeh 事件时提供要调用的回调。

on_message(msg_type: str, *callbacks: Callable[[Any], None]) None[source]#
on_session_destroyed(*callbacks: SessionDestroyedCallback) None[source]#

提供当服务 Document 的会话被销毁时要调用的回调。

remove_next_tick_callback(callback_obj: NextTickCallback) None[source]#

删除之前使用 add_next_tick_callback 添加的回调。

参数:

callback_obj – 从 add_next_tick_callback 返回的值

返回值:

引发:

ValueError, 如果回调从未添加已经运行移除

remove_on_change(*callbacks: Any) None[source]#

删除之前使用 on_change 添加的回调。

引发:

KeyError, 如果回调从未添加

remove_on_message(msg_type: str, callback: Callable[[Any], None]) None[source]#
remove_periodic_callback(callback_obj: PeriodicCallback) None[source]#

删除之前使用 add_periodic_callback 添加的回调。

参数:

callback_obj – 从 add_periodic_callback 返回的值

返回值:

引发:

ValueError, 如果回调从未添加已经移除

remove_root(model: Model, setter: Setter | None = None) None[source]#

从这个 Document 中移除模型作为根模型。

如果模型仍然被其他根模型引用,对这个模型的更改仍然可能会在这个 Document 上触发 on_change 回调。

参数:
  • model (Model) – 要添加为该文档根的模型。

  • setter (ClientSession or ServerSession or None, optional) –

    这用于防止对 Bokeh 应用程序的“回旋镖”更新。(默认值:无)

    在 Bokeh 服务器应用程序的上下文中,传入的属性更新将用执行更新的会话进行注释。该值会通过更新触发的任何后续更改通知进行传播。会话可以将事件设置程序与自身进行比较,并抑制来自自身的所有更新。

remove_timeout_callback(callback_obj: TimeoutCallback) None[source]#

删除之前使用 add_timeout_callback 添加的回调。

参数:

callback_obj – 从 add_timeout_callback 返回的值

返回值:

引发:

ValueError, 如果回调从未添加已经运行移除

replace_with_json(json: DocJson) None[source]#

用 JSON 编码的文档覆盖这个文档中的所有内容。

json (JSON-data)

一个 JSON 编码的文档来覆盖这个文档。

返回值:

select(selector: SelectorType) Iterable[Model][source]#

查询此文档以查找与给定选择器匹配的对象。

参数:

selector (类似 JSON 的查询字典) – 您可以按类型或名称查询,例如 {"type": HoverTool}, {"name": "mycircle"}

返回值:

seq[Model]

select_one(selector: SelectorType) Model | None[source]#

查询此文档以查找与给定选择器匹配的对象。如果找到多个对象,则会引发错误。返回单个匹配对象,如果未找到任何对象,则返回 None。

参数:

selector (类似 JSON 的查询字典) – 您可以按类型或名称查询,例如 {"type": HoverTool}, {"name": "mycircle"}

返回值:

模型或无

set_select(selector: SelectorType | type[Model], updates: dict[str, Any]) None[source]#

使用指定的属性/值更新更新与给定选择器匹配的对象。

参数:

selector (类似 JSON 的查询字典) – 您可以按类型或名称查询,例如 {"type": HoverTool}, {"name": "mycircle"} updates (dict)

返回值:

set_title(title: str, setter: Setter | None = None) None[source]#
to_json(*, deferred: bool = True) DocJson[source]#

将此文档转换为可 JSON 序列化的对象。

返回值:

DocJson

unhold() None[source]#

关闭任何活动的文档保留,并应用任何收集的事件。

返回值:

validate() None[source]#

对该文档中的模式执行完整性检查。

返回值:

property roots: list[Model]#

该文档中所有根模型的列表。

property session_callbacks: list[SessionCallback]#

此文档的所有会话回调的列表。

property session_context: SessionContext | None#

此文档的 SessionContext

property session_destroyed_callbacks: set[SessionDestroyedCallback]#

此文档的所有 on_session_destroyed 回调的列表。

property template: Template#

用于渲染此文档的 Jinja2 模板。

property template_variables: dict[str, Any]#

渲染 self.template 时要传递的模板变量字典。

property theme: Theme#

当前影响此文档中模型的 Theme 实例。

将其设置为 None 将设置默认主题。(即此属性永远不会返回 None。)

更改主题可能会在文档中的模型上触发模型更改事件,如果主题修改了任何模型属性。

property title: str#

此文档的标题。

此标题将在独立 HTML 文档中设置,但在例如使用 autoload_server 时不会设置。

without_document_lock(func: F) NoLockCallback[F][source]#

包装回调函数以在未获得文档锁的情况下执行。

参数:

func (callable) – 要包装的函数

返回值:

包装后的函数,可以在不使用 Document 锁的情况下执行。

返回类型:

callable

在未锁定回调函数内部,修改 curdoc() 是完全不安全的。回调函数内部 curdoc() 的值将是 Document 的特殊包装版本,它只允许安全操作,这些操作是

只有这些操作可以在不获取文档锁的情况下安全使用。要对文档进行其他更改,您必须添加一个下一个刻度回调,并从第二个回调中对 curdoc() 进行更改。

尝试以其他方式访问或更改文档将导致引发异常。

func 可以是同步函数、异步函数或使用 asyncio.coroutine 装饰的函数。如果 func 是后两者中的任何一个,则返回的函数将是异步函数。