The zope.traversing package provides adapteres for resolving object paths by traversing an object hierarchy. This also includes support for traversal namespaces (e.g. ++view++, ++skin++, etc.) as well as computing URLs via the @@absolute_url view.


4.0.0a4 (unreleased)

  • Nothing changed yet.

4.0.0a3 (2013-03-12)

  • Added support for PyPy 1.9.

4.0.0a2 (2013-02-21)

  • Removed zope.container testing dependency to break another circular dependency.
  • Removed zope.pagetemplate testing dependency to break another circular dependency.
  • Removed zope.browserpage (ZCML) dependency by using low-level directives.
  • Removed testing dependency.

4.0.0a1 (2013-02-20)

  • Replaced deprecated zope.component.adapts usage with equivalent zope.component.adapter decorator.
  • Replaced deprecated zope.interface.implements usage with equivalent zope.interface.implementer decorator.
  • Dropped support for Python 2.4 and 2.5.
  • Added support for Python 3.3.
  • Fixed dependencies : removed zope.tal and added zope.browserpage.

3.14.0 (2011-03-02)

  • Re-release of 3.13.1 as a feature version as it introduces dependencies on new feature releases.

3.13.1 (2010-12-14)

  • Fixed ZCML-related dependencies.

3.13 (2010-07-09)

  • When a __parent__ attribute is available on an object, it is always used for absolute URL construction, and no ILocation adapter lookup is performed for it. This was the previous behavior but was broken (around 3.5?) due to dependency refactoring.

    If the object provides no __parent__ then an ILocation adapter lookup will be performed. This will always succeed as zope.location provides a default LocationProxy for everything, but more specific ILocation adapters can also be provided.

3.12.1 (2010-04-30)

  • Removed use of 'zope.testing.doctestunit' in favor of stdlib's doctest.

3.12.0 (2009-12-29)

  • Avoid testing dependencies on zope.securitypolicies and zope.principalregistry.

3.11.0 (2009-12-27)

  • Removed testing dependency on

3.10.0 (2009-12-16)

  • Removed stray test claiming a no longer existing dependency on
  • Refactored functional tests to loose dependency on both and
  • Simplified tests for the browser sub-package by using PlacelessSetup from zope.component.testing instead of
  • Simplified test_dependencies module by using zope.configuration instead of
  • Removed testing dependency on
  • Replaced testing dependency on with zope.securitypolicy.
  • Removed testing dependency on in favor of more explicit dependencies.
  • Removed testing dependency on
  • Replaced a test dependency on with a dependency on zope.pagetemplate.

3.9.0 (2009-12-15)

  • Moved IBeforeTraverseEvent from into this package, as we already deal with publication traversal.

3.8.0 (2009-09-29)

  • In zope.traversing.api.getParent(), try to delegate to zope.location.interfaces.ILocationInfo.getParent(), analogous to getParents(). Keep returning the traversal parent as a fallback.
  • Brought ITraverser back from zope.location where it had been moved to invert the package interdependency, but is no longer used now.

3.7.2 (2009-08-29)

  • Made virtual hosting tests compatible with zope.publisher 3.9. Redirecting to a different host requires an explicit trusted redirect now.

3.7.1 (2009-06-16)

  • AbsoluteURL now implements the fact that __call__ returns the same as __str__ in a manner that it applies for subclasses, too, so they only have to override __str__ and not both.

3.7.0 (2009-05-23)

  • Moved the publicationtraverse module to zope.traversing, removing the -> dependency (which was a cycle).
  • Look up the application controller through a utility registration rather than a direct reference.

3.6.0 (2009-04-06)

  • Change configure.zcml to not depend on
  • This release includes the BBB-incompatible zope.publisher.skinnable change from 3.5.3.

3.5.4 (2009-04-06)

  • Revert BBB-incompatible use of zope.publisher.skinnable: that change belongs in a 3.6.0 release, because it requires a BBB-incompatible version of zope.publisher.

3.5.3 (2009-03-10)

  • Use applySkin from new location. zope.publisher.skinnable instead of zope.publisher.browser.
  • Use IAbsoluteURL lookup instead of the "absolute_url" view in the recursive AbsoluteURL adapters (LP: #338101).

3.5.2 (2009-02-04)

  • The RootPhysicallyLocatable is not the same as LocationPhysicallyLocatable now in zope.location. Fix the import and testing setups.

3.5.1 (2009-02-02)

  • The RootPhysicallyLocatable adapter has been superseded by the refactored zope.location.traversing.LocationPhysicallyLocatable that we depend on since 3.5.0a4.

    Remove the adapter and its registration, and making its import place pointing to zope.location.traversing.LocationPhysicallyLocatable to maintain backward-compatibility.

    This also fixes a bug introduced in version 3.5.0a4 when trying to call getParents function for the root object.

  • Use direct imports instead of compatibility ones for things that were moved to zope.location.

  • Remove the zope.traversing.interfaces.INamespaceHandler interface, as it seems not to be used for years.

  • Change package's mailing list address to zope-dev at instead of retired zope3-dev at

3.5.0 (2009-01-31)

  • Use zope.container instead of
  • Use instead of in the unit tests.
  • Reduced, but did not eliminate, test dependencies on

3.5.0a4 (2008-08-01)

  • Reverse dependencies between zope.location and zope.traversing.
  • Updated (test) dependencies and tests to expect and work with a spec compliant TAL interpreter as available in zope.tal >= 3.5.0.
  • Fixed deprecation warning caused by using an old module name for ZopeSecurityPolicy in ftesting.zcml
  • Made sure traversing doesn't raise an TypeError but a TraversalError when the traversal step before yielded a string.

3.5.0a3 (2007-12-28)

  • backed out the controversial ++skin++ traverser for XML-RPC.

3.5.0a2 (2007-11-28)

  • ported 3.4.1a1 to trunk
    • Do not use unicode strings to set the application server in the virtual host namespace. This caused absolute_url to create unicode URL's.
  • Added a traverer for ++skin++ for XMLRPC skins (IXMLRPCSkinType). This also means that the normal ++skin++ namespace handler is only bound to IBrowserRequest.
  • Resolved the dependency on by importing the application controller only if the package is available.

3.4.1 (2008-07-30)

  • Fixed deprecation warning caused by using an old module name for ZopeSecurityPolicy in ftesting.zcml

3.4.1a1 (2007-11-13)

Do not use unicode strings to set the application server in the virtual host namespace. This caused absolute_url to create unicode URL's.

3.4.0 (2007-09-29)

No further changes since 3.4.0a1.

3.4.0a1 (2007-04-22)

Initial release as a separate project, corresponds to zope.traversing from Zope 3.4.0a1