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 模型是否与给定的选择器匹配。
一般而言,选择器具有以下形式
{ attrname : predicate }
其中谓词由运算符
EQ
、GT
等构造,用于比较模型属性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