123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # 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.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)
|