FYI, I've just completed another round of changes to setuptools in CVS, including performance enhancements and new extensibility features (with documentation). (And the 'sdist' command now incorporates the workaround patch for 'delete="true"' in .svn/entries files.) setup() can now take a 'setup_requires' argument that specifies requirements that must be present before setup() runs; this allows you to depend on projects like buildutils, py2exe, py2app, etc. for setup arguments, commands, etc.. distutils extensions can now also define entry points to define new setup() arguments and new EGG-INFO metadata files, as well as setup commands. With this release, it should be possible to take a distutils extension like "buildutils" and implement all of its distutils hooks just by defining "entry points" in its setup script, to declare setup commands, setup() args, and metadata types. Entry points can declare extras that they depend on, too, so this means that commands can depend on external packages, and setuptools will attempt to download and install those packages in the setup directory if the package isn't already available on sys.path. This is probably the last round of non-bugfix changes before releasing 0.6a1, apart from further documentation enhancements. Before 0.6a1 is released, I'd like to add more tips on non-root installations with EasyInstall, and create an updated API reference for pkg_resources. Anyway, I haven't done a lot of regression testing yet, mostly just new features testing, so these changes may still be a bit rough around the edges. I'd appreciate any feedback. Thanks.