Re: component registry navelgazing

Chris McDonough <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <1307960691.2325.18.camel@thinko>
On Mon, 2011-06-13 at 10:08 +0100, Chris Withers wrote:
> On 12/06/2011 21:48, Chris McDonough wrote:
> > Currently if you ask a registry to singly-adapt an object to an
> > interface, and the object you're trying to adapt implements that
> > interface, here's what happens:
> >
> >>>> from zope.component.registry import Components
> >>>> c = Components()
> >>>> from zope.interface import Interface, implements
> >>>> class IFoo(Interface): pass
> > ...
> >>>> class Foo(object):
> > ...     implements(IFoo)
> > ...
> >>>> foo = Foo()
> >>>> c.queryAdapter(IFoo, foo)
> > <None>
> 
> Looking back in history:
> 
> https://mail.zope.org/pipermail/zope-dev/2008-August/032902.html
> 
> I guess one or other of us has the parameter order wrong, probably me.
> 
> Much thread ensued:
> https://mail.zope.org/pipermail/zope-dev/2008-August/thread.html#32902
> https://mail.zope.org/pipermail/zope-dev/2008-September/thread.html#33174
> 
> Some justification for keeping the status quo from Fred:
> 
> https://mail.zope.org/pipermail/zope-dev/2008-September/033172.html
> 
> I stand by my resultant request here:
> 
> https://mail.zope.org/pipermail/zope-dev/2008-September/033170.html
> 
> Maybe less people care about ZCA now and so we might actually get 
> sensible changes made.

This argument against makes sense to me:

https://mail.zope.org/pipermail/zope-dev/2008-August/032908.html

So I've added a method to a subclass of
zope.component.registry.Components for my own purposes:

    def queryAdapterOrSelf(self, object, interface, default=None):
        provides = providedBy(object)
        if not interface in provides:
            return self.queryAdapter(object, interface, default=default)
        return object


- C


_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.