Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
775632ba
Commit
775632ba
authored
Dec 12, 2013
by
R David Murray
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#19957: Simplify encode_7or8bit now that _payload is always str.
Patch by Vajrasky Kok, test enhancement by me.
parent
cd0cb8cc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
14 deletions
+12
-14
Lib/email/encoders.py
Lib/email/encoders.py
+4
-13
Lib/test/test_email/test_email.py
Lib/test/test_email/test_email.py
+8
-1
No files found.
Lib/email/encoders.py
View file @
775632ba
...
...
@@ -54,21 +54,12 @@ def encode_7or8bit(msg):
# There's no payload. For backwards compatibility we use 7bit
msg
[
'Content-Transfer-Encoding'
]
=
'7bit'
return
# We play a trick to make this go fast. If
encoding/decode to ASCII
#
succeeds,
we know the data must be 7bit, otherwise treat it as 8bit.
# We play a trick to make this go fast. If
decoding from ASCII succeeds,
# we know the data must be 7bit, otherwise treat it as 8bit.
try
:
if
isinstance
(
orig
,
str
):
orig
.
encode
(
'ascii'
)
else
:
orig
.
decode
(
'ascii'
)
orig
.
decode
(
'ascii'
)
except
UnicodeError
:
charset
=
msg
.
get_charset
()
output_cset
=
charset
and
charset
.
output_charset
# iso-2022-* is non-ASCII but encodes to a 7-bit representation
if
output_cset
and
output_cset
.
lower
().
startswith
(
'iso-2022-'
):
msg
[
'Content-Transfer-Encoding'
]
=
'7bit'
else
:
msg
[
'Content-Transfer-Encoding'
]
=
'8bit'
msg
[
'Content-Transfer-Encoding'
]
=
'8bit'
else
:
msg
[
'Content-Transfer-Encoding'
]
=
'7bit'
...
...
Lib/test/test_email/test_email.py
View file @
775632ba
...
...
@@ -765,8 +765,15 @@ class TestEncoders(unittest.TestCase):
# whose output character set is 7bit gets a transfer-encoding
# of 7bit.
eq
=
self
.
assertEqual
msg
=
MIMEText
(
'文'
,
_charset
=
'euc-jp'
)
msg
=
MIMEText
(
'文
\
n
'
,
_charset
=
'euc-jp'
)
eq
(
msg
[
'content-transfer-encoding'
],
'7bit'
)
eq
(
msg
.
as_string
(),
textwrap
.
dedent
(
"""
\
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
\
x1b
$BJ8
\
x1b
(B
"""
))
def
test_qp_encode_latin1
(
self
):
msg
=
MIMEText
(
'
\
xe1
\
xf6
\
n
'
,
'text'
,
'ISO-8859-1'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment