summaryrefslogtreecommitdiff
path: root/src/buildstream/_yaml.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_yaml.pyx')
-rw-r--r--src/buildstream/_yaml.pyx13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/buildstream/_yaml.pyx b/src/buildstream/_yaml.pyx
index 4505e2f95..f14b55e51 100644
--- a/src/buildstream/_yaml.pyx
+++ b/src/buildstream/_yaml.pyx
@@ -1119,16 +1119,17 @@ cpdef object node_sanitize(object node, object dict_type=OrderedDict):
# LoadError: In the case that the specified node contained
# one or more invalid keys
#
-def node_validate(Node node, list valid_keys):
+cpdef void node_validate(Node node, list valid_keys) except *:
# Probably the fastest way to do this: https://stackoverflow.com/a/23062482
cdef set valid_keys_set = set(valid_keys)
- invalid = next((key for key in node.value if key not in valid_keys_set), None)
+ cdef str key
- if invalid:
- provenance = node_get_provenance(node, key=invalid)
- raise LoadError(LoadErrorReason.INVALID_DATA,
- "{}: Unexpected key: {}".format(provenance, invalid))
+ for key in node.value:
+ if key not in valid_keys_set:
+ provenance = node_get_provenance(node, key=key)
+ raise LoadError(LoadErrorReason.INVALID_DATA,
+ "{}: Unexpected key: {}".format(provenance, key))
# Node copying