Projet

Général

Profil

Development #28276

Fonctionner avec Python3 pour Django1.11

Ajouté par Paul Marillonnet il y a plus de 5 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
23 novembre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

En se basant sur le travail déjà effectué dans d'autres briques.


Demandes liées

Lié à Authentic 2 - Development #28277: Fonctionner en Python3 pour Django1.11 : fournir un jeu de tests unitairesFermé23 novembre 2018

Actions
Lié à Authentic 2 - Development #28278: Fichier setup.py compatible Python3Fermé23 novembre 2018

Actions
Lié à Authentic 2 - Development #31137: python3: adapter la syntaxe des exceptionsFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31139: python3: utiliser les fonctions de parsing d'url de django.utils.sixFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31140: python3: utiliser __future__.print_functionFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31143: python3 : corriger les imports relatifs implicites de sous-moduleFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31144: python3 : l'initialisation du type de base 'int' ne prend pas de paramètreFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31145: python3 : retirer les appels à "execfile()", qui n'est plus une fonction nativeFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31147: python3 : le constructeur de la classe native "object" ne prend pas de paramètreFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31149: python3 : retirer dans le code python et dans les gabarits django les appels à dict.iteritemsFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31150: python3 : string.letters n'existe plusFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31151: python3 : déprécier le type natif 'unicode' de python2Fermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31152: python3 : utiliser six.StringIOFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31153: python3 : retirer l'appel explicite au module __builtin__Fermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31155: python3 : déprécier django.utils.encoding.smart_unicodeFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31156: python3 : utiliser six.moves.http_client à la place de httplibFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31158: python3 : retirer l'usage de tabulations dans les fichiers source pythonFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31159: python3: déprécier le type natif 'basestring'Fermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31160: python3 : restreindre à une version antérieure à 4.2 le module pytest utilisé par toxFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31161: python3: fournir un script getlasso3.shFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31162: python3: prendre en compte un changement d'interface (rétrocompatible) du module uuidFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31163: python3 : utiliser l'encodage hexadécimal de binasciiFermé06 mars 2019

Actions
Lié à Authentic 2 - Bug #31164: python3: utiliser six.moves._thread à la place de threadFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31165: python3: utiliser six.moves.reduce à la place de la fonction native reduceFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31166: python3: s'assurer que authentic2.exponential_retry_timeout.ExponentialRetryTimeout.seconds_to_wait retourne un entierFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31167: python3 : corriger l'encodage utf-8 des crédentiels de l'usager dans le fichier de tests principalFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31168: python3 : s'assurer de l'encodage et l'échappement identiques de deux URLs comparées dans testsFermé06 mars 2019

Actions
Lié à Authentic 2 - Bug #31169: python3 : ne plus comparer des chaînes de caractères avec DjangoWebtestResponse.content dans les testsFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31170: python3 : les fonctions de génération du sub OIDC doivent renvoyer du texteFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31171: python3 : gérer les variations d'encodage pour le sous-module authentic2.cryptoFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31172: python3 : gérer l'encodage de la clé secrête OIDC avant chiffrement AESFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31173: python3 : diverses variations d'encodage à gérer dans le fichier de test principalFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31174: python3 : gérer l'encodage des données passant par le mixin de cache pickleFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31175: python3 : gérer l'encodage base64 des entêtes d'autorisation HTTP Basic dans les testsFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31176: python3 : utiliser un b'' pour une comparaison dans le fichier de test des APIsFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31178: python3 : déprecier l'usage de str dans le champ SAML PickledObjectFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31179: python3 : PIL.Image.open ne prend qu'un chemin de fichier en paramètreFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31180: python3 : choisir la bonne exception à détecter dans le test authn OIDC de décodage en base64 de URLFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31182: python3 : déprécier l'attribut __metaclass__Fermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31183: python3 : encoder l'identifiant d'un fournisseur SAML afin de calculer son haché SHA1Fermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31184: python3 : uniformiser le comportement de la méthode magique __str__ des OUFermé06 mars 2019

