[Twisted-Python] Notes on switching twisted to new zope.interface code

James Y Knight foom at fuhm.net
Wed Jul 21 18:50:07 EDT 2004


On Jul 21, 2004, at 5:04 PM, Eugene Coetzee wrote:
> I am new to  Python, Twisted and Zope - so I guess I look at the world 
> through my Perlish C++ tainted goggles :)
>
> Just one or two comments - 30  000  feet from above.  I have noticed 
> the introduction  of Zope interfaces in other projects as well where 
> some developers are almost going bonkers with interfaces as "the new 
> best thing" and where simple inheritance is being discarded in places 
> where they should really be used. Don't think that is a good thing.

One important thing to note: The zope interfaces package is not being 
used to replace inheritance (That already happened years ago). It is 
being used to replace the twisted interfaces module, which was slower 
and buggy. From my perspective the switch is an unambiguously good 
thing. The only issues are in the migration path. But that's mostly 
worked out now thanks to itamar.

Just in case what itamar said was too lengthy, here's the shortened 
version:

First -- all your old code *will continue to work with no changes*. 
However, to eliminate DeprecationWarnings and cause your code to be 
faster, make the following change:

   twisted.python.components.implements(o, IFoo) => IFoo.providedBy(o)
   class X(): __implements__ = IFoo, => class X(): 
zope.interface.implements(IFoo)

If you are modifying code in Twisted itself, you have to do slightly 
more, so that 3rd party classes relying on __implements__ to work will 
continue to function:

   twisted.python.components.implements(o, IFoo) => 
twisted.python.components.fixClassImplements(o.__class__); 
IFoo.providedBy(o)

   class X(): __implements__ = IFoo, => class X(): 
zope.interface.implements(IFoo); 
twisted.python.components.backwardsCompatImplements(X)

James





More information about the Twisted-Python mailing list