# When will setuptools and wheel drop support for Python 3.4?

**URL:** <https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126>\
**Category:** Packaging\
**Created:** [August 11, 2019, 7:42pm UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126 "2019-08-11T19:42:34Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![pradyunsg](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pradyunsg/32/206_2.png) [@pradyunsg](https://discuss.python.org/u/pradyunsg)\
**Post date:** [August 11, 2019, 7:42pm UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/1 "2019-08-11T19:42:34Z")

</div>

Coming from [https://github.com/pypa/get-pip/pull/46](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](https://www.python.org/dev/peps/pep-0429/)), 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](http://bootstrap.pypa.io/3.4/get-pip.py) file. 🙂

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.

---

<div class="post-metadata">

**Author:** ![hugovk](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/hugovk/32/14505_2.png) [@hugovk](https://discuss.python.org/u/hugovk)\
**Post date:** [August 12, 2019, 6:50am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/2 "2019-08-12T06:50:08Z")

</div>

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`

---

<div class="post-metadata">

**Author:** ![agronholm](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/agronholm/32/1522_2.png) [@agronholm](https://discuss.python.org/u/agronholm)\
**Post date:** [August 16, 2019, 8:21am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/3 "2019-08-16T08:21:42Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![pf\_moore](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pf_moore/32/35_2.png) [@pf\_moore](https://discuss.python.org/u/pf_moore)\
**Post date:** [August 16, 2019, 8:30am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/4 "2019-08-16T08:30:25Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![pradyunsg](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pradyunsg/32/206_2.png) [@pradyunsg](https://discuss.python.org/u/pradyunsg)\
**Post date:** [August 16, 2019, 8:36am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/5 "2019-08-16T08:36:47Z")

</div>

> [@pf\_moore](#):
>
> @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.

---

<div class="post-metadata">

**Author:** ![pf\_moore](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pf_moore/32/35_2.png) [@pf\_moore](https://discuss.python.org/u/pf_moore)\
**Post date:** [August 16, 2019, 8:48am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/6 "2019-08-16T08:48:55Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![pradyunsg](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pradyunsg/32/206_2.png) [@pradyunsg](https://discuss.python.org/u/pradyunsg)\
**Post date:** [August 16, 2019, 8:50am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/7 "2019-08-16T08:50:36Z")

</div>

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. 🙂

---

<div class="post-metadata">

**Author:** ![pganssle](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pganssle/32/245_2.png) [@pganssle](https://discuss.python.org/u/pganssle)\
**Post date:** [August 16, 2019, 7:16pm UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/8 "2019-08-16T19:16:04Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![agronholm](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/agronholm/32/1522_2.png) [@agronholm](https://discuss.python.org/u/agronholm)\
**Post date:** [August 16, 2019, 10:42pm UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/9 "2019-08-16T22:42:01Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![pradyunsg](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pradyunsg/32/206_2.png) [@pradyunsg](https://discuss.python.org/u/pradyunsg)\
**Post date:** [August 18, 2019, 1:42am UTC](https://discuss.python.org/t/when-will-setuptools-and-wheel-drop-support-for-python-3-4/2126/10 "2019-08-18T01:42:11Z")

</div>

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. 🙂
