Patchwork mail: handle renamed email.Header

login
register
mail settings
Submitter Pulkit Goyal
Date Oct. 8, 2016, 8:24 a.m.
Message ID <2a61396608bcbba3d3f4.1475915085@pulkit-goyal>
Download mbox | patch
Permalink /patch/16907/
State Accepted
Headers show

Comments

Pulkit Goyal - Oct. 8, 2016, 8:24 a.m.
# HG changeset patch
# User Pulkit Goyal <7895pulkit@gmail.com>
# Date 1475854211 -7200
#      Fri Oct 07 17:30:11 2016 +0200
# Node ID 2a61396608bcbba3d3f4e50002b19563741d2fb5
# Parent  6ffb7e0249f44ab120b4437ae7d65020d03927ba
mail: handle renamed email.Header

We are still using email.Header which was renamed to email.header back in
Python 2.5. References: https://hg.python.org/cpython/file/2.4/Lib/email
and https://hg.python.org/cpython/file/2.5/Lib/email
Augie Fackler - Oct. 8, 2016, 9:53 a.m.
Queued this, thanks.

> On Oct 8, 2016, at 10:24, Pulkit Goyal <7895pulkit@gmail.com> wrote:
> 
> # HG changeset patch
> # User Pulkit Goyal <7895pulkit@gmail.com>
> # Date 1475854211 -7200
> #      Fri Oct 07 17:30:11 2016 +0200
> # Node ID 2a61396608bcbba3d3f4e50002b19563741d2fb5
> # Parent  6ffb7e0249f44ab120b4437ae7d65020d03927ba
> mail: handle renamed email.Header
> 
> We are still using email.Header which was renamed to email.header back in
> Python 2.5. References: https://hg.python.org/cpython/file/2.4/Lib/email
> and https://hg.python.org/cpython/file/2.5/Lib/email
> 
> diff -r 6ffb7e0249f4 -r 2a61396608bc mercurial/mail.py
> --- a/mercurial/mail.py	Fri Oct 07 08:32:18 2016 -0400
> +++ b/mercurial/mail.py	Fri Oct 07 17:30:11 2016 +0200
> @@ -23,7 +23,7 @@
>     util,
> )
> 
> -_oldheaderinit = email.Header.Header.__init__
> +_oldheaderinit = email.header.Header.__init__
> def _unifiedheaderinit(self, *args, **kw):
>     """
>     Python 2.7 introduces a backwards incompatible change
> @@ -279,7 +279,7 @@
>     if not display:
>         # split into words?
>         s, cs = _encode(ui, s, charsets)
> -        return str(email.Header.Header(s, cs))
> +        return str(email.header.Header(s, cs))
>     return s
> 
> def _addressencode(ui, name, addr, charsets=None):
> @@ -330,7 +330,7 @@
> def headdecode(s):
>     '''Decodes RFC-2047 header'''
>     uparts = []
> -    for part, charset in email.Header.decode_header(s):
> +    for part, charset in email.header.decode_header(s):
>         if charset is not None:
>             try:
>                 uparts.append(part.decode(charset))
> diff -r 6ffb7e0249f4 -r 2a61396608bc tests/test-check-py3-compat.t
> --- a/tests/test-check-py3-compat.t	Fri Oct 07 08:32:18 2016 -0400
> +++ b/tests/test-check-py3-compat.t	Fri Oct 07 17:30:11 2016 +0200
> @@ -121,7 +121,6 @@
>   mercurial/i18n.py: error importing module: <TypeError> bytes expected, not str (line *)
>   mercurial/keepalive.py: error importing module: <AttributeError> module 'mercurial.util' has no attribute 'httplib' (line *)
>   mercurial/localrepo.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
> -  mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *)
>   mercurial/manifest.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
>   mercurial/merge.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
>   mercurial/namespaces.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Patch

diff -r 6ffb7e0249f4 -r 2a61396608bc mercurial/mail.py
--- a/mercurial/mail.py	Fri Oct 07 08:32:18 2016 -0400
+++ b/mercurial/mail.py	Fri Oct 07 17:30:11 2016 +0200
@@ -23,7 +23,7 @@ 
     util,
 )
 
-_oldheaderinit = email.Header.Header.__init__
+_oldheaderinit = email.header.Header.__init__
 def _unifiedheaderinit(self, *args, **kw):
     """
     Python 2.7 introduces a backwards incompatible change
@@ -279,7 +279,7 @@ 
     if not display:
         # split into words?
         s, cs = _encode(ui, s, charsets)
-        return str(email.Header.Header(s, cs))
+        return str(email.header.Header(s, cs))
     return s
 
 def _addressencode(ui, name, addr, charsets=None):
@@ -330,7 +330,7 @@ 
 def headdecode(s):
     '''Decodes RFC-2047 header'''
     uparts = []
-    for part, charset in email.Header.decode_header(s):
+    for part, charset in email.header.decode_header(s):
         if charset is not None:
             try:
                 uparts.append(part.decode(charset))
diff -r 6ffb7e0249f4 -r 2a61396608bc tests/test-check-py3-compat.t
--- a/tests/test-check-py3-compat.t	Fri Oct 07 08:32:18 2016 -0400
+++ b/tests/test-check-py3-compat.t	Fri Oct 07 17:30:11 2016 +0200
@@ -121,7 +121,6 @@ 
   mercurial/i18n.py: error importing module: <TypeError> bytes expected, not str (line *)
   mercurial/keepalive.py: error importing module: <AttributeError> module 'mercurial.util' has no attribute 'httplib' (line *)
   mercurial/localrepo.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
-  mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *)
   mercurial/manifest.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
   mercurial/merge.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)
   mercurial/namespaces.py: error importing: <TypeError> a bytes-like object is required, not 'str' (error at revset.py:*)