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
ceaa8b1d
Commit
ceaa8b1d
authored
Feb 09, 2013
by
R David Murray
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#16564: Fix regression in use of encoders.encode_noop with binary data.
parent
d489c7a0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
0 deletions
+28
-0
Lib/email/encoders.py
Lib/email/encoders.py
+6
-0
Lib/email/generator.py
Lib/email/generator.py
+3
-0
Lib/email/test/test_email.py
Lib/email/test/test_email.py
+16
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/email/encoders.py
View file @
ceaa8b1d
...
...
@@ -76,3 +76,9 @@ def encode_7or8bit(msg):
def
encode_noop
(
msg
):
"""Do nothing."""
# Well, not quite *nothing*: in Python3 we have to turn bytes into a string
# in our internal surrogateescaped form in order to keep the model
# consistent.
orig
=
msg
.
get_payload
()
if
not
isinstance
(
orig
,
str
):
msg
.
set_payload
(
orig
.
decode
(
'ascii'
,
'surrogateescape'
))
Lib/email/generator.py
View file @
ceaa8b1d
...
...
@@ -397,6 +397,9 @@ class BytesGenerator(Generator):
else
:
super
(
BytesGenerator
,
self
).
_handle_text
(
msg
)
# Default body handler
_writeBody
=
_handle_text
@
classmethod
def
_compile_re
(
cls
,
s
,
flags
):
return
re
.
compile
(
s
.
encode
(
'ascii'
),
flags
)
...
...
Lib/email/test/test_email.py
View file @
ceaa8b1d
...
...
@@ -1438,6 +1438,22 @@ class TestMIMEApplication(unittest.TestCase):
eq
(
msg
.
get_payload
().
strip
(),
'+vv8/f7/'
)
eq
(
msg
.
get_payload
(
decode
=
True
),
bytesdata
)
def
test_body_with_encode_noop
(
self
):
# Issue 16564: This does not produce an RFC valid message, since to be
# valid it should have a CTE of binary. But the below works in
# Python2, and is documented as working this way.
bytesdata
=
b'
\
xfa
\
xfb
\
xfc
\
xfd
\
xfe
\
xff
'
msg
=
MIMEApplication
(
bytesdata
,
_encoder
=
encoders
.
encode_noop
)
# Treated as a string, this will be invalid code points.
self
.
assertEqual
(
msg
.
get_payload
(),
'
\
uFFFD
'
*
len
(
bytesdata
))
self
.
assertEqual
(
msg
.
get_payload
(
decode
=
True
),
bytesdata
)
s
=
BytesIO
()
g
=
BytesGenerator
(
s
)
g
.
flatten
(
msg
)
wireform
=
s
.
getvalue
()
msg2
=
email
.
message_from_bytes
(
wireform
)
self
.
assertEqual
(
msg
.
get_payload
(),
'
\
uFFFD
'
*
len
(
bytesdata
))
self
.
assertEqual
(
msg2
.
get_payload
(
decode
=
True
),
bytesdata
)
# Test the basic MIMEText class
...
...
Misc/NEWS
View file @
ceaa8b1d
...
...
@@ -215,6 +215,9 @@ Core and Builtins
Library
-------
- Issue #16564: Fixed regression relative to Python2 in the operation of
email.encoders.encode_noop when used with binary data.
- Issue #10355: In SpooledTemporaryFile class mode, name, encoding and
newlines properties now work for unrolled files. Obsoleted and never
working on Python 3 xreadline method now removed.
...
...
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