[Distutils] Static metadata using setup.cfg

Chris Withers chris at simplistix.co.uk
Tue Sep 8 10:18:50 CEST 2009

Ronald Oussoren wrote:
> I have a number of packages where the only logic on setup.py is set 
> flags based on the python version or OS. Examples:
> * depend on pysqlite in old versions of python where sqlite wasn't in 
> the stdlib

<mini rant>
If Python had a packaging system *and* used it for the standard library, 
then things like this wouldn't be a problem...
The setup.cfg could just say "requires sqlite greater than version 
x.y.z", and if it was in the standard library, it would be used unless a 
newer version was needed. It would also mean it would be possible to 
release bug fix versions of the standard library packages without having 
to roll a whole python release.
Better yet, since "python" should be a package as far as the packaging 
system is concerned, library versions can just say what versions of 
python they work with.

> It would be nice if those could be expressed in a setup.cfg(.in) file, 
> because that way to can introspect these packages without having to 
> execute a setup.py file.

No, you just have to execute setup.cfg instead :-(

For me, setup.cfg should contain static stuff like name, description, 
url and dependencies. Anything else that varies like this can and should 
be in setup.py. We already have a fantastic scripting language, why coem 
up with another one?

> I agree that the file shouldn't be too dynamic, we don't need a full 
> programming language in setup.cfg because we already have setup.py files.

It's an extremely slippery slope, as soon as there's any possibility for 
weirdness some inexperienced developer will jump at the chance to abuse 
it to its fullest extent :-(



Simplistix - Content Management, Batch Processing & Python Consulting
            - http://www.simplistix.co.uk

More information about the Distutils-SIG mailing list