[Zope-dev] extracting things out of zope.app.component

Hanno Schlichting hannosch at hannosch.eu
Tue Jan 27 13:49:16 EST 2009


Martijn Faassen wrote:
> We're working (at a small Grok sprint) on refactoring bits of Zope to 
> reduce the insane dependency relations that exist between some packages. 
> The goal is a nice layered dependency structure for Zope 3 packages.

This is awesome news :)

I maintain dependency graphs for all zope packages included in Zope2
trunk at http://hannosch.eu/dependencies/zope/. Those should be correct
covering the state from yesterday before your release-marathon. But I
think the depdendencies didn't change for any of the packages I cover.

If you want to generate those yourself, to get an easy graphical way of
understanding the mess, then the following steps should get you there:

easy_install tl.eggdeps

Thanks Thomas! This parses the requires.txt in the egg_info folders. So
make sure they are updated after you edit any setup.py files. Run:

eggdeps -x -d zope.foo -i setuptools > zope.foo-full.dot

[-x ignores extras, -d specifies a dot file as output, -i ignores
setuptools]

In order to make the graphs more readable you can remove the transitive
dependency edges from the graph:

tred zope.foo-full.dot > zope.foo.dot

And finally produce a nice visual graph:

dot -Tjpeg zope.foo.dot > zope.foo.jpeg

[-Tsvg or -Tpng should work as well]

tred and dot are part of graphviz. If you happen to run Mac OS and use
MacPorts you need to install graphviz-devel instead of the graphviz port
for tred to work. In the latest stable graphviz port tred is broken.

Hanno



More information about the Zope-Dev mailing list