IRC logs of #tryton-fr for Wednesday, 2011-12-14

chat.freenode.net #tryton-fr log beginning Wed Dec 14 00:00:02 CET 2011
2011-12-14 12:09 <pilou> cedk: salut ! a propos du bug 2302, les exceptions la traceback de l'exception remontée par pyscopg n'est pas de type unicode mais de type str contenant de l'unicode
2011-12-14 12:16 <cedk> pilou: je pense que c'est pas possible d'avoir des str qui contienent de l'unicode
2011-12-14 12:16 <cedk> pilou: je pense que tu veux dire de l'utf-8
2011-12-14 12:17 <pilou> ouais
2011-12-14 12:19 <cedk> pilou: le truc est de se fixer un format d'encodage pour les exception
2011-12-14 12:20 <cedk> pilou: si on a toujours de l'utf-8 dans des str
2011-12-14 12:21 <cedk> pilou: on a plus besoin de l'appel à encode
2011-12-14 12:25 <pilou> je n'ai pas compris dans quels cas l'appel à encode servait. "line.encode('utf-8')" est équivalement à "line.decode(sys.getdefaultencoding()).encode('ascii')"
2011-12-14 12:26 <pilou> comme ce sont des exceptions il me semble que c'est forcément des str. pour l'encodage ça peut varier: les exceptions qui viennent de la base de données sont bien en utf-8.
2011-12-14 12:26 <cedk> à priori c'est pour convertir de unicode (utf-8) en str
2011-12-14 12:27 <cedk> pilou: ok mais comment peut-on savoir l'encodage
2011-12-14 12:29 <cedk> c'est un peu null cette method format_exception si on ne connait pas l'encodage des str
2011-12-14 12:36 <pilou> les exceptions de la lib standard utilisent locale.getdefaultlocale()
2011-12-14 12:38 <cedk> pilou: tu a vu ça où?
2011-12-14 12:54 <pilou> euh j'ai pas de source là c'est que je crois :)
2011-12-14 12:55 <pilou> pour détecter l'encodage haypo a écrit ça https://bitbucket.org/haypo/hachoir/src/b662b521c8b0/hachoir-core/hachoir_core/i18n.py#cl-168
2011-12-14 12:55 <cedk> pilou: oui mais on devrait avoir le control sur l'encodage
2011-12-14 12:55 <cedk> pilou: je n'aime vraiment pas les trucs un peu magique
2011-12-14 12:57 <pilou> locale.setlocale permet d'avoir le controle (ou sinon les variables LC_*) sur ce que retourne locale.getlocale()
2011-12-14 13:00 <cedk> pilou: mais on est pas sure que l'encodage de la traceback sera celui là?
2011-12-14 13:02 <pilou> par exemple pour les exceptions provenant des bases de données l'encodage de la traceback depend de l'encodage de la connexion
2011-12-14 13:03 <cedk> XMLRPC server uses sys.exc_info http://hg.python.org/cpython/file/98df29d51e12/Lib/xmlrpc/server.py#l266
2011-12-14 13:22 <cedk> je ne suis pas sur que l'encodage de la traceback soit différent en fonction de la source de l'exception
2011-12-14 13:30 <pilou> le code que j'ai pasté là https://bugs.tryton.org/msg9530 ne montre pas ça ?
2011-12-14 13:31 <cedk> http://bugs.python.org/issue6543
2011-12-14 13:31 <pilou> c'est pas la même versionde python ;)
2011-12-14 13:34 <cedk> pilou: je sais mais ça explique que la traceback est encodée de la même manière
2011-12-14 13:34 <cedk> pilou: en fait dans msg9530, c'est le message d'erreur de la DB qui est dans l'encodage de la connection
2011-12-14 13:44 <cedk> pilou: je me demande si le mieux ne serait pas de simplement ne rien faire
2011-12-14 13:44 <cedk> donc passer la string sans essayer de la convertir
2011-12-14 13:48 <cedk> et de mettre l'encodage et la langue par default de trytond à en_US.UTF-8
2011-12-14 14:28 <pilou> je pense que c'est une bonne solution
2011-12-14 14:29 <pilou> peut être que la langue pourrait être un paramètre de config ?
2011-12-14 14:34 <cedk> pilou: c'est du technique donc je pense que l'anglais est le plus approrié
2011-12-14 14:35 <cedk> pilou: mais faudrait voir ce qui se passe si la locale n'existe pas sur la machine
2011-12-14 14:37 <cedk> ou bien on laisse l'utilisateur le définir pour le user qui lance trytond
2011-12-14 16:52 <cedk> pilou: tu peux proposer un patch pour le problème d'encodage?
2011-12-14 16:59 <pilou> oui
2011-12-14 16:59 <pilou> un patch qui simplement supprime l'appel à encode ?
2011-12-14 17:00 <cedk> pilou: oui
2011-12-14 17:00 <cedk> pilou: ce serait bien de tester ce que ça donne dans le client quand les locale sont en français
2011-12-14 17:01 <pilou> ok
2011-12-14 17:47 <pilou> cedk: j'ai demandé à haypo qui connait bien le sujet, les exceptions ne dépendent pas de la locale avec python 2
2011-12-14 17:49 <nicoe> pilou: sur python-fr ? J'ai rien vu passé
2011-12-14 17:50 <cedk> pilou: et donc elles sont encodée en quoi?
2011-12-14 17:51 <pilou> par exemple oserror qui affiche le nom du fichier ne décode pas le nom du fichier
2011-12-14 17:52 <cedk> pilou: et il est dans quel encodage?
2011-12-14 18:09 <pilou> rectification, le nom du fichier n'est bien pas décodé mais le message d'erreur tiens compte de la locale
2011-12-14 18:11 <pilou> par exemple avec la locale C.UTF-8: "OSError: [Errno 17] File exists" et avec la locale ru_RU.CP1251 : "OSError: [Errno 17] \xd4\xe0\xe9\xeb \xf1\xf3\xf9\xe5\xf1\xf2\xe2\xf3\xe5\xf2"
2011-12-14 18:12 <pilou> \xd4\xe0\xe9\xeb -> c'est encodé en cp1251
2011-12-14 18:13 <cedk> pilou: donc comme c'est potentiellement en mixte de différente encodage
2011-12-14 18:13 <cedk> pilou: on ne peut rien faire
2011-12-14 18:14 <pilou> pour oserror le nom de fichier est en ascii (le nom encodé selon le système de fichier est dispo dans err.filename)
2011-12-14 18:17 <pilou> cedk: les différents systèmes d'encodage c'est celui de la connection à la base de données et celui du système ?
2011-12-14 18:17 <pilou> cedk: les différents systèmes d'encodage c'est celui de la connection à la base de données et celui de "locale.getlocale()" .
2011-12-14 18:17 <pilou> ?
2011-12-14 18:17 <cedk> pilou: je sais pas et ça ne m'interresse pas vraiment
2011-12-14 18:17 <pilou> clos le bug alors
2011-12-14 18:17 <cedk> pilou: le truc important, c'est que'il n'y a aucune convention
2011-12-14 18:18 <cedk> pilou: donc on peut pas decoder
2011-12-14 18:18 <cedk> pilou: du coup, on ne peut qu'envoyer la str
2011-12-14 18:19 <cedk> ce qu'il faut vérifier c'est que le client ne crash pas en essayant d'afficher cette str

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!