[Python-checkins] r42819 - in sandbox/trunk/emailpkg/4.0: MANIFEST email/_parseaddr.py email/base64mime.py email/charset.py email/encoders.py email/feedparser.py email/generator.py email/header.py email/iterators.py email/message.py email/mime/application.py email/mime/audio.py email/mime/base.py email/mime/image.py email/mime/message.py email/mime/multipart.py email/mime/nonmultipart.py email/mime/text.py email/parser.py email/quoprimime.py email/test/test_email_renamed.py email/utils.py

barry.warsaw python-checkins at python.org
Fri Mar 3 23:31:37 CET 2006


Author: barry.warsaw
Date: Fri Mar 3 23:31:32 2006
New Revision: 42819
Added:
 sandbox/trunk/emailpkg/4.0/email/mime/application.py
Modified:
 sandbox/trunk/emailpkg/4.0/MANIFEST
 sandbox/trunk/emailpkg/4.0/email/_parseaddr.py
 sandbox/trunk/emailpkg/4.0/email/base64mime.py
 sandbox/trunk/emailpkg/4.0/email/charset.py
 sandbox/trunk/emailpkg/4.0/email/encoders.py
 sandbox/trunk/emailpkg/4.0/email/feedparser.py
 sandbox/trunk/emailpkg/4.0/email/generator.py
 sandbox/trunk/emailpkg/4.0/email/header.py
 sandbox/trunk/emailpkg/4.0/email/iterators.py
 sandbox/trunk/emailpkg/4.0/email/message.py
 sandbox/trunk/emailpkg/4.0/email/mime/audio.py
 sandbox/trunk/emailpkg/4.0/email/mime/base.py
 sandbox/trunk/emailpkg/4.0/email/mime/image.py
 sandbox/trunk/emailpkg/4.0/email/mime/message.py
 sandbox/trunk/emailpkg/4.0/email/mime/multipart.py
 sandbox/trunk/emailpkg/4.0/email/mime/nonmultipart.py
 sandbox/trunk/emailpkg/4.0/email/mime/text.py
 sandbox/trunk/emailpkg/4.0/email/parser.py
 sandbox/trunk/emailpkg/4.0/email/quoprimime.py
 sandbox/trunk/emailpkg/4.0/email/test/test_email_renamed.py
 sandbox/trunk/emailpkg/4.0/email/utils.py
Log:
Added email/mime/application.py for MIMEApplication class, based on SF patch
#1424065 by Keith Dart. Modifications made and test cases added by Barry.
Also add __all__ specifications to all modules (except errors.py, which seems
like overkill).
Modified: sandbox/trunk/emailpkg/4.0/MANIFEST
==============================================================================
--- sandbox/trunk/emailpkg/4.0/MANIFEST	(original)
+++ sandbox/trunk/emailpkg/4.0/MANIFEST	Fri Mar 3 23:31:32 2006
@@ -16,6 +16,7 @@
 email/quoprimime.py
 email/utils.py
 email/mime/__init__.py
+email/mime/application.py
 email/mime/audio.py
 email/mime/base.py
 email/mime/image.py
Modified: sandbox/trunk/emailpkg/4.0/email/_parseaddr.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/_parseaddr.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/_parseaddr.py	Fri Mar 3 23:31:32 2006
@@ -6,6 +6,13 @@
 Lifted directly from rfc822.py. This should eventually be rewritten.
 """
 
+__all__ = [
+ 'mktime_tz',
+ 'parsedate',
+ 'parsedate_tz',
+ 'quote',
+ ]
+
 import time
 
 SPACE = ' '
Modified: sandbox/trunk/emailpkg/4.0/email/base64mime.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/base64mime.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/base64mime.py	Fri Mar 3 23:31:32 2006
@@ -24,7 +24,19 @@
 module.
 """
 
+__all__ = [
+ 'base64_len',
+ 'body_decode',
+ 'body_encode',
+ 'decode',
+ 'decodestring',
+ 'encode',
+ 'encodestring',
+ 'header_encode',
+ ]
+
 import re
+
 from binascii import b2a_base64, a2b_base64
 from email.utils import fix_eols
 
Modified: sandbox/trunk/emailpkg/4.0/email/charset.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/charset.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/charset.py	Fri Mar 3 23:31:32 2006
@@ -2,6 +2,13 @@
 # Author: Ben Gertzfield, Barry Warsaw
 # Contact: email-sig at python.org
 
+__all__ = [
+ 'Charset',
+ 'add_alias',
+ 'add_charset',
+ 'add_codec',
+ ]
+
 import email.base64mime
 import email.quoprimime
 
Modified: sandbox/trunk/emailpkg/4.0/email/encoders.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/encoders.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/encoders.py	Fri Mar 3 23:31:32 2006
@@ -4,9 +4,19 @@
 
 """Encodings and related functions."""
 
+__all__ = [
+ 'encode_7or8bit',
+ 'encode_base64',
+ 'encode_noop',
+ 'encode_quopri',
+ ]
+
 import base64
+
 from quopri import encodestring as _encodestring
 
+
+
 def _qencode(s):
 enc = _encodestring(s, quotetabs=True)
 # Must encode spaces, which quopri.encodestring() doesn't do
Modified: sandbox/trunk/emailpkg/4.0/email/feedparser.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/feedparser.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/feedparser.py	Fri Mar 3 23:31:32 2006
@@ -19,7 +19,10 @@
 object's .defects attribute.
 """
 
+__all__ = ['FeedParser']
+
 import re
+
 from email import errors
 from email import message
 
Modified: sandbox/trunk/emailpkg/4.0/email/generator.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/generator.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/generator.py	Fri Mar 3 23:31:32 2006
@@ -4,13 +4,15 @@
 
 """Classes to generate plain text from a message object tree."""
 
+__all__ = ['Generator', 'DecodedGenerator']
+
 import re
 import sys
 import time
 import random
 import warnings
-from cStringIO import StringIO
 
+from cStringIO import StringIO
 from email.header import Header
 
 UNDERSCORE = '_'
Modified: sandbox/trunk/emailpkg/4.0/email/header.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/header.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/header.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,12 @@
 
 """Header encoding and decoding functionality."""
 
+__all__ = [
+ 'Header',
+ 'decode_header',
+ 'make_header',
+ ]
+
 import re
 import binascii
 
Modified: sandbox/trunk/emailpkg/4.0/email/iterators.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/iterators.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/iterators.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,13 @@
 
 """Various types of useful iterators and generators."""
 
+__all__ = [
+ 'body_line_iterator',
+ 'typed_subpart_iterator',
+ 'walk',
+ # Do not include _structure() since it's part of the debugging API.
+ ]
+
 import sys
 from cStringIO import StringIO
 
Modified: sandbox/trunk/emailpkg/4.0/email/message.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/message.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/message.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Basic message object for the email package object model."""
 
+__all__ = ['Message']
+
 import re
 import uu
 import binascii
Added: sandbox/trunk/emailpkg/4.0/email/mime/application.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/emailpkg/4.0/email/mime/application.py	Fri Mar 3 23:31:32 2006
@@ -0,0 +1,36 @@
+# Copyright (C) 2001-2006 Python Software Foundation
+# Author: Keith Dart
+# Contact: email-sig at python.org
+
+"""Class representing application/* type MIME documents."""
+
+__all__ = ["MIMEApplication"]
+
+from email import encoders
+from email.mime.nonmultipart import MIMENonMultipart
+
+
+class MIMEApplication(MIMENonMultipart):
+ """Class for generating application/* MIME documents."""
+
+ def __init__(self, _data, _subtype='octet-stream',
+ _encoder=encoders.encode_base64, **_params):
+ """Create an application/* type MIME document.
+
+ _data is a string containing the raw applicatoin data.
+
+ _subtype is the MIME content type subtype, defaulting to
+ 'octet-stream'.
+
+ _encoder is a function which will perform the actual encoding for
+ transport of the application data, defaulting to base64 encoding.
+
+ Any additional keyword arguments are passed to the base class
+ constructor, which turns them into parameters on the Content-Type
+ header.
+ """
+ if _subtype is None:
+ raise TypeError('Invalid application MIME subtype')
+ MIMENonMultipart.__init__(self, 'application', _subtype, **_params)
+ self.set_payload(_data)
+ _encoder(self)
Modified: sandbox/trunk/emailpkg/4.0/email/mime/audio.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/audio.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/audio.py	Fri Mar 3 23:31:32 2006
@@ -4,9 +4,11 @@
 
 """Class representing audio/* type MIME documents."""
 
+__all__ = ['MIMEAudio']
+
 import sndhdr
-from cStringIO import StringIO
 
+from cStringIO import StringIO
 from email import encoders
 from email.mime.nonmultipart import MIMENonMultipart
 
Modified: sandbox/trunk/emailpkg/4.0/email/mime/base.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/base.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/base.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Base class for MIME specializations."""
 
+__all__ = ['MIMEBase']
+
 from email import message
 
 
Modified: sandbox/trunk/emailpkg/4.0/email/mime/image.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/image.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/image.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Class representing image/* type MIME documents."""
 
+__all__ = ['MIMEImage']
+
 import imghdr
 
 from email import encoders
Modified: sandbox/trunk/emailpkg/4.0/email/mime/message.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/message.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/message.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Class representing message/* MIME documents."""
 
+__all__ = ['MIMEMessage']
+
 from email import message
 from email.mime.nonmultipart import MIMENonMultipart
 
Modified: sandbox/trunk/emailpkg/4.0/email/mime/multipart.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/multipart.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/multipart.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Base class for MIME multipart/* type messages."""
 
+__all__ = ['MIMEMultipart']
+
 from email.mime.base import MIMEBase
 
 
Modified: sandbox/trunk/emailpkg/4.0/email/mime/nonmultipart.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/nonmultipart.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/nonmultipart.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """Base class for MIME type messages that are not multipart."""
 
+__all__ = ['MIMENonMultipart']
+
 from email import errors
 from email.mime.base import MIMEBase
 
Modified: sandbox/trunk/emailpkg/4.0/email/mime/text.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/mime/text.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/mime/text.py	Fri Mar 3 23:31:32 2006
@@ -4,8 +4,10 @@
 
 """Class representing text/* type MIME documents."""
 
-from email.mime.nonmultipart import MIMENonMultipart
+__all__ = ['MIMEText']
+
 from email.encoders import encode_7or8bit
+from email.mime.nonmultipart import MIMENonMultipart
 
 
 
Modified: sandbox/trunk/emailpkg/4.0/email/parser.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/parser.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/parser.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,8 @@
 
 """A parser of RFC 2822 and MIME email messages."""
 
+__all__ = ['Parser', 'HeaderParser']
+
 import warnings
 from cStringIO import StringIO
 
Modified: sandbox/trunk/emailpkg/4.0/email/quoprimime.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/quoprimime.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/quoprimime.py	Fri Mar 3 23:31:32 2006
@@ -26,9 +26,26 @@
 wrapping issues, use the email.Header module.
 """
 
+__all__ = [
+ 'body_decode',
+ 'body_encode',
+ 'body_quopri_check',
+ 'body_quopri_len',
+ 'decode',
+ 'decodestring',
+ 'encode',
+ 'encodestring',
+ 'header_decode',
+ 'header_encode',
+ 'header_quopri_check',
+ 'header_quopri_len',
+ 'quote',
+ 'unquote',
+ ]
+
 import re
-from string import hexdigits
 
+from string import hexdigits
 from email.utils import fix_eols
 
 CRLF = '\r\n'
Modified: sandbox/trunk/emailpkg/4.0/email/test/test_email_renamed.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/test/test_email_renamed.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/test/test_email_renamed.py	Fri Mar 3 23:31:32 2006
@@ -18,6 +18,7 @@
 from email.parser import Parser, HeaderParser
 from email.generator import Generator, DecodedGenerator
 from email.message import Message
+from email.mime.application import MIMEApplication
 from email.mime.audio import MIMEAudio
 from email.mime.text import MIMEText
 from email.mime.image import MIMEImage
@@ -965,6 +966,23 @@
 
 
 
+# Test the basic MIMEApplication class
+class TestMIMEApplication(unittest.TestCase):
+ def test_headers(self):
+ eq = self.assertEqual
+ msg = MIMEApplication('\xfa\xfb\xfc\xfd\xfe\xff')
+ eq(msg.get_content_type(), 'application/octet-stream')
+ eq(msg['content-transfer-encoding'], 'base64')
+
+ def test_body(self):
+ eq = self.assertEqual
+ bytes = '\xfa\xfb\xfc\xfd\xfe\xff'
+ msg = MIMEApplication(bytes)
+ eq(msg.get_payload(), '+vv8/f7/')
+ eq(msg.get_payload(decode=True), bytes)
+
+
+
 # Test the basic MIMEText class
 class TestMIMEText(unittest.TestCase):
 def setUp(self):
Modified: sandbox/trunk/emailpkg/4.0/email/utils.py
==============================================================================
--- sandbox/trunk/emailpkg/4.0/email/utils.py	(original)
+++ sandbox/trunk/emailpkg/4.0/email/utils.py	Fri Mar 3 23:31:32 2006
@@ -4,6 +4,21 @@
 
 """Miscellaneous utilities."""
 
+__all__ = [
+ 'collapse_rfc2231_value',
+ 'decode_params',
+ 'decode_rfc2231',
+ 'encode_rfc2231',
+ 'formataddr',
+ 'formatdate',
+ 'getaddresses',
+ 'make_msgid',
+ 'parseaddr',
+ 'parsedate',
+ 'parsedate_tz',
+ 'unquote',
+ ]
+
 import os
 import re
 import time


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /