[Distutils] Deprecating little used file types/extensions on PyPI?

Donald Stufft donald at stufft.io
Tue Aug 23 10:33:07 EDT 2016


> On Aug 23, 2016, at 7:25 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> 
> OK, cool - that gives us all the more reason to retain bdist_wininst
> and bdist_msi hosting support. However, I do think it makes sense for
> us to say up front that we'll reconsider that decision if something
> akin to homebrew gains traction amongst developers running Windows the
> way homebrew has amongst open source users running Mac OS X.


I still don’t think there’s a whole lot of benefit to retaining them even
now. In the last 30 days, 90% of the downloads of bdist_wininst were
generated by things that I know for a fact to be mirroring clients (almost
all entirely bandersnatch). The next highest source of downloads was coming
from setuptools, at 7%. Over 75% of the downloads from setuptools are for
coverage.py, which tells me that it’s likely being triggered by test_requires
and would be covered by teaching setuptools how to wheel instead.

For bdist_msi, 96% of all downloads come from things we know to be mirroring
clients.

For bdist_dmg, 97% of all downloads come from things we know to be mirroring
clients.

For bdist_egg, 80% of all downloads come from things we know to be mirroring
clients.

For reference:

For sdist, 30% of all downloads come from things we know to be mirroring
clients.

For bdist_wheel, 6% of all downloads come from things we know to be mirroring
clients.

It’s hard to get per project numbers for these (or at least, it takes a more
complex query than I can manage with my head here). However, I think it’s
pretty telling that when you start looking at other formats, not only is the
primary consumer tools that just indiscriminately download everything from PyPI,
but almost *all* of the consumers of those files are tools that just
indiscriminately download everything. Unless there are users of those mirrors who
follow vastly different usage patterns than what we see on PyPI itself, the primary
purpose of bdist_wininst, bdist_msi, bdist_dmg, etc on PyPI is to consume disk space
and bandwidth via the mirroring infrastructure.

I’d also like to note, that the numbers above are conservative on what they
consider to be a “mirroring client”. For instance, devpi used to use the default
requests user-agent, and we see downloads via the requests user agent, but did not
count them as mirroring clients because it could be some other script doing the
downloading.

—
Donald Stufft





More information about the Distutils-SIG mailing list