[Twisted-Python] Components
Donovan Preston
dp at twistedmatrix.com
Thu Feb 26 13:42:50 MST 2004
On Feb 26, 2004, at 3:17 PM, James Y Knight wrote:
> On Feb 26, 2004, at 2:43 PM, Bob Ippolito wrote:
>> How about just migrating off of t.p.components and switching to
>> PyProtocols? The license is compatible, it has PEP-backing, it is a
>> superset of what t.p.components does, has optional Pyrex
>> acceleration, and is compatible with Interfaces from itself,
>> t.p.components, and zope.components. The default Interface
>> implementation does not support the __call__ adaptation that we all
>> know and love, but it is actually generic enough to allow it.
>>
>> As a side note, PEAK's peak.util.imports.whenImported hooks,
>> importString, and lazyModule might also be pretty useful to Twisted
>> (among so many other things).
>
> And, while PyProtocols doesn't seem to support any sort of lazy
> adapter registration, it would probably be doable via a framework
> built on top of whenImported.
Switching Nevow to PyProtocols would have been my first choice. Since I
didn't have the time to learn it, and didn't feel like introducing the
additional dependency at the time, I hacked t.p.c into nevow.compy so
that I could prevent t.p.c's "import the world" behavior which was
detrimental to nevow. Unfortunately this means you have to now use
*two* "global" component registries when you use Nevow.
I am +1000 with using PyProtocols for Nevow since it would reduce my
headaches. I think that a global component registry is the one central
important feature of a components system, making the current situation
less than ideal. twisted.python.components wasn't flexible enough to do
what I needed to do in Nevow but PyProtocols is, and supports more
useful things like protocolForURI which will be necessary once people
start designing interfaces that are useful outside of just one project.
I am less excited about introducing a dependency into Nevow. It would
be nice if we could distribute PyProtocols in the same tarball as Nevow
and only install it if needed.
dp
More information about the Twisted-Python
mailing list