in src/buildstream/_project.py [0:0]
def _validate_toplevel_node(self, node, *, first_pass=False):
node.validate_keys(
[
"min-version",
"element-path",
"variables",
"environment",
"environment-nocache",
"split-rules",
"elements",
"plugins",
"aliases",
"name",
"defaults",
"artifacts",
"options",
"fail-on-overlap",
"shell",
"fatal-warnings",
"ref-storage",
"sandbox",
"mirrors",
"sources",
"source-caches",
"junctions",
"(@)",
"(?)",
]
)
# Keys which are invalid if specified outside of project.conf
if not first_pass:
invalid_keys = {"name", "element-path", "min-version", "plugins"}
for invalid_key in invalid_keys:
invalid_node = node.get_node(invalid_key, allow_none=True)
if invalid_node:
provenance = invalid_node.get_provenance()
if (
provenance._shortname != "project.conf"
and provenance._filename != _site.default_project_config
):
raise LoadError(
"{}: Unexpected key: {}".format(provenance, invalid_key),
LoadErrorReason.INVALID_DATA,
detail="The '{}' configuration must be specified in project.conf".format(invalid_key),
)