def format_fields(field_data, include_empty=True):
    """Format field labels and values.

    Parameters
    ----------
    field_data : |list| of |tuple|
       2-tuples of field labels and values.

    include_empty : |bool|, optional
        Whether fields whose values are |None| or an empty |str| should
        be included in the formatted fields.

    Returns
    -------
    str
        Formatted field labels and values.

    Examples
    --------
    >>> field_data = [('Name', 'Jane'), ('Age', 30), ('DOB', None)]
    >>> format_fields(field_data, include_empty=True)
    Name: Jane
    Age:  30
    DOB:  None

    >>> field_data = [('Name', 'Jane'), ('Age', 30), ('DOB', None)]
    >>> format_fields(field_data, include_empty=False)
    Name: Jane
    Age:  30

    """
    max_label = 0
    for (label, value) in field_data:
        label_length = len(label)
        if label_length > max_label:
            max_label = label_length

    fields = []
    for (label, value) in field_data:
        empty = str(value).strip() in ['', 'None']
        if not empty or include_empty:
            label_length = len(label.strip())
            extra_spaces = ' ' * (max_label - label_length)
            label_sep = ':' + extra_spaces + ' '
            joined_field = label_sep.join([label, str(value)])
            fields.append(joined_field)

    return '\n'.join(fields)