[Python-Dev] folding cElementTree behind ElementTree in 3.3

Ezio Melotti ezio.melotti at gmail.com
Thu Feb 16 18:32:24 CET 2012


On 14/02/2012 9.58, Stefan Behnel wrote:
> Nick Coghlan, 14.02.2012 05:44:
>> On Tue, Feb 14, 2012 at 2:25 PM, Eli Bendersky wrote:
>>> With the deprecation warning being silent, is there much to lose, though?
>> Yes, it creates problems for anyone that deliberately converts all
>> warnings to errors when running their test suites. This forces them to
>> spend time switching over to a Python version dependent import of
>> either cElementTree or ElementTree that could have been spent doing
>> something actually productive instead of mere busywork.

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.
Regular users won't even notice the warning, unless they stumble upon 
the note in the doc or enable the warnings (and eventually when the 
module is removed).

>> And, of course, even people that *don't* convert warnings to errors
>> when running tests will have to make the same switch when the module
>> is eventually removed.

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.
I don't mind keeping the module and the warning around for a few 
versions and give enough time for everyone to update their imports, but 
if eventually the module is removed I don't want all these developers to 
come and say "why you removed cElementTree without saying anything and 
broke all my code?".

>
> I'm -1 on emitting a deprecation warning just because cElementTree is being
> replaced by a bare import. That's an implementation detail, just like
> cElementTree should have been an implementation detail in the first place.
> In all currently maintained CPython releases, importing cElementTree is the
> right thing to do for users.

 From 3.3 the right thing will be importing ElementTree, and at some 
point in the future that will be the only way to do it.

> These days, other Python implementations already provide the cElementTree
> module as a bare alias for ElementTree.py anyway, without emitting any
> warnings. Why should CPython be the only one that shouts at users for
> importing it?

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?
If we all go through a deprecation process we will eventually be able to 
get rid of this.

Best Regards,
Ezio Melotti

> Stefan


More information about the Python-Dev mailing list