Page 1 sur 1

[RESOLU] Les accents et PyScripter

Posté : 15 nov. 2019 - 11:11
par marcolefo
Bonjour,

Nous rencontrons un problème avec des accents.
En effet, ils ne sont pas reconnus correctement lorsqu'on passe avec PyScripter. Pas de problème avec la console Python.

Dans la console :

Code : Tout sélectionner

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
éè
>>>
Dans le setup.py via PyScripter :

Code : Tout sélectionner

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

uninstallkey = []

def install():
    var = u"éè"
    print type(var)
    print var
Et à l'éxécution de uninstall :

Code : Tout sélectionner

*** 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)
[Mauvaise blague] C'est à y perdre son utf-8 [/Mauvaise blague]

Le fichier setup.py est enregistré en UTF-8 (No Bom) / UNIX.

Voyez vous d'où peut venir le problème ?

Re: Les accents et PyScripter

Posté : 15 nov. 2019 - 12:27
par htouvet
Bonjour,
C'est un vieux problème.... qui ne nous choque plus, on s'habitue ;)

En fait, la sortie des print est redirigée pour stocker le résultat au passage dans la base de donnée de log de Wapt, ou vers la console.

Cette redirection est gérée dans waptutils.py par la classe LogOutput.

Une solution est de remplacer (vers la ligne 1455)

Code : Tout sélectionner

    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))

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

Code : Tout sélectionner

    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: Les accents et PyScripter

Posté : 15 nov. 2019 - 13:06
par marcolefo
Merci :)

Effectivement ça règle le problème...

Une petite question. Si le problème est connu de longue date, pourquoi ne pas le corriger ?

Le code que j'ai fourni était un test. En fait nous voulons supprimer un fichier s'il existe.

Donc le code de départ c'est plutôt

Code : Tout sélectionner

# coding: utf-8
from setuphelpers import *

uninstallkey = []

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

    if (isfile(licencemanagerfile)):
        remove_file(licencemanagerfile)
Il fonctionne parfaitement désormais, avec la modif proposée.
Mais il faudrait l'appliquer sur tous les clients, non ?

Re: Les accents et PyScripter

Posté : 15 nov. 2019 - 13:16
par htouvet
Une petite question. Si le problème est connu de longue date, pourquoi ne pas le corriger ?
Parce que personne n'avait fait le focus là dessus, et que l'on a trouvé la solution juste avant de vous répondre...

Le correctif sera dans la prochaine version de Wapt... évidemment.

Re: Les accents et PyScripter

Posté : 18 nov. 2019 - 15:20
par marcolefo
Super ! Merci :)

Re: [RESOLU] Les accents et PyScripter

Posté : 18 nov. 2019 - 15:40
par htouvet
Il y a un build qui intègre ce correctif d'accent :

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

Changelog :

WAPT-1.7.4-6237 (2019-11-18) (not released)
----------------------------

(hash 1c00cefd)

* waptserver : add fix to workaround flask-socketio bug https://github.com/miguelgrinberg/Flask ... ssues/1054 (AttributeError: 'Request' object has no attribute 'sid')

* waptserver : be sure db is closed before trying to open it (for dev mode)

* waptserver : add logs messages when an exception message is sent back to the user.

WAPT-1.7.4-6234 (2019-11-14) (not released)
----------------------------

(hash ad237eee)

* waptserver : upgrade peewee DB python module to 3.11.2. explicit connection handling to DB to track potential limbo connections (which could lead to db pool exhaustion)

* waptwua : Trap exception when pushing WU to Windows cache to allow valid updates to be installed even if some could not be verified properly.


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

(hash2090b0e6d52cecfb04f8fa4c279e7c0a0252d6e2

* wapt-get session-setupp : fix bad print in session_setup. regression introduced in b30b1b1a550a4 (1.7.4.6229)

WAPT-1.7.4-6230 (2019-10-23) (not released)
----------------------------
(hash 391d382f)

* return server git hash version and edition in ping and usage_statistics

* be sure to have server_uuid on windows when during setup

* fix for .git partially included in built package manifest

Re: [RESOLU] Les accents et PyScripter

Posté : 27 nov. 2019 - 17:01
par Patrice_minagri
Bonjour,

Si je comprends bien, il s'agit d'apporter cette correction à tous les ordinateurs dotés de l'agent WAPT ? Comme le remplacement du fichier waptutils.py initial par sa version corrigée (via un autre paquet, GPO etc ...) ?