[Python-3000] should rfc822 accept text io or binary io?
Barry Warsaw
barry at python.org
Fri Aug 17 21:03:11 CEST 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Aug 17, 2007, at 1:22 PM, Martin v. Löwis wrote:
> A library implementing that in Python should certainly use bytes
> at the network (stream) side, and strings at the application side.
> Even though the format is human-readable, the protocol is byte-
> oriented,
> not character-oriented.
I should point out that the email package does not really intend to
operate from the wire endpoints. For example, for sending a message
over an smtp connection it expects that something like smtplib would
properly transform \n to \r\n as required by RFC 2821. It's a bit
dicier on the input side since you could envision a milter or
something taking an on-the-wire email representation from an smptd
and parsing it into an internal representation.
As I'm working on the email package I'm realizing that classes like
the parser and generator need to be stricter about how they interpret
their input, and that both use cases are reasonable in many
situations. Sometimes you want the parser to accept strings, but
bytes are not always unreasonable. Similarly with generating
output. Internally though, I feel fairly strongly that an email
message should be represented as strings, though sometimes (certainly
for idempotency) you still need to carry around the charset (i.e.
encoding). Headers are an example of this.
The email package conflates 8-bit strings and bytes all over the
place and I'm trying now to make its semantics much clearer.
Ideally, the package would be well suited not only for wire-to-wire
and all-internal uses, but also related domains like HTTP and other
RFC 2822-like contexts.
- -Barry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
iQCVAwUBRsXw8HEjvBPtnXfVAQIjrAP+LJ5X3CPqYYMpTZHl3WQeMPq1p4SA36yo
exM518OJl/10i5DGDCxnwdVylnlQpvKG+wnjNCXSdfEf9O/Fk63tDrpGqlGBNBkx
lNGcHl/s2b+vMm8uhkqu0d1wjOo90od8HFtMA3Y1iSsJw73F4/6sZ7XPR6ERd0yU
o1EIR1sHuwE=
=pE1O
-----END PGP SIGNATURE-----
More information about the Python-3000
mailing list