Message254095
> Yes, the port from python2 to python3 of the email package
> was...suboptimal.
> ...
> The whole concept of using unicode as a 7bit data channel only is
> just...weird.
+100 to both.
> But, we are now stuck with maintaining that API for backward
> compatibility reasons.
That's a weird definition of backward compatibility, though. The API
breaks backward compatibility to Python 2. Any Python 3 user shouldn't
use the broken API anyway, IMHO.
> To fix it, I rewrote significant parts of the email package, which
> is the new API.
Which unfortunately isn't any help if one needs to stay compatible to
2.7.
> It also is...fraught with the danger of bugs...to talk about
> serializing an email message as a string, transforming it, and then
> trying to re-parse it as an email message. If your transformations
> are simple, it will probably work, but anything at all complex runs
> the risk of breaking the message.
One of Python's mottos used to be:
We are all consenting adults here.
But there are other uses for converting a message instance to a
unicode string. Display, printing, and grepping come to mind.
> And having non-ascii bodies counts as non-trivial.
For anybody living in a non-ascii country that statement sounds
**very strange**.
To start with, I have many friends with names that contain non-ascii
characters.
> You do have to conditionalize your 2/3 code to use the bytes parser
> and generator if you are dealing with 8-bit messages. There's just no
> way around that.
I did that yesterday. There are problems with that though:
* Recognizing the problem for what it is.
Trying to run Python 2.7 code that *should* run under 3.5 but breaks
with weird errors wastes a lot of time.
Multiply with the number of Python programmers that want to migrate
and you get a problem.
If `message_as_string` and `as_string` just weren't there in 3.x it
would be much less of a problem (clear documentation would also help
but not as much).
* Lots of ugly workarounds for the same problem.
Most of them (mine certainly included) are done quick and ad-hoc and
probably break in many ways.
The question then arises: why should one use the email package at
all. But of course that way lies madness.
Just more roadblocks for the move to Python 3. |
|
Date |
User |
Action |
Args |
2015-11-05 09:58:20 | tanzer@swing.co.at | set | recipients:
+ tanzer@swing.co.at, r.david.murray |
2015-11-05 09:58:19 | tanzer@swing.co.at | link | issue25545 messages |
2015-11-05 09:58:19 | tanzer@swing.co.at | create | |
|