From 0f47bd92a2e3ac394ce1545355261326707d6923 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7oise=20Conil?= <francoise.conil@insa-lyon.fr>
Date: Mon, 30 Oct 2023 17:14:30 +0100
Subject: [PATCH] Fin du tour d'horizon sur PyPI

---
 versionner-un-code-python.qmd | 150 ++++++++++++++++++++++------------
 1 file changed, 97 insertions(+), 53 deletions(-)

diff --git a/versionner-un-code-python.qmd b/versionner-un-code-python.qmd
index ed614ae..dd2d57c 100644
--- a/versionner-un-code-python.qmd
+++ b/versionner-un-code-python.qmd
@@ -567,23 +567,43 @@ de [PyPI](https://pypi.org/)
 
 # PyPI
 
-[PyPI](https://pypi.org/) est le dépôt officiel pour les packages Python
+## PyPI : Présentation
+
+[PyPI](https://pypi.org/) est le standard de fait pour le dépôt de packages
+Python.
+
+En 2022, il y a eu **35,7 milliards de téléchargements** et près de **450 000
+projets** hébergés sur `PyPI` ^[[PyPI Organization: Increasing sustainability
+and support](https://blog.pypi.org/posts/2023-04-23-introducing-pypi-organizations/#increasing-sustainability-and-support)],
+représentant une augmentation annuelle de 57% du nombre de téléchargements et
+de la bande passante.
+
+En 2016, l'article de Donald Stufft indiquait que `PyPI` n'avait que **3
+mainteneurs / administrateurs** et que l'essentiel des soutiens se faisaient
+via la mise à disposition de services à titre gratuit par quelques entreprises.
+
+En 2021, Dustin Ingram a publié un nouvel article intéressant sur la charge de
+`PyPI`, sa gestion et ses soutiens ^[[What does it take to power the Python
+Package Index?](https://dustingram.com/articles/2021/04/14/powering-the-python-package-index-in-2021/)].
+
+::: {.callout-warning title="LIMITATIONS"}
+On comprend alors les nécessaires limitations sur la taille des fichiers
+uploadés (100 MiB) et sur la taille totale des projets sur PyPI (10 GiB) ^[On
+peut demander une augmentation de la [taille des
+fichiers](https://pypi.org/help/#file-size-limit) ou de la [taille totale du
+projet](https://test.pypi.org/help/#project-size-limit)]. 
+:::
 
 ## PyPI : Documentation et tests
 
 Voici quelques sources d'information sur [PyPI](https://pypi.org/)
 
-- [documentation utilisateur](https://docs.pypi.org/)
-- [blog](https://blog.pypi.org/)
-- [documentation admin/dev](https://warehouse.pypa.io/)
+- [documentation utilisateur PyPI](https://docs.pypi.org/)
+- [blog PyPI](https://blog.pypi.org/)
+- [documentation admin/dev PyPI](https://warehouse.pypa.io/)
 - [Python Packaging User Guide](https://packaging.python.org/)
 
-::: {.callout-warning title="LIMITATIONS"}
-Il y a des limitations sur la taille des fichiers uploadés (100 MiB) et sur la
-taille totale du projet (10 GiB) ^[On peut demander une augmentation de la
-[taille des fichiers](https://pypi.org/help/#file-size-limit) ou de la [taille
-totale du projet](https://test.pypi.org/help/#project-size-limit)]. 
-:::
+### Tests
 
 `PyPI` dispose d'une infrastructure sur laquelle on peut tester l'upload de ses
 packages : [TestPyPI](https://test.pypi.org/)
@@ -657,17 +677,17 @@ automatisé" de type CI ^[Continuous Integration] à `PyPI`.
 ::: {.column width="60%"}
 La documentation et l'interface semblent essentiellement orientées [GitHub
 Action](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
-^[[Adding a Trusted Publisher to an Existing PyPI Project](https://docs.pypi.org/trusted-publishers/adding-a-publisher/)]
+^[[PyPI doc: Adding a Trusted Publisher to an Existing PyPI Project](https://docs.pypi.org/trusted-publishers/adding-a-publisher/)]
+^[[PyPA doc: Publishing package distribution releases using GitHub Actions CI/CD workflows](https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows)]
 
 ::: {.callout-warning}
-Je n'ai pas testé cette fonctionnalité.
-
-Lire attentivement la documentation :
+Je n'ai pas testé cette fonctionnalité. Lire attentivement :
 
 - [Security model and considerations](https://docs.pypi.org/trusted-publishers/security-model/)
 - [Troubleshooting](https://docs.pypi.org/trusted-publishers/troubleshooting/)
 
-car pousser automatiquement des versions pose un certain nombre de questions.
+car pousser automatiquement des versions pose un certain nombre de questions. ^[[Build 
+and Inspect Python Packages](https://github.com/hynek/build-and-inspect-python-package)]
 :::
 
 :::
@@ -678,6 +698,68 @@ car pousser automatiquement des versions pose un certain nombre de questions.
 
 ::::
 
+## PyPI : Personnes en charge du projet
+
+Lorsque l'on est connecté à PyPI, il faut aller dans la gestion du projet pour
+accéder au menu "Personnes" et définir les gestionnaires du projet en
+saisissant l'identifiant de leur compte PyPI et leur rôle : owner (tous les
+droits) ou maintainer.
+
+### PyPI Organizations
+
+Les organisations PyPI sont une notion récente ^[[Introducing PyPI
+Organizations](https://blog.pypi.org/posts/2023-04-23-introducing-pypi-organizations/)].
+Elles ont pour but :
+
+- de faciliter l'identification de la provenance d'un package ^[[PyPI
+  Organization Accounts](https://docs.pypi.org/organization-accounts/)]
+
+- de permettre aux grosses communautés (gratuit) et sociétés (pde gérer de multiples
+  équipes, membres, projet avec différentes permissions.
+
+Une organisation est payante pour une société et gratuite communauté. 
+
+Une organisation ne permet pas de détenir des packages "privés" ^[[PyPI
+Organization FAQ](https://docs.pypi.org/organization-accounts/org-acc-faq/)].
+
+# Un mot sur conda
+
+## Présentation
+
+[conda](https://conda.io/) est l'outil de gestion de packages pour les
+installations de **Python Anaconda**.  Python Anaconda est une distribution
+Python de la [société Anaconda](https://www.anaconda.com/) à destination de la
+communauté scientifique, en particulier sous Windows où l'installation
+d'extensions binaires est souvent difficile. 
+
+`conda` est un outil complètement séparé des outils `pip`, `virtualenv` et
+`wheel` mais il fournit plusieurs de leurs fonctionnalités en terme de gestion
+de packages, de gestion d'environnement virtuel et de déploiement d'extension
+binaires.
+
+`conda` n'installe pas de package depuis [PyPI](https://pypi.org/) et ne peut
+installer des packages que depuis le dépôt officiel Anaconda, ou [anaconda.org](anaconda.org) 
+ou un serveur de packages local. 
+
+Cependant, `pip` peut être installé et fonctionner en parallèle de `conda` pour
+installer des packages depuis `PyPI`. [conda skeleton](https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs-skeleton.html)
+permet de créer des packages conda à partir de package téléchargés depuis `PyPI` 
+en modifiant leurs métadonnées.
+
+::: {.notes}
+Conda does not install packages from PyPI and can install only from the
+official Anaconda repositories, or anaconda.org (a place for user-contributed
+conda packages), or a local (e.g. intranet) package server. However, note that
+pip can be installed into, and work side-by-side with conda for managing
+distributions from PyPI. Also, conda skeleton is a tool to make Python packages
+installable by conda by first fetching them from PyPI and modifying their
+metadata.
+:::
+
+::: aside
+Traduit de [Project Summaries - Non-PyPA projects](https://packaging.python.org/en/latest/key_projects/#non-pypa-projects)
+:::
+
 # Quelques backend pour le build de packages
 
 ![](images/xkcd_standards.png){height="350"}
@@ -1014,44 +1096,6 @@ ces nouveaux standards. Et maintenant ?
 
 `Poetry` dépendrait d'un seul développeur ?
 
-# Un mot sur conda
-
-## Présentation
-
-[conda](https://conda.io/) est l'outil de gestion de packages pour les
-installations de **Python Anaconda**.  Python Anaconda est une distribution
-Python de la [société Anaconda](https://www.anaconda.com/) à destination de la
-communauté scientifique, en particulier sous Windows où l'installation
-d'extensions binaires est souvent difficile. 
-
-`conda` est un outil complètement séparé des outils `pip`, `virtualenv` et
-`wheel` mais il fournit plusieurs de leurs fonctionnalités en terme de gestion
-de packages, de gestion d'environnement virtuel et de déploiement d'extension
-binaires.
-
-`conda` n'installe pas de package depuis [PyPI](https://pypi.org/) et ne peut
-installer des packages que depuis le dépôt officiel Anaconda, ou [anaconda.org](anaconda.org) 
-ou un serveur de packages local. 
-
-Cependant, `pip` peut être installé et fonctionner en parallèle de `conda` pour
-installer des packages depuis `PyPI`. [conda skeleton](https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs-skeleton.html)
-permet de créer des packages conda à partir de package téléchargés depuis `PyPI` 
-en modifiant leurs métadonnées.
-
-::: {.notes}
-Conda does not install packages from PyPI and can install only from the
-official Anaconda repositories, or anaconda.org (a place for user-contributed
-conda packages), or a local (e.g. intranet) package server. However, note that
-pip can be installed into, and work side-by-side with conda for managing
-distributions from PyPI. Also, conda skeleton is a tool to make Python packages
-installable by conda by first fetching them from PyPI and modifying their
-metadata.
-:::
-
-::: aside
-Traduit de [Project Summaries - Non-PyPA projects](https://packaging.python.org/en/latest/key_projects/#non-pypa-projects)
-:::
-
 # Librairies de gestion de l'identifiant de version
 
 Il existe des librairies qui récupèrent le **tag** pour le définir
-- 
GitLab