mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
#14380: Make actual default match docs, fix __init__ order.
Éric pointed out that given that the default was documented as None, someone would reasonably pass that to get the default behavior. In fixing the code to use None, I noticed that the change to _charset was being done after it had already been passed to MIMENonMultipart. The change to the test verifies that the order is now correct.
This commit is contained in:
parent
8680bcc5db
commit
42243c4dca
2 changed files with 10 additions and 9 deletions
|
@ -14,7 +14,7 @@ from email.mime.nonmultipart import MIMENonMultipart
|
||||||
class MIMEText(MIMENonMultipart):
|
class MIMEText(MIMENonMultipart):
|
||||||
"""Class for generating text/* type MIME documents."""
|
"""Class for generating text/* type MIME documents."""
|
||||||
|
|
||||||
def __init__(self, _text, _subtype='plain', _charset='us-ascii'):
|
def __init__(self, _text, _subtype='plain', _charset=None):
|
||||||
"""Create a text/* type MIME document.
|
"""Create a text/* type MIME document.
|
||||||
|
|
||||||
_text is the string for this message object.
|
_text is the string for this message object.
|
||||||
|
@ -25,16 +25,18 @@ class MIMEText(MIMENonMultipart):
|
||||||
header. This defaults to "us-ascii". Note that as a side-effect, the
|
header. This defaults to "us-ascii". Note that as a side-effect, the
|
||||||
Content-Transfer-Encoding header will also be set.
|
Content-Transfer-Encoding header will also be set.
|
||||||
"""
|
"""
|
||||||
MIMENonMultipart.__init__(self, 'text', _subtype,
|
|
||||||
**{'charset': _charset})
|
|
||||||
|
|
||||||
# If _charset was defualted, check to see see if there are non-ascii
|
# If no _charset was specified, check to see see if there are non-ascii
|
||||||
# characters present. Default to utf-8 if there are.
|
# characters present. If not, use 'us-ascii', otherwise use utf-8.
|
||||||
# XXX: This can be removed once #7304 is fixed.
|
# XXX: This can be removed once #7304 is fixed.
|
||||||
if _charset =='us-ascii':
|
if _charset is None:
|
||||||
try:
|
try:
|
||||||
_text.encode(_charset)
|
_text.encode('us-ascii')
|
||||||
|
_charset = 'us-ascii'
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
_charset = 'utf-8'
|
_charset = 'utf-8'
|
||||||
|
|
||||||
|
MIMENonMultipart.__init__(self, 'text', _subtype,
|
||||||
|
**{'charset': _charset})
|
||||||
|
|
||||||
self.set_payload(_text, _charset)
|
self.set_payload(_text, _charset)
|
||||||
|
|
|
@ -621,15 +621,14 @@ class TestMessageAPI(TestEmailBase):
|
||||||
# Issue 14291
|
# Issue 14291
|
||||||
m = MIMEText('É testabc\n')
|
m = MIMEText('É testabc\n')
|
||||||
self.assertEqual(str(m),textwrap.dedent("""\
|
self.assertEqual(str(m),textwrap.dedent("""\
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
MIME-Version: 1.0
|
||||||
Content-Transfer-Encoding: base64
|
Content-Transfer-Encoding: base64
|
||||||
|
|
||||||
w4kgdGVzdGFiYwo=
|
w4kgdGVzdGFiYwo=
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Test the email.encoders module
|
# Test the email.encoders module
|
||||||
class TestEncoders(unittest.TestCase):
|
class TestEncoders(unittest.TestCase):
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue