<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, Aug 30, 2016 at 1:13 PM Thomas Kluyver <<a href="mailto:thomas@kluyver.me.uk">thomas@kluyver.me.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Tue, Aug 30, 2016, at 05:51 PM, Antony Lee wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div><div><div>I am not really a fan of PEP518 in general. Basically, the idea of setup.py is that declarative languages are not sufficient to express a build system (and AFAICT this is always going to be the case for expressing, say, compiler flags for extensions), so I'd rather just accept that and stick everything in setup.py instead of adding more parameter files. What if someone wants dynamic build dependencies?<br></div>
</div>
</div>
</div>
</blockquote><div><br></div>
</div><div><div>Dynamic build deps aren't precluded - the idea is that the build system can discover additional dependencies when it runs, while the static build-system field specifies just what's required to run the build system itself. However, the build system interface was split out into separate PEPs (517 & 516 are alternatives) to allow 518 to go forwards.<br></div>
<div><br></div>
<div>I take totally the opposite view: we should make as much metadata as possible declarative, even though we know we can't define a totally general build system with purely declarative information.</div></div></blockquote><div><br></div><div>This comes up over and over again because we've been living with this system for long enough that the build script and metadata are together both in setup.py and in people's brains. But there is a whole lot of stuff that makes perfect sense in a static file. For example: <span style="line-height:1.5">name, version, packages, install_requires, extras_require, description, license, classifiers, keywords, author, url, entry_points. The only thing that would cause trouble is if the system had no available build script.</span></div></div></div>