mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
#20476: use EmailMessage as factory if non-compat32 policy is used.
In 3.5 I will fix this right by adding a message_factory attribute to the policy.
This commit is contained in:
parent
11c5afd138
commit
aa21297457
4 changed files with 37 additions and 10 deletions
|
@ -126,7 +126,7 @@ class BufferedSubFile(object):
|
|||
class FeedParser:
|
||||
"""A feed-style parser of email."""
|
||||
|
||||
def __init__(self, _factory=message.Message, *, policy=compat32):
|
||||
def __init__(self, _factory=None, *, policy=compat32):
|
||||
"""_factory is called with no arguments to create a new message obj
|
||||
|
||||
The policy keyword specifies a policy object that controls a number of
|
||||
|
@ -134,14 +134,23 @@ class FeedParser:
|
|||
backward compatibility.
|
||||
|
||||
"""
|
||||
self._factory = _factory
|
||||
self.policy = policy
|
||||
try:
|
||||
_factory(policy=self.policy)
|
||||
self._factory_kwds = lambda: {'policy': self.policy}
|
||||
except TypeError:
|
||||
# Assume this is an old-style factory
|
||||
self._factory_kwds = lambda: {}
|
||||
self._factory_kwds = lambda: {'policy': self.policy}
|
||||
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
|
||||
else:
|
||||
self._factory = _factory
|
||||
try:
|
||||
_factory(policy=self.policy)
|
||||
except TypeError:
|
||||
# Assume this is an old-style factory
|
||||
self._factory_kwds = lambda: {}
|
||||
self._input = BufferedSubFile()
|
||||
self._msgstack = []
|
||||
self._parse = self._parsegen().__next__
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue