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

Avant présentation EDP

parent 94118d3f
No related branches found
No related tags found
No related merge requests found
...@@ -484,6 +484,34 @@ des paquets Python](https://www.stella.coop/blog/00003-l-enfer-des-paquets-pytho ...@@ -484,6 +484,34 @@ des paquets Python](https://www.stella.coop/blog/00003-l-enfer-des-paquets-pytho
et le fichier `setup.py` reste encore nécessaire pour un grand nombre de et le fichier `setup.py` reste encore nécessaire pour un grand nombre de
projets (compilation de code en C++). projets (compilation de code en C++).
## setuptools reste un backend de build possible
L'article [Why you shouldn't invoke setup.py directly](https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html)
précise que [setuptools](https://setuptools.pypa.io/en/latest/)
est toujours maintenu et fait partie des backend utilisable (*19 oct 2021*).
C'est l'usage de `python setup.py <commande>` qui ne doit plus être utilisé et
fait l'objet de `DeprecationWarning` ^[Ne peut pas respecter pas les
spécifications [PEP 517](https://peps.python.org/pep-0517/) et
[PEP 518](https://peps.python.org/pep-0518/) des frontends de `build`] ^[À
déterminer : quand, pourquoi et comment serait-on encore amené à utiliser un
fichier `setup.py`].
```{.bash}
$ python setup.py install
running install
/tmp/test-setuptools/.venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!
********************************************************************************
Please avoid running ``setup.py`` directly.
Instead, use pypa/build, pypa/installer or other
standards-based tools.
See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
********************************************************************************
```
## Principales étapes du packaging ## Principales étapes du packaging
- Avoir le **code source** du package, typiquement le checkout d'un **tag** du - Avoir le **code source** du package, typiquement le checkout d'un **tag** du
...@@ -723,7 +751,7 @@ elles ont pour but : ...@@ -723,7 +751,7 @@ elles ont pour but :
- de permettre aux grosses communautés et sociétés de gérer de multiples - de permettre aux grosses communautés et sociétés de gérer de multiples
équipes, membres, projet avec différentes permissions équipes, membres, projet avec différentes permissions
Une organisation est payante pour une société et gratuite communauté. Une organisation est payante pour une société et gratuite pour une communauté.
Une organisation ne permet pas de détenir des packages "privés" ^[[PyPI Une organisation ne permet pas de détenir des packages "privés" ^[[PyPI
Organization FAQ](https://docs.pypi.org/organization-accounts/org-acc-faq/)]. Organization FAQ](https://docs.pypi.org/organization-accounts/org-acc-faq/)].
...@@ -1069,7 +1097,7 @@ exclude_lines = [ ...@@ -1069,7 +1097,7 @@ exclude_lines = [
`setuptools` ne gère pas les dépendances. `setuptools` ne gère pas les dépendances.
`setuptools` n'upload pas les distributions générées sur `PiPI`. `setuptools` n'upload pas les distributions générées sur `PyPI`.
`setuptools` ne gère pas les environnements virtuels. `setuptools` ne gère pas les environnements virtuels.
...@@ -1107,31 +1135,75 @@ ces nouveaux standards. Et maintenant ? ...@@ -1107,31 +1135,75 @@ ces nouveaux standards. Et maintenant ?
Il existe des librairies qui récupèrent le **tag** pour le définir Il existe des librairies qui récupèrent le **tag** pour le définir
dynamiquement comme numéro de version du package. dynamiquement comme numéro de version du package.
## Intégrer l'identifiant de version au package Python ## Intégrer l'identifiant de version au package Python 1/2
L'identifiant de version d'un package Python peut être spécifié statiquement L'identifiant de version d'un package Python peut être spécifié statiquement
dans le `pyproject.toml` ou dynamiquement ^[Voir [Declaring project metadata](https://packaging.python.org/en/latest/specifications/declaring-project-metadata/) dans le `pyproject.toml` ou dynamiquement ^[Voir [Declaring project metadata](https://packaging.python.org/en/latest/specifications/declaring-project-metadata/)
qui remplace la [PEP 621](https://peps.python.org/pep-0621/)] qui remplace la [PEP 621](https://peps.python.org/pep-0621/)]
### Statiquement
En déclaration statique, l'identifiant de version est une chaîne de caractères En déclaration statique, l'identifiant de version est une chaîne de caractères
qui doit respecter la [PEP 440](https://peps.python.org/pep-0440/). dans les données globales du `pyproject.toml`.
```{.toml} ```{.toml code-line-numbers="3"}
[project] [project]
name = "ntt" name = "ntt"
version = "0.1.0" version = "0.1.0"
description = "Library for sport analysis" description = "Library for sport analysis"
``` ```
::: {.callout-tip title="À vérifier"} ### Dynamiquement
Le numéro de version déclaré dans le `pyproject.toml` pourrait-il différer du
tag correspondant au code packagé ?
:::
## Versioneer Déclaration des paramètres dynamiques dans le `pyproject.toml`.
[Versioneer](https://pypi.org/project/versioneer/) is a tool for managing a ```{.toml code-line-numbers="3"}
recorded version number in setuptools-based python projects. [project]
name = "ntt"
dynamic = ["version", "description"]
```
## Intégrer l'identifiant de version au package Python 2/2
Les modalités de récupération dépendent du backend.
### Flit
`Flit` récupère l'identifiant de version de la propriété `__version__` du
module et la description de la `docstring` du module.
``` {.bash code-line-numbers="7"}
$ tree
.
├── pyproject.toml
├── README.md
├── src
│ └── ntt
│ ├── __init__.py
│ ├── ...
```
Ces deux métadonnées sont récupérées du fichier `src/ntt/__init__.py`.
``` {.python}
"""Library for sport analysis"""
__version__ = "0.1.1"
```
## À vérifier
::: {.callout-warning}
Veillez à respecter la [PEP 440](https://peps.python.org/pep-0440/) pour
l'identifiant de version
:::
::: {.callout-tip title="À vérifier"}
Que se passe-t-il si le numéro de version déclaré dans le `pyproject.toml`
est différent du tag positionné dans le gestionnaire de version ?
:::
## setuptools_scm ## setuptools_scm
...@@ -1141,6 +1213,15 @@ version argument or in an SCM managed file. ...@@ -1141,6 +1213,15 @@ version argument or in an SCM managed file.
Le seul des trois qui semble compatible `pyproject.toml` Le seul des trois qui semble compatible `pyproject.toml`
## Versioneer
[Versioneer](https://pypi.org/project/versioneer/) is a tool for managing a
recorded version number in setuptools-based python projects.
::: {.callout-warning}
Le projet qui m'a fait découvrir `Versioneer` est passé à `setuptools_scm`.
:::
## Miniver ## Miniver
[Miniver](https://pypi.org/project/miniver/) is a minimal versioning tool that [Miniver](https://pypi.org/project/miniver/) is a minimal versioning tool that
......
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