[Zope-dev] zope.container analysis
Chris McDonough
chrism at plope.com
Fri May 15 01:41:34 EDT 2009
On 5/14/09 11:05 PM, Chris McDonough wrote:
> zope.container (32 transitive dependencies) has some possibly low-hanging
> dependency tease-apart fruit. Does anyone have any ideas about to sort out the
> below, particularly with externalizing the mentioned interface dependencies?
>
> - It depends on zope.filerepresentation but depends only on its interfaces
> IReadDirectory, IWriteDirectory, and IDirectoryFactory.
> (zope.filerepresentation has 32 transitive dependencies).
I found out that zope.container<->zope.filerepresentation is a direct circular
dependency and that zope.filerepresentation is a package containing only
interfaces. So breaking this dependency won't get us much for zope.container.
OTOH, breaking zope.filerepresentation's dependency on zope.container might be a
win (I dont know what else depends on zope.filerepresentation).
zope.filerepresentation depends only on zope.container.interfaces.IReadContainer
and zope.container.interfaces.IWriteContainer.
> - It depends on zope.app.dependable but depends only on its interfaces
> IDependable and DependencyError. (note: zope.app.dependable might
> be a candidate to be called zope.dependable as it depends on no other zope.app
> packages; it does depend on about 20 other zope.* packages transitively tho).
I fixed this by using a zcml:condition statement on an event subscriber.. if
zope.app.dependable is not installed, nothing could have been registered for the
IDependable interface which a "CheckDependency" subscriber is using to figure
out dependents, so there's no use registering the subscriber.
> - It depends on zope.publisher, but only its interfaces browser.IBrowserRequest,
> browser.IBrowserPublisher, NotFound, IDefaultViewName,
> xmlrpc.IXMLRPCPublisher, and IPublishTraverse.
>
> - I was able to break a runtime logic dependency on zope.traversing by
> disusing zope.traversing.api.getPath in favor of using
> ILocationInfo(object).getPath(). The rest of the runtime dependencies on
> zope.traversing are interface dependencies (ITraversable, IContainmentRoot).
These are still up for debate.
- C
More information about the Zope-Dev
mailing list