Página 1 de 1

[RESUELTO] Acentos y PyScripter

Publicado: 15 de noviembre de 2019 - 11:11
por marcolefo
Buen día,

Estamos experimentando un problema con los acentos.
De hecho, no se reconocen correctamente al usar PyScripter. No hay problema con la consola de Python.

En la consola:

Código: Seleccionar todo

Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> var = u"éè"
>>> type(var)
<type 'unicode'>
>>> print var
éè
>>>
En el archivo setup.py a través de PyScripter:

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    var = u"éè"
    print type(var)
    print var
Y al desinstalar:

Código: Seleccionar todo

*** Console de processus distant Réinitialisée *** 
>>> 
Ligne de Commande : install "C:\TEMP\test-accents_18.7.2-5\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Installing WAPT files C:\TEMP\test-accents_18.7.2-5
<type 'unicode'>
‚Š

Results :

 === install packages ===
  C:\TEMP\test-accents_18.7.2-5 | test-accents (18.7.2-5)
[Mal chiste] Es suficiente para hacerte perder tu UTF-8 [/Mal chiste]

El archivo setup.py se guarda en UTF-8 (sin BOM) / UNIX.

¿Ves de dónde puede venir el problema?

Re: Acentos y PyScripter

Publicado: 15 de noviembre de 2019 - 12:27 p. m.
por htouvet
Buen día,
Es un viejo problema... que ya no nos sorprende, nos acostumbramos ;)

De hecho, la salida de las sentencias de impresión se redirige para almacenar el resultado en la base de datos de registro de Wapt o en la consola.

Esta redirección es administrada en waptutils.py por la clase LogOutput.

Una solución es reemplazar (alrededor de la línea 1455)

Código: Seleccionar todo

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.write(txt)
                except:
                    self.console.write(repr(txt))

por (self.console.write por self.console.stream.write):

Código: Seleccionar todo

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.stream.write(txt)
                except:
                    self.console.write(repr(txt))

Re: Acentos y PyScripter

Publicado: 15 de noviembre de 2019 - 13:06
por marcolefo
GRACIAS :)

Eso resuelve el problema...

Una pregunta rápida. Si el problema se conoce desde hace tiempo, ¿por qué no solucionarlo?

El código que proporcioné fue una prueba. En realidad, queremos eliminar un archivo si existe.

Así que el código de inicio es bastante

Código: Seleccionar todo

# coding: utf-8
from setuphelpers import *

uninstallkey = []

def install():
    licencemanagerfile = ur'C:\TEMP\test_éè\file.txt'

    if (isfile(licencemanagerfile)):
        remove_file(licencemanagerfile)
Ahora funciona perfectamente, con la modificación propuesta.
Pero habría que aplicarlo a todos los clientes ¿no?

Re: Acentos y PyScripter

Publicado: 15 de noviembre de 2019 - 13:16
por htouvet
Una pregunta rápida. Si el problema se conoce desde hace tiempo, ¿por qué no solucionarlo?
Porque nadie se había fijado en eso, y encontramos la solución justo antes de responderte...

La solución estará en la próxima versión de Wapt... obviamente.

Re: Acentos y PyScripter

Publicado: 18 de noviembre de 2019 - 15:20
por marcolefo
¡Genial! Gracias :)

Re: [RESUELTO] Acentos y PyScripter

Publicado: 18 de noviembre de 2019 - 15:40
por htouvet
Hay una compilación que incluye esta corrección de acento:

https://wapt.tranquil.it/wapt/nightly/w ... -1c00cefd/

Registro de cambios:

WAPT-1.7.4-6237 (2019-11-18) (no publicado)
----------------------------

(hash 1c00cefd)

* waptserver: agregar corrección para solucionar el error de flask-socketio https://github.com/miguelgrinberg/Flask ... ssues/1054 (AttributeError: el objeto 'Request' no tiene el atributo 'sid')

* waptserver: asegúrese de que la base de datos esté cerrada antes de intentar abrirla (para el modo de desarrollo)

* waptserver: agregar mensajes de registro cuando se envía un mensaje de excepción al usuario.

WAPT-1.7.4-6234 (2019-11-14) (no publicado)
----------------------------

(hash ad237eee)

* waptserver: actualización del módulo python peewee DB a 3.11.2. Manejo explícito de la conexión a la base de datos para rastrear posibles conexiones limbo (que podrían provocar el agotamiento del grupo de la base de datos)

* waptwua: captura de excepciones al enviar WU a la caché de Windows para permitir que se instalen actualizaciones válidas incluso si algunas no se pudieron verificar correctamente.


WAPT-1.7.4-6232 (2019-10-31)
----------------------------

(hash2090b0e6d52cecfb04f8fa4c279e7c0a0252d6e2

* wapt-get session-setupp: corrige la impresión incorrecta en session_setup. Regresión introducida en b30b1b1a550a4 (1.7.4.6229)

WAPT-1.7.4-6230 (2019-10-23) (no publicado)
----------------------------
(hash 391d382f)

* devuelve la versión y edición del hash git del servidor en ping y usage_statistics

* asegúrese de tener server_uuid en Windows durante la configuración

* corrección para .git parcialmente incluido en el manifiesto del paquete compilado

Re: [RESUELTO] Acentos y PyScripter

Publicado: 27 de noviembre de 2019 - 17:01
por Patrice_minagri
Hola,

si entiendo correctamente, ¿esto implica aplicar la solución a todos los equipos con el agente WAPT instalado? ¿Como reemplazar el archivo waptutils.py original con su versión corregida (a través de otro paquete, GPO, etc.)?