Skip to content
Snippets Groups Projects
Commit 0f47bd92 authored by Françoise Conil's avatar Françoise Conil
Browse files

Fin du tour d'horizon sur PyPI

parent 5dac7f1e
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment