diff --git a/versionner-un-code-python.qmd b/versionner-un-code-python.qmd index ed614ae1079481cf4bf6d7c089e359d806c0528d..dd2d57c15d6bc6b916b77eaf128aba40d62d8849 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 {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