[Patches] [ python-Patches-963906 ] Unicode email address helper

SourceForge.net noreply at sourceforge.net
Tue Sep 7 07:30:20 CEST 2004


Patches item #963906, was opened at 2004-06-01 09:36
Message generated for change (Comment added) made by zenzen
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=963906&group_id=5470

Category: Library (Lib)
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Stuart Bishop (zenzen)
Assigned to: Nobody/Anonymous (nobody)
Summary: Unicode email address helper

Initial Comment:
Converting email addresses between Unicode and ASCII is non 
trivial, as three different encodings are used (RFC2047, IDNA and 
ASCII). Here is an EmailAddress I use and a test suite, which I feel 
should be integrated into the email package. I'm quite happy to 
implement a different interface if the 'unicode subclass' design is 
unsuitable, although I got no feedback from the Email-SIG so they 
are either happy with it or asleep ;)



----------------------------------------------------------------------

>Comment By: Stuart Bishop (zenzen)
Date: 2004-09-07 15:30

Message:
Logged In: YES 
user_id=46639

I think that adding options to the existing APIs simply makes the Unicode 
support feel tacked on (as it would be). It is also error prone, where if 
you are following best practice and using Unicode everywhere, you have 
to remember to explicitly pass the 'do_unicode=True' parameter to this 
one particular function.

I think the alternative approach would be to use a codec, similar to how 
Unicode DNS domains are handled 
('foo at example.com'.decode('emailaddress')).

I still prefer the OO approach though, as it allows the programmer to 
treat email addresses as a standard Unicode string with a few extra 
features, such as the __cmp__ method I've since added to 
EmailAddress.py and the test suite:

>>> e = EmailAddress(u'renee at ol\u00e9.de', u'Rene\u00e9 Acut\u00e9')
>>> e == str(e)
True
>>> e == unicode(e)
True
>>> e == str(EmailAddress(e.upper()))
True
>>> e == unicode(EmailAddress(e.upper()))
True

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2004-08-25 23:19

Message:
Logged In: YES 
user_id=21627

Oops, test cases are there - only documentation is lacking.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2004-08-25 23:18

Message:
Logged In: YES 
user_id=21627

I think it is inappropriate to create new API for this.
Instead, one of the many functions that already deal with
address parsing need to be enhanced. For example,
email.Util.formataddr should learn to format unicode
strings, too. Likewise, parseaddr could grow a parameter
do_unicode, or a second function parseaddr_unicode could be
added. There is IMO no need for a new class.

In addition, this patch lacks documentation and test cases.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=963906&group_id=5470


More information about the Patches mailing list