import re


def parse_email_address(value: str) -> dict:
    """
    Parse email address str, example: "Ivan Petrov" <ivan@mail.ru>
    @:return dict(name: str, email: str, full: str)
    """
    address = ''.join(char for char in value if char.isprintable()).strip()
    address = re.sub('[\n\r\t]+', ' ', address)
    result = {'email': '', 'name': '', 'full': address}
    match = re.match('(?P<name>.*)?<(?P<email>.*@.*)>', address, re.UNICODE)
    if match:
        group = match.groupdict()
        result['name'] = group['name'].strip()
        result['email'] = group['email'].strip()
    else:
        result['email' if '@' in address else 'name'] = address
    return result