Pour éviter de passer du temps à réaliser des tâches répétitives à chaque version, l'équipe de OpenStack les a automatisées dans un script qui est devenu en 2010, le module pbr pour Python Build Reasonableness (avec sagesse). Ce module a énormément évolué en s'adaptant aux évolutions de Python sur dix ans (150 contributeurs).
Installation
sudo apt install python3-pbr # v4.2.0 (Ubuntu 18.10)# ou une version bien plus récente:
python3 -m pip install --user pbr # v5.1.3
Fonctionnalités
Récupère automatiquement la version à partir du tag Git et la passe à setuptools (setup.py) ;
Réplique les dépendances du fichier requirements.txt vers setuptools (install_requires) ;
Maintient la liste des AUTHORS à partir du git log ;
Génère le ChangeLog en cherchant les mots feature, api-break, deprecation et bugfix dans le git log ;
Distinction entre install_requires et requirements.txt
Le module pbr permet d'éviter de gérer en double la liste des dépendances : pbr spécifie le paramètre install_requires à partir du fichier requirements.txt. Mais, sémantiquement, ces deux listes ont deux objectifs différents :
Le paramètre install_requires du fichier setup.py (ou setup.cfg) est inséré dans le livrable et ne précise pas toujours la version des dépendances, du moins l'intervalle des versions pour lequel le livrable est censé être compatible ;
Le fichier requirements.txt est fourni à pip pour installer des versions précises pour lesquelles l'application a été validée.
De plus, requirements.txt peut contenir des arguments de la ligne de commande pip comme --index-url https://pypi.python.org/simple/ afin d'indiquer explicitement à partir de quel dépôt télécharger les dépendances. Les développeurs utilisent souvent ce fichier pour avoir les mêmes dépendances et éviter de perdre du temps avec une incompatibilité absconse.
En résumé, install_requires définit les dépendances compatibles (pour la livraison) et requirements.txt spécifie les versions validées (pour le déploiement). Pour plus de détail sur cette sémantique, lire le coup de gueule de Donald Stufft (2013, en anglais). Lire aussi la documentation officielle (en anglais).
Cependant, dans la pratique, ces deux listes sont souvent gérées de la même façon, donc autant mutualiser les efforts. :-)
Futur
Actuellement, pbr n'est pas encore compatible avec le fichier pyproject.toml (PEP-517 et PEP-518) et ne prend pas en charge les alternatives à setuptools comme flit et poetry (découplage entre empaquetage et installation). Mais les développements sont prévus d'après la description du module :
As Metadata 2.0 and other modern Python packaging PEPs come out, PBR aims to support them as quickly as possible.
Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)
# Python Build Reasonableness
Posté par Oliver (site web personnel) . En réponse au journal Quelques bonnes pratiques Python pour 2019. Évalué à 4. Dernière modification le 03 avril 2019 à 05:32.
Pour éviter de passer du temps à réaliser des tâches répétitives à chaque version, l'équipe de OpenStack les a automatisées dans un script qui est devenu en 2010, le module
pbrpour Python Build Reasonableness (avec sagesse). Ce module a énormément évolué en s'adaptant aux évolutions de Python sur dix ans (150 contributeurs).Installation
Fonctionnalités
setuptools(setup.py) ;requirements.txtverssetuptools(install_requires) ;AUTHORSà partir dugit log;ChangeLogen cherchant les motsfeature,api-break,deprecationetbugfixdans legit log;renola gestion desRelease Notes;MANIFEST.in;(削除) Lance les tests via(déprécié) ;tox(削除ここまで)sphinxpour produire la documentation.Avant
Après
Bon, c'est vrai, depuis
setuptools-30.3.0(déc. 2016) on peut remplacersetup.pyparsetup.cfg. Cependant, le Python Packaging Authority recommande d'utiliser principalement lesetup.py. Néanmoins, des projets commetoxutilisent principalementsetup.cfg.Distinction entre
install_requiresetrequirements.txtLe module
pbrpermet d'éviter de gérer en double la liste des dépendances :pbrspécifie le paramètreinstall_requiresà partir du fichierrequirements.txt. Mais, sémantiquement, ces deux listes ont deux objectifs différents :install_requiresdu fichiersetup.py(ousetup.cfg) est inséré dans le livrable et ne précise pas toujours la version des dépendances, du moins l'intervalle des versions pour lequel le livrable est censé être compatible ;requirements.txtest fourni àpippour installer des versions précises pour lesquelles l'application a été validée.De plus,
requirements.txtpeut contenir des arguments de la ligne de commandepipcomme--index-url https://pypi.python.org/simple/afin d'indiquer explicitement à partir de quel dépôt télécharger les dépendances. Les développeurs utilisent souvent ce fichier pour avoir les mêmes dépendances et éviter de perdre du temps avec une incompatibilité absconse.En résumé,
install_requiresdéfinit les dépendances compatibles (pour la livraison) etrequirements.txtspécifie les versions validées (pour le déploiement). Pour plus de détail sur cette sémantique, lire le coup de gueule de Donald Stufft (2013, en anglais). Lire aussi la documentation officielle (en anglais).Cependant, dans la pratique, ces deux listes sont souvent gérées de la même façon, donc autant mutualiser les efforts. :-)
Futur
Actuellement,
pbrn'est pas encore compatible avec le fichierpyproject.toml(PEP-517 et PEP-518) et ne prend pas en charge les alternatives àsetuptoolscommeflitetpoetry(découplage entre empaquetage et installation). Mais les développements sont prévus d'après la description du module :Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)