Le dépôt officiel PyPI est depuis longtemps devenu un dépotoir où l'on jette tout et n'importe quoi : des frameworks prêts pour la production aux cheats pour Among Us en passant par les packages de test d'écoliers.

Un passionné n'a pas hésité et a visualisé tout cet écosystème sous forme de graphe.

Comment cela a été fait techniquement :
1️⃣ Les métadonnées de tous les packages ont été exportées via BigQuery.
2️⃣ Ensuite, le jeu de données a été passé à travers des filtres. On a jeté les déchets évidents sans champs remplis et les packages ayant moins de deux dépendances. Il reste environ 100 000 nœuds.
3️⃣ Tout a été rendu via l'algorithme de minimisation d'énergie Force Atlas 2 (algorithme de force pour la disposition des graphes).

Ce que la visualisation a montré :
▫️ Clusters sémantiques. Les packages ne flottent pas dans le vide. Autour de numpy, on trouve logiquement scikit-learn, seaborn et tensorflow. Il y a des zones clairement définies pour la cryptographie ou le développement web.
▫️ Anomalies et copier-coller. Le graphe met bien en évidence les déchets. On a trouvé des clusters entiers de packages générés à partir d'un même modèle (par exemple, des centaines de variantes de python-smshub-org). Un outil idéal pour la recherche automatique de malwares.
▫️ Monopoles d'entreprise. Visuellement, il est facile d'évaluer le verrouillage fournisseur. On voit de gros "nids d'entreprise" : Odoo (plus de 3000 packages enfants), Triton (>300), Airbyte (320), PyObjC (167), etc.

Le code du projet est ici 👈🏻