[Python-checkins] r42534 - in sandbox/trunk/emailpkg: 2.5/NEWS 2.5/NEWS.txt 2.5/README 2.5/README.txt 3.1 4.0 4.0/email
barry.warsaw
python-checkins at python.org
Tue Feb 21 04:05:02 CET 2006
Author: barry.warsaw
Date: Tue Feb 21 04:04:58 2006
New Revision: 42534
Added:
sandbox/trunk/emailpkg/2.5/NEWS.txt
- copied unchanged from r42261, sandbox/trunk/emailpkg/2.5/NEWS
sandbox/trunk/emailpkg/2.5/README.txt
- copied unchanged from r42261, sandbox/trunk/emailpkg/2.5/README
sandbox/trunk/emailpkg/4.0/
- copied from r42533, sandbox/trunk/emailpkg/3.1/
sandbox/trunk/emailpkg/4.0/email/
- copied from r42421, sandbox/trunk/emailpkg/3.1/email/
Removed:
sandbox/trunk/emailpkg/2.5/NEWS
sandbox/trunk/emailpkg/2.5/README
sandbox/trunk/emailpkg/3.1/
Log:
The module name change warrants a bump in the version number to 4.0.
Deleted: /sandbox/trunk/emailpkg/2.5/NEWS
==============================================================================
--- /sandbox/trunk/emailpkg/2.5/NEWS Tue Feb 21 04:04:58 2006
+++ (empty file)
@@ -1,594 +0,0 @@
-Copyright (C) 2001-2004 Python Software Foundation
-
-Here is a history of user visible changes to this software.
-
-2.5.5 (13-May-2004)
-2.5.4
-2.5.3
-2.5.2
-
- Lots of bug fixes.
-
-2.5.1 (30-Mar-2003)
-
- Bug fixes and improved compatibility for Python 2.2.0.
-
-2.5 (21-Mar-2003)
-
- A few other minor bug fixes.
-
-2.5b1 (11-Mar-2003)
-
- - Message.get_payload() now recognizes various uuencoded
- Content-Transfer-Encodings (e.g. x-uuencode).
-
- When passing decode=True to Message.get_payload() and a
- low-level decoding error occurs, the payload is returned as-is
- instead of raising an exception.
-
- - Header.__init__() and Header.append() now accept an optional
- argument `errors' which is passed through to the unicode() and
- ustr.encode() calls. You can use this to prevent conversion
- errors by e.g. passing 'replace' or 'ignore'.
-
- RFC 2822 specifies that long headers should be split at the
- "highest level syntactic break" possible. This can only really
- be determined by the application, and the current API doesn't
- support arbitrary break points. As a compromise,
- Header.encode() grew a `splitchars' argument which provides some
- control over splitting at higher level syntactic breaks.
-
- Header.decode_header() now transforms binascii.Errors into
- email.Errors.HeaderParseErrors when bogus base64 data appears in
- the header.
-
- The header splitting and folding algorithms were completely
- reimplemented, especially when dealing with ASCII headers.
-
- We now preserve spaces between encoded and non-encode parts in
- RFC 2047 headers when converting the header to Unicode. While
- the RFC is technically ambiguous on this point, this is the
- behavior most people expect.
-
- - email.Iterators.body_line_iterator() now takes an optional
- decode argument, which is passed through to Message.get_payload().
-
- - The MIMEText constructor used to append a newline to the _text
- argument if it didn't already end in a newline. Now it doesn't.
- This could theoretically break code so it should be considered
- experimental for 2.5 beta 1. But it's the right fix, so we'll
- keep it unless there are howls of derision.
-
- - The quopriMIME.header_encode() maxlinelen argument now accepts
- None, which inhibits line breaking.
-
- - Support for Korean charsets was added to Charset.py. Also the
- Charset class grew a __repr__() method.
-
- - Various and sundry bug fixes, improved RFC conformance, and
- improved lax parsing.
-
-2.4.3 (14-Oct-2002)
-2.4.2 (10-Oct-2002)
-2.4.1 (07-Oct-2002)
-
- Last minute patches for the Python 2.2.2 backport. This includes
- case insensitivity of character set names, patches for Windows,
- and some fixes for non-splitting of unspecified 8bit header data.
-
-2.4 (01-Oct-2002)
-
- - Updated all the documentation.
-
- - Clarification to the semantics of Header.__init__() and
- Header.append() when it gets byte strings and Unicode strings as
- its first argument. When a byte string is used, the charset
- must be the encoding of the string, such that unicode(s,charset)
- succeeds. When a Unicode string is used, the charset is a hint,
- and the first of the following to succeed is used: us-ascii, the
- charset hint, utf-8.
-
- - A new header encoding flag has been added to the Charset
- module. SHORTEST (which cannot be used for body encodings)
- returns the string either quoted-printable or base64 encoding,
- whichever is shortest in terms of characters. This is a good
- heuristic for providing the most human readable value possible.
- The utf-8 charset uses SHORTEST encoding by default now.
-
- - Message.get_content_charset() is a new method that returns the
- charset parameter on the Content-Type header, unquoted and RFC
- 2231 decoded if necessary.
-
- - "import email" no longer imports some sub-modules by side-effect.
-
- - Fixed some problems related to RFC 2231 encoding of boundary and
- charset parameters on Content-Type headers. Document that
- get_param() and get_params() may return values that are strings
- or 3-tuples.
-
- - The signature of the non-public function _structure() has
- changed.
-
-2.3.1 (13-Sep-2002)
-
- - Minor update to the distutils package. A file was missing in
- the email-2.3.tar.gz file.
-
-2.3 (10-Sep-2002)
-
- - Added support for RFC 2231 encoding. Patch by Oleg Broytmann
- (previous patch was for RFC 2231 decoding only).
-
- - New method Message.replace_header() which replaces the first
- occurrence of a header with a new value, preserving header order
- and header name case. Patch by Skip Montanaro.
-
- - RFC 2045, section 5.2 states that if the Content-Type: header is
- invalid, it defaults to text/plain. Implement simple checks for
- this in get_content_type(), get_content_maintype(), and
- get_content_subtype(). These will no longer raise ValueErrors.
-
- - In non-strict parsing, if no start boundary can be found for a
- multipart message, the entire body of the message is set as the
- payload. Strict parsing such a message will still raise a
- BoundaryError.
-
-2.2 (23-Jul-2002)
-
- - Better support for default content types has been added.
- Specifically:
-
- o The following methods have been silently deprecated. At some
- future release they may be unsilently deprecated:
- Message.get_type(), Message.get_main_type(),
- Message.get_subtype().
-
- o The following methods have been added as a consistent way of
- getting a message's content type: Message.get_content_type(),
- Message.get_content_maintype(), Message.get_content_subtype().
-
- Note that none of these methods take a `failobj' argument
- because messages always have a default content type. Usually
- this type is text/plain, but for messages inside a
- multipart/digest container, it's message/rfc822.
-
- Also note that .get_content_maintype() and
- .get_content_subtype() can raise ValueError exceptions if the
- default content type doesn't include exactly one slash.
-
- - The Parser constructor's `strict' flag is exposed to
- email.message_from_file() and email.message_from_string().
- Also, non-strict parsing is now the default, since that seems to
- be the most useful behavior.
-
- - email.Header.Header.append() now allows the charset argument to
- be a string, naming a character set. It will convert these to a
- Charset instance automatically.
-
- - The test procedure has changed. See the README for details.
- Also, a new torture test has been added.
-
- - The non-public function email.Iterators._structure() can now
- take an output file object (which must be suitable for print>>).
-
-2.1 (09-Jul-2002)
-
- - Support for RFC 2231 by Oleg Broytmann was added.
-
- - Fixed some representational, parsing, and generation bugs with
- multipart/digest and message/rfc822 messages. Now we guarantee
- that the structure of such messages is something like:
-
- multipart/digest
- message/rfc822
- text/plain (or whatever the subpart's type is)
- message/rfc822
- text/plain (ditto)
-
- The encapsulating message/rfc822 object is a multipart of
- exactly length 1.
-
- To preserve idempotency, the concept of a "default type" is
- added to Message objects. For most messages the default type is
- text/plain, except for messages at the first level inside a
- multipart/digest which are message/rfc822. This default type is
- not described in the Content-Type: header of the container.
-
- Message objects thus have new methods get_default_type() and
- set_default_type(), the latter of which takes a string argument
- that must be either 'text/plain' or 'message/rfc822'.
-
- (Some changes were also made to the non-public interface for the
- Generator class.)
-
- - The Header class now knows how to split long non-RFC 2047
- encoded headers (i.e. us-ascii charset) in the RFC 2822
- recommended way. Splits are attempted at the "highest-level
- syntactic breaks" which we define as on parameter semicolons,
- followed by folding whitespace. No errors are raised if long
- headers still exceed the maximum RFC 2822 header length of 998
- characters after splitting.
-
- - Other Header class API changes:
- o All __init__() arguments have default values now. Also, a
- new argument continuation_ws has been added (defaults to a
- single ASCII space).
- o Rich comparison __eq__ and __ne__ operators are defined
- o __unicode__() for Python 2.2 by Mikhail Zabaluev
- o guess_maxlinelen() method has been removed
- o encode_chunks() is no longer public
-
- - The email.Header module has grown a function make_header() which
- takes the output of decode_header() and returns a Header
- instance.
-
- - A non-public function email.Iterators._structure() has been
- added for debugging purposes.
-
- - MIMEMultipart.__init__() doesn't attach the subparts of the
- tuple is empty (i.e. there are no subparts). Fixed a bug
- related to passing in explicit boundary.
-
- - Anthony Baxter's patches for non-strict parsing have been added
- to the Parser class. There are currently no test cases for
- non-strict parsing yet. Other Parser class API changes:
- o Parser.__init__() grew a strict argument, defaulting to
- true for backwards compatibility.
- o parse() and parsestr() both grew a headersonly argument
- which tells them to stop parsing once the header block is
- parsed. The file pointer is left at the start of the body.
-
- - For RFC 2231 support, added the following functions to the
- email.Utils module: decode_rfc2231(), encode_rfc2231(),
- decode_params().
-
-2.0.5 (02-Jun-2002)
-
- - Two new class/modules MIMEMultipart and MIMENonMultipart have
- been added. The former is useful as a concrete class for
- creating multipart/* parts. The latter is mostly useful as a
- base class for other MIME non-multipart subparts. For example,
- the MIMEAudio, MIMEImage, and MIMEText clases now derive from
- MIMENonMultipart. Note also that MIMENonMultipart.attach()
- raises a MultipartConversionError.
-
- - The message structure for message/rfc822 subparts has been
- changed to be more consistent. Now message/rfc822 payloads are
- defined as a list containing exactly one element, the
- sub-Message object.
-
- - The callable interface to the Generator class is now silently
- deprecated in favor of the Generator.flatten() method.
- __call__() can be 2-3 times slower than the equivalent normal
- method.
-
-2.0.4 (21-May-2002)
-
- - Fixed a bug in email.Utils.getaddresses().
-
-2.0.3 (19-May-2002)
-
- - Fixed some limitations that caused the Parser to not work with
- CRLF style line-endings. The parser should now be able to parse
- any email message with consistent line endings of \r, \n, \r\n.
-
- - Fixed a bug related to the semantics of the Header class
- constructor. If neither maxlinelen or header_name is given, the
- maximum line length is 76 by default. If maxlinelen is given,
- it is always honored. If maxlinelen is not given, but
- header_name is given, then a suitable default line length is
- calculated.
-
- - Implemented a simpler testing framework. Now you just need to
- run "python test.py" in the source directory.
-
- - Merged with the standard Python cvs tree, with compatibility
- modules for working in Python 2.1 and Python 2.2.
-
-2.0.2 (26-Apr-2002)
-
- - Fix a Python 2.1.3 incompatibility in Iterators.py,
- body_line_iterator().
-
-2.0.1 (10-Apr-2002)
-
- - Minor bug fixes in the test suite.
-
- - One minor API change: in Header.append(), the charset is
- optional, and used to default to the empty Charset(). It now
- defaults to the charset given in the Header constructor.
-
-2.0 (08-Apr-2002)
-
- - Message.add_payload() is now deprecated. Instead use
- Message.attach() and Message.set_payload(). The former always
- ensures that the message's payload is a list object, while the
- latter is used only for scalar payloads (i.e. a string or a
- single Message object in the case of message/rfc822 types).
-
- - email.Utils.formataddr(): New function which is the inverse of
- .parseaddr(); i.e. it glues a realname and an email address
- together. This replaces email.Utils.dump_address_pair() which
- is deprecated.
-
- - class Charset now has a __str__() method, and implements rich
- comparison operators for comparison to lower case charset
- names.
-
- - encode_7or8bit(): If there is no payload, set the
- Content-Transfer-Encoding: value to 7bit.
-
- - Fixes for bugs in generating multipart messages that had exactly
- zero or one subparts.
-
-1.2 (18-Mar-2002)
-
- - In the MIMEText class's constructor, the _encoder argument is
- deprecated. You will get a DeprecationWarning if you try to use
- it. This is because there is a fundamental conflict between
- _encoder and the fact that _charset is passed to the underlying
- set_payload() method. _encoder really makes no sense any more.
-
- - When Message.set_type() is used to set the Content-Type: header,
- the MIME-Version: header is always set (overriding any existing
- MIME-Version: header).
-
- - More liberal acceptance of parameter formatting, e.g. this is
- now accepted: Content-Type: multipart/mixed; boundary = "FOO"
- I.e. spaces around the = sign.
-
- - Bug fix in Generator related to splitting long lines in a
- multiline header.
-
- - In class Charset, __str__() method added, as were __eq__() and
- __ne__().
-
- - Charset.get_body_encoding() may now return a function as well as
- a string character set name. The function takes a single
- argument, which is a Message instance, and may change the
- Content-Transfer-Encoding: header (or do any other manipulations
- on the message).
-
- - Charset.from_splittable() added argument to_output which is used
- to specify whether the input_codec or the output_codec is used
- for the conversion (by default, the output codec is used).
-
-1.1 (unreleased)
-
- - No changes since 0.97. Only the version number has changed.
-
-0.97 (unreleased)
-
- - Message.set_charset() can now take a string naming a character
- set in addition to a Charset instance. In the former case, a
- Charset is instantiated by passing the string to its
- constructor.
-
- - The MIMEText constructor now passes the _charset argument to the
- underlying set_charset() method. This makes things consistent
- at the cost of a minor semantic change: the resulting instance
- will have a Content-Transfer-Encoding: header where previously
- it did not.
-
- - A fix for a crash when quopriMIME.encode() tried to encode a
- multiline string containing a blank line.
-
- - New module Header.py which provides a higher level interface for
- encoded email headers, such as Subject:, From:, and To:. This
- module provides an abstraction for composing such headers out of
- charset encoded parts, and for decoding such headers. It
- properly splits lines on character boundaries even for multibyte
- character sets.
-
- - New RFC compliant base64 and quoted-printable modules, called
- base64MIME.py and quopriMIME.py. These are intended to replace
- the Python standard base64.py and quopri.py modules, but are
- geared toward their use conformant to the various MIME email
- standards.
-
- - The Message class is much more character set aware and RFC
- compliant:
-
- + set_payload() now takes a new optional charset argument
- + New methods set_charset(), get_charset(), set_param(),
- del_param(), set_type()
- + Header parameter quoting is more RFC compliant
- + get_param() and get_params() now take a new optional unquote
- argument
-
- - The Charset module now knows about utf-8, gb2132, and big5
- codecs, the latter two of which are available independently of
- Python (see the comments in this module for downloading Chinese,
- Japanese, and Korean codecs).
-
- New Charset methods get_body_encoding(), get_output_charset(),
- encoded_header_len(), header_encode(), and body_encode().
-
- - The Generator now handles encoding the body, if the message
- object has a character set.
-
- - The Utils module has new functions fix_eols() and make_msgid().
- It also includes a workaround for bugs in parseaddr() when used
- with Python versions before 2.2.
-
- - A fix for a Parser bug when parsing multipart/* parts that
- contain only a single subpart.
-
-0.96 (19-Nov-2001)
-
- - A fix for email.Utils.formatdate() for "uneven" timezones like
- Australia/Adelaide and America/St_Johns.
-
-0.95 (09-Nov-2001)
-
- - A new implementation of email.Utils.formatdate() which makes it
- more RFC 2822 compliant.
-
-0.94 (25-Oct-2001)
-
- - A fix for SF bug #472560, extra newlines returned by get_param()
- when the separating semi-colon shows up on a continuation line
- (legal, but weird).
-
-0.93 (17-Oct-2001)
-
- - Fix for SF bug #471918, generator splitting long headers
- produces dupliaction. Bug report and fix contributed by Matthew
- Cowles.
-
- - If a line could not be split on semicolons in order to produce
- shorter lines, an attempt is made to split the header on folding
- white space. One deficiency still: it won't try to split on
- both semis and folding whitespace. Oh well.
-
-0.92 (14-Oct-2001)
-
- - Iterators.typed_subpart_iterator() should use a 'text/plain'
- failobj in its get_main_type() call.
-
- - Added class Parser.HeaderParser which just parses headers and
- leaves the message as a string payload; it does not recursively
- parse the body.
-
-0.91 (09-Oct-2001)
-
- - Added the MIMEAudio class/module for audio/* MIME types.
- Contributed by Anthony Baxter.
-
- - Fixed a bug in Message.get_all() where failobj was never
- returned if no matching fields were found.
-
-0.90 (01-Oct-2001)
-
- - mimelib has been integrated with Python 2.2. A compatibility
- package called email 0.90 is being made available here. It is
- significantly different in API from the mimelib package. See
- the README for details. mimelib as a separate package is no
- longer being supported.
-
-0.6 (17-Sep-2001)
-
- - Last minute bug fixes.
-
-0.5 (17-Sep-2001)
-
- - New methods in the top-level mimelib package namespace:
- + messageFromString() to create an object tree from a string.
- + messageFromFile() to create an object tree from an open file.
-
- - New methods in the address.py module:
- + encode() for encoding to RFC 2047 headers
- + decode() for decoding from RFC 2047 headers
-
- - New methods in the Message class:
- + asString() to get a flat text representation of the object
- tree.
- + __str__() same as asString() but includes the Unix-From
- envelope header in the output.
- + __contains__() for use with the `in' operator.
- + attach() is a synonym for add_payload()
- + getcharsets()
- + getfilename()
- + getboundary()
- + setboundary()
- + getdecodedpayload()
- + getpayloadastext()
- + getbodyastext()
-
- - Message.preamble and Message.epilogue default to None (they used
- to not exist by default).
-
- - Changes to the Generator class:
- + New optional argument `maxheaderlen' for __init__() controls
- the maximum length in characters of any header line.
- + write() isn't the entry point for doing the text generation
- any more. This lets us make this method compatible with
- file-like objects. Use __call__() semantics instead.
- + Calling a Generator instance creates the plain text
- message. This is the same as the old write() interface
- except that the optional `unixfrom' argument now defaults to
- 0.
- + There is a new, undocumented semi-private interface for
- extending the MIME types Generator can handle. UTSL.
-
- - New Encoders.py module contains some useful encoders for Image
- and Text instances.
-
- - Text.__init__() has a new _encoder optional argument, which has
- the same semantics as _encoder for Image.__init__().
-
- - StringableMixin.py module has been removed, and its
- functionality merged back into the Message class.
-
- - MessageParseError doesn't contain line numbers any more.
-
- - Lots of bug fixes; lots more unit tests.
-
-0.4 (09-Jul-2001)
-
- - New module/class called RFC822 which represents message/rfc822
- MIME types. This takes a single Message instance.
-
- - Message.getmaintype() and Message.getsubtype() will now return
- failobj when the Content-Type: header doesn't have enough
- information.
-
-0.3 (20-Apr-2001)
-
- - In the Image class, the _encoding argument has been changed to
- _encoder. Also ImageTypeError is removed; if Image.__init__()
- can't guess the image's minor type, a TypeError is raised
- instead.
-
- - Message.getparam() and Message.getparams() have grown a new
- optional argument `header'.
-
- - MsgReader class has grown a new method readlines() for
- compatibility with Python 2.1's xreadline module.
-
- - The ReprMixin module and class have been renamed to
- StringableMixin
-
- - New exception MultipartConversionError can be raised by
- Message.add_payload()
-
- - Bug fixes
-
- - mimelib has been moved to SourceForge. See
- http://mimelib.sourceforge.net
-
-0.2 (14-Feb-2001)
-
- - Generator constructor has a new optional argument `mangle_from_'
- which is a flag. If true, the generated flat text has From_
- lines mangled in the body of messages by prepending a `>' in
- front of the line. This assures that such lines are not
- mistaken for Unix mailbox separators.
-
- - Added a new class ReprMixin for adding convenience methods
- get_text() and __str__() to Message subclasses.
-
- - RFC 1341 (MIME) calls the blob between the closing boundary and
- the end of the message, the `epilogue'. Change `postamble' to
- `epilogue' in Message and Generator classes.
-
- - Much better conformance to RFC 1341 in the Generator.
-
- - Added __all__ support for "from mimelib import *"
-
- - Added LICENSE file, currently BSD-ish. The copyright will
- eventually be transferred to the Python Software Foundation when
- it is activated.
-
- - Bug fixes.
-
-0.1 (24-Jan-2001)
-
- Initial beta release.
-
-
-
-Local Variables:
-mode: indented-text
-indent-tabs-mode: nil
-End:
Deleted: /sandbox/trunk/emailpkg/2.5/README
==============================================================================
--- /sandbox/trunk/emailpkg/2.5/README Tue Feb 21 04:04:58 2006
+++ (empty file)
@@ -1,95 +0,0 @@
-email -- a mail and MIME handling package
-Copyright (C) 2001-2004 Python Software Foundation
-
-
-Introduction
-
- The email package is a library for managing email messages, including MIME
- and other RFC 2822-based message documents. It is intended to replace
- most of the functionality in several older standard modules such as
- rfc822, mimetools, multifile, mimify, and MIMEWriter, and other
- non-standard packages such as mimecntl. It is compliant with most of the
- email related RFCs such as 2045-2047 (the MIME RFCs) and 2231.
-
- This version is identical to the package available in Python 2.4. It is
- being made available as a standalone distutils package for use in older
- Python releases. A minimum of Python 2.3 is required. Because the email
- package is part of Python, it is covered by the PSF license for Python, as
- described in the LICENSE.txt file.
-
-
-Testing
-
- To test the email package, run the standard unit test suite from the
- directory that you unpacked the source in (i.e. the directory containing
- the setup.py file and this README file):
-
- % python testall.py
-
- You should see a couple of lines of dots followed by the number of tests
- ran and the time the tests took. The test should end with an "OK". If
- so, you're good to go. Note that the exact number of tests depends on
- such things as whether you have the Japanese codecs installed or not.
-
-
-Documentation and Examples
-
- The documentation can be found in the docs directory:
-
- docs/index.html
-
- If you're looking for examples, you might want to check out some
- of the tests. There are a few examples in the documentation as
- well.
-
-
-Installing
-
- To install simply execute the following at your shell prompt:
-
- % python setup.py install
-
- If you're using Python 2.4, you've already got the latest version.
-
-
-Acknowledgements
-
- A big thanks goes to Ben Gertzfield who implemented the bulk of the
- multibyte support in version 1.1, as well as the RFC compliant base64 and
- quoted-printable modules.
-
- Many thanks to these other fine folks for providing code contributions or
- examples, suggestions, bug reports, feedback, encouragement, etc.
-
- Anthony Baxter
- Martin Bless
- Oleg Broytmann
- Matthew Dixon Cowles
- Jeff Dairiki
- Quinn Dunkan
- David Given
- Phil Hunt
- Sheila King
- Martin Koch
- Jason Mastaler
- Andrew McNamara
- Skip Montanaro
- Guido van Rossum
- Thomas Wouters
-
- Apologies to anybody I've left out (let me know!).
-
-
-Contact Information
-
- The email-sig is the mailing list and community of users and developers of
- the package and related Python email technologies. For more information:
-
- http://www.python.org/sigs/email-sig
-
-
-
-Local Variables:
-mode: indented-text
-indent-tabs-mode: nil
-End:
More information about the Python-checkins
mailing list