Hi all 

> Betreff: Re: [Zope-dev] zope.traversing's ILocation behavior
> On Jul 8, 2010, at 11:04 AM, Martijn Faassen wrote:
> > 
> > I propose the following adjustment:
> > 
> >   try:
> >      container = context.__parent__
> >   except AttributeError:
> >      container = ILocation(context).__parent__

I'm fine with that too. But this will skip the __conform__
lookup, right?

See: zope/interface/interfaces.py line: 167
class InterfaceBasePy(object):
    """Base class that wants to be replaced with a C base :)

    def __call__(self, obj, alternate=_marker):
        """Adapt an object to the interface
        conform = getattr(obj, '__conform__', None)
        if conform is not None:
            adapter = self._call_conform(conform)
            if adapter is not None:
                return adapter

        adapter = self.__adapt__(obj)

        if adapter is not None:
            return adapter
        elif alternate is not _marker:
            return alternate
            raise TypeError("Could not adapt", obj, self)

But anyway, also the initial implementation which we
used a long time whould skip such __conform__ call.

In my point of view is the usage of the absoluteURL
method an explicit pypass of the ILocation adaption
and an improved speedup lookup based on the directly
__parent__ attribute access. Probably we should add
a comment about that in the absoluteURL method.

Roger Ineichen

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

Reply via email to