Top PyPI Packages

Top PyPI Packages — это веб-сайт, который ежемесячно создает дамп 5000 наиболее загружаемых пакетов из Python Package Index (PyPI). Он предоставляет человекочитаемый список и машиночитаемый JSON-файл для программного использования.

Как это используется

Сгенерированные данные важны для сообщества Python: они были процитированы во многих научных статьях, посвященных исследованиям таких тем, как атаки на цепочки поставок программного обеспечения, генетические алгоритмы, подсказки нейронных типов и технический долг.

Веб-сайты также используют данные для анализа таких вещей, как принятие сообществом Python 3 и файлов пакетов колес, а также для автоматического обновления зависимостей.

Некоторые из них перечислены здесь.

И, наконец, разработчики ядра CPython часто используют данные для анализа сообщества, например, чтобы проверить, насколько широко распространены определенные функции языка, когда рассматривается вопрос об изъятиях и удалениях, или изменениях API самого Python.

Некоторые примеры:

https://mail.python.org/archives/search?q=top-pypi-packages

Как это работает

Он запускается на самом дешевом дроплете DigitalOcean для запроса набора данных Google BigQuery из Python Software Foundation и создает из них JSON-файл. Данные автоматически фиксируются из дроплета обратно в репозиторий GitHub, а GitHub Actions используется для автоматической маркировки и создания релиза, который затем создает цифровой идентификатор объекта (DOI) в Zenodo, чтобы помочь сделать его цитируемым для исследователей.

Более подробно

Droplet» — это название, которое DigitalOcean использует для виртуальных машин, что, по сути, является сервером Linux. Я пользуюсь самым дешевым сервером за $5/месяц под управлением Ubuntu 20.04 (LTS) плюс $1/месяц за автоматическое резервное копирование. (В июле 2022 года я перейду на новый Droplet за $4/месяц).

Первого числа месяца он запускает задание 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
Войти в полноэкранный режим Выход из полноэкранного режима

Этот сценарий запускает несколько других для вызова pypinfo:

/home/botuser/.local/bin/pypinfo --json --indent 0 --limit 5000 --days  30 "" project > top-pypi-packages-30-days.json
Войти в полноэкранный режим Выйти из полноэкранного режима

PyPI передает данные о загрузках в Google BigQuery, которые доступны как публичный набор данных. Google предоставляет бесплатное количество запросов в месяц, и я корректирую количество получаемых данных, чтобы не превысить бесплатную квоту (например, меняю 5k лучших пакетов на 4k; раньше получал данные о лучших пакетах за последние 30 дней и 365 дней, а теперь только за 30 дней; и возвращаюсь к 5k пакетам).

pypinfo — это удобный интерфейс командной строки (CLI) для доступа к этим данным BigQuery и сброса их в файл JSON.

Другой удобный инструмент CLI под названием jq минифицирует данные JSON:

jq -c . < top-pypi-packages-30-days.json > top-pypi-packages-30-days.min.json
Вход в полноэкранный режим Выход из полноэкранного режима

Затем они фиксируются в репозитории, помечаются с помощью CalVer (например, 2022-05) и размещаются. GitHub Actions создает релиз на основе тега.

Затем создается цифровой идентификатор объекта (DOI) в Zenodo, чтобы помочь сделать его цитируемым для исследователей.

Веб-сайт на GitHub Pages считывает созданный JSON-файл и показывает 100 (или 1 000, или 5 000) лучших пакетов в удобочитаемой форме. Он основан на Python Wheels, который по кругу использует данные JSON из этого проекта.

Спасибо

Спасибо PyPI и Google BigQuery за данные; pypinfo и jq за инструменты; Python Wheels за предоставление открытого кода; и DigitalOcean за спонсорскую поддержку хостинга этого проекта. Посетите сайт https://do.co/oss-sponsorship, чтобы узнать, может ли ваш проект участвовать в конкурсе.

Оцените статью
Procodings.ru
Добавить комментарий