in scripts/schema/cleaner.py [0:0]
def field_mandatory_attributes(field: FieldDetails) -> None:
"""Ensures for the presence of the mandatory field attributes and raises if any are missing"""
if ecs_helpers.is_intermediate(field):
return
current_field_attributes: List[str] = sorted(field['field_details'].keys())
missing_attributes: List[str] = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes)
# `alias` fields require a target `path` attribute.
if field['field_details'].get('type') == 'alias' and 'path' not in current_field_attributes:
missing_attributes.append('path')
# `scaled_float` fields require a `scaling_factor` attribute.
if field['field_details'].get('type') == 'scaled_float' and 'scaling_factor' not in current_field_attributes:
missing_attributes.append('scaling_factor')
if len(missing_attributes) > 0:
msg: str = "Field is missing the following mandatory attributes: {}.\nFound these: {}.\nField details: {}"
raise ValueError(msg.format(', '.join(missing_attributes),
current_field_attributes, field))