in tools/tags_validator.py [0:0]
def _assert_valid_item_level_keys(self, item: Mapping[str, str]) -> None:
"""Validates the keys of the given item.
Args:
item: Mapping representing a tag item e.g. {id=mnist, display_name=MNIST}.
Raises:
TagDefinitionError:
- if not all required item-level keys are set.
- if keys are different from the supported item-level keys.
- if the id does not match ID_PATTERN.
"""
missing_required_field = self.required_item_keys - set(item.keys())
if missing_required_field:
raise TagDefinitionError(f"Missing required item-level keys: "
f"{sorted(missing_required_field)}.")
unsupported_field = set(item.keys()) - self.supported_item_keys
if unsupported_field:
raise TagDefinitionError(
f"Unsupported item-level keys: {unsupported_field}.")
if re.fullmatch(ID_PATTERN, item[ID_KEY]) is None:
raise TagDefinitionError(f"The value of an id must match {ID_PATTERN} but"
f" was {item[ID_KEY]}.")