Philipp von Weitershausen wrote at 2006-6-22 09:03 +0200: >Dieter Maurer wrote: > ... >> If you are working on it, then you should implement a >> means that "__bobo_traverse__" can tell the caller that >> it should use the normal default. > ... >> In our private Zope version, I have used an exception >> ("UseTraversalDefault") for this purpose. > >I think that __bobo_traverse__ can raise AttributeError currently to >indicate that it has failed to look up an attribute and that traversal >should try other options. Apart from being a more explicit spelling, >what advantage would UseTraversalDefault have?
First of all, I had expected that you were in favour of "explicit is better than implicit" (usually, I am not). In this case, you should be happy with a "more explicit spelling" ;-) I do not know the current code in Zope 2.10, but earlier it looked like: if hasattr(object,'__bobo_traverse__'): try: subobject=object.__bobo_traverse__(request,entry_name) ... except (AttributeError, KeyError): if debug_mode: return response.debugError( "Cannot locate object at: %s" % URL) else: return response.notFoundError(URL) With this code, you were only partially right: "__bobo_traverse__" could indeed raise an "AttributeError" to do something special -- but not to get the default traversal but to get a "NotFound" or a "DebugError" exception. That's quite different from what I proposed ;-) Should you prefer the implicit use of "AttributeError" over a more explicit use (the "UseTraversalDefault" was only some possibility; I am happy, if you find something better -- but equally explicit) to get the default traversal, I would not be completely unhappy but think: not optimal but better than nothing ;-) -- Dieter _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org 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 )