I just analysed why "AccessControl.Role.RoleManager.get_valid_userids" raised an unexpected "AttributeError".
It uses the wrong idiom to access optional attribute: aclu = getattr(aq_base(item), '__allow_groups__', _notfound) This means, that "aclu" is only partially acquisition wrapped and does not behave as usual. Until Tim reported that "hasattr" behaves bad with respect to exceptions, I have been convinved, that the following idiom were correct: if hasattr(aq_base(obj), attrname): attr = getattr(obj, attrname) ... Meanwhile, the best way to access optional attributes seems to be if getattr(aq_base(obj), attrname, notFound) is not notFound: attr = getattr(obj, attrname) ... Please keep this in mind when you push the "Death to 'hasattr'" project. -- Dieter _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )