Project

General

Profile

Development #35370

fonctionner avec un zeep récent

Added by Frédéric Péters 4 months ago. Updated about 2 months ago.

Status:
Solution proposée
Priority:
Normal
Assignee:
Target version:
-
Start date:
12 Aug 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Aujourd'hui,

            'zeep < 3.0',

(notre dépôt a 2.5.0, buster a 3.2.0)

0001-utils-soap-upgrade-zeep-soap-library-version-35370.patch View (8.29 KB) Nicolas Roche, 15 Oct 2019 07:39 PM

0001-utils-soap-upgrade-zeep-soap-library-version-35370.patch View (8.9 KB) Nicolas Roche, 25 Oct 2019 03:47 PM

0001-utils-soap-upgrade-zeep-soap-library-version-35370.patch View (10.6 KB) Nicolas Roche, 25 Oct 2019 07:09 PM

History

#1 Updated by Nicolas Roche about 2 months ago

  • Assignee set to Nicolas Roche

a priori ne plante que sur l'iparapheur

#2 Updated by Frédéric Péters about 2 months ago

Attention il faut continuer à fonctionner avec la version qui est sur nos serveurs. (en plus de fonctionner avec la dernière version dispo).

#3 Updated by Nicolas Roche about 2 months ago

Oui, j'avais zappé.
Désolé, encore un patch bien moche.

Le principal problème vient du déport de certains paramètres du
constructeur de l'objet client SOAP dans un objet de configuration.

Ici, il ne s'agit en fait que du paramètre 'strict' qui permet
d'être plus permissif avec le SOAP retourné.
https://python-zeep.readthedocs.io/en/master/client.html#strict-mode
J'ai du modifier le soap.wsdl des tests pour ajouter un test qui met
en évidence son effet.

Pour l'instant il n'y a que l'iparapheur qui utilise ce paramètre.
Peut-être que se serait plus propre d'utiliser un block with :

with client.settings(strict=True):
    response = client.service.myoperation()

et alors de laisser à chaque connecteur le soin de gérer ce paramètre.

#4 Updated by Thomas Noël about 2 months ago

Faudrait avoir l'infra de test sur les deux versions.

Dans tox.ini, ie y créer deux environnements, zeep2 et zeep3.

Ensuite, pour ne pas doubler les temps de test dans Jenkins, tant qu'on n'a pas encore commencé la bascule vers zeep3, je pense qu'on pourrait rester en « envlist = django111-pg-zeep2 ».

#5 Updated by Nicolas Roche about 2 months ago

Pour que ça marche j'ai du retirer la contrainte sur la version '< 3.0' dans le setup.py.

$ tox tests/test_iparapheur.py
... zeep==2.5.0 ...
$ tox -e django111-pg-zeep3 tests/test_iparapheur.py
... zeep==3.4.0 ...

#6 Updated by Thomas Noël about 2 months ago

Ok pour les tests.

Pour le __init__, pas facile de trouver une jolie façon de faire. Je pense cependant que le zeep_version<'3' n'est pas génial, parce ça ne marchera plus pour zeep 10 (mais oui, je suis sans doute un peu tatasse). Tu pourrais voir si un "from zeep import Settings" lève une ImportError et dans ce cas agir en mode zeep2... peut-être que ça donnera un code un peu plus lisible...

#7 Updated by Nicolas Roche about 2 months ago

Remarque prise en compte pour la gestion des versions.

Etant donné que seul iParapheur fait que l'on ne peut plus utiliser l'API de zeep (qui a évolué) tel quelle, je propose ici l'autre façon de faire : où chaque connecteur doit gérer le paramètre 'strict' lors des appels (et non plus à l'initialisation).
Dites-moi laquelle vous préférez.

Also available in: Atom PDF