Development #38237
factoriser simplify()
0%
Description
Beaucoup de connecteur utilise un code similaire pour le paramètre (q
) de recherche.
$ git grep "unicodedata.normalize('NFKD'" | cut -d: -f1 | sort | uniq passerelle/apps/base_adresse/models.py passerelle/apps/csvdatasource/models.py passerelle/apps/gdc/views.py passerelle/apps/solis/models.py passerelle/apps/sp_fr/models.py passerelle/contrib/agoraplus/normalize.py passerelle/contrib/agoraplus/views.py passerelle/utils/conversion.py
Fichiers
Révisions associées
Historique
Mis à jour par Nicolas Roche il y a plus de 4 ans
- Fichier 0001-utils-factorize-use-of-unicodedata-module-38237.patch 0001-utils-factorize-use-of-unicodedata-module-38237.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je me demande si je ne devrais pas utiliser six à la place d'unicode ?
<<< if not isinstance(s, unicode): s = unicode(s, 'utf-8', 'ignore') --- if not isinstance(s, six.text_type): s = six.text_type(s, 'utf-8', 'ignore') >>>
Mis à jour par Nicolas Roche il y a environ 4 ans
- Fichier 0001-utils-factorize-use-of-unicodedata-module-38237.patch 0001-utils-factorize-use-of-unicodedata-module-38237.patch ajouté
- Assigné à mis à Nicolas Roche
Rebasé.
La question ci-dessus ne se pose plus :
s = force_text(normalize(s))
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
J'ai un peu du mal avec les multiples passages ascii->unicode, tant qu'à factoriser on pourrait pas plutôt avoir des fonctions qui travaillent uniquement avec des unicode/str et convertir en sotie vers des bytes quand c'est nécessaire (parce que là ça fait mal à la tête).
Mis à jour par Nicolas Roche il y a environ 4 ans
- Fichier 0001-utils-factorize-use-of-unicodedata-module-38237.patch 0001-utils-factorize-use-of-unicodedata-module-38237.patch ajouté
avoir des fonctions qui travaillent uniquement avec des unicode/str
oui, désolé pour le mal de tête.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Le gain ne me parait pas terrible mais c'est surtout parce que les usages sont un peu trop divers (on a encore deux versions de simplify, tout ça parce que dans sp_fr on veut des '_'
et pas des ' '
) et les .decode('ascii', 'replace').encode('ascii')
mériteraient des explications à chaque fois.
L'usage de la version locale de normalize() dans csvdatasource() me paraît louche en python3 (on devrait faire decode/encode comme ailleurs, on ne devrait pas générer des bytes dans les expressions), en fait en python2 pareil mais faudrait rendre implicite unicode_literals dans le eval() (voir https://stackoverflow.com/questions/54224792/how-can-a-representation-of-a-literal-be-safely-evaluated-assuming-unicode-lite).
Mis à jour par Nicolas Roche il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit e4a063fac6ebe57b077c3846031c0bca956e1a82 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Mon Dec 9 12:27:55 2019 +0100 utils: factorize use of unicodedata module (#38237)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
utils: factorize use of unicodedata module (#38237)