Informazioni sul codice Python

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
frferrer
Messaggi: 8
Registrazione: 20 ottobre 2017 - 19:05

4 settembre 2019 - 21:30

Buonasera,

Dopo aver esaminato alcuni esempi di codice, mi sono chiesto cosa significasse un'istruzione presente nella documentazione e in alcuni pacchetti.

Nello specifico nel seguente documento https://www.wapt.fr/fr/doc/wapt-create- ... g-software

Ecco il codice in questione:

Codice: Seleziona tutto

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(WAPT.uninstall_cmd(soft['key']))
L'istruzione disinstalla_cmd è una funzione del modulo aiutanti di configurazione.
Questo modulo viene caricato in tutti i file setup.py in cima al file con le istruzioni

Codice: Seleziona tutto

from setuphelpers import *
Quindi non capisco davvero il punto di usare WAPT.uninstall_cmd rispetto a un semplice disinstalla_cmd.
Il risultato è il seguente codice:

Codice: Seleziona tutto

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(uninstall_cmd(soft['key']))
Da quanto ho capito, WAPT è un oggetto contenente metodi del modulo setuphelpers.

Da qui le seguenti domande:
  • Dove è istanziato questo oggetto WAPT? Qual è il suo scopo?
  • Perché utilizzare il uninstall_cmd dell'oggetto WAPT anziché la uninstall_cmd del modulo setuphelpers?
  • Qual è il vantaggio di utilizzare questo metodo?
GRAZIE.
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

6 settembre 2019 - 17:23

common.Wapt.uninstall_cmd è un alias per setuphelpers.uninstall_cmd, probabilmente per motivi di compatibilità con le versioni precedenti.

L'istanza WAPT (della classe common.Wapt) che può essere utilizzata nelle funzioni hook install(), uninstall(), session_setup() e audit() in setup.py è una variabile oggetto istanziata dal client WAPT e iniettata automaticamente nello spazio dei nomi del modulo setup prima della chiamata alla funzione, in modo simile a una variabile implicita integrata... vedi, ad esempio: https://github.com/tranquilit/WAPT/blob ... n.py#L3701.

Inizialmente, questo è stato fatto per evitare un elenco esplicito di parametri nelle definizioni della funzione install, ecc., in modo da non appesantire il file setup.py per i gestori di pacchetti meno esperti, poiché questa variabile viene usata raramente.

L'oggetto WAPT (classe common.Wapt) consente di accedere allo stato corrente del client Wapt e all'API associata, nonché di avviare comandi espliciti come WAPT.install('package'), WAPT.remove('package'), WAPT.forget('package'), ecc., un po' come facciamo da riga di comando con wapt-get install e wapt-get remove, ma nel codice Python.
Tranquillo IT
frferrer
Messaggi: 8
Registrazione: 20 ottobre 2017 - 19:05

9 settembre 2019 - 22:02

Buonasera,

Grazie per questa spiegazione del testo, è molto più chiaro.

Per i principianti non è facile orientarsi quando si utilizzano entrambi i sistemi di scrittura.

Posso suggerire di ripulire l'esempio di codice nella documentazione per mantenere solo la sintassi?

Codice: Seleziona tutto

run(uninstall_cmd())
; e mantenere l'uso di WAPT.<méthode> rispetto a quello che è, ovvero l'istanza client WAPT?
https://www.wapt.fr/fr/doc/wapt-create- ... g-software

GRAZIE.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

16 settembre 2019 - 18:25

Dobbiamo assolutamente sistemare le cose...

Non ne abbiamo parlato molto, ma potete modificare la documentazione voi stessi tramite pull request:

la documentazione si trova qui:

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

Abbiamo sempre meno tempo per creare la documentazione.

L'aiuto della community sarebbe molto apprezzato!

Potete inviare le pull request direttamente!
Bloccato