性感 2 个中的 3 个班级



我一直在尝试使用python库几个小时,但我无法制作我想要的东西。

这是现在正在工作的方法:

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_ENTITY_ID): cv.entity_id,
    vol.Required(CONF_STATE): cv.slug,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    vol.Optional(CONF_START, default=None): cv.template,
    vol.Optional(CONF_END, default=None): cv.template,
    vol.Optional(CONF_DURATION, default=None): cv.template,
})

但我想添加另一个约束:我希望提供[CONF_START, CONF_END, CONF_DURATION]中的 2 个。不多不少于2。

我被告知要使用ExclusiveInclusive,但我真的很困惑性感是如何工作的。

怎样才能让它像我想要的那样工作?

终于有人给了我解决方案

我需要将我的验证放入一个单独的函数中,并使用vol.All将我的第一个模式与该函数连接起来:

def exactly_two_period_keys(conf):
    provided = 0
    for param in [CONF_START, CONF_END, CONF_DURATION]:
        if param in conf and conf[param] is not None:
            provided += 1
    if provided != 2:
        raise vol.Invalid('Error message here')
    return conf

PLATFORM_SCHEMA = vol.All(PLATFORM_SCHEMA.extend({
    vol.Required(CONF_ENTITY_ID): cv.entity_id,
    vol.Required(CONF_STATE): cv.slug,
    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
    vol.Optional(CONF_START, default=None): cv.template,
    vol.Optional(CONF_END, default=None): cv.template,
    vol.Optional(CONF_DURATION, default=None): cv.template,
}), exactly_two_period_keys)

相关内容

  • 没有找到相关文章

最新更新