soap: gestion des types complexes récursifs (#81643) #356
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/81643-soap-boucle-infinie-possible-dan"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reference to already converted complexType are converted to JSON schema
references.
d11f0136a6
to51638f1ed1
Il manque quand même un test, j'en propose un ci-joint. Il faudrait éventuellement vérifier en plus la présence de id=... dans la sortie.
@ -198,0 +193,4 @@
if isinstance(xsd_type, zeep.xsd.ComplexType):
try:
if type_name in seen:
return {'$ref': f'#{type_name}', 'description': str(type_name)}
Le # est en trop ici, il y est déjà dans l'affichage plus bas (a href="#{})
Et comme discuté ensemble, il faudrait vérifier qu'on peut avoir des id du genre « {http://trucmuche.com/}refVal » dans des éléments HTML
51638f1ed1
to71cffc35c6
@ -186,2 +189,4 @@
if typ == 'object':
s = html_type('object')
if _id:
s += f'<a id="{_id}"></a>'
À reprendre ma lecture, je note juste :
<a href="schema-object-{}">{}</a>
et
<a id ="schema-object-{_id}">
Ouaip mais je suis allé regardé la spec JSON schema qui de son coté dit que c'est pas $id qu'il faut utiliser mais $anchor qui a sa propre syntaxe (https://json-schema.org/draft/2020-12/json-schema-core.html#anchor), donc nouvelle proposition un peu pédante mais qui coche toutes les cases, les identifiants sont conformes, $ref/$anchor respectent leurs syntaxes respective ($ref est bien une URL) et c'est bien unique pour chaque rendu d'un schéma et d'un qname.
71cffc35c6
to50c3043adc
50c3043adc
to1b2fdd8387
1b2fdd8387
to2ef7f94ab7
J'ai intégré ton test, ça m'a permis de trouver un bug tordu dans ce cas là (type récursif contenant un seul élément).