bokeh.core.validation#

验证模块提供了对整个Bokeh模型集合执行完整性检查的能力。

要创建一个Bokeh可视化,核心任务是从bokeh.models中组装一组模型对象,形成一个表示应在客户端中创建的场景的图。可以直接使用模型对象“手动”完成此操作。然而,为了使这个过程更容易,Bokeh为用户提供了更高级的接口,如bokeh.plotting

这些接口自动化了常见的“组装”步骤,以确保以一致、可预测的方式创建Bokeh对象图。然而,无论使用哪种接口,都有可能以不完整或某种方式不合理的方式将Bokeh模型组合在一起。

为了帮助诊断潜在问题,Bokeh 在输出可视化显示时执行验证步骤。该模块包含错误和警告代码,以及用于定义验证检查的辅助函数。

警告的一个用例是当用户意外做了他们可能不打算做的事情时,大声地引导他们走向正确的方向——例如,EMPTY_LAYOUT就是这种情况。由于警告不一定表示误用,它们是可以配置的。要静音警告,请使用提供的silence函数。

>>> from bokeh.core.validation import silence
>>> from bokeh.core.validation.warnings import EMPTY_LAYOUT
>>> silence(EMPTY_LAYOUT, True)

错误代码#

这些定义了Bokeh验证检查的标准错误代码和消息。

1001 (BAD_COLUMN_NAME)

一个字形有一个属性设置为一个字段名,该字段名不对应于GlyphRenderer数据源中的任何列。

1002 (MISSING_GLYPH)

一个 GlyphRenderer 没有配置字形。

1003 (NO_SOURCE_FOR_GLYPH)

一个 GlyphRenderer 没有配置数据源。

1004 (REQUIRED_RANGE)

一个 Plot 缺少一个或多个必需的默认范围(将导致空白图)。

1005 (MISSING_GOOGLE_API_KEY)

Google Maps API 现在要求所有使用都需要一个API密钥。有关如何获取您自己的API密钥以用于Google地图绘图的api_key属性的更多信息,请参见 https://developers.google.com/maps/documentation/javascript/get-api-key

1006 (NON_MATCHING_DATA_SOURCES_ON_LEGEND_ITEM_RENDERERS)

当LegendItem.label类型为字段时,LegendItem.renderers上的所有data_sources必须匹配。

1007 (MISSING_MERCATOR_DIMENSION)

MercatorTickerMercatorTickFormatter``模型 必须 将其 ``dimension 属性设置为 'lat''lon'

1008 (REQUIRED_SCALE)

缺少一个或多个必需的默认Scale(将导致空白图)。

1009 (INCOMPATIBLE_SCALE_AND_RANGE)

一个Scale类型与同一绘图维度上的一个或多个范围不兼容(将导致空白绘图)。

1011 (MALFORMED_GRAPH_SOURCE)

GraphSource 配置错误。

1012 (INCOMPATIBLE_MAP_RANGE_TYPE)

地图图只能支持Range1d类型,不支持数据范围。

1013 (INCOMPATIBLE_POINT_DRAW_RENDERER)

PointDrawTool 渲染器可能仅引用 XYGlyph 模型。

1014 (INCOMPATIBLE_BOX_EDIT_RENDERER)

BoxEditTool 渲染器可能仅引用 Rect 字形模型。

1015 (INCOMPATIBLE_POLY_DRAW_RENDERER)

PolyDrawTool 渲染器可能仅引用 MultiLinePatches 字形模型。

1016 (INCOMPATIBLE_POLY_EDIT_RENDERER)

PolyEditTool 渲染器可能仅引用 MultiLinePatches 字形模型。

1017 (INCOMPATIBLE_POLY_EDIT_VERTEX_RENDERER)

PolyEditTool 的 vertex_renderer 只能引用 XYGlyph 模型。

1018 (NO_RANGE_TOOL_RANGES)

RangeTool 必须至少配置 x_rangey_range 中的一个

1019 (DUPLICATE_FACTORS)

FactorRange 必须为轴指定一个唯一的分类因子列表。

1020 (BAD_EXTRA_RANGE_NAME)

配置了一个额外的范围名称,该名称不对应任何范围。

1021 (EQUAL_SLIDER_START_END)

noUiSlider 必须有一个不等的开始和结束。

1022 (MIN_PREFERRED_MAX_WIDTH)

预期最小宽度 <= 宽度 <= 最大宽度

1023 (MIN_PREFERRED_MAX_HEIGHT)

预期最小高度 <= 高度 <= 最大高度

1024 (CDSVIEW_FILTERS_WITH_CONNECTED)

CDSView 过滤器不适用于具有连接拓扑的图形,例如线或面片。

1025 (INCOMPATIBLE_LINE_EDIT_RENDERER)

LineEditTool 渲染器只能引用 MultiLineLine 字形模型。

1026 (INCOMPATIBLE_LINE_EDIT_INTERSECTION_RENDERER)

LineEditTool 的 intersection_enderer 只能引用 LineGlyph 模型。

1027 (REPEATED_LAYOUT_CHILD)

同一个模型不能在布局中多次使用。

9999 (EXT)

表示自定义错误检查失败。

警告代码#

这些定义了Bokeh验证检查的标准警告代码和消息。

1000 (MISSING_RENDERERS)

一个 Plot 对象没有配置渲染器(将导致空白图)。

1002 (EMPTY_LAYOUT)

布局模型没有子元素(将导致空白布局)。

1004 (BOTH_CHILD_AND_ROOT)

每个组件只能在一个地方渲染,不能同时作为根组件和布局组件。

9999 (EXT)

表示自定义警告检查失败。

辅助函数#

这些辅助函数可用于对Bokeh模型集合执行完整性检查,或将模型上的方法标记为警告或错误检查。

check_integrity(models: Iterable[Model]) ValidationIssues[源代码]#

收集与一组Bokeh模型相关的所有警告。

Parameters:

模型 (序列[Model]) – 要测试的模型集合

Returns:

所有警告和错误消息的集合

Return type:

验证问题

此函数将返回一个包含所有检测到的错误和/或警告条件的对象。例如,没有任何子元素的布局将向集合中添加一个警告:

>>> empty_row = Row()

>>> check_integrity([empty_row])
ValidationIssues(
    warning=[
        ValidationIssue(
            code=1002,
            name="EMPTY_LAYOUT",
            text="Layout has no children",
            extra="Row(id='1001', ...)",
        ),
    ],
)
silence(warning: Warning, silence: bool = True) set[Warning][source]#

在所有Bokeh模型上静默特定警告。

Parameters:
  • 警告 (Warning) – 要忽略的Bokeh警告

  • 静默 (bool) – 是否静默警告

Returns:

包含所有被静音的警告的集合

此函数从一组静音器中添加或移除警告,这些静音器在运行check_integrity时被引用。如果警告被添加到静音器中,那么它将永远不会被触发。

>>> from bokeh.core.validation.warnings import EMPTY_LAYOUT
>>> bokeh.core.validation.silence(EMPTY_LAYOUT, True)
{1002}

要重新启用警告,请使用相同的方法,但将silence参数设置为false

>>> bokeh.core.validation.silence(EMPTY_LAYOUT, False)
set()
error(code_or_name: int | str | Issue) Callable[[Callable[[...], str | None]], Validator][源代码]#

用于标记Bokeh错误条件的验证器方法的装饰器

Parameters:

code_or_name (int, str or Issue) – 来自 bokeh.validation.errors 的代码或自定义检查的字符串标签

Returns:

Bokeh 模型方法的装饰器

Return type:

可调用的

被装饰的函数名称必须以_check开头,并且在检测到不良条件时返回字符串消息,如果没有检测到不良条件则返回None

示例:

第一个示例使用了在bokeh.validation.errors中提供的标准错误的数字代码。这种用法主要对Bokeh核心开发者感兴趣。

from bokeh.validation.errors import REQUIRED_RANGES

@error(REQUIRED_RANGES)
def _check_no_glyph_renderers(self):
    if bad_condition: return "message"

第二个示例展示了如何通过向装饰器传递任意字符串标签来实现自定义警告检查。这种用法主要对任何使用自己的自定义模型扩展Bokeh的人感兴趣。

@error("MY_CUSTOM_WARNING")
def _check_my_custom_warning(self):
    if bad_condition: return "message"
warning(code_or_name: int | str | Issue) Callable[[Callable[[...], str | None]], Validator][source]#

用于标记Bokeh错误条件的验证器方法的装饰器

Parameters:

code_or_name (int, str or Issue) – 来自 bokeh.validation.errors 的代码或自定义检查的字符串标签

Returns:

Bokeh 模型方法的装饰器

Return type:

可调用的

被装饰的函数应该有一个以_check开头的名称,并在检测到不良条件时返回一个字符串消息,如果没有检测到不良条件,则返回None

示例:

第一个示例使用了在bokeh.validation.warnings中提供的标准警告的数字代码。这种用法主要对Bokeh核心开发者感兴趣。

from bokeh.validation.warnings import MISSING_RENDERERS

@warning(MISSING_RENDERERS)
def _check_no_glyph_renderers(self):
    if bad_condition: return "message"

第二个示例展示了如何通过向装饰器传递任意字符串标签来实现自定义警告检查。这种用法主要对任何使用自己的自定义模型扩展Bokeh的人感兴趣。

@warning("MY_CUSTOM_WARNING")
def _check_my_custom_warning(self):
    if bad_condition: return "message"