bokeh.core.query#

query 模块提供了一些函数,用于搜索 Bokeh 模型集合,查找与指定条件匹配的实例。

class EQ[source]#

用于测试属性值是否等于某个值的谓词。

构造一个 EQ 谓词,作为带 EQ 键的字典,以及用于比较的值。

# matches any models with .size == 10
dict(size={ EQ: 10 })
class GEQ[source]#

用于测试属性值是否大于或等于某个值的谓词。

构造一个 GEQ 谓词,作为带 GEQ 键的字典,以及用于比较的值。

# matches any models with .size >= 10
dict(size={ GEQ: 10 })
class GT[source]#

用于测试属性值是否大于某个值的谓词。

构造一个 GT 谓词,作为带 GT 键的字典,以及用于比较的值。

# matches any models with .size > 10
dict(size={ GT: 10 })
class IN[source]#

用于测试属性值是否位于某个集合中的谓词。

构造一个 IN 谓词,作为带 IN 键的字典,以及用于检查的值列表。

# matches any models with .name in ['a', 'mycircle', 'myline']
dict(name={ IN: ['a', 'mycircle', 'myline'] })
class LEQ[source]#

用于测试属性值是否小于或等于某个值的谓词。

构造一个 LEQ 谓词,作为带 LEQ 键的字典,以及用于比较的值。

# matches any models with .size <= 10
dict(size={ LEQ: 10 })
class LT[source]#

用于测试属性值是否小于某个值的谓词。

构造一个 LT 谓词,作为带 LT 键的字典,以及用于比较的值。

# matches any models with .size < 10
dict(size={ LT: 10 })
class NEQ[source]#

用于测试属性值是否不等于某个值的谓词。

构造一个 NEQ 谓词,作为带 NEQ 键的字典,以及用于比较的值。

# matches any models with .size != 10
dict(size={ NEQ: 10 })
class OR[source]#

从其他查询谓词中形成析取式。

通过创建一个带 OR 键的字典,以及以其他查询表达式列表作为值的字典来构造一个 OR 表达式。

# matches any Axis subclasses or models with .name == "mycircle"
{ OR: [dict(type=Axis), dict(name="mycircle")] }
find(objs: Iterable[Model], selector: dict[str | type[_Operator], Any]) Iterable[Model][source]#

查询 Bokeh 模型集合,并生成与选择器匹配的所有模型。

参数:
  • objs (Iterable[Model]) – 用于测试的模型对象

  • selector (JSON-like) – 查询选择器

生成:

Model – 与查询匹配的对象

查询指定为类似 MongoDB 风格的查询选择器,如 match() 所述。

示例

# find all objects with type Grid
find(p.references(), {'type': Grid})

# find all objects with type Grid or Axis
find(p.references(), {OR: [
    {'type': Grid}, {'type': Axis}
]})

# same query, using IN operator
find(p.references(), {'type': {IN: [Grid, Axis]}})
is_single_string_selector(selector: dict[str | type[_Operator], Any], field: str) bool[source]#

判断一个选择器是否是一个简单的单个字段,例如 {name: "foo"}

参数:
  • selector (JSON-like) – 查询选择器

  • field (str) – 要检查的字段名

返回值

bool

match(obj: Model, selector: dict[str | type[_Operator], Any]) bool[source]#

测试给定的 Bokeh 模型是否与给定的选择器匹配。

参数:
  • obj (Model) – 要测试的对象

  • selector (JSON-like) – 查询选择器

返回值:

如果对象匹配,则为 True,否则为 False

返回类型:

bool

一般而言,选择器具有以下形式

{ attrname : predicate }

其中谓词由运算符 EQGT 等构造,用于比较模型属性 attrname 的值。

例如

>>> from bokeh.plotting import figure
>>> p = figure(width=400)

>>> match(p, {'width': {EQ: 400}})
True

>>> match(p, {'width': {GT: 500}})
False

有两个选择器键是特别处理的。第一个是 'type',它将执行 isinstance 检查

>>> from bokeh.plotting import figure
>>> from bokeh.models import Axis
>>> p = figure()

>>> match(p.xaxis[0], {'type': Axis})
True

>>> match(p.title, {'type': Axis})
False

还有一个 'tags' 属性,Model 对象拥有,它是一个用户提供的值的列表。 'tags' 选择器键可用于查询该标签列表。如果选择器中的任何标签与对象上的任何标签匹配,则对象匹配

>>> from bokeh.plotting import figure
>>> p = figure(tags = ["my plot", 10])

>>> match(p, {'tags': "my plot"})
True

>>> match(p, {'tags': ["my plot", 10]})
True

>>> match(p, {'tags': ["foo"]})
False