summaryrefslogtreecommitdiffstats
path: root/Lib/email/Generator.py
Commit message (Collapse)AuthorAgeFilesLines
* Merge p3yk branch with the trunk up to revision 45595. This breaks a fairThomas Wouters2006-04-211-352/+0
| | | | | | | | | | | | | | | | | | | | number of tests, all because of the codecs/_multibytecodecs issue described here (it's not a Py3K issue, just something Py3K discovers): http://mail.python.org/pipermail/python-dev/2006-April/064051.html Hye-Shik Chang promised to look for a fix, so no need to fix it here. The tests that are expected to break are: test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecs test_multibytecodec This merge fixes an actual test failure (test_weakref) in this branch, though, so I believe merging is the right thing to do anyway.
* Port relevant patches for SF 1409455 to the trunk for email 3.0/Python 2.5.Barry Warsaw2006-02-081-4/+1
| | | | Will port to Python 2.4.
* Big email 3.0 API changes, with updated unit tests and documentation.Barry Warsaw2004-10-031-12/+18
| | | | | | | | | | | | | | | | | Briefly (from the NEWS file): - Updates for the email package: + All deprecated APIs that in email 2.x issued warnings have been removed: _encoder argument to the MIMEText constructor, Message.add_payload(), Utils.dump_address_pair(), Utils.decode(), Utils.encode() + New deprecations: Generator.__call__(), Message.get_type(), Message.get_main_type(), Message.get_subtype(), the 'strict' argument to the Parser constructor. These will be removed in email 3.1. + Support for Python earlier than 2.3 has been removed (see PEP 291). + All defect classes have been renamed to end in 'Defect'. + Some FeedParser fixes; also a MultipartInvariantViolationDefect will be added to messages that claim to be multipart but really aren't. + Updates to documentation.
* Update to Python 2.3, getting rid of backward compatiblity crud. Get rid of aBarry Warsaw2004-05-091-57/+29
| | | | | | | | | bunch of module globals that aren't used. __maxheaderlen -> _maxheaderlen _handle_multipart(): This should be more RFC compliant now, and does match the updated/fixed semantics for preamble and epilogue.
* __init__(): The docstring was incorrect regarding how header wrappingBarry Warsaw2003-11-191-5/+4
| | | | | | gets done when maxheaderlen <> 0. The header really gets wrapped via the email.Header.Header class, which has a more sophisticated algorithm than just splitting on semi-colons.
* _make_boundary(): A minor optimization suggested by the Timbot.Barry Warsaw2003-06-241-1/+1
|
* _make_boundary(): Fix for SF bug #745478, broken boundary calculationBarry Warsaw2003-05-291-2/+6
| | | | | | | | | in some locales. This code simplifies the boundary algorithm to use randint() which is what we wanted anyway. Bump package version to 2.5.3. Backport candidate for Python 2.2.3
* _write_headers(), _split_header(): All of the smarts for splittingBarry Warsaw2003-03-071-35/+20
| | | | | | long header lines is now (properly) in the Header class. So we no longer need _split_header() and we'll just defer to Header.encode() when we have a plain string.
* Merge of the folding-reimpl-branch. Specific changes,Barry Warsaw2003-03-061-2/+13
| | | | | | | | | | _handle_multipart(): Ensure that if the preamble exists but does not end in a newline, a newline is still added. Without this, the boundary separator will end up on the preamble line, breaking the MIME structure. _make_boundary(): Handle differences in the decimal point character based on the locale.
* _split_header(): If we have a header which is a byte string containingBarry Warsaw2002-10-141-1/+17
| | | | | | | | | 8-bit data, we cannot split it safely, so return the original string unchanged. _is8bitstring(): Helper function which returns True when we have a byte string that contains non-ascii characters (i.e. mysterious 8-bit data).
* Use True/False everywhere.Barry Warsaw2002-09-281-20/+19
|
* Import _isstring() from the compatibility layer.Barry Warsaw2002-09-101-2/+12
| | | | | | | | | | | _handle_text(): Use _isstring() for stringiness test. _handle_multipart(): Add a test before the ListType test, checking for stringiness of the payload. String payloads for multitypes means a message with broken MIME chrome was parsed by a lax parser. Instead of raising a BoundaryError in those cases, the entire body is assigned to the message payload (but since the content type is still multipart/*, the Generator needs to be updated too).
* _dispatch(): Use get_content_maintype() and get_content_subtype() toBarry Warsaw2002-08-201-3/+2
| | | | | | get the MIME main and sub types, instead of getting the whole ctype and splitting it here. The two more specific methods now correctly implement RFC 2045, section 5.2.
* _dispatch(): Use the new Message.get_content_type() method as hashedBarry Warsaw2002-07-191-6/+1
| | | | out on the mimelib-devel list.
* _dispatch(): Comment improvements.Barry Warsaw2002-07-111-3/+3
|
* clone(): A new method for creating a clone of this generator (forBarry Warsaw2002-07-091-27/+24
| | | | | | | | | | | | | recursive generation). _dispatch(): If the message object doesn't have a Content-Type: header, check its default type instead of assuming it's text/plain. This makes for correct generation of message/rfc822 containers. _handle_multipart(): We can get rid of the isdigest kludge. Just print the message as normal and everything will work out correctly. _handle_mulitpart_digest(): We don't need this anymore either.
* _split_header(): The code here was terminally broken because it didn'tBarry Warsaw2002-06-281-53/+11
| | | | | | | | know anything about RFC 2047 encoded headers. Fortunately we have a perfectly good header splitter in Header.encode(). So we just call that to give us a properly formatted and split header. Header.encode() didn't know about "highest-level syntactic breaks" but that's been fixed now too.
* flatten(): Renamed from __call__() which is (silently) deprecated.Barry Warsaw2002-06-021-7/+11
| | | | | | | | | __call__() can be 2-3x slower than the equivalent normal method. _handle_message(): The structure of message/rfc822 message has changed. Now parent's payload is a list of length 1, and the zeroth element is the Message sub-object. Adjust the printing of such message trees to reflect this change.
* Sync'ing with standalone email package 2.0.1. This adds support forBarry Warsaw2002-04-101-18/+36
| | | | | | | | | non-us-ascii character sets in headers and bodies. Some API changes (with DeprecationWarnings for the old APIs). Better RFC-compliant implementations of base64 and quoted-printable. Updated test cases. Documentation updates to follow (after I finish writing them ;).
* Removed two unused imports. Closes patch #525225.Barry Warsaw2002-03-031-4/+0
| | | | 2.2.1 candidate (but not terribly important).
* Another merge from mimelib:Barry Warsaw2001-10-191-0/+2
| | | | | | _handle_multipart(): If there is an epilogue and the epilogue does not itself start with a newline, add a newline before writing the epilogue. Closes SF bug #472481.
* Two merges from the mimelib project:Barry Warsaw2001-10-171-4/+35
| | | | | | | | _split_header(): Split on folding whitespace if the attempt to split on semi-colons failed. _split_header(): Patch by Matthew Cowles for fixing SF bug # 471918, Generator splitting long headers.
* Give me back my page breaks.Barry Warsaw2001-10-041-3/+3
|
* Whitespace normalization.Tim Peters2001-10-041-3/+3
|
* In class Generator:Barry Warsaw2001-09-261-5/+32
| | | | | | | | | | | | | | | | | | | | | | | | _handle_text(): If the payload is None, then just return (i.e. don't write anything). Subparts of message/delivery-status types will have this property since they are just blocks of headers. Also, when raising the TypeError, include the type of the payload in the error message. _handle_multipart(), _handle_message(): When creating a clone of self, pass in our _mangle_from_ and maxheaderlen flags so the clone has the same behavior. _handle_message_delivery_status(): New method to do the proper printing of message/delivery-status type messages. These have to be handled differently than other message/* types because their payloads are subparts containing just blocks of headers. In class DecodedGenerator: _dispatch(): Skip over multipart/* messages since we don't care about them, and don't want the non-text format to appear in the printed results.
* The email package version 1.0, prototyped as mimelibBarry Warsaw2001-09-231-0/+326
<http://sf.net/projects/mimelib>. There /are/ API differences between mimelib and email, but most of the implementations are shared (except where cool Py2.2 stuff like generators are used).