Just a note that this can't be put in Zope 2.6 since functions and methods 
don't have a __call__ in Python 2.1.

-Casey

On Wednesday 20 November 2002 02:33 pm, Steve Alexander wrote:
> Thomas Guettler wrote:
> 
> > Hi!
> >
> > In KeywordIndex the newKeywords get called
> > if they are "callable":
> >     def _get_object_keywords(self,obj):
> >         newKeywords = getattr(obj, self.id, ())
> >         if callable(newKeywords):               # (*)
> >                     newKeywords = newKeywords()
> >         if hasattr(newKeywords,'capitalize'): # is it string-like ?
> >             newKeywords = (newKeywords, )
> >         return newKeywords
> >
> > This fails if the newKeywords are stored in a PersistentList.
> >
> > Callable is true, but there is no __call__ attribute.
> >
> > I changed the line marked with (*) to
> >  if hasattr(newKeyword, "__call__"):
> >
> > and this seems to work
> >
> > I think this does not break anything and could be included in the
> > original.
> >
> > Am I the first how uses PersistentList for an indexed attribute? Is
> > there a reason not to do so?
> 
> 
> The KeywordIndex should be changed to check for the __call__ attribute, 
> rather than relying on 'callable'. You cannot reliably use 'callable' 
> when you're also using acquisition wrappers.
> 
> See my comment to this Collector report.
> 
>    http://collector.zope.org/Zope/578
> 
> I suggest you report the bug you have found in the Collector.
> 
> --
> Steve Alexander

_______________________________________________
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )

Reply via email to