[Zope3-dev] Re: Dependency cleanup: zope.traversing

Philipp von Weitershausen philipp at weitershausen.de
Thu Aug 16 06:53:56 EDT 2007

Tres Seaver wrote:
> Hash: SHA1
> Stephan Richter wrote:
>> On Wednesday 15 August 2007 08:01, Christian Theune wrote:
>>> zope.traversing has a dependency to zope.app.applicationcontroller. This
>>> is because zope.traversing implements the "etc" namespace and has a hard
>>> coded reference to "applicationcontrol" there.
>>> In the same place it also looks up site managers  (in a hard coded way).
>>> As a strategy to remove this dependency we should move the etc namespace
>>> to some other place in zope.app. I did not find reasonable candidates to
>>> move this two. Bad candidates are zope.app.publisher or
>>> zope.app.publication, zope.app.applicationcontrol. A new package could
>>> be created for the etc namespace too, but I'd like to avoid that.
>> I think that zope.app.component would be a good candidate, because "etc" is 
>> pretty much about accessing the local site. I know it was originally designed 
>> for allowing many different non-content things to be plugged in, but this has 
>> not materialized.
>> An alternative would be to get rid of ++etc++ and implement ++site++ and 
>> ++control++. Now that I think about it, I actually favor this. ;-)
> Or change zope.traversing such that it looks up namespace-based stuff
> via a named utility / adapter;  then packages which supply a namespace
> are not dependencies at all.

It already does. Each namespace is its own (named) adapter. That's why 
Christian is suggesting to move the adapter that's responsible for 
++etc++ out of zope.traversing.

I'm for zope.app.publication. It already has a few hard-coded places 
where it supports the applciation controller from 
zope.app.applicationcontrol, so I think it would make much sense there.

I don't think it doesn't make much sense in zope.app.component. Yes, 
"++etc++site" may be about getting to the site manager of a site, but 
that's just the URL representation of ISite.getSiteManager(). 
zope.app.component is about ISite, zope.app.publication is about how to 
map objects to URLs and back. That's why it should be in 

http://worldcookery.com -- Professional Zope documentation and training

More information about the Zope3-dev mailing list