piwheels stats 2020Q4

Posted by Ben Nuttall

In the period of October – December 2020, 4,643,950 packages were downloaded from piwheels, bringing the total to 30,815,907. This has saved 55 years in the period, and 439 years in total! There were 37,578,502 pip searches, 736,605 project page hits, 344,206 web page hits and 50,894 project JSON downloads in the period.

October had the highest number of downloads (ever) with 1,850,781:

Oddly, we experienced a one-day spike surpassing 100k downloads in a single day for the first time. 15 December saw a total of 105,826 downloads:

Downloads saved around between 16 and 22 years per month:

The top 10 downloads were:

  1. webrtcvad-wheels (356,784)
  2. numpy (284,700)
  3. requests (91,968)
  4. pyyaml (86,810)
  5. cffi (84,540)
  6. octoprint-firmwarecheck (82,803)
  7. websocket-client (81,288)
  8. sentry-sdk (79,387)
  9. filetype (78,924)
  10. semantic-version (74,333)

The top 10 pip searches were:

  1. pip (5,664,832)
  2. wheel (2,200,871)
  3. pyrogram (1,368,093)
  4. setuptools (1,036,791)
  5. webrtcvad-wheels (774,656)
  6. cryptoadvance-specter (618,384)
  7. numpy (502,596)
  8. youtube-dl (499,680)
  9. requests (478,480)
  10. certifi (385,542)

The top 10 project page hits were:

  1. opencv-python (1,749)
  2. numpy (1,129)
  3. opencv-contrib-python (1,062)
  4. scipy (769)
  5. tensorflow (755)
  6. qhub-ops (693)
  7. pillow (462)
  8. pip (394)
  9. pandas (326)
  10. grpcio (309)

We just released a new JSON API a few days before the end of the previous quarter, so for the first time, the top 10 project JSON downloads were:

  1. scipy (324)
  2. numpy (108)
  3. opencv-python (68)
  4. tensorflow (58)
  5. imagecodecs (38)
  6. pycparser (36)
  7. future (31)
  8. scikit-image (31)
  9. opencv-contrib-python (29)
  10. urllib3 (28)

The vast majority of JSON downloads are from browsers (or bots) and only a small proportion seem to be from wget and requests.

Platforms

Linux makes up 99.9% of all searches so I’ve discounted the rest. Raspbian / Raspberry Pi OS and Debian are now combined (due to Raspberry Pi OS identifying itself as Debian). This group obviously dominates with over 98%. Ubuntu remains in third place with under 1%, although we don’t officially support it.

Buster accounts for 85% of Raspbian/Debian usage, Stretch accounts for 15% and there’s practically no Jessie usage:

armv7l (Pi 2/3/4 platform) is still a majority architecture with 91% of searches from Arm devices, with armv6l (Pi 1/Zero) taking under 5%. Raspberry Pi released a beta of a 64-bit version of the official OS earlier in the year, and that’s starting to grow in usage. It’s currently up to 4.2%, and those users are currently not served by piwheels as we don’t build aarch64 platform wheels.

Python 3 has a reasonable majority of usage, and 3.7 (the version provided by the current stable distro) has the highest share with 63%. Python 2.7 comes second with 23%, followed by 3.5 (from oldstable), 3.8 and 3.6. Fortunately, Python 3.4 (in Jessie, now EOL) has an insignificant usage, but it’s a shame there’s still so much Python 2 usage.

We’re also logging pip and setuptools versions:

Note that 18.1 is pre-installed in Buster, and 9.0.1 is pre-installed in Stretch. 20.1.1 is a recently released version, so likely the most common for people who update their pip.

Similarly, setuptools 40.8.0 is what’s pre-installed in Buster, but the version of pip in Stretch doesn’t send the setuptools version (33.1.1) in the user agent like it does in newer versions.

Check out the source of this post in a Jupyter notebook: github.com/piwheels/stats/blob/master/2020q4.ipynb

Tags: stats