in tensorflow_gnn/graph/schema_validation.py [0:0]
def _validate_schema_reserved_feature_names(schema: schema_pb2.GraphSchema):
"""Check that reserved feature names aren't being used as explicit features."""
node_set_dicts = [("nodes", name, node_set.features)
for name, node_set in schema.node_sets.items()]
edge_set_dicts = [("edges", name, edge_set.features)
for name, edge_set in schema.edge_sets.items()]
for set_type, set_name, feature_dict in node_set_dicts + edge_set_dicts:
if const.SIZE_NAME in feature_dict:
raise ValidationError(
"Feature '{}' from {} set '{}' is reserved".format(
const.SIZE_NAME, set_type, set_name))
for set_type, set_name, feature_dict in edge_set_dicts:
for name in const.SOURCE_NAME, const.TARGET_NAME:
# Invalidate reserved feature names.
if name in feature_dict:
raise ValidationError(
"Feature '{}' from {} set '{}' is reserved".format(
name, set_type, set_name))
# TODO(blais): Make this compulsory after we remove the hardcoded
# feature names from the sampler.
for set_type, set_name, feature_name, feature in su.iter_features(schema):
if const.RESERVED_REGEX.match(feature_name):
logging.error("Invalid %s feature name '%s' on set '%s': reserved names "
"are not allowed", set_type, feature_name, set_name)