mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
#20476: add a message_factory policy attribute to email.
This commit is contained in:
parent
37df068e86
commit
06ed218ed0
9 changed files with 128 additions and 66 deletions
|
@ -154,6 +154,8 @@ class Policy(_PolicyBase, metaclass=abc.ABCMeta):
|
|||
them. This is used when the message is being
|
||||
serialized by a generator. Default: True.
|
||||
|
||||
message_factory -- the class to use to create new message objects.
|
||||
|
||||
"""
|
||||
|
||||
raise_on_defect = False
|
||||
|
@ -161,6 +163,8 @@ class Policy(_PolicyBase, metaclass=abc.ABCMeta):
|
|||
cte_type = '8bit'
|
||||
max_line_length = 78
|
||||
mangle_from_ = False
|
||||
# XXX To avoid circular imports, this is set in email.message.
|
||||
message_factory = None
|
||||
|
||||
def handle_defect(self, obj, defect):
|
||||
"""Based on policy, either raise defect or call register_defect.
|
||||
|
|
|
@ -24,7 +24,6 @@ __all__ = ['FeedParser', 'BytesFeedParser']
|
|||
import re
|
||||
|
||||
from email import errors
|
||||
from email import message
|
||||
from email._policybase import compat32
|
||||
from collections import deque
|
||||
from io import StringIO
|
||||
|
@ -148,13 +147,7 @@ class FeedParser:
|
|||
self.policy = policy
|
||||
self._old_style_factory = False
|
||||
if _factory is None:
|
||||
# What this should be:
|
||||
#self._factory = policy.default_message_factory
|
||||
# but, because we are post 3.4 feature freeze, fix with temp hack:
|
||||
if self.policy is compat32:
|
||||
self._factory = message.Message
|
||||
else:
|
||||
self._factory = message.EmailMessage
|
||||
self._factory = policy.message_factory
|
||||
else:
|
||||
self._factory = _factory
|
||||
try:
|
||||
|
|
|
@ -4,18 +4,17 @@
|
|||
|
||||
"""Basic message object for the email package object model."""
|
||||
|
||||
__all__ = ['Message']
|
||||
__all__ = ['Message', 'EmailMessage']
|
||||
|
||||
import re
|
||||
import uu
|
||||
import quopri
|
||||
import warnings
|
||||
from io import BytesIO, StringIO
|
||||
|
||||
# Intrapackage imports
|
||||
from email import utils
|
||||
from email import errors
|
||||
from email._policybase import compat32
|
||||
from email._policybase import Policy, compat32
|
||||
from email import charset as _charset
|
||||
from email._encoded_words import decode_b
|
||||
Charset = _charset.Charset
|
||||
|
@ -1163,3 +1162,6 @@ class EmailMessage(MIMEPart):
|
|||
super().set_content(*args, **kw)
|
||||
if 'MIME-Version' not in self:
|
||||
self['MIME-Version'] = '1.0'
|
||||
|
||||
# Set message_factory on Policy here to avoid a circular import.
|
||||
Policy.message_factory = Message
|
||||
|
|
|
@ -7,6 +7,7 @@ from email._policybase import Policy, Compat32, compat32, _extend_docstrings
|
|||
from email.utils import _has_surrogates
|
||||
from email.headerregistry import HeaderRegistry as HeaderRegistry
|
||||
from email.contentmanager import raw_data_manager
|
||||
from email.message import EmailMessage
|
||||
|
||||
__all__ = [
|
||||
'Compat32',
|
||||
|
@ -82,6 +83,7 @@ class EmailPolicy(Policy):
|
|||
|
||||
"""
|
||||
|
||||
message_factory = EmailMessage
|
||||
utf8 = False
|
||||
refold_source = 'long'
|
||||
header_factory = HeaderRegistry()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue