thomas at thomas-lotze.de
Mon Aug 6 10:24:40 CEST 2007
tl.eggdeps 0.2.1 has been released.
The eggdeps tool reports dependencies between eggs in the working set.
Dependencies are considered recursively, creating a directed graph. This graph
is printed to standard output either as plain text, or as an input file to the
tl.eggdeps is released under the Zope Public License, version 2.1.
The package is available from the Python package index as a source
distribution and Python 2.4 and 2.5 eggs:
You can access the source code repository at
or browse it using ViewCVS at
>From the documentation (see
Graph building strategies
The dependency graph may be built following either of two strategies:
:Analysing the whole working set:
Nodes correspond exactly to the distributions in the working set. Edges
corresponding to all conceivable dependencies between any active
distributions are included, but only if the required distribution is active
at the correct version. The roots of the graph correspond to those
distributions no other active distributions depend upon.
:Starting from one or more eggs:
Nodes include all packages depended upon by the specified distributions and
extras, as well as their deep dependencies. They may cover only part of the
working set, as well as include nodes for distributions that are not active
at the required versions or not active at all (so their dependencies can not
be followed). The roots of the graph correspond to the specified
Some information will be lost while building the graph:
- If a dependency occurs both mandatorily and by way of one or more extras, it
will be recorded as a plain mandatory dependency.
- If a distribution A with installed extras is a dependency of multiple other
distributions, they will all appear to depend on A with all its required
extras, even if they individually require none or only a few of them.
Reducing the graph
In order to reduce an otherwise big and tangled dependency graph, certain
nodes and edges may be omitted.
Nodes may be ignored completely by exact name or regular expression
matching. This is useful if a very basic distribution is a depedency of a
lot of others. An example might be ``setuptools``.
Distributions may be declared dead ends by exact name or regular expression
matching. Dead ends are included in the graph but their own dependencies
will be ignored. This allows for large subsystems of distributions to be
blotted out except for their "entry points". As an example, one might
declare ``zope.app.*`` dead ends in the context of ``zope.*`` packages.
Reporting and following extra dependencies may be switched off completely.
This will probably make most sense when analysing the working set rather
than the dependencies of specified distributions.
More information about the Python-announce-list