[Python-Dev] folding cElementTree behind ElementTree in 3.3
Ezio Melotti
ezio.melotti at gmail.com
Thu Feb 16 19:29:35 CET 2012
On 16/02/2012 19.55, Antoine Pitrou wrote:
> On Thu, 16 Feb 2012 19:32:24 +0200
> Ezio Melotti<ezio.melotti at gmail.com> wrote:
>> If I'm writing code that imports cElementTree on 3.3+, and I explicitly
>> turn on DeprecationWarnings (that would otherwise be silenced) to check
>> if I'm doing something wrong, I would like Python to tell me "You don't
>> need to import that anymore, just use ElementTree.".
>> If I'm also converting all the warnings to errors, it's probably because
>> I really want my code to do the right thing and spending 1 minute to
>> add/change two line of code to fix this won't probably bother me too much.
> But then you're going from a cumbersome situation (where you have to
> import cElementTree and then fallback on regular ElementTree) to an
> even more cumbersome one (where you have to first check the Python
> version, then conditionally import cElementTree, then fallback on
> regular ElementTree).
This is true if you need to support Python <=3.2, but on the long run
this won't be needed anymore and a plain "import ElementTree" will be
enough.
>
>> When the module is eventually removed and you didn't warn them in
>> advance, the situation is going to turn much worse, because their code
>> will suddenly stop working once they upgrade to the newer version.
> Why would we remove the module? It seems "supporting" it should be
> mostly trivial (it's an alias).
I'm assuming that eventually the module will be removed (maybe for
Python 4?), and I don't expect nor want to seen it removed in the near
future.
If something gets removed it should be deprecated first, and it's
usually better to deprecate it sooner so that the developers have more
time to update their code.
As I proposed on the tracker though, we could even delay the deprecation
to 3.4 (by that time they might not need to support 3.2 anymore).
>
>> I would watch this from the opposite point of view. Why should the
>> other Python implementation have a to keep around a dummy module due to
>> a CPython implementation detail?
> I don't know, but they already have this module, and it certainly costs
> them nothing to keep it.
There will also be a cost if people keep importing cElementTree and fall
back on ElementTree on failure even when this won't be necessary
anymore. This also means that more people will have to fix their code
if/when the module will be removed if they kept using cElementTree.
They can also find cElementTree in old code/tutorial and figure out that
it's better to use the C one because is faster and keep doing so because
the only warning that would stop them is hidden in the doc.
I think the problem with the DeprecationWarnings being too noisy was
fixed by silencing them; if they are still too noisy then we need a
better mechanism to warn people who care (and going to check the doc
every once in a while to see if some new doc warning has been added
doesn't strike me as a valid solution).
Best Regards,
Ezio Melotti
More information about the Python-Dev
mailing list