Actions
Lié à Authentic 2 - Development #31185: python3 : gérer l'encodage ascii des dumps json lors des tests d'import de siteFermé06 mars 2019

Actions
Lié à Intégrations graphiques Publik - Development #40501: adapter les templates suite au passage d'authentic en python3Fermé06 mars 2020

Actions

Révisions associées

Révision dc58feac (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: use url-parsing utilities from django (#28276)

Révision 667c1164 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: auth_oidc mocked endpoint jwt encoding (#28276)

Révision b195219d (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in authentic.crypto aes utilities (#28276)

Révision 8106e22e (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encodinging variations in authentic2.crypto aes testing (#28276)

Révision c297edbc (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in csv importer (#28276)

Révision 586f322e (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: explicit delimiter and quotechar in csv import (#28276)

Révision 75154f27 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: fix inner iterator classes of csv_import (#28276)

Révision d5982c5b (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in hashers (#28276)

Révision c43cc628 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in idp_oidc (#28276)

Révision 79e4742c (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in idp_oidc testing (#28276)

Révision 60721946 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

make ExponentialRetryTimeout.seconds_to_wait always return an int (#28276)

Révision 79505fa0 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: remove various deprecated dict iteration functions (#28276)

Révision 775bff65 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: variations encoding in idp.saml.saml2_endpoints (#28276)

Révision 0f9f08e4 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in saml base code (#28276)

Révision a6dbdbe0 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in tests.test_idp_saml2 (#28276)

Révision 009d16b7 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: monkeypatching variations in import-export site cmd testing (#28276)

Révision e3f0268f (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in auth_fc testing (#28276)

Révision 0ed93b18 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: user-id generation in user_import (#28276)

Révision 06670a35 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: greedy retrieval of ldap mapped-attributes' value (#28276)

Révision 5c53a130 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in ldap testing (#28276)

Révision 338478e9 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: ldap encrypted binddn must be a string type (#28276)

Révision 12e67550 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

ldap_backend: do not crash on missing ldap data entries (#28276)

Révision 1c66f41a (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: force text on ldap user's cached password (#28276)

Révision 02668887 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: json.loads takes str as input (#28276)

Révision 9f9ca84a (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in test_manager (#28276)

Révision a5638ba3 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: explicit list of export keys in ou manager testing (#28276)

Révision 8c2734c5 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: explicit list of export keys in role manager testing (#28276)

Révision b3b033d0 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: import site json from file content (#28276)

Révision 9657e787 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: open user-import pickle-dumping files as binary data (#28276)

Révision 17860e6a (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in test_role_manager (#28276)

Révision f9139e5c (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: absolute imports in manager.user_views cbv methods (#28276)

Révision bd02424f (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: handle http responses' payload as str in test_user_manager (#28276)

Révision 2eb1110c (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: create explicit list of user csv-exported attributes (#28276)

Révision fa6cd975 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: a number of queries in user export test should be an integer (#28276)

Révision 17cae75c (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: add new type of authorized node in condition validator (#28276)

Révision a0ad7879 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

auth_fc: do not assert depending on dict elements' order (#28276)

Révision 92ff8cd7 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in auth_fc.models (#28276)

Révision 3991199c (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in auth_fc.utils (#28276)

Révision 782004f9 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: encoding variations in test_auth_fc (#28276)

Révision 41af68e2 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: force use of protocol=0 in PickledObjectField (#28276)

Révision 27575671 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: force ldap modify list vals to be list (#28276)

Révision a99d6a56 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: use monkeypatch in ldap tests (#28276)

Révision 1b1a8ba5 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: force vals to bytes in LDAP tests (#28276)

Révision 352a7c0b (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: use // to force integer result (#28276)

Révision ce3d8adc (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

python3: load distribution before loading entry points (#28276)

Révision 2290f8a2 (diff)
Ajouté par Paul Marillonnet il y a environ 4 ans

python3: add a py3 pytest environment in tox.ini (#28276)

Révision 89323afd (diff)
Ajouté par Benjamin Dauvergne il y a plus de 3 ans

misc: restore sniffing of csv dialect (#44016)

This reverts commit 586f322ebad79252ed20235fd20d7c5f6b449fe5, "python3:
explicit delimiter and quotechar in csv import (#28276)".

Historique

#1

Mis à jour par Paul Marillonnet il y a plus de 5 ans

  • Lié à Development #28277: Fonctionner en Python3 pour Django1.11 : fournir un jeu de tests unitaires ajouté
#2

Mis à jour par Paul Marillonnet il y a plus de 5 ans

#3

Mis à jour par Paul Marillonnet il y a plus de 5 ans

  • Statut changé de Nouveau à Information nécessaire

Benjamin, à l'occasion du sprint GI, tu as évoqué quelques chantiers structurels pour A2 (l'abandon des classes Plugin, notamment, si mes souvenirs sont bons).
Est-ce que tu penses que c'est bloquant pour avancer ici ? Ou bien est-ce qu'on peut faire les deux en parallèle ?

#4

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

J'aimerai surtout un unique ticket python3 avec une branche qui avance en parallèle de tout le reste; aussi, mais c'est vrai pour tous les projets, faire un peu attention au code nouveau qu'on commit quand c'est obviously pas compatible, genre préférér django.utils.encoding.force_text(x) plutôt que unicode(x).

#5

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Statut changé de Information nécessaire à En cours

Je suis sur une erreur un peu cryptique : http://perso.entrouvert.org/~pmarillonnet/py3-coverage-dj111-authentic-sqlite.html.

Je creuse l'affaire, histoire de voir s'il manque quelque part un marqueur pytest d'accès à la DB django.

#6

Mis à jour par Emmanuel Cazenave il y a environ 5 ans

Benjamin Dauvergne a écrit :

J'aimerai surtout un unique ticket python3 avec une branche qui avance en parallèle de tout le reste;

J'avais conseillé à Paul l'inverse il y quelques jours : des petits tickets ciblés qu'on peut pousser petit à petit, c'est comme ça que je m'en suis sortis pour django 1.11.
Au delà des aspects techniques, il y a le problème moral : la longue branche à rebaser en permanence et dont on ne voit jamais le bout, c'est (pour moi) la déprime et l'épuisement assuré.

#7

Mis à jour par Paul Marillonnet il y a environ 5 ans

Paul Marillonnet a écrit :

Je suis sur une erreur un peu cryptique : http://perso.entrouvert.org/~pmarillonnet/py3-coverage-dj111-authentic-sqlite.html.

L'erreur n'apparaît plus lorsqu'on utilise une version de pytest inférieure à la 4.2. Merci Benj.

#8

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Finalement c'était une incompatibilité entre mon usage de override_settings sur ROOT_URLCONF et pytest 4.2.0, on peut utiliser pytest 4.2.0 maintenant avec un master à jour.

#9

Mis à jour par Paul Marillonnet il y a environ 5 ans

Bon, arrachage de cheveux : le middleware de cache de session est cassé. (La sauvegarde de session provoque une tentative de sérialisation JSON du dictionnaire de session contenant des valeurs de type byte. Ça explose.)
Il faut, je crois, ré-écrire un middleware de session dont la méthode process_response veillerait à transformer les objets bytes en valeur JSON-sérialisable avant sauvegarde.
Ou bien, pour ce faire, hériter directement de django.contrib.sessions.backends.db.SessionStore pour redéfinir les méthodes encode et decode de la classe parente SessionBase1.

Selon la loi du 80-20, ça fait partie des 20% les plus difficiles du travail sur ce ticket, je le ferai à la fin. J'ai commenté le test_session_cache en attendant.

1 Le code des deux méthodes est là, https://docs.djangoproject.com/en/1.11/_modules/django/contrib/sessions/backends/base/. C'est le serialized = self.serializer().dumps(session_dict) dans la méthode encode qui fait tout exploser.

#10

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Paul Marillonnet a écrit :

Bon, arrachage de cheveux : le middleware de cache de session est cassé. (La sauvegarde de session provoque une tentative de sérialisation JSON du dictionnaire de session contenant des valeurs de type byte. Ça explose.)
Il faut, je crois, ré-écrire un middleware de session dont la méthode process_response veillerait à transformer les objets bytes en valeur JSON-sérialisable avant sauvegarde.
Ou bien, pour ce faire, hériter directement de django.contrib.sessions.backends.db.SessionStore pour redéfinir les méthodes encode et decode de la classe parente SessionBase1.

Selon la loi du 80-20, ça fait partie des 20% les plus difficiles du travail sur ce ticket, je le ferai à la fin. J'ai commenté le test_session_cache en attendant.

1 Le code des deux méthodes est là, https://docs.djangoproject.com/en/1.11/_modules/django/contrib/sessions/backends/base/. C'est le serialized = self.serializer().dumps(session_dict) dans la méthode encode qui fait tout exploser.

Il faut trouver d'où viennent ces valeurs bytes et faire en sorte que ce soit de l'unicode, je pense que ça vient du backend LDAP, tu as le nom de la clé ?

#11

Mis à jour par Paul Marillonnet il y a environ 5 ans

Le contenu du dictionnaire de session et la trace jusqu'à la sérialisation ici :
http://perso.entrouvert.org/~pmarillonnet/28726_json_encode_error.html

#12

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Ok essaye ça

diff --git a/src/authentic2/decorators.py b/src/authentic2/decorators.py
index 675226d4..83a6a7f1 100644
--- a/src/authentic2/decorators.py
+++ b/src/authentic2/decorators.py
@@ -1,3 +1,4 @@
+import base64
 import pickle
 import re
 from json import dumps as json_dumps
@@ -224,12 +225,17 @@ class DjangoCache(SimpleDictionnaryCacheMixin, CacheDecoratorBase):
 class PickleCacheMixin(object):
     def set(self, key, value):
         value, tstamp = value
-        value = pickle.dumps(value)
+        value = base64.b64encode(pickle.dumps(value))
         super(PickleCacheMixin, self).set(key, (value, tstamp))

     def get(self, key):
         value = super(PickleCacheMixin, self).get(key)
         if value[0] is not None:
+            value, tsamp = value
+            try:
+                value = base64.b64decode(value)
+            except ValueError:
+                pass
             value = (pickle.loads(value[0]), value[1])
         return value

Ça devrait être backward compatible.

#13

Mis à jour par Paul Marillonnet il y a environ 5 ans

Non, toujours pas.
django.contrib.sessions.backends.db.SessionStore().encode appelle directement la méthode django.core.signing.JSONSerializer().dumps (qui fait un simple dumps JSON).

En revanche ce sérialisateur est retrouvé via settings.SESSION_SERIALIZER1.
Je propose de redéfinir ce dernier, en patchant les fonctions loads et dumps en reprenant ton patch dans ta dernière remarque, Benjamin.

1 https://github.com/django/django/blob/stable/1.11.x/django/contrib/sessions/backends/base.py#L51

#14

Mis à jour par Paul Marillonnet il y a environ 5 ans

Paul Marillonnet a écrit :

Non, toujours pas.

Pardon, en fait si, ça corrige le bogue de sérialisation. Je m'étais pris les pieds dans le tapis.

Benj, j'ai poussé ton patch (avec quelques minimes corrections) dans la branche wip relative au ticket.

#15

Mis à jour par Paul Marillonnet il y a environ 5 ans

Avis au(x) relecteur(s) :
Est-ce que je continue à tout pousser dans ma branche à part ?
Ou bien je commence à créer des sous-tickets thématiques, comme l'avait fait Emmanuel pour le support de Django 1.11 ?
(J'en suis à une soixantaine de commits. Environ les deux tiers des tests unitaires passent.)

#16

Mis à jour par Paul Marillonnet il y a environ 5 ans

Je me creuse la tête sur le backend LDAP, sans avoir de résultat satisfaisant pour l'instant.
Je dois passer à d'autres dévs, je reviens ici plus tard.

#17

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Avec l'intégration de #30577 ça devrait aller mieux.

#18

Mis à jour par Paul Marillonnet il y a environ 5 ans

Oui, je vais essayer.
Je voudrais d'abord créer des petits tickets pour inclure les commits actuels de cette branche wip dans la branche master, sinon je ne vais pas m'en sortir.
(Les changements dans la branche WIP sont trop nombreux, impossible de rebaser sur master, qui vit sa vie aussi de son côté.)

#19

Mis à jour par Paul Marillonnet il y a environ 5 ans

#20

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31139: python3: utiliser les fonctions de parsing d'url de django.utils.six ajouté
#21

Mis à jour par Paul Marillonnet il y a environ 5 ans

#22

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31143: python3 : corriger les imports relatifs implicites de sous-module ajouté
#23

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31144: python3 : l'initialisation du type de base 'int' ne prend pas de paramètre ajouté
#24

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31145: python3 : retirer les appels à "execfile()", qui n'est plus une fonction native ajouté
#25

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31147: python3 : le constructeur de la classe native "object" ne prend pas de paramètre ajouté
#26

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31149: python3 : retirer dans le code python et dans les gabarits django les appels à dict.iteritems ajouté
#27

Mis à jour par Paul Marillonnet il y a environ 5 ans

#28

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31151: python3 : déprécier le type natif 'unicode' de python2 ajouté
#29

Mis à jour par Paul Marillonnet il y a environ 5 ans

#30

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31153: python3 : retirer l'appel explicite au module __builtin__ ajouté
#31

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31155: python3 : déprécier django.utils.encoding.smart_unicode ajouté
#32

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31156: python3 : utiliser six.moves.http_client à la place de httplib ajouté
#33

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31158: python3 : retirer l'usage de tabulations dans les fichiers source python ajouté
#34

Mis à jour par Paul Marillonnet il y a environ 5 ans

#35

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31160: python3 : restreindre à une version antérieure à 4.2 le module pytest utilisé par tox ajouté
#36

Mis à jour par Paul Marillonnet il y a environ 5 ans

#37

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31162: python3: prendre en compte un changement d'interface (rétrocompatible) du module uuid ajouté
#38

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31163: python3 : utiliser l'encodage hexadécimal de binascii ajouté
#39

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Bug #31164: python3: utiliser six.moves._thread à la place de thread ajouté
#40

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31165: python3: utiliser six.moves.reduce à la place de la fonction native reduce ajouté
#41

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31166: python3: s'assurer que authentic2.exponential_retry_timeout.ExponentialRetryTimeout.seconds_to_wait retourne un entier ajouté
#42

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31167: python3 : corriger l'encodage utf-8 des crédentiels de l'usager dans le fichier de tests principal ajouté
#43

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31168: python3 : s'assurer de l'encodage et l'échappement identiques de deux URLs comparées dans tests ajouté
#44

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Bug #31169: python3 : ne plus comparer des chaînes de caractères avec DjangoWebtestResponse.content dans les tests ajouté
#45

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31170: python3 : les fonctions de génération du sub OIDC doivent renvoyer du texte ajouté
#46

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31171: python3 : gérer les variations d'encodage pour le sous-module authentic2.crypto ajouté
#47

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31172: python3 : gérer l'encodage de la clé secrête OIDC avant chiffrement AES ajouté
#48

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31173: python3 : diverses variations d'encodage à gérer dans le fichier de test principal ajouté
#49

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31174: python3 : gérer l'encodage des données passant par le mixin de cache pickle ajouté
#50

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31175: python3 : gérer l'encodage base64 des entêtes d'autorisation HTTP Basic dans les tests ajouté
#51

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31176: python3 : utiliser un b'' pour une comparaison dans le fichier de test des APIs ajouté
#52

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31178: python3 : déprecier l'usage de str dans le champ SAML PickledObject ajouté
#53

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31179: python3 : PIL.Image.open ne prend qu'un chemin de fichier en paramètre ajouté
#54

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31180: python3 : choisir la bonne exception à détecter dans le test authn OIDC de décodage en base64 de URL ajouté
#57

Mis à jour par Paul Marillonnet il y a environ 5 ans

#58

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31183: python3 : encoder l'identifiant d'un fournisseur SAML afin de calculer son haché SHA1 ajouté
#59

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31184: python3 : uniformiser le comportement de la méthode magique __str__ des OU ajouté
#60

Mis à jour par Paul Marillonnet il y a environ 5 ans

  • Lié à Development #31185: python3 : gérer l'encodage ascii des dumps json lors des tests d'import de site ajouté
#61

Mis à jour par Paul Marillonnet il y a presque 5 ans

Et donc on a un méta-problème :)
L'enregistrement d'un champ authentic2.compat.JSONField provoque un ajout de champ du champ via la métaclasse (django.db.models.options.Options.add_field).
Cette métaclasse maintient une liste des champs locaux, et l'ajout provoque une insertion dans la liste après détermination de l'emplacement via un bisect.

Le bisect provoque une comparaison entre des objets de classes pour lesquelles les méthodes magiques de comparaison ne sont pas implémentées.

En Python 2, ce n'est pas un souci :

In [2]: class A(object):
   ...:     pass
   ...: 

In [3]: class B(object):
   ...:     pass
   ...: 

In [4]: a = A()

In [5]: b = B()

In [6]: a < b
Out[6]: True

Par contre en Python 3, ce n'est pas la même histoire (et c'est mieux comme ça) :

In [1]: class A(object):
   ...:     pass
   ...: 

In [2]: class B(object):
   ...:     pass
   ...: 

In [3]: a = A()

In [4]: b = B()

In [5]: a < b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-8c747544e8c8> in <module>()
----> 1 a < b

TypeError: '<' not supported between instances of 'A' and 'B'

Il faut revoir le code de authentic2.compat.JSONField pour prendre en compte, en plus de la compatibilité dj1.8/1.11, ces variations entre les deux versions de Python.

Je ne sais pas encore comment faire ça proprement, ou disons le moins salement possible, je continue de me creuser la tête.

#62

Mis à jour par Frédéric Péters il y a presque 5 ans

Je ne sais pas encore comment faire ça proprement, ou disons le moins salement possible, je continue de me creuser la tête.

Faut pas se prendre la tête ici; faut laisser ce bout de côté, passer en Django 1.11 exclusivement, puis revenir sur le sujet.

#63

Mis à jour par Paul Marillonnet il y a presque 5 ans

Oui, c'est vrai. Je fais comme ça, merci.

#64

Mis à jour par Paul Marillonnet il y a environ 4 ans

Allez, on a jamais été aussi proche du but :)
Pour info ça se passe maintenant ici: https://git.entrouvert.org/authentic.git/log/?h=wip/py3-nouvelle-vague

Je vais supprimer les anciennes branches après avoir vérifié que tout ce qu'elles contenaient d'intéressant a été pris en compte.

#65

Mis à jour par Paul Marillonnet il y a environ 4 ans

  • Statut changé de En cours à Solution proposée

Tous les tests sauf deux (tests unitaires ldap que je n'ai pas eu le temps de migrer cette semaine et que j'ai donc annotés avec pytest.mark.skipif(…)) tournent en python3, et ça se passe ici :

https://git.entrouvert.org/authentic.git/log/?h=wip/py3-nouvelle-vague

(L'exécution des tests est donc là.)

#66

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution proposée à Solution validée

Je valide ta branche mise à jour (py3-bdauvergne), si t'es ok avec ça Paul je pousse.

#67

Mis à jour par Paul Marillonnet il y a environ 4 ans

  • Assigné à mis à Benjamin Dauvergne

Ok pour moi, go.

#68

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 2290f8a228110489547053c616f2ecc4208fb96d
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 14:03:19 2020 +0100

    python3: add a py3 pytest environment in tox.ini (#28276)

commit ce3d8adc13c7422ee18e9b90afe5235adaf724f2
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Sat Feb 29 23:04:35 2020 +0100

    python3: load distribution before loading entry points (#28276)

commit 352a7c0bf53d635c8bdf2432468f5c80d9e1b053
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Sat Feb 29 19:30:42 2020 +0100

    python3: use // to force integer result (#28276)

commit 1b1a8ba5857744c76f8c6bcbdada9bc95de1dffc
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Feb 28 13:13:23 2020 +0100

    python3: force vals to bytes in LDAP tests (#28276)

commit a99d6a569ca5e3e6252e60fb5b5a23abd5e64e5f
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Feb 28 13:12:38 2020 +0100

    python3: use monkeypatch in ldap tests (#28276)

commit 275756715f69f14ab23d6b5177890f8d190c0c1e
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Feb 28 13:11:42 2020 +0100

    python3: force ldap modify list vals to be list (#28276)

commit 41af68e27f803fe1f3877a7d135e73981bd6be42
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Thu Feb 27 20:55:40 2020 +0100

    python3: force use of protocol=0 in PickledObjectField (#28276)

commit 782004f944e87dbba7bbd17ccdf349eb0f51c419
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 13 17:23:27 2020 +0100

    python3: encoding variations in test_auth_fc (#28276)

commit 3991199cf1046c9f5cbd109c46378f7bc09d92c4
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 13 17:21:49 2020 +0100

    python3: encoding variations in auth_fc.utils (#28276)

commit 92ff8cd74b3ec990e38c4de2393c8db3b0c2e89f
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 13 17:21:22 2020 +0100

    python3: encoding variations in auth_fc.models (#28276)

commit a0ad78792aa7bbc099d516939390fc5d38d4655c
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 13 17:19:47 2020 +0100

    auth_fc: do not assert depending on dict elements' order (#28276)

commit 17cae75c9d2859b88a7370d132b1a27ecf38f639
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Feb 12 15:47:29 2020 +0100

    python3: add new type of authorized node in condition validator (#28276)

commit fa6cd9751a09ae30ad63cbf2d92b2a118cf42fd3
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Feb 12 12:24:50 2020 +0100

    python3: a number of queries in user export test should be an integer (#28276)

commit 2eb1110c9e3eccf89eb391d1894286c165251b5d
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Feb 12 12:18:40 2020 +0100

    python3: create explicit list of user csv-exported attributes (#28276)

commit bd02424f23df170221b30db93e532f1c1ba68f0c
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Feb 12 12:09:45 2020 +0100

    python3: handle http responses' payload as str in test_user_manager (#28276)

commit f9139e5caf4e6fff776bbe4a14d173ed420c4bff
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Tue Feb 11 15:37:49 2020 +0100

    python3: absolute imports in manager.user_views cbv methods (#28276)

commit 17860e6ad587d9b76609257e14cfd548ee809760
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Tue Feb 11 15:28:58 2020 +0100

    python3: encoding variations in test_role_manager (#28276)

commit 9657e787f36cf434e185e5ac97d967cd2994f9e3
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Tue Feb 11 15:09:34 2020 +0100

    python3: open user-import pickle-dumping files as binary data (#28276)

commit b3b033d0b661458cde4da83857af06d7e41eb6f2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Tue Feb 11 14:22:52 2020 +0100

    python3: import site json from file content (#28276)

commit 8c2734c538630e8c021601aa5d56f18dfb07517e
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 17:26:58 2020 +0100

    python3: explicit list of export keys in role manager testing (#28276)

commit a5638ba3005b41c323b3a788095f357dfc7bcebe
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 17:20:40 2020 +0100

    python3: explicit list of export keys in ou manager testing (#28276)

commit 9f9ca84af70729404fca66fca438144105b5e637
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 17:12:17 2020 +0100

    python3: encoding variations in test_manager (#28276)

commit 02668887751d7e70c9c6def7fbc109a511a0af2e
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 15:29:53 2020 +0100

    python3: json.loads takes str as input (#28276)

commit 1c66f41acd451c0e77bb4505bb311fdb25fd51d2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 11:48:32 2020 +0100

    python3: force text on ldap user's cached password (#28276)

commit 12e67550a39eb9d17e3c5027105025aeec644a4f
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Feb 10 11:34:35 2020 +0100

    ldap_backend: do not crash on missing ldap data entries (#28276)

commit 338478e9f8ed4a710b80be91e67a34f9264fe4d0
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Feb 7 15:10:29 2020 +0100

    python3: ldap encrypted binddn must be a string type (#28276)

commit 5c53a130ea5d2df178db63bbcb5066bc267cb6a7
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Feb 7 14:11:45 2020 +0100

    python3: encoding variations in ldap testing (#28276)

commit 06670a35f3438cae80cad5d180374a0a97630192
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Feb 7 14:09:56 2020 +0100

    python3: greedy retrieval of ldap mapped-attributes' value (#28276)

commit 0ed93b188259dce640fcfceee20ce9a4c30d972a
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Feb 7 12:47:36 2020 +0100

    python3: user-id generation in user_import (#28276)

commit e3f0268fc2d67c13f7e306ddbb8270e201888084
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Feb 7 12:46:36 2020 +0100

    python3: encoding variations in auth_fc testing (#28276)

commit 009d16b713fda2d1fe8a909cafc6ce05244179b2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 18:34:16 2020 +0100

    python3: monkeypatching variations in import-export site cmd testing (#28276)

commit a6dbdbe054533b63106efd5fdf35336bac7200fe
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 18:26:07 2020 +0100

    python3: encoding variations in tests.test_idp_saml2 (#28276)

commit 0f9f08e4a38a1c47838556901827fc1db5436f75
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 18:25:30 2020 +0100

    python3: encoding variations in saml base code (#28276)

commit 775bff6568f1b986cd92f2b8ee63c330f31c7cad
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 18:24:27 2020 +0100

    python3: variations encoding in idp.saml.saml2_endpoints (#28276)

commit 79505fa00c993d6c8e2aff48d3cf6b03fe8902e2
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 18:23:29 2020 +0100

    python3: remove various deprecated dict iteration functions (#28276)

commit 607219462030ced29f9626b38c387b02e22644a3
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 17:25:43 2020 +0100

    make ExponentialRetryTimeout.seconds_to_wait always return an int (#28276)

commit 79e4742c259d571ff1c42a26d7353f9521e1d631
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 17:21:31 2020 +0100

    python3: encoding variations in idp_oidc testing (#28276)

commit c43cc628216320a10722004d67d23a8a4bd36021
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 17:14:28 2020 +0100

    python3: encoding variations in idp_oidc (#28276)

commit d5982c5bfc5eb7a0185fe4a2a8347928b3c23ab5
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 16:55:24 2020 +0100

    python3: encoding variations in hashers (#28276)

commit 75154f2722ac6a6813d59a43d656d49a1df1ff12
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 15:29:21 2020 +0100

    python3: fix inner iterator classes of csv_import (#28276)

commit 586f322ebad79252ed20235fd20d7c5f6b449fe5
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 15:01:00 2020 +0100

    python3: explicit delimiter and quotechar in csv import (#28276)

commit c297edbc6ea4c15f8692737ceaf2371356330b8b
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 13:41:02 2020 +0100

    python3: encoding variations in csv importer (#28276)

commit 8106e22ebe1043d8d3375bffd566603943a634e0
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 13:32:31 2020 +0100

    python3: encodinging variations in authentic2.crypto aes testing (#28276)

commit b195219dfffe761b9c3459d9e3ae0d1ae67d089c
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 13:31:00 2020 +0100

    python3: encoding variations in authentic.crypto aes utilities (#28276)

commit 667c1164536d4ae8d4d5ba810542d41597000f3d
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Thu Feb 6 11:56:17 2020 +0100

    python3: auth_oidc mocked endpoint jwt encoding (#28276)

commit dc58feac772dc2a37eed67d1533d43fdf440f4bf
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Jan 27 10:40:21 2020 +0100

    python3: use url-parsing utilities from django (#28276)
#69

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
#70

Mis à jour par Serghei Mihai il y a environ 4 ans

  • Lié à Development #40501: adapter les templates suite au passage d'authentic en python3 ajouté

Formats disponibles : Atom PDF