The more I use setuptools the more I love it! The next version of filament is going to pretty much require setuptools (though I might do a custom monolithic distutils download). The features that really won me over are namespace packages, and develop mode.
Namespace packages let you release modules as multiple eggs, but every python module inside the egg belongs to a _single_ top level module name. In the future I plan on having a core filament module developed in one source tree and others in separate trees. For example, I can work on filament.skins in a separate tree from the core of filament, but all python sees is a single parent module with skins within it.
Develop mode is also really cool, I used to manage everything with a thousand symlinks and it was a pain to work with both releases and development trees at the same time. Setuptools gives the setup.py script a new command 'develop' which creates a link (not-symlink) to the development source tree. It's versioned and everything, so it becomes really easy to switch back and forth. For me this means no more futzing around with sys.path to get my symlinks and eggs in the right order.
My only complaint is that it made me change the way I was writing my version numbers. I have to do x.x.devel instead of x.x-devel. But that is pretty minor for the smart version aware management that setuptools gives.
© Copyright 2009-2011 John Mulligan
Every blog page or article on this site is available under the CC-BY-SA license unless otherwise noted.