def METHOD_NAME(creator: Union[dict, str], ignore_email) -> Tuple[Optional["Person"], Optional[str]]:
    """Parse input and return an instance of Person."""
    from renku.domain_model.provenance.agent import Person
    if not creator:
        return None, None
    if isinstance(creator, str):
        person = Person.from_string(creator)
    elif isinstance(creator, dict):
        person = Person.from_dict(creator)
    else:
        raise errors.ParameterError("Invalid creator type")
    message = 'A valid format is "Name <email> [affiliation]"'
    if not person.name:  # pragma: no cover
        raise errors.ParameterError(f'Name is invalid: "{creator}".\n{message}')
    if not person.email:
        if not ignore_email:  # pragma: no cover
            raise errors.ParameterError(f'Email is invalid: "{creator}".\n{message}')
        else:
            no_email_warning = str(creator)
    else:
        no_email_warning = None
    return person, no_email_warning