Top PyPI Packages是一个网站,每月从Python 包索引 (PyPI)创建 5,000 个下载次数最多的包。它提供了一个人类可读的列表和一个机器可读的 JSON 文件以供编程使用。
它是如何使用的
生成的数据对 Python 社区很重要:它已被许多学术论文引用,涵盖软件供应链攻击、遗传算法、神经类型提示和技术债务等主题的研究。
网站还使用这些数据来分析社区对 Python 3 和 Wheels 包文件的采用,以及自动依赖更新。
这里列出了一些。
最后但同样重要的是,CPython 核心开发人员经常使用这些数据进行社区分析,例如在考虑弃用和删除或 Python 本身的 API 更改时检查某些语言功能的广泛程度。
一些例子:
https://mail.python.org/archives/search?q=top-pypi-packages
这个怎么运作
它运行在最便宜的 DigitalOcean Droplet 上,从 Python Software Foundation 查询 Google BigQuery 数据集,并从中构建 JSON 文件。数据从 Droplet 自动提交回 GitHub 存储库,GitHub Actions 用于自动标记和创建发布,然后在 Zenodo 创建数字对象标识符 (DOI),以帮助研究人员引用。
更详细
“Droplet”是 DigitalOcean 用于虚拟机的名称,它基本上是一个 Linux 服务器。我正在使用运行 Ubuntu 20.04 (LTS) 的最便宜的 5 美元/月加上 1 美元/月的自动备份。 (2022 年 7 月,我将切换到新的4 美元/月 Droplet 。)
在本月的第一天,它运行一个 cron 作业:
13 11 1 * * ( eval "$(ssh-agent -s)"; ssh-add ~/.ssh/id_rsa-top-pypi-packages; /home/botuser/github/top-pypi-packages/top-pypi-packages.sh ) > /tmp/top-pypi-packages.log 2>&1
/home/botuser/.local/bin/pypinfo --json --indent 0 --limit 5000 --days 30 "" project > top-pypi-packages-30-days.json
PyPI 将有关下载的数据流式传输到可作为公共数据集访问的 Google BigQuery 。谷歌每月提供免费数量的查询,我一直在调整获取的数据量以保持在免费配额内(例如,从前 5k 包更改为 4k;它用于获取过去 30 年的顶级包的数据天和 365 天,但现在只有 30 天;并且恢复到 5k 包)。
pypinfo 是一个方便的命令行界面 (CLI),用于访问此 BigQuery 数据并将其转储到 JSON 文件。
另一个名为jq的便捷 CLI 工具可缩小 JSON 数据:
jq -c . < top-pypi-packages-30-days.json > top-pypi-packages-30-days.min.json
然后将它们提交回 repo,使用CalVer (例如2022-05 )标记并推送。 GitHub Actions从标签创建一个发布。
然后,这会在 Zenodo 上创建一个数字对象标识符 (DOI),以帮助研究人员引用它。
该网站在 GitHub Pages 上读取生成的 JSON 文件,并以人类可读的形式显示前 100 个(或 1,000 或 5,000 个)包。它基于Python Wheels ,它以漂亮的循环方式使用来自该项目的 JSON 数据。
谢谢
感谢PyPI和Google BigQuery提供的数据; pypinfo和jq用于工具; Python Wheels使他们的代码开源;和DigitalOcean赞助该项目的托管。访问https://do.co/oss-sponsorship以查看您的项目是否符合条件。