[Zope3-Users] Re: "dumping" a component registry

Chris McDonough chrism at plope.com
Sun Sep 16 15:57:31 EDT 2007


Thank you much Phillip!

On Sep 15, 2007, at 7:04 PM, Philipp von Weitershausen wrote:

> Chris McDonough wrote:
>> I'm having a bit of trouble debugging a failed browser view  
>> lookup.  It has something to do with environment, because lookups  
>> for the view work in one of my sandboxes, and fail in another,  
>> even though both seemingly has the same ZCML and code.
>> Does anyone have any scripts already written that, say, at  
>> "zopectl run" time dump the various component registries to a  
>> human-consumable format so problems like this can be debugged more  
>> simply?
>
> >>> from zope.component import getSiteManager
> >>> reg = getSiteManager()
> >>> from pprint import pprint
> >>> for info in reg.registeredAdapters():
> ...     pprint((info.required, info.provided, info.factory,  
> info.name))
> ...
>
> This will probably drown you with information, though. One step  
> would be to constrain the output only to browser views, in other  
> words, 2-way multi-adapters whose second required interface is or  
> extends IBrowserRequest:
>
> >>> from zope.publisher.interfaces.browser import IBrowserRequest
> >>> for info in reg.registeredAdapters():
> ...     if (len(info.required) == 2 and
> ...         info.required[1].isOrExtends(IBrowserRequest)):
> ...         pprint((info.required, info.provided, info.factory,
> ...                 info.name))
> ...
>
> For better findability, you might want to search by name now. This  
> is left up to the skilled reader as an exercise ;)
>
>
> In my experience, failed adapter lookups are mostly due to
>
> * configuration simply not getting loaded,
>
> * things being registered for one thing but objects providing  
> another (this can be especially confusing if the two things that  
> are separate have similar or equal names, therefore making you  
> believe they're the same. Python's "is" operator will do wonders).
>
> * in case of browser views, missing layers applied to the request.
>
> -- 
> http://worldcookery.com -- Professional Zope documentation and  
> training
>



More information about the Zope3-users mailing list