[PATCH 12 of 13] compat: modernize the email imports

Alejandro Santos alejolp at alejolp.com
Wed Aug 5 20:55:46 UTC 2009


# HG changeset patch
# User Alejandro Santos <alejolp at alejolp.com>
# Date 1249505636 10800
# Node ID 3352f2de360abad11763c242e9835d1fb195c3c5
# Parent  c7ba5bcbffb4aacd3b46c7f6d66f5c85b5d0d9d7
compat: modernize the email imports

diff -r c7ba5bcbffb4 -r 3352f2de360a hgext/convert/gnuarch.py
--- a/hgext/convert/gnuarch.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/hgext/convert/gnuarch.py	Wed Aug 05 17:53:56 2009 -0300
@@ -9,8 +9,12 @@
 from common import NoRepo, commandline, commit, converter_source
 from mercurial.i18n import _
 from mercurial import util
-import os, shutil, tempfile, stat, locale
-from email.Parser import Parser
+import os, sys, shutil, tempfile, stat, locale
+
+if sys.version_info[:2] >= (2, 5): # Py 2.5, Py3k
+    from email.parser import Parser
+else:
+    from email.Parser import Parser
 
 class gnuarch_source(converter_source, commandline):
 
diff -r c7ba5bcbffb4 -r 3352f2de360a hgext/hgcia.py
--- a/hgext/hgcia.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/hgext/hgcia.py	Wed Aug 05 17:53:56 2009 -0300
@@ -40,7 +40,13 @@
 from mercurial.i18n import _
 from mercurial.node import *
 from mercurial import cmdutil, patch, templater, util, mail
-import email.Parser
+
+import sys
+
+if sys.version_info[:2] >= (2, 5): # Py 2.5+, Py3k
+    import email.parser as emailparser
+else: # Py 2.4
+    import email.Parser as emailparser
 
 import xmlrpclib
 from xml.sax import saxutils
@@ -198,7 +204,7 @@
         srv.hub.deliver(msg)
 
     def sendemail(self, address, data):
-        p = email.Parser.Parser()
+        p = emailparser.Parser()
         msg = p.parsestr(data)
         msg['Date'] = util.datestr(format="%a, %d %b %Y %H:%M:%S %1%2")
         msg['To'] = address
diff -r c7ba5bcbffb4 -r 3352f2de360a hgext/notify.py
--- a/hgext/notify.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/hgext/notify.py	Wed Aug 05 17:53:56 2009 -0300
@@ -70,7 +70,13 @@
 
 from mercurial.i18n import _
 from mercurial import patch, cmdutil, templater, util, mail
-import email.Parser, fnmatch, socket, time
+import fnmatch, socket, time, sys
+
+if sys.version_info[:2] >= (2, 5): # Py 2.5+, Py3k
+    import email.parser as emailparser
+else: # Py 2.4
+    import email.Parser as emailparser
+
 
 # template for single changeset can include email headers.
 single_template = '''
@@ -179,7 +185,7 @@
     def send(self, ctx, count, data):
         '''send message.'''
 
-        p = email.Parser.Parser()
+        p = emailparser.Parser()
         msg = p.parsestr(data)
 
         # store sender and subject
diff -r c7ba5bcbffb4 -r 3352f2de360a hgext/patchbomb.py
--- a/hgext/patchbomb.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/hgext/patchbomb.py	Wed Aug 05 17:53:56 2009 -0300
@@ -71,9 +71,21 @@
 hgrc(5) for details.
 '''
 
-import os, errno, socket, tempfile, cStringIO, time
-import email.MIMEMultipart, email.MIMEBase
-import email.Utils, email.Encoders, email.Generator
+import os, errno, socket, tempfile, cStringIO, time, sys
+
+if sys.version_info[:2] >= (2, 5): # Py 2.5+, Py3k
+    import email.mime.multipart as emailmimemultipart
+    import email.mime.base as emailmimebase
+    import email.utils as emailutils
+    import email.encoders as emailenconders
+    import email.generator as emailgenerator
+else: # Py 2.4
+    import email.MIMEMultipart as emailmimemultipart
+    import email.MIMEBase as emailmimebase
+    import email.Utils as emailutils
+    import email.Encoders as emailenconders
+    import email.Generator as emailgenerator
+
 from mercurial import cmdutil, commands, hg, mail, patch, util
 from mercurial.i18n import _
 from mercurial.node import bin
@@ -139,7 +151,7 @@
         body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
 
     if opts.get('attach') or opts.get('inline'):
-        msg = email.MIMEMultipart.MIMEMultipart()
+        msg = emailmimemultipart.MIMEMultipart()
         if body:
             msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
         p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
@@ -349,15 +361,15 @@
                 or prompt(ui, 'Subject:', 'A bundle for your repository'))
 
         body = getdescription('', sender)
-        msg = email.MIMEMultipart.MIMEMultipart()
+        msg = emailmimemultipart.MIMEMultipart()
         if body:
             msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
-        datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
+        datapart = emailmimebase.MIMEBase('application', 'x-mercurial-bundle')
         datapart.set_payload(bundle)
         bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
         datapart.add_header('Content-Disposition', 'attachment',
                             filename=bundlename)
-        email.Encoders.encode_base64(datapart)
+        emailenconders.encode_base64(datapart)
         msg.attach(datapart)
         msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
         return [(msg, subj)]
@@ -402,7 +414,7 @@
 
     first = True
 
-    sender_addr = email.Utils.parseaddr(sender)[1]
+    sender_addr = emailutils.parseaddr(sender)[1]
     sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
     sendmail = None
     for m, subj in msgs:
@@ -418,7 +430,7 @@
             first = False
 
         m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
-        m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
+        m['Date'] = emailutils.formatdate(start_time[0], localtime=True)
 
         start_time = (start_time[0] + 1, start_time[1])
         m['From'] = sender
@@ -434,7 +446,7 @@
                 fp = util.popen(os.environ['PAGER'], 'w')
             else:
                 fp = ui
-            generator = email.Generator.Generator(fp, mangle_from_=False)
+            generator = emailgenerator.Generator(fp, mangle_from_=False)
             try:
                 generator.flatten(m, 0)
                 fp.write('\n')
@@ -446,7 +458,7 @@
         elif opts.get('mbox'):
             ui.status(_('Writing '), subj, ' ...\n')
             fp = open(opts.get('mbox'), 'In-Reply-To' in m and 'ab+' or 'wb+')
-            generator = email.Generator.Generator(fp, mangle_from_=True)
+            generator = emailgenerator.Generator(fp, mangle_from_=True)
             date = time.ctime(start_time[0])
             fp.write('From %s %s\n' % (sender_addr, date))
             generator.flatten(m, 0)
@@ -459,7 +471,7 @@
             # Exim does not remove the Bcc field
             del m['Bcc']
             fp = cStringIO.StringIO()
-            generator = email.Generator.Generator(fp, mangle_from_=False)
+            generator = emailgenerator.Generator(fp, mangle_from_=False)
             generator.flatten(m, 0)
             sendmail(sender, to + bcc + cc, fp.getvalue())
 
diff -r c7ba5bcbffb4 -r 3352f2de360a mercurial/byterange.py
--- a/mercurial/byterange.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/mercurial/byterange.py	Wed Aug 05 17:53:56 2009 -0300
@@ -23,7 +23,11 @@
 import stat
 import urllib
 import urllib2
-import email.Utils
+
+if sys.version_info[:2] >= (2, 5): # Py 2,5+, Py3k
+    import email.utils as emailutils
+else: # Py 2.4
+    import email.Utils as emailutils
 
 if sys.version_info[0] == 2:
     _ftpwrapper = urllib.ftpwrapper
@@ -219,7 +223,7 @@
         localfile = urllib.url2pathname(file)
         stats = os.stat(localfile)
         size = stats[stat.ST_SIZE]
-        modified = email.Utils.formatdate(stats[stat.ST_MTIME])
+        modified = emailutils.formatdate(stats[stat.ST_MTIME])
         mtype = mimetypes.guess_type(file)[0]
         if host:
             host, port = urllib.splitport(host)
diff -r c7ba5bcbffb4 -r 3352f2de360a mercurial/mail.py
--- a/mercurial/mail.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/mercurial/mail.py	Wed Aug 05 17:53:56 2009 -0300
@@ -7,8 +7,16 @@
 
 from i18n import _
 import util, encoding
-import os, smtplib, socket, quopri
-import email.Header, email.MIMEText, email.Utils
+import os, sys, smtplib, socket, quopri
+
+if sys.version_info[:2] >= (2, 5): # Py 2.5+, Py3k
+    import email.header as emailheader
+    import email.mime.text as emailmimetext
+    import email.utils as emailutils
+else: # Py 2.4
+    import email.Header as emailheader
+    import email.MIMEText as emailmimetext
+    import email.Utils as emailutils
 
 def _smtp(ui):
     '''build an smtp connection and return a function to send mail'''
@@ -111,7 +119,7 @@
                 # We'll go with us-ascii as a fallback.
                 pass
 
-    msg = email.MIMEText.MIMEText(s, subtype, cs)
+    msg = emailmimetext.MIMEText(s, subtype, cs)
     if enc:
         del msg['Content-Transfer-Encoding']
         msg['Content-Transfer-Encoding'] = enc
@@ -157,14 +165,14 @@
     if not display:
         # split into words?
         s, cs = _encode(ui, s, charsets)
-        return str(email.Header.Header(s, cs))
+        return str(emailheader.Header(s, cs))
     return s
 
 def addressencode(ui, address, charsets=None, display=False):
     '''Turns address into RFC-2047 compliant header.'''
     if display or not address:
         return address or ''
-    name, addr = email.Utils.parseaddr(address)
+    name, addr = emailutils.parseaddr(address)
     name = headencode(ui, name, charsets)
     try:
         acc, dom = addr.split('@')
@@ -179,7 +187,7 @@
             addr = addr.encode('ascii')
         except UnicodeDecodeError:
             raise util.Abort(_('invalid local address: %s') % addr)
-    return email.Utils.formataddr((name, addr))
+    return emailutils.formataddr((name, addr))
 
 def mimeencode(ui, s, charsets=None, display=False):
     '''creates mime text object, encodes it if needed, and sets
@@ -187,4 +195,4 @@
     cs = 'us-ascii'
     if not display:
         s, cs = _encode(ui, s, charsets)
-    return email.MIMEText.MIMEText(s, 'plain', cs)
+    return emailmimetext.MIMEText(s, 'plain', cs)
diff -r c7ba5bcbffb4 -r 3352f2de360a mercurial/patch.py
--- a/mercurial/patch.py	Wed Aug 05 17:53:56 2009 -0300
+++ b/mercurial/patch.py	Wed Aug 05 17:53:56 2009 -0300
@@ -9,9 +9,14 @@
 from i18n import _
 from node import hex, nullid, short
 import base85, mdiff, util, diffhelpers, copies
-import cStringIO, email.Parser, os, re, math
+import cStringIO, os, re, math
 import sys, tempfile, zlib
 
+if sys.version_info[:2] >= (2, 5): # Py 2.5+, Py3k
+    import email.parser as emailparser
+else: # Py 2.4
+    import email.Parser as emailparser
+
 gitre = re.compile('diff --git a/(.*) b/(.*)')
 
 class PatchError(Exception):
@@ -71,7 +76,7 @@
     fd, tmpname = tempfile.mkstemp(prefix='hg-patch-')
     tmpfp = os.fdopen(fd, 'w')
     try:
-        msg = email.Parser.Parser().parse(fileobj)
+        msg = emailparser.Parser().parse(fileobj)
 
         subject = msg['Subject']
         user = msg['From']



More information about the Mercurial-devel mailing list