Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
gh-133311: have MIMEImage respect policy.max_line_length#133322
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_lengthsetting from the provided EmailPolicy when Base64-encoding image payloads.- Adds imports for base64 and textwrap.wrap- Replaces the old `set_payload(_imagedata)` + `_encoder(self)` calls with an explicit Base64 encode, wrap to `policy.max_line_length` (default 76), and then calls `set_payload` with the wrapped text.- Ensures CRLF line endings and proper headers are still applied by set_payload.Fixes issuepython#133311: MIMEImage’s policy argument not taking effect.
python-cla-botbot commentedMay 2, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_lengthsetting from the provided EmailPolicy when Base64-encoding image payloads.- Adds imports for base64 and textwrap.wrap- Replaces the old `self.set_payload(_imagedata)` + `_encoder(self)` calls with an explicit Base64 encode, wrap to `policy.max_line_length` (default 76), and then calls `self.set_payload` with the wrapped text.- Ensures CRLF line endings and proper headers are still applied by set_payload.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
self.set_payload(_imagedata) | ||
_encoder(self) | ||
#self.set_payload(_imagedata) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Should we remove these comments?
@@ -8,6 +8,8 @@ | |||
from email import encoders | |||
from email.mime.nonmultipart import MIMENonMultipart | |||
import base64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
It's best to sort the imports, although there won't be any negative impact if we don't do so :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Does this repo allow some sort of pre-commit? Like isort and blake hooks. Those things can help do this automatically.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Wait, I do see a pre-commit setup :https://github.com/python/cpython/blob/main/.pre-commit-config.yaml
The CIs don't seem to be imposing these?
Linter failures :https://github.com/python/cpython/actions/runs/14805087091/job/41571892036?pr=133322
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The title of this PR should not be bpo: It should be gh as this is a github issue.https://bugs.python.org was long retired
dkg commentedMay 8, 2025
As noted over on#133311 this seems to affect |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
This needs a test.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
We only need one news entry, and the title is in the wrong format, so delete this one.
@@ -0,0 +1 @@ | |||
Fix email.mime.image.MIMEImage to respect policy.max_line_length when Base64-encoding image payloads. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Fix email.mime.image.MIMEImage to respectpolicy.max_line_length when Base64-encoding image payloads. | |
Fix:class:`email.mime.image.MIMEImage` not respecting:attr:`~email.policy.Policy.max_line_length` when Base64-encoding image payloads. |
@@ -8,6 +8,8 @@ | |||
from email import encoders | |||
from email.mime.nonmultipart import MIMENonMultipart | |||
import base64 | |||
from textwrap import wrap |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
base64
andtextwrap
are expensive imports. It might be a good idea to move them to the method to reduce import time.
Uh oh!
There was an error while loading.Please reload this page.
This patch updates Lib/email/mime/image.py so that MIMEImage honors the max_line_length setting from the provided EmailPolicy when Base64-encoding image payloads.
set_payload(_imagedata)
+_encoder(self)
calls with an explicit Base64 encode, wrap topolicy.max_line_length
(default 76), and then callsset_payload
with the wrapped text.Fixes issue#133311: MIMEImage’s policy argument not taking effect.
email.mime.image.MIMEImage
'spolicy
argument doesn't take effect #133311