On Thu, Oct 8, 2009 at 7:23 PM, Brian Granger <ellisonbg.net@gmail.com> wrote:
I know this is not the zope list
 
You're right, it's not.  Perhaps you could send a message to the interface package development list?

    https://mail.zope.org/mailman/listinfo/interface-dev

The disturbing thing is that now A (which is just an object) has been hacked on
by zope.interface.  It has additional methods (__provides__, etc.) that are specific to
zope.

Why does this disturb you?  Would you feel better if it were called __zope_provides__?

Summary: If a class A is later subclassed by something B that calls zi.implements, the original class A
becomes infected with all the zope.interface stuff.

A gets an additional attribute.  Its behavior doesn't change in any other way.  I don't really see what's wrong with that, unless you have a differing definition of the __provides__ attribute in your code.

Is there a way to avoid this?

Depending on what your definition of "this" is, there almost certainly is.  In the simplest case, you could submit a patch to zope interface.

Doesn't this seem like a bad idea?

No.