[Zope3-dev] Re: Ranking adapters

Jim Fulton jim at zope.com
Tue Sep 30 12:10:27 EDT 2003


Jim Fulton wrote:
> 
> I'm noodling some adapter lookup issues as part of adaptergeddon.
> Here's a hypothetical situation:
> 
> We have 5 interfaces:
> 
>   class F0(interface): pass
>   class F1(F0): pass
> 
>   class B0(interface): pass
>   class B1(B0): pass
>   class B2(B1): pass
> 
> We have two locations/sites, L1 and L2, such that L2 is contained in
> (is a subsite of) L1.
> 
> We have the following adapter definitions in L1:
> 
>   A110 from F1 to B0
>   A111 from F1 to B1
>   A112 from F1 to B2
> 
> We have the following adapter definitions in L1:
                                                ^^
Ugh                                            L2

> 
>   A200 from F0 to B0
>   A212 from F1 to B2
> 
> (It helps to make a picture, but I can't attach one.)
> 
> Now, suppose that we need an adapter from F1 to B.
> We can use any of the adapters above.  How would we rank
> the above adapters?  I suggest:
> 
>   A212
>   A110
>   A111
>   A110
>   A200
> 
> The rational?
> 
> The most important factor is the interface being adapted.
> The second most important factor is location.
> The third most important factor is the interface being adapted to.
> 
> If we want a B, we don't really care much whether we get a B, a B1,
> or a B2.  It's fairly important to be able to override things locally,
> but it's not as important as getting an adapter tailored to the object.
> 
> Thoughts? Comments?
> 
> Jim
> 


-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org




More information about the Zope3-dev mailing list