FYI, I've just checked in 0.6a0, which is a pretty major refactoring of certain aspects of the pkg_resources implementation and API. The original purpose was to make the API conform to the design spec I posted a few weeks ago, but in the process I ended up finding lots of latent bugs that I was able to stomp. For example, much of the setuptools/EasyInstall internals were vulnerable to being confused by case-insensitive filesytems, and to being fooled by symlinks into thinking that a pair of paths were different even though they referred to the same file.
There are also a lot of new API features, mainly to do with the new WorkingSet class, which embeds the logic needed to manage a "working set" of active (importable) distributions. This allows you to do things like:
# List all distributions that can be imported without another # require() call # for dist in pkg_resources.working_set: print dist
You can also use the 'subscribe' method of a working set to add a callback that will be invoked for every active distribution (those already present in the working set, plus any that are added later). This is so that frameworks and extensible applications can register to scan plugins for new and useful metadata.
Anyway, because of the breadth of the changes, I'd like assistance with testing on different platforms, Python versions, etc. before I turn this into an official 0.6a1 release. Note that if you have any scripts that use any pkg_resources APIs for Distribution, Requirement, or AvailableDistributions objects, they may need to be updated; see the changelog in setuptools.txt (in the CVS version of setuptools) for details of the changes.
P.S. I've also implemented a stricter version of Ian Bicking's #egg syntax, and included docs on how to use it in setuptools.txt under the heading, "Making your package available for EasyInstall". I have not, however, implemented a --develop option yet.