parser.py (1787B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\email\parser.py 2 __all__ = ['Parser', 'HeaderParser'] 3 import warnings 4 from cStringIO import StringIO 5 from email.feedparser import FeedParser 6 from email.message import Message 7 8 class Parser: 9 10 def __init__(self, *args, **kws): 11 if len(args) >= 1: 12 if '_class' in kws: 13 raise TypeError("Multiple values for keyword arg '_class'") 14 kws['_class'] = args[0] 15 if len(args) == 2: 16 if 'strict' in kws: 17 raise TypeError("Multiple values for keyword arg 'strict'") 18 kws['strict'] = args[1] 19 if len(args) > 2: 20 raise TypeError('Too many arguments') 21 if '_class' in kws: 22 self._class = kws['_class'] 23 del kws['_class'] 24 else: 25 self._class = Message 26 if 'strict' in kws: 27 warnings.warn("'strict' argument is deprecated (and ignored)", DeprecationWarning, 2) 28 del kws['strict'] 29 if kws: 30 raise TypeError('Unexpected keyword arguments') 31 32 def parse(self, fp, headersonly = False): 33 feedparser = FeedParser(self._class) 34 if headersonly: 35 feedparser._set_headersonly() 36 while True: 37 data = fp.read(8192) 38 if not data: 39 break 40 feedparser.feed(data) 41 42 return feedparser.close() 43 44 def parsestr(self, text, headersonly = False): 45 return self.parse(StringIO(text), headersonly=headersonly) 46 47 48 class HeaderParser(Parser): 49 50 def parse(self, fp, headersonly = True): 51 return Parser.parse(self, fp, True) 52 53 def parsestr(self, text, headersonly = True): 54 return Parser.parsestr(self, text, True)