Página 1 de 1

Acerca del código Python

Publicado: 4 de septiembre de 2019 - 21:30
por frferrer
Buenas noches,

Al revisar algunos ejemplos de código, me pregunto acerca de una instrucción que aparece en la documentación y en algunos paquetes.

Concretamente en el siguiente documento https://www.wapt.fr/fr/doc/wapt-create- ... g-software

Aquí está el código en cuestión:

Código: Seleccionar todo

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(WAPT.uninstall_cmd(soft['key']))
La instrucción comando_de_desinstalación es una función del módulo ayudantes de configuración.
Este módulo se carga en todos los archivos configuración.py en la parte superior del archivo con la instrucción

Código: Seleccionar todo

from setuphelpers import *
Así que realmente no entiendo el sentido de usar WAPT.cable de desinstalación en comparación con un simple comando_de_desinstalación.
Esto da como resultado el siguiente código:

Código: Seleccionar todo

for soft in installed_softwares('winscp3'):
    if Version(soft['version']) < Version('5.0.2'):
        run(uninstall_cmd(soft['key']))
Según tengo entendido, WAPT es un objeto que contiene métodos del módulo setuphelpers.

De ahí las siguientes preguntas:
  • ¿Dónde se instancia este objeto WAPT? ¿Cuál es su propósito?
  • ¿Por qué utilizar el uninstall_cmd del objeto WAPT en lugar de la uninstall_cmd del módulo setuphelpers?
  • ¿Cuál es la ventaja de utilizar este método?
GRACIAS.

Re: Acerca del código Python

Publicado: 6 de septiembre de 2019 - 17:23
por htouvet
common.Wapt.uninstall_cmd es un alias de setuphelpers.uninstall_cmd, probablemente por razones de compatibilidad con versiones anteriores.

La instancia de WAPT (de la clase common.Wapt) que se puede usar en las funciones de gancho install(), uninstall(), session_setup() y audit() en setup.py es una variable de objeto instanciada por el cliente WAPT e inyectada automáticamente en el espacio de nombres del módulo setup antes de la llamada a la función, de forma similar a una variable implícita integrada... ver, por ejemplo: https://github.com/tranquilit/WAPT/blob ... n.py#L3701.

Inicialmente, esto se hizo para evitar una lista explícita de parámetros en las definiciones de la función install, etc., para no sobrecargar el archivo setup.py para los empaquetadores novatos, ya que esta variable se usa raramente.

El objeto WAPT (clase common.Wapt) permite acceder al estado actual del cliente wapt y a la API asociada, y ejecutar comandos explícitos como WAPT.install('package'), WAPT.remove('package'), WAPT.forget('package'), etc., algo parecido a como lo hacemos en la línea de comandos con wapt-get install, wapt-get remove, pero en el código Python.

Re: Acerca del código Python

Publicado: 9 de septiembre de 2019 - 22:02
por frferrer
Buenas noches,

Gracias por esta explicación del texto, es mucho más claro.

No es fácil para los principiantes orientarse cuando se utilizan ambos sistemas de escritura.

¿Puedo sugerir que se limpie el ejemplo de código en la documentación para conservar solo la sintaxis?

Código: Seleccionar todo

run(uninstall_cmd())
; y conservar el uso de WAPT.<méthode> ¿que por lo que es, es decir la instancia del cliente WAPT?
https://www.wapt.fr/fr/doc/wapt-create- ... g-software

GRACIAS.

Re: Acerca del código Python

Publicado: 16 de septiembre de 2019 - 18:25
por sfonteneau
Definitivamente necesitamos poner orden...

No hemos hablado mucho de esto, pero puedes editar la documentación tú mismo mediante solicitudes de extracción:

La documentación está aquí:

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

Cada vez tenemos menos tiempo para crear documentación. ¡

La ayuda de la comunidad sería muy apreciada! ¡

Puedes enviar solicitudes de extracción directamente!