On 20 Sep 01:22, Daniel Axtens wrote: > So, umm, I went ahead and had a crack at this. > > It turns out this is hideously difficult to get right. But this plus my > other patch to fix Thomas' problem should have things working on Py2 and > Py3 with this series. > > It's a bit of a work in progress: I need to close the file at the end > of the function, the logging needs to be added again, etc. > > Tests to come. > > Stephen: I can do this up into a proper patch if you like or you can > fold it into your series. > > Regards, > Daniel
I don't have the offending patch on hand, but isn't the issue with the headers. If so, would something like the below do (I haven't tested it - there could be typos). I'll review this if not. Stephen diff --git a/patchwork/parser.py b/patchwork/parser.py index 1805df8..7917e97 100644 --- a/patchwork/parser.py +++ b/patchwork/parser.py @@ -21,7 +21,8 @@ import codecs import datetime -from email.header import Header, decode_header +from email.header import decode_header +from email.header import make_header from email.utils import parsedate_tz, mktime_tz from fnmatch import fnmatch from functools import reduce @@ -155,10 +156,10 @@ def find_date(mail): def find_headers(mail): - return reduce(operator.__concat__, - ['%s: %s\n' % (k, Header(v, header_name=k, - continuation_ws='\t').encode()) - for (k, v) in list(mail.items())]) + headers = {key: decode_header(value) for key, value in list(mail.items())} + return '\n'.join(['%s: %s' % (key, make_header(value[0], header_name=key, + continuation_wd='\t')) + for key, value in headers]) def find_references(mail): _______________________________________________ Patchwork mailing list Patchwork@lists.ozlabs.org https://lists.ozlabs.org/listinfo/patchwork