| # Copyright (C) 2001-2006 Python Software Foundation |
| # Author: Barry Warsaw |
| # Contact: [email protected] |
| |
| """A package for parsing, handling, and generating email messages.""" |
| |
| __version__ = '4.0.3' |
| |
| __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.mime |
| for _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) |