NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)