[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