When will setuptools and wheel drop support for Python 3.4?

Coming from https://github.com/pypa/get-pip/pull/46.

pip 19.2 dropped support for Python 3.4. Since setuptools’ and wheel’s latest releases still support Python 3.4 (which is now EOL 1), I’ve not constrained them in the get-pip.py generated for Python 3.4 in that PR. However, I’m not sure if we should publish this get-pip.py without a constraint.

Which makes me wonder, when will wheel and setuptools drop Python 3.4 support? Specifically, do we have a version number today to constraint “under” for the 3.4 compatible get-pip.py? If we do, I’ll be happy to add the relevant constraint and publish the bootstrap.pypa.io/3.4/get-pip.py file. :slight_smile:

Note that we’ve not had any end-user come up and request for this compatibility helper yet – but we have published them in the past so we can probably continue to do so.

The download numbers for Python 3.4 are similar for pip, setuptools and wheel. Here’s the pip installs for each from PyPI for July 2019.

pip: 1.38%

category percent downloads
2.7 78.44% 48,372,483
3.6 10.62% 6,546,596
3.7 5.00% 3,080,844
3.5 3.86% 2,381,939
3.4 1.38% 850,177
null 0.47% 287,421
2.6 0.22% 136,640
3.3 0.01% 8,193
3.8 0.01% 6,438
3.9 0.00% 1,118
3.2 0.00% 207
3.1 0.00% 4
2.5 0.00% 2
3.10 0.00% 1
Total 61,672,063

Source: pip install -U pypistats && pypistats python_minor pip --last-month

setuptools: 1.61%

category percent downloads
2.7 70.94% 22,813,252
3.6 10.20% 3,278,839
3.7 7.74% 2,488,938
3.5 5.16% 1,659,399
null 4.15% 1,335,039
3.4 1.61% 517,413
2.6 0.15% 49,030
3.8 0.03% 9,243
3.3 0.02% 5,451
3.2 0.00% 1,283
3.9 0.00% 1,128
3.1 0.00% 5
3.10 0.00% 1
Total 32,159,021

Source: pip install -U pypistats && pypistats python_minor setuptools --last-month

wheel: 1.11%

category percent downloads
2.7 69.90% 18,283,913
3.6 12.91% 3,376,045
3.7 8.98% 2,348,837
3.5 4.70% 1,229,055
null 2.22% 580,559
3.4 1.11% 290,020
2.6 0.13% 33,751
3.8 0.04% 9,401
3.3 0.01% 3,749
3.9 0.00% 101
3.2 0.00% 95
3.1 0.00% 7
Total 26,155,533

Source: pip install -U pypistats && pypistats python_minor wheel --last-month

1 Like

Forgive me for being dumb but I’ve read this several times and I still don’t understand what you want. Could you please rephrase it for me?

I think the point is that we now have a “frozen” get-pip.py specific to Python 3.4. It pulls in the latest setuptools and wheel, because both of those still support 3.4 (and there’s no benefit to the user in not pulling in the latest versions). But at the point when setuptools and wheel stop supporting 3.4, we’ll need to say “wheel<0.35.0” (or whatever). So I think the question is whether setuptools and/or wheel have plans that mean we can add that constraint now, based on a plan like “wheel will drop support for Python 3.4 in version 0.35.0”.

If you don’t have such a plan, I think we just have to wait till you do drop 3.4 support, and make the change then.

@pradyunsg did I get that right?

Yes.

We haven’t published it yet – because I don’t want to publish without a constraint, if we know the relevant versions might be.

Actually, if & when setuptools/wheel drop support for 3.4, won’t it be sufficient for them to add “python_version > 3.4” to their metadata, and we won’t need to constrain at our end at all? Or am I getting the use of python_version wrong there?

Yea, that seems right.

I just wanted to have the versions if we know them, with the plan being to publish w/o constraints, if I get no response by end of this month or if a user files an issue on get-pip; whichever is earlier. :slight_smile:

I can’t speak for the rest of the maintainers but I usually drop support for a Python version when:

  1. I decide that support is not something I need to continue (some balancing between the difficulty I’ll be causing for downstream users and the inconvenience of supporting the old version).
  2. I need or want a feature that is not available in the version to be dropped.

If there are 3.4-specific patches in setuptools, I’m fine with removing them and dropping support for 3.4, but in my experience if you’re maintaining support for 2.7, support for 3.4 basically comes for free (except maintaining the tests becomes more annoying - but that is a problem that I need to solve more generally anyway). If one of the other setuptools maintainers wants to drop 3.4 at some arbitrary point earlier than I would consider natural I won’t stop them, but I personally don’t have any specific plans to actively drop it, in which case the answer is probably “whenever we drop 2.7 support”, at which point we’ll probably drop 3.4 and 3.5 and possibly more depending on what’s EOL and what features we have shims or backports around.

I am in no particular hurry to drop support for Python 3.4 in wheel but when I do, I will update the python_requires accordingly.

Thanks for chiming in folks!

I’ll go ahead and publish the 3.4 compatible get-pip.py, without constraints. Let’s depend on python_requires for Python 3.4’s get-pip.py. :slight_smile: