A propos du code python

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Verrouillé
frferrer
Messages : 8
Enregistré le : 20 oct. 2017 - 19:05

04 sept. 2019 - 21:30

Bonsoir,

en relisant quelques exemples de code, je m’interroge sur une instruction qui apparaît dans la documentation et dans quelques paquets.

Notamment dans la doc suivante https://www.wapt.fr/fr/doc/wapt-create- ... g-software

Voici le code en question :

Code : Tout sélectionner

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(WAPT.uninstall_cmd(soft['key']))
L'instruction uninstall_cmd est une fonction du module setuphelpers.
Ce module est chargé dans tous les fichiers setup.py en tête du fichier avec l'instruction

Code : Tout sélectionner

from setuphelpers import *
Du coup je ne comprends pas bien l'intérêt d'utiliser WAPT.uninstall_cmd par rapport à un simple uninstall_cmd.
Ce qui donne le code suivant :

Code : Tout sélectionner

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(uninstall_cmd(soft['key']))
De ce que je comprends WAPT est un objet contenant des méthodes du module setuphelpers.

D'où les questions suivantes :
  • Où est instancié cet objet WAPT ? A quoi sert-il ?
  • Pourquoi utiliser la méthode uninstall_cmd de l'objet WAPT plutôt que la fonction uninstall_cmd du module setuphelpers ?
  • Quel est l'avantage d'utiliser cette méthode ?
Merci.
Avatar du membre
htouvet
Expert WAPT
Messages : 419
Enregistré le : 16 mars 2015 - 10:48
Contact :

06 sept. 2019 - 17:23

common.Wapt.uninstall_cmd est un alias de setuphelpers.uninstall_cmd, sûrement pour des problèmes de rétrocompatibilité.

L'instance WAPT (de la classe common.Wapt) que l'on peut utiliser dans les fonctions hook install() uninstall() session_setup() audit() de setup.py est une variable objet instanciée par le client wapt et automatiquement injectée dans le namespace du module setup avant l'appel de la fonction, un peu comme une variable implicite built-in... voir par exemple : https://github.com/tranquilit/WAPT/blob ... n.py#L3701

Initialement, cela avait fait comme cela pour éviter une liste explicite de paramètres dans les définitions de fonction install etc... pour ne pas alourdir le contenu de setup.py pour les packageurs débutants, cette variable étant rarement utilisée.

L'objet WAPT (classe common.Wapt) permet d'accéder à l'état actuel du client wapt et l'API associée et lancer des commande explicites WAPT.install('paquet') WAPT.remove('paquet'), WAPT.forget('paquet'), etc... un peu comme on le fait en ligne de commande avec wapt-get install , wapt-get remove mais dans le code python.
Tranquil IT
frferrer
Messages : 8
Enregistré le : 20 oct. 2017 - 19:05

09 sept. 2019 - 22:02

Bonsoir,

merci pour cette explication de texte, c'est plus clair.

Pas évident pour les débutants de s'y retrouver lorsque les 2 écritures sont utilisées.

Puis-je suggérer que soit nettoyé l'exemple de code dans la documentation pour ne garder que la syntaxe

Code : Tout sélectionner

run(uninstall_cmd())
; et ne conserver l'utilisation de WAPT.<méthode> que pour ce qu'il est, c'est à dire l'instance du client WAPT ?
https://www.wapt.fr/fr/doc/wapt-create- ... g-software

Merci.
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

16 sept. 2019 - 18:25

Il faut effectivement nettoyer ...

D’ailleurs nous n'avons pas trop communiqué dessus mais vous pouvez vous même modifier la doc avec des pull request :

La documentation est ici.

https://github.com/tranquilit/WAPT-Documentation

Nous avons de moins en moins de temps pour faire de la documentation.

Une aide de la communauté serait la bienvenue !

Vous pouvez directement faire des pull-request !
Verrouillé