Phillip J. Eby wrote:
Or, more specifically, there's a bunch of examples distributed in the Paste source distribution; these examples require lots of extra software, even if Paste doesn't. How can I easily get all the examples working?
Define an "examples" extra, then use:
Note, by the way, that if the examples need the HTTP extra, then you can specify that like this:
setup( ... extras_require = dict( HTTP = ['WSGIUtils'], examples = ['Paste[HTTP]', ...other stuff here...], ) )
That is, it's okay to have cyclical dependencies; the dependency resolution mechanism is smart enough to figure out what to do.
Cool... now I'm thinking about how I should distribute the examples. They are already part of the source distribution (i.e., in the MANIFEST but not the packages). They aren't a package at all, really, more like data (even the .py files).
I'm not sure what I should be shooting for. This is okay:
But this doesn't actually install the examples themselves, just the prerequisites for them. I can't figure out how example installation would work, since examples really aren't installed globally in any way, and shouldn't be eggified.
The examples could be separated into a separate package, but I don't think that would help.
If easy_install.py had a develop option that would do it. Like:
easy_install.py Paste[HTTP,examples] easy_install.py --develop Paste
Where --develop downloads the package (not the egg), and does "setup.py develop" or something. Maybe, kind of -- at least, you'd end up with the entire Paste source package, but the prereqs would be installed normally. And I guess if you didn't run the first command, all the prereqs would be installed in development? I don't know. The same issues perhaps apply to documentation (though personally documentation matters much less to me, since it can be published directly to the web).