def METHOD_NAME(value: Union[int, float, str, None]) -> str:
    """
    Prints a 8-character width field
    Parameters
    ----------
    value : int/float/str
        the value to print
    Returns
    -------
    field : str
        an 8-character string
    """
    assert not isinstance(value, list), value
    if isinstance(value, int):
        field = '%8i' % value
    elif isinstance(value, (float, float32, float64)):
        field_old = print_float_8(value)
        field_new = get_float_format(value)
        try:
            value_old = double_from_str(field_old.strip())
        except:
            raise SyntaxError(f'value={value}; field_old={field_old!r}')
        try:
            value_new = double_from_str(field_new.strip())
        except:
            raise SyntaxError(f'value={value}; field_new={field_new!r}')
        if not value_old == value_new:
            print(f'value={value}; field_old={field_old!r} field_new={field_new!r}')
        #assert value_old == value_new, f'value={value}; field_old={field_old!r} field_new={field_new!r}'
        field = field_new
    elif value is None:
        field = '        '
    else:
        field = '%8s' % value
    if len(field) != 8:
        nchars = len(field)
        msg = f'field={field!r} is not 8 characters long; its {nchars}...raw_value={value!r}'
        raise RuntimeError(msg)
    return field