def check_example_value()

in scripts/schema/cleaner.py [0:0]


def check_example_value(field: Union[List, FieldEntry], strict: Optional[bool] = True) -> None:
    """
    Checks if value of the example field is of type list or dict.
    Fails or warns (depending on strict mode) if so.
    """
    example_value: str = field['field_details'].get('example', '')
    pattern: str = field['field_details'].get('pattern', '')
    expected_values: List[str] = field['field_details'].get('expected_values', [])
    name: str = field['field_details']['name']

    if isinstance(example_value, (list, dict)):
        field_name: str = field['field_details']['name']
        msg: str = "Example value for field `{}` contains an object or array which must be quoted to avoid YAML interpretation.".format(
            field_name)
        strict_warning_handler(msg, strict)

    # Examples with arrays must be handled
    if 'array' in field['field_details'].get('normalize', []):
        # strips unnecessary chars in order to split each example value
        example_values = example_value.translate(str.maketrans('', '', '"[] ')).split(',')
    else:
        example_values = [example_value]

    if pattern:
        for example_value in example_values:
            match = re.match(pattern, example_value)
            if not match:
                msg = "Example value for field `{}` does not match the regex defined in the pattern attribute: `{}`.".format(
                    name, pattern)
                strict_warning_handler(msg, strict)

    if expected_values:
        for example_value in example_values:
            if example_value not in expected_values:
                msg = "Example value `{}` for field `{}` is not one of the values defined in `expected_value`: {}.".format(
                    example_value, name, example_values)
                strict_warning_handler(msg, strict)