
On May 9, 2016, at 9:28 AM, Nick Coghlan <ncoghlan@gmail.com> wrote:
Looking at my previous ideas for semantic dependencies in PEP 426, what if we start in the near term by defining development requirements?
I think the biggest reason not to do this, but instead do something like build requirements is that development dependencies is already reasonably well addressed in a way that something other than setuptools can access it using extras. It's not as great as a dedicated key for it, but it works pretty OK. The thing that is really painful is setup_requires and how it forces you to delay importing until *during* the execution of the setup() function. We could try and lump setup_requires and development dependencies together, but that seems less than optimal to me. Unless someone's setup.py uses pytest, I'm not sure I see a reason for pytest to be installed anytime pip builds that project. A more concrete example would be pyca/cryptography, which has a development dependency that consists of 27MB of data which was purposely kept separate from cryptography itself so as not to incur an additional 27MB of download just to install cryptography. I think this *could* make sense, if we could reasonably assume that the 95% case would always be handled by wheels, but I don't think that we can. A lot of projects have compiled C code as part of them, and as soon as you do that you end up where installation from sdist is one of your main supported methods (yes Wheel will cover a lot of them, but only for the most popular platforms). ----------------- Donald Stufft PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA