source: python/trunk/Lib/email/__init__.py

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1# Copyright (C) 2001-2006 Python Software Foundation
2# Author: Barry Warsaw
3# Contact: email-sig@python.org
4
5"""A package for parsing, handling, and generating email messages."""
6
7__version__ = '4.0.3'
8
9__all__ = [
10 # Old names
11 'base64MIME',
12 'Charset',
13 'Encoders',
14 'Errors',
15 'Generator',
16 'Header',
17 'Iterators',
18 'Message',
19 'MIMEAudio',
20 'MIMEBase',
21 'MIMEImage',
22 'MIMEMessage',
23 'MIMEMultipart',
24 'MIMENonMultipart',
25 'MIMEText',
26 'Parser',
27 'quopriMIME',
28 'Utils',
29 'message_from_string',
30 'message_from_file',
31 # new names
32 'base64mime',
33 'charset',
34 'encoders',
35 'errors',
36 'generator',
37 'header',
38 'iterators',
39 'message',
40 'mime',
41 'parser',
42 'quoprimime',
43 'utils',
44 ]
45
46
47
48
49# Some convenience routines. Don't import Parser and Message as side-effects
50# of importing email since those cascadingly import most of the rest of the
51# email package.
52def message_from_string(s, *args, **kws):
53 """Parse a string into a Message object model.
54
55 Optional _class and strict are passed to the Parser constructor.
56 """
57 from email.parser import Parser
58 return Parser(*args, **kws).parsestr(s)
59
60
61def message_from_file(fp, *args, **kws):
62 """Read a file and parse its contents into a Message object model.
63
64 Optional _class and strict are passed to the Parser constructor.
65 """
66 from email.parser import Parser
67 return Parser(*args, **kws).parse(fp)
68
69
70
71
72# Lazy loading to provide name mapping from new-style names (PEP 8 compatible
73# email 4.0 module names), to old-style names (email 3.0 module names).
74import sys
75
76class LazyImporter(object):
77 def __init__(self, module_name):
78 self.__name__ = 'email.' + module_name
79
80 def __getattr__(self, name):
81 __import__(self.__name__)
82 mod = sys.modules[self.__name__]
83 self.__dict__.update(mod.__dict__)
84 return getattr(mod, name)
85
86
87_LOWERNAMES = [
88 # email.<old name> -> email.<new name is lowercased old name>
89 'Charset',
90 'Encoders',
91 'Errors',
92 'FeedParser',
93 'Generator',
94 'Header',
95 'Iterators',
96 'Message',
97 'Parser',
98 'Utils',
99 'base64MIME',
100 'quopriMIME',
101 ]
102
103_MIMENAMES = [
104 # email.MIME<old name> -> email.mime.<new name is lowercased old name>
105 'Audio',
106 'Base',
107 'Image',
108 'Message',
109 'Multipart',
110 'NonMultipart',
111 'Text',
112 ]
113
114for _name in _LOWERNAMES:
115 importer = LazyImporter(_name.lower())
116 sys.modules['email.' + _name] = importer
117 setattr(sys.modules['email'], _name, importer)
118
119
120import email.mime
121for _name in _MIMENAMES:
122 importer = LazyImporter('mime.' + _name.lower())
123 sys.modules['email.MIME' + _name] = importer
124 setattr(sys.modules['email'], 'MIME' + _name, importer)
125 setattr(sys.modules['email.mime'], _name, importer)
Note: See TracBrowser for help on using the repository browser.