Ive had some more problems which I thought might be due to unexpected acquisition contexts, so I created this function as a diagnostic tool. I _think_ it correctly displays the order in which objects are searched for attributes.... Could anyone with acquisition Zen confirm it's doing the right thing? thanks, def aq_order(ob): """Return a list of object repr's, showing the order in which the various objects in the acquisition tree will searched for attributes. """ return _aq_order(ob,[]) def _aq_order(ob,old): if hasattr(ob,'aq_self'): # It's an acquisition wrapper return _aq_order(ob.aq_self,old) + _aq_order(ob.aq_parent,old) else: # Its a real object if ob in old: # This has already been looked up # return [ '(%s)' % repr(ob) ] return [] else: old.append(ob) return [ repr(ob) ]