mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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.0a2'
 | 
						||
 | 
						||
__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)
 |