`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