On 6 May 2016 at 13:15, Chris Barker <chris.barker@noaa.gov> wrote:
On Fri, May 6, 2016 at 5:41 AM, Nick Coghlan <ncoghlan@gmail.com> wrote:
[...]
 
So rather than saying "the bootstrapping dependency declaration file
is Python-but-not-really", it's easier to say "it's an ini-file format
that can be parsed with the configparser module" or "it's JSON" (I'm
ruling out any options that don't have a stdlib parser in Python 2.7)

Last time, I promise :-)

"python literals" is perfectly well defined -- both by the language reference, and by "can be parsed by ast.literal_eval"

and it addresses the limitations of JSON and is fully declarative.

There is actually prior art for that kind of use. Odoo uses such a language for its addons system, including package dependencies. See example file here:

https://github.com/OCA/maintainer-tools/blob/master/template/module/__openerp__.py

Notice the `depends` key, that lists other addons, and the `external_dependencies` key that can list both python distribution dependencies as well as external program dependencies.

ISTM the reluctance in adopting this idea comes from the desire of using other programming languages to parse the bootstraping information (imagine an sdist -> deb converter implemented in go. It will have to exec python eventually, during the build process, but not before it has prepared the build environment).

And even though, unlike JSON, the ConfigParser format of setup.cfg is not officially defined anywhere, there are sufficiently compatible ini parsers in other languages that the idea still has merit.