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