El repositorio oficial de PyPI hace tiempo que se convirtió en un vertedero donde se tira de todo: desde frameworks listos para producción hasta trampas para Among Us y paquetes de prueba de escolares.

Un entusiasta no perezoso y visualizó todo este ecosistema en forma de grafo.

Cómo se hizo técnicamente:
1️⃣ A través de BigQuery se descargaron los metadatos de todos los paquetes.
2️⃣ Luego el conjunto de datos se pasó por filtros. Se descartó la basura evidente sin campos completados y los paquetes con menos de dos dependencias. Quedaron alrededor de 100 000 nodos.
3️⃣ Se dibujó todo mediante el algoritmo de minimización de energía Force Atlas 2 (algoritmo de diseño de grafos por fuerzas).

Qué mostró la visualización:
▫️ Clústeres semánticos. Los paquetes no están en el vacío. Alrededor de numpy se agrupan como era de esperar scikit-learn, seaborn y tensorflow. Hay zonas claramente definidas de criptografía o desarrollo web.
▫️ Anomalías y copia-pega. El grafo resalta muy bien la basura. Se encontraron clústeres enteros de paquetes generados a partir de una misma plantilla (por ejemplo, cientos de variaciones de python-smshub-org). Una herramienta ideal para la búsqueda automática de malware.
▫️ Monopolios corporativos. Visualmente es fácil evaluar el vendor lock-in. Se ven grandes "nidos corporativos": Odoo (más de 3000 paquetes hijos), Triton (>300), Airbyte (320), PyObjC (167), etc.

El código del proyecto aquí 👈🏻