specs_matcher

oslo_utils.specs_matcher.make_grammar()

创建用于规格匹配器的语法。

创建的语法支持以下操作。

数值
  • =  : 大于或等于。 这等同于 >=,并且由于遗留原因而受支持

  • != : 浮点数/整数值不相等

  • <= : 浮点数/整数值小于或等于

  • <  : 浮点数/整数值小于

  • == : 浮点数/整数值相等

  • >= : 浮点数/整数值大于或等于

  • >  : 浮点数/整数值大于

字符串操作
  • s!= : 不相等

  • s<  : 小于

  • s<= : 小于或等于

  • s== : 相等

  • s>  : 大于

  • s>= : 大于或等于

其他操作
  • <all-in>  : 所有项目‘在’值中

  • <in>      : 项目‘在’值中,例如字符串中的子字符串。

  • <or>      : 逻辑‘或’

  • <range-in>: 具有可自定义边界条件的范围测试器,测试

    值是否在范围内,边界条件可以是包含‘[’或排除‘(’。

如果未指定运算符,则默认值为 s==(字符串相等比较)

示例操作
  • ">= 60" 数值是否大于或等于 60

  • "<or> spam <or> eggs" 该值是否包含 spameggs

  • "s== 2.1.0" 字符串值是否等于 2.1.0

  • "<in> gcc" 字符串 gcc 是否包含在值字符串中

  • "<all-in> aes mmx" aesmmx 是否都在该值中

  • "<range-in> [ 10 20 ]" float(value) >= 10 and float(value) <= 20

  • "<range-in> ( 10 20 ]" float(value) > 10 and float(value) <= 20

  • "<range-in> ( 10 20 )" float(value) > 10 and float(value) < 20

返回值:

一个 pyparsing.MatchFirst 对象。有关 pyparsing 的详细信息,请参阅 https://pythonhosted.org/pyparsing/

oslo_utils.specs_matcher.match(cmp_value, spec)

将给定值与给定的规格 DSL 进行匹配。

这使用 make_grammar() 定义的语法

参数:
  • cmp_value – 要检查匹配的值。

  • spec – 比较规范字符串,例如 ">= 70""s== string_value"。有关规范字符串的示例,请参阅 make_grammar()

返回值:

如果 cmp_value 与 spec 匹配,则返回 True。否则返回 False。