123 lines · 2.8 KB · Python
RawDownload
# Copyright (C) 2001-2006 Python Software Foundation# Author: Barry Warsaw# Contact: email-sig@python.org """A package for parsing, handling, and generating email messages.""" __version__ = '4.0.1' __all__ = [    # Old names    'base64MIME',    'Charset',    'Encoders',    'Errors',    'Generator',    'Header',    'Iterators',    'Message',    'MIMEAudio',    'MIMEBase',    'MIMEImage',    'MIMEMessage',    'MIMEMultipart',    'MIMENonMultipart',    'MIMEText',    'Parser',    'quopriMIME',    'Utils',    'message_from_string',    'message_from_file',    # new names    'base64mime',    'charset',    'encoders',    'errors',    'generator',    'header',    'iterators',    'message',    'mime',    'parser',    'quoprimime',    'utils',    ]  # Some convenience routines.  Don't import Parser and Message as side-effects# of importing email since those cascadingly import most of the rest of the# email package.def message_from_string(s, *args, **kws):    """Parse a string into a Message object model.     Optional _class and strict are passed to the Parser constructor.    """    from email.parser import Parser    return Parser(*args, **kws).parsestr(s)  def message_from_file(fp, *args, **kws):    """Read a file and parse its contents into a Message object model.     Optional _class and strict are passed to the Parser constructor.    """    from email.parser import Parser    return Parser(*args, **kws).parse(fp)  # Lazy loading to provide name mapping from new-style names (PEP 8 compatible# email 4.0 module names), to old-style names (email 3.0 module names).import sys class LazyImporter(object):    def __init__(self, module_name):        self.__name__ = 'email.' + module_name     def __getattr__(self, name):        __import__(self.__name__)        mod = sys.modules[self.__name__]        self.__dict__.update(mod.__dict__)        return getattr(mod, name)  _LOWERNAMES = [    # email.<old name> -> email.<new name is lowercased old name>    'Charset',    'Encoders',    'Errors',    'FeedParser',    'Generator',    'Header',    'Iterators',    'Message',    'Parser',    'Utils',    'base64MIME',    'quopriMIME',    ] _MIMENAMES = [    # email.MIME<old name> -> email.mime.<new name is lowercased old name>    'Audio',    'Base',    'Image',    'Message',    'Multipart',    'NonMultipart',    'Text',    ] for _name in _LOWERNAMES:    importer = LazyImporter(_name.lower())    sys.modules['email.' + _name] = importer    setattr(sys.modules['email'], _name, importer)  import email.mimefor _name in _MIMENAMES:    importer = LazyImporter('mime.' + _name.lower())    sys.modules['email.MIME' + _name] = importer    setattr(sys.modules['email'], 'MIME' + _name, importer)    setattr(sys.modules['email.mime'], _name, importer)