mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
#11731: simplify/enhance parser/generator API by introducing policy objects.
This new interface will also allow for future planned enhancements in control over the parser/generator without requiring any additional complexity in the parser/generator API. Patch reviewed by Éric Araujo and Barry Warsaw.
This commit is contained in:
parent
ce16be91dc
commit
3edd22ac95
13 changed files with 912 additions and 81 deletions
|
@ -11,11 +11,12 @@ from io import StringIO, TextIOWrapper
|
|||
|
||||
from email.feedparser import FeedParser
|
||||
from email.message import Message
|
||||
from email import policy
|
||||
|
||||
|
||||
|
||||
class Parser:
|
||||
def __init__(self, _class=Message):
|
||||
def __init__(self, _class=Message, *, policy=policy.default):
|
||||
"""Parser of RFC 2822 and MIME email messages.
|
||||
|
||||
Creates an in-memory object tree representing the email message, which
|
||||
|
@ -30,8 +31,14 @@ class Parser:
|
|||
_class is the class to instantiate for new message objects when they
|
||||
must be created. This class must have a constructor that can take
|
||||
zero arguments. Default is Message.Message.
|
||||
|
||||
The policy keyword specifies a policy object that controls a number of
|
||||
aspects of the parser's operation. The default policy maintains
|
||||
backward compatibility.
|
||||
|
||||
"""
|
||||
self._class = _class
|
||||
self.policy = policy
|
||||
|
||||
def parse(self, fp, headersonly=False):
|
||||
"""Create a message structure from the data in a file.
|
||||
|
@ -41,7 +48,7 @@ class Parser:
|
|||
parsing after reading the headers or not. The default is False,
|
||||
meaning it parses the entire contents of the file.
|
||||
"""
|
||||
feedparser = FeedParser(self._class)
|
||||
feedparser = FeedParser(self._class, policy=self.policy)
|
||||
if headersonly:
|
||||
feedparser._set_headersonly()
|
||||
while True:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue