def parse(self, text):
results = []<EOL>if isinstance(text, str):<EOL><INDENT>if six.PY2:<EOL><INDENT>text = unicode(text, '<STR_LIT:utf-8>')<EOL><DEDENT><DEDENT>self.clean_text = self._normalize_string(text)<EOL>addresses = set(self._get_addresses(self.clean_text))<EOL>if addresses:<EOL><INDENT>results = list(map(self._parse_address, addresses))<EOL><DEDENT>return results<EOL>
Returns a list of addresses found in text
        together with parsed address parts