----- Original Message ----- From: "William Heymann" <[EMAIL PROTECTED]>
To: <zope@zope.org>
Sent: Friday, October 20, 2006 8:55 AM
Subject: [Zope] not allowed to access a particular tuple


This is an external method I wrote to make it easier to iterate over the
records returned from searching the catalog. However if I have

yield record,item instead of yield item it says that I am not allowed to
access a particular tuple during iteration. How can I make it so that the
value that it yields is something that a python script object can iterate
over? I have also tried doing yield tuple((record,item))  yield
list(record,item)  and they give the same problem.


How I use the script is pretty much

for record, doc in catalogIter(context.Catalog(searchterms)):
   print record
   print doc

Of course what is inside is different from that but it will cause the same
problem since the issue happens in the iteration not inside the for loop.

import zExceptions

def catalogIter(records):
   "iterate over a catalog safely"
   for record in records:
       try:
           item = record.getObject()
           if item is not None:
               yield item
       except (zExceptions.Unauthorized, zExceptions.NotFound, KeyError,
AttributeError):
           pass

The 'yield' statement is not allowed within a 'try' clause (see the Python Reference manual).

Why don't you just build a simple list (or list of tuples) and return that?


Jonathan

_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to