changeset 11542:594b98846ce1 stable

mail: ensure that Python2.4 to 2.7 use the same header format Wrapping format for long headers changed in Python2.7 (see Python issue1974). Adopt the Python2.7 behaviour and backport it for 2.4-2.6
author Nicolas Dumazet <nicdumz.commits@gmail.com>
date Tue, 06 Jul 2010 18:24:04 +0900
parents ab9fa7a85dd9
children 0a2762d83c53
files mercurial/mail.py tests/test-patchbomb.out
diffstat 2 files changed, 23 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/mail.py	Mon Jul 05 19:49:54 2010 +0900
+++ b/mercurial/mail.py	Tue Jul 06 18:24:04 2010 +0900
@@ -10,6 +10,26 @@
 import os, smtplib, socket, quopri
 import email.Header, email.MIMEText, email.Utils
 
+_oldheaderinit = email.Header.Header.__init__
+def _unifiedheaderinit(self, *args, **kw):
+    """
+    Python2.7 introduces a backwards incompatible change
+    (Python issue1974, r70772) in email.Generator.Generator code:
+    pre-2.7 code passed "continuation_ws='\t'" to the Header
+    constructor, and 2.7 removed this parameter.
+
+    Default argument is continuation_ws=' ', which means that the
+    behaviour is different in <2.7 and 2.7
+
+    We consider the 2.7 behaviour to be preferable, but need
+    to have an unified behaviour for versions 2.4 to 2.7
+    """
+    # override continuation_ws
+    kw['continuation_ws'] = ' '
+    _oldheaderinit(self, *args, **kw)
+
+email.Header.Header.__dict__['__init__'] = _unifiedheaderinit
+
 def _smtp(ui):
     '''build an smtp connection and return a function to send mail'''
     local_hostname = ui.config('smtp', 'local_hostname')
--- a/tests/test-patchbomb.out	Mon Jul 05 19:49:54 2010 +0900
+++ b/tests/test-patchbomb.out	Tue Jul 06 18:24:04 2010 +0900
@@ -573,7 +573,7 @@
 Content-Type: multipart/mixed; boundary="===
 MIME-Version: 1.0
 Subject: [PATCH 3 of 3] charset=utf-8;
-	content-transfer-encoding: quoted-printable
+ content-transfer-encoding: quoted-printable
 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
 Message-Id: <c655633f8c87700bb38c.63@
 In-Reply-To: <patchbomb.60@
@@ -836,7 +836,7 @@
 Content-Type: multipart/mixed; boundary="===
 MIME-Version: 1.0
 Subject: [PATCH 3 of 3] charset=utf-8;
-	content-transfer-encoding: quoted-printable
+ content-transfer-encoding: quoted-printable
 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
 Message-Id: <c655633f8c87700bb38c.63@
 In-Reply-To: <patchbomb.60@
@@ -1730,7 +1730,7 @@
 MIME-Version: 1.0
 Content-Transfer-Encoding: quoted-printable
 Subject: [PATCH 3 of 8] charset=utf-8;
-	content-transfer-encoding: quoted-printable
+ content-transfer-encoding: quoted-printable
 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
 Message-Id: <c655633f8c87700bb38c.315532863@
 In-Reply-To: <patchbomb.315532860@