def validator(value): cv.check_not_templatable(value) option = cv.All(cv.string_strict) mapping = cv.All(cv.int_range(-(2**63), 2**63 - 1)) options_map_schema = cv.Schema({option: mapping}) value = options_map_schema(value) all_values = list(value.values()) unique_values = set(value.values()) if len(all_values) != len(unique_values): raise cv.Invalid("Mapping values must be unique.") return value
def ensure_option_map(value): cv.check_not_templatable(value) option = cv.All(cv.int_range(0, 2**8 - 1)) mapping = cv.All(cv.string_strict) options_map_schema = cv.Schema({option: mapping}) value = options_map_schema(value) all_values = list(value.keys()) unique_values = set(value.keys()) if len(all_values) != len(unique_values): raise cv.Invalid("Mapping values must be unique.") return value
def test_check_not_templatable__invalid(): with pytest.raises(Invalid, match="This option is not templatable!"): config_validation.check_not_templatable(Lambda(""))