[Mailman-Developers] Python3 port of Mailman3
Barry Warsaw
barry at list.org
Sun Nov 30 00:33:54 CET 2014
On Nov 26, 2014, at 02:30 PM, Abhilash Raj wrote:
>I am working on porting mailman3 to python3. There are few doubts I have
>which may sound stupid, but I have a little knowledge about encoding and
>charsets which I think is important for the port. Also this is my first time
>working on python3 so forgive me for asking anything obvious( I did try
>googling first) The code is in very preliminary stages with tons of
>errors. Its up on launchpad.
>
> lp:~raj-abhilash1/mailman/py3
Yay! Note that I also have been playing around with it a bit. I wouldn't say
it's a functional branch, but you might compare notes:
lp:~barry/mailman/py3
>1. `pkg_resources.resource_string` used to read the configuration files while
>initialization and testing now returns bytes instead of string(like in
>python2).
Right. "resource_string" is really a misnomer. In another Python 3 project I
work on, I use:
from pkg_resource import resource_string as resource_bytes
just so that the call sites are accurate.
>So instead I use `pkg_resources.resource_stream` and deocode to the steam to
>a `utf-8` encoding(why? to avoid errors for the time being). I wanted to ask
>what would be the best for this case?
You can of course also decode the bytestring that "resource_bytes" returns.
That's generally what I do in that other project.
>2. To create a hash everywhere unicode strings must be encoded. So again the
>same question what should I encode it to? UTF-8 or US-ASCII? Or someway to
>determine which encoding should be used?
I think utf-8 is generally the right encoding to use, except in contexts where
you are given a better hint. E.g. if you're decoding say the payload of a
message with a Content-Type header, and that header has a `charset` attribute,
it will name the encoding that you're supposed to use.
There may be cases where us-ascii or latin-1 would be better, but I think
those should be determined on a case-by-case basis.
>Also if anybody has suggestions on porting please let me know. I am online
>sporadically on irc as `maxking` on #mailman (I see all of the messages sent
>while I am away).
The trunk should now be `python2.7 -3` clean, so it's ready to be ported.
I'd probably not try to run the full test suite yet, but start at the lowest
level, e.g. database/model and work your way up. If there are changes that
make sense even in Python 2 (i.e. for bilingual support for now) try to
put those in separate branches and merge proposals, so they can be merged into
trunk even before a full port.
This page will be indispensable:
https://wiki.python.org/moin/PortingToPy3k/BilingualQuickRef
Cheers,
-Barry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/mailman-developers/attachments/20141129/0a5e70af/attachment.sig>
More information about the Mailman-Developers
mailing list