#2622 Import errors in email.message, from a py2app standalone application.

Patch by Mads Kiilerich, Reviewed by Barry Warsaw.
This commit is contained in:
Amaury Forgeot d'Arc 2009-07-11 14:33:51 +00:00
parent c91cbb948a
commit 74b8d333b7
9 changed files with 21 additions and 18 deletions

View file

@ -20,7 +20,7 @@ in To:, From:, Cc:, etc. fields, as well as Subject: lines.
This module does not do the line wrapping or end-of-line character conversion This module does not do the line wrapping or end-of-line character conversion
necessary for proper internationalized headers; it only does dumb encoding and necessary for proper internationalized headers; it only does dumb encoding and
decoding. To deal with the various line wrapping issues, use the email.Header decoding. To deal with the various line wrapping issues, use the email.header
module. module.
""" """
@ -167,7 +167,7 @@ def decode(s, convert_eols=None):
This function does not parse a full MIME header value encoded with This function does not parse a full MIME header value encoded with
base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high
level email.Header class for that functionality. level email.header class for that functionality.
""" """
if not s: if not s:
return s return s

View file

@ -62,7 +62,7 @@ def decode_header(header):
header, otherwise a lower-case string containing the name of the character header, otherwise a lower-case string containing the name of the character
set specified in the encoded string. set specified in the encoded string.
An email.Errors.HeaderParseError may be raised when certain decoding error An email.errors.HeaderParseError may be raised when certain decoding error
occurs (e.g. a base64 decoding exception). occurs (e.g. a base64 decoding exception).
""" """
# If no encoding, just return the header # If no encoding, just return the header
@ -337,8 +337,8 @@ class Header:
# different charsets and/or encodings, and the resulting header will # different charsets and/or encodings, and the resulting header will
# accurately reflect each setting. # accurately reflect each setting.
# #
# Each encoding can be email.Utils.QP (quoted-printable, for # Each encoding can be email.utils.QP (quoted-printable, for
# ASCII-like character sets like iso-8859-1), email.Utils.BASE64 # ASCII-like character sets like iso-8859-1), email.utils.BASE64
# (Base64, for non-ASCII like character sets like KOI8-R and # (Base64, for non-ASCII like character sets like KOI8-R and
# iso-2022-jp), or None (no encoding). # iso-2022-jp), or None (no encoding).
# #

View file

@ -129,7 +129,7 @@ class Message:
"From ". For more flexibility, use the flatten() method of a "From ". For more flexibility, use the flatten() method of a
Generator instance. Generator instance.
""" """
from email.Generator import Generator from email.generator import Generator
fp = StringIO() fp = StringIO()
g = Generator(fp) g = Generator(fp)
g.flatten(self, unixfrom=unixfrom) g.flatten(self, unixfrom=unixfrom)
@ -787,4 +787,4 @@ class Message:
return [part.get_content_charset(failobj) for part in self.walk()] return [part.get_content_charset(failobj) for part in self.walk()]
# I.e. def walk(self): ... # I.e. def walk(self): ...
from email.Iterators import walk from email.iterators import walk

View file

@ -11,7 +11,7 @@ character set, but that includes some 8-bit characters that are normally not
allowed in email bodies or headers. allowed in email bodies or headers.
Quoted-printable is very space-inefficient for encoding binary files; use the Quoted-printable is very space-inefficient for encoding binary files; use the
email.base64MIME module for that instead. email.base64mime module for that instead.
This module provides an interface to encode and decode both headers and bodies This module provides an interface to encode and decode both headers and bodies
with quoted-printable encoding. with quoted-printable encoding.
@ -23,7 +23,7 @@ in To:/From:/Cc: etc. fields, as well as Subject: lines.
This module does not do the line wrapping or end-of-line character This module does not do the line wrapping or end-of-line character
conversion necessary for proper internationalized headers; it only conversion necessary for proper internationalized headers; it only
does dumb encoding and decoding. To deal with the various line does dumb encoding and decoding. To deal with the various line
wrapping issues, use the email.Header module. wrapping issues, use the email.header module.
""" """
__all__ = [ __all__ = [
@ -330,7 +330,7 @@ def header_decode(s):
This function does not parse a full MIME header value encoded with This function does not parse a full MIME header value encoded with
quoted-printable (like =?iso-8895-1?q?Hello_World?=) -- please use quoted-printable (like =?iso-8895-1?q?Hello_World?=) -- please use
the high level email.Header class for that functionality. the high level email.header class for that functionality.
""" """
s = s.replace('_', ' ') s = s.replace('_', ' ')
return re.sub(r'=\w{2}', _unquote_match, s) return re.sub(r'=\w{2}', _unquote_match, s)

View file

@ -6,9 +6,9 @@ import unittest
from test.test_support import run_unittest from test.test_support import run_unittest
from email.test.test_email import TestEmailBase from email.test.test_email import TestEmailBase
from email.Charset import Charset from email.charset import Charset
from email.Header import Header, decode_header from email.header import Header, decode_header
from email.Message import Message from email.message import Message
# We're compatible with Python 2.3, but it doesn't have the built-in Asian # We're compatible with Python 2.3, but it doesn't have the built-in Asian
# codecs, so we have to skip all these tests. # codecs, so we have to skip all these tests.

View file

@ -17,7 +17,7 @@ from test.test_support import TestSkipped
import email import email
from email import __file__ as testfile from email import __file__ as testfile
from email.Iterators import _structure from email.iterators import _structure
def openfile(filename): def openfile(filename):
from os.path import join, dirname, abspath from os.path import join, dirname, abspath

View file

@ -99,11 +99,11 @@ class MaildirTestCase(unittest.TestCase):
def test_unix_mbox(self): def test_unix_mbox(self):
### should be better! ### should be better!
import email.Parser import email.parser
fname = self.createMessage("cur", True) fname = self.createMessage("cur", True)
n = 0 n = 0
for msg in mailbox.PortableUnixMailbox(open(fname), for msg in mailbox.PortableUnixMailbox(open(fname),
email.Parser.Parser().parse): email.parser.Parser().parse):
n += 1 n += 1
self.assertEqual(msg["subject"], "Simple Test") self.assertEqual(msg["subject"], "Simple Test")
self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE)) self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))

View file

@ -1,6 +1,6 @@
"""Manage HTTP Response Headers """Manage HTTP Response Headers
Much of this module is red-handedly pilfered from email.Message in the stdlib, Much of this module is red-handedly pilfered from email.message in the stdlib,
so portions are Copyright (C) 2001,2002 Python Software Foundation, and were so portions are Copyright (C) 2001,2002 Python Software Foundation, and were
written by Barry Warsaw. written by Barry Warsaw.
""" """
@ -174,7 +174,7 @@ class Headers:
h.add_header('content-disposition', 'attachment', filename='bud.gif') h.add_header('content-disposition', 'attachment', filename='bud.gif')
Note that unlike the corresponding 'email.Message' method, this does Note that unlike the corresponding 'email.message' method, this does
*not* handle '(charset, language, value)' tuples: all values must be *not* handle '(charset, language, value)' tuples: all values must be
strings or None. strings or None.
""" """

View file

@ -350,6 +350,9 @@ Core and Builtins
Library Library
------- -------
- Issue #2622: Fixed an ImportError when importing email.messsage from a
standalone application built with py2exe or py2app.
- Issue #6459: distutils.command.build_ext.get_export_symbols now uses the - Issue #6459: distutils.command.build_ext.get_export_symbols now uses the
"PyInit" prefix, rather than "init". "PyInit" prefix, rather than "init".