[openstack-dev] [all] Deprecating exceptions

Radomir Dopieralski openstack at sheep.art.pl
Mon Sep 22 15:07:04 UTC 2014


Horizon's tests were recently broken by a change in the Ceilometer
client that removed a deprecated exception. The exception was deprecated
for a while already, but as it often is, nobody did the
work of removing all references to it from Horizon before it was too
late. Sure, in theory we should all be reading the release notes of
all versions of all dependencies and acting upon things like this.
In practice, if there is no warning generated in the unit tests,
nobody is going to do anything about it.

So I sat down and started thinking about how to best generate a warning
when someone is trying to catch a deprecated exception. I came up with
this code:

http://paste.openstack.org/show/114170/

It's not pretty -- it is based on the fact that the `except` statement
has to do a subclass check on the exceptions it is catching. It requires
a metaclass and a class decorator to work, and it uses a global
variable. I'm sure it would be possible to do it in a little bit cleaner
way. But at least it gives us the warning (sure, only if an exception is
actually being thrown, but that's test coverage problem).

I propose to do exception deprecating in this way in the future.
-- 
Radomir Dopieralski



More information about the OpenStack-dev mailing list