[Interface-dev] ClassProvides vs. inspect.getmembers

Thomas Lotze thomas at thomas-lotze.de
Wed Jul 8 13:17:20 EDT 2009

I just ran into trouble with the following:

>>> import zope.interface
>>> import inspect
>>> class I(zope.interface.Interface):
...     pass
>>> class Foo(object):
...     zope.interface.implements(I)
>>> class Bar(Foo):
...     pass
>>> inspect.getmembers(Bar)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/opt/Python-2.5/lib/python2.5/inspect.py", line 206, in getmembers
    value = getattr(object, key)
AttributeError: __provides__

This is due to the fact that the ClassProvides declaration deliberately
raises a AttributeError when queried on a subclass of the class it belongs
to. I'd like to know people's opinions on whether to change this
behaviour, perhaps to returning None or something empty in order not to
break basic inspection.


More information about the Interface-dev mailing list