Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
suds — Clone de suds 0.4 + suds-0.4-CVE-2013-2217.patch | Kitploit
Outils/GitHubGitHub/osirium/suds
Analyse des VulnérabilitésScripting et AutomatisationTests de Sécurité des APISécurité WebUtilitaires et FrameworksSécurité des API
GitHubosirium/suds

suds

Clone de suds 0.4 + suds-0.4-CVE-2013-2217.patch

Voir le dépôt
88il y a 8 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

APERÇU

Le client de services web « Suds » est un client SOAP léger pour Python sous licence LGPL.

Pour plus de détails, visitez :

  • Site du projet : https://fedorahosted.org/suds/
  • Documentation : https://fedorahosted.org/suds/wiki/Documentation
  • Epydocs : http://jortel.fedorapeople.org/suds/doc/

NOTES DE VERSION :

version 0.3.6 (04-31-09) :

  • Remplacement du chemin codé en dur /tmp/suds par tempfile.gettempdir() et création de suds/ à la demande.
  • Correction du type de retour pour Any.get_attribute().
  • Mise à jour du cache HTTP pour ignorer les URL file://.
  • Meilleure journalisation des messages lorsque seule la réponse est injectée.
  • Correction des types XInteger et XFloat pour traduire correctement les tableaux renvoyés.
  • Correction du schéma xs:import avec le même espace de noms.
  • Mise à jour de l'analyseur pour ne pas charger les références externes et ajout de Import.bind() pour l'emplacement XMLSchema.xsd.
  • Ajout d'un schema doctor - utilisé pour corriger les XSD à l'exécution. (Voir Option.doctor)
  • Correction des avertissements de dépréciation dans Python 2.6.
  • Ajout d'un comportement pour @default défini sur .
  • Modification de la valeur @xsi:type pour qu'elle soit toujours qualifiée pour doc/literal. (annule le changement de 0.3.5).
  • Ajout de l'option Option.xstq pour contrôler quand @xsi:type est qualifié.
  • Correctifs des tickets : #64, #129, #205, #206, #217, #221, #222, #224, #225, #228, #229, #230

version 0.3.5 (04-16-09) :

  • Ajout du cache HTTP. La valeur par défaut est (1) jour. Ne s'applique pas à l'invocation de méthodes. Voir : la documentation pour plus de détails.
  • Suppression de la vérification de version fedora dans le spec car nous ne construisons plus pour < fc9.
  • Mise à jour du makefile pour créer l'archive tar avec tar.sh.
  • Déplacement de la détermination bare/wrapped vers wsdl pour document/literal.
  • Refactorisation de Transport en un package (offre une meilleure journalisation des en-têtes HTTP).
  • Correctifs des tickets : #207, #209, #210, #212, #214, #215

version 0.3.4 (02-24-09) :

Télécharger l’outil
  • Liaison statique (automatique) Import.bind('http://schemas.xmlsoap.org/soap/encoding/'), les utilisateurs n'ont plus besoin de le faire.
  • Sécurité ws de base avec {{{UsernameToken}}} et mot de passe en clair uniquement.
  • Ajout de la prise en charge des en-têtes SOAP ''sparse'' en passant un dictionnaire
  • Ajout de la prise en charge d'en-têtes SOAP définis arbitrairement par l'utilisateur
  • Correction des opérations de service avec plusieurs entrées d'en-tête SOAP.
  • Améliorations de l'algorithme de chargement et de déréférencement des schémas.
  • Correction des multirefs SOAP imbriqués.
  • Meilleure prise en charge (réelle) de elementFormDefault="unqualified" pour un espace de noms plus précis.
  • Les types de partie WSDL ne sont plus définis par défaut sur le targetNamespace du WSDL.
  • Correctifs des tickets : #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201.

version 0.3.3 (11-31-08) :

  • N'installe plus le package (tests).
  • Implémente la proposition API-3 ( https://fedorahosted.org/suds/wiki/Api3Proposal )
    • Transport enfichable
    • Arguments de méthode par mots-clés
    • Authentification HTTP de base dans le transport par défaut
  • Ajout de la normalisation des préfixes d'espace de noms dans les messages SOAP.
  • Meilleur élagage des nœuds vides dans les messages SOAP.
  • Correctifs des tickets : #51 - #60

version 0.3.2 (11-7-08) :

  • Prise en charge SOAP {{{MultiRef}}} ''(ajoutée en première passe à r300)''
  • Ajout de la prise en charge de nouvelles balises de schéma :
    • xs:include/
    • xs:simpleContent/
    • xs:group/
    • xs:attributeGroup/
  • Ajout de la prise en charge de nouvelles conversions de types xs <--> python :
    • xs:int
    • xs:long
    • xs:float
    • xs:double
  • Révision du marshaller et de la liaison pour affiner davantage l'espace de noms des nœuds produits.
  • Correction de la récursion infinie dans dereference() du package ''xsd'' lors du chargement du schéma.
  • Ajout de la prise en charge de wsdl:import/ de fichiers de schéma dans la racine du wsdl.
  • Correction du double encodage de (&)
  • Ajout de l'API Client :
    • setheaders() - identique au mot-clé mais fonctionne pour toutes les invocations.
    • addprefix() - mappage des préfixes d'espace de noms.
    • setlocation() - Remplace l'emplacement dans le wsdl ; identique au mot-clé sauf pour tous les appels.
    • setproxy() - identique au mot-clé proxy mais pour toutes les invocations.
  • Ajout d'un préfixe d'espace de noms approprié pour les en-têtes SOAP.
  • Correctifs des tickets : #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51

version 0.3.1 (10-1-08) :

  • Suivi rapide de la version 0.3 qui rendait les définitions de services multi-ports plus difficiles que nécessaire. Après réflexion (et une bonne nuit de sommeil), il semblait évident que quelques changements faciliteraient grandement les choses : 1) filtrer les liaisons non-SOAP - elles causaient les vrais problèmes ; 2) puisque la plupart des serveurs acceptent n'importe quelle liaison SOAP (soap 1.1 et 1.2), les références ambiguës aux méthodes lors de l'invocation sans qualification du port fonctionneront très bien dans presque tous les cas. Alors, pourquoi ne pas simplement laisser suds sélectionner le port. Ne faisons pas faire à l'utilisateur ce qui n'est pas nécessaire. Dans la plupart des cas, les utilisateurs de 0.2.9 et antérieures n'auront pas à mettre à jour leur code en passant à 0.3.1 comme ils auraient pu devoir le faire avec 0.3.

version 0.3 (9-30-08) :

  • Étend la prise en charge des services multi-ports introduite dans 0.2.9. Cet ajout permet à plusieurs services de définir la même méthode et suds la gérera correctement. Voir la section 'SERVICES WITH MULTIPLE PORTS:'

  • Ajout de la prise en charge du style de liaison SOAP document/literal multi-document. Voir la section 'MULTI-DOCUMENT Docuemnt/Literal:'

  • Ajout de la prise en charge des balises (xs:group, xs:attributeGroup).

  • Ajout de Client.last_sent() et Client.last_received().

version 0.2.9 (9-09-08) :

  • Prise en charge de plusieurs ports au sein d'un service.
  • Références d'attributs <xs:attribute ref=""/>
  • Rendre l'encodeur de caractères spéciaux XML du package sax enfichable

version 0.2.8 (8-28-08) :

  • Mise à jour de la liaison document/literal pour toujours envoyer la racine du document référencée par . Après un énième examen de l'espace et des retours utilisateurs, il semble que l'élément référencé est TOUJOURS la racine du document.

  • Ajout de la prise en charge des schemaLocations de 'binding' vers namespace-uri.
    Ceci concerne les importations qui ne spécifient pas de schemaLocation et attendent néanmoins que le schéma soit téléchargé. Ex : Axis référence 'http://schemas.xmlsoap.org/soap/encoding/' sans schemaLocation. Ainsi, en faisant ceci :

    from suds.xsd.sxbasic import Import. Import.bind('http://schemas.xmlsoap.org/soap/encoding/')

    Le schéma est lié à une schemaLocation et il est téléchargé.

  • Le unmarshaller de base n'a pas besoin de /schema/. Il aurait dû être supprimé lors de la refactorisation mais a été oublié.

  • Mise à jour du client pour passer des kwargs à send() et ajout du kwarg /location/ pour remplacer l'emplacement du service dans le wsdl.

  • Mise à jour du marshaller pour NE PAS émettre de XML pour les attributs d'objet qui représentent des éléments et/ou attributs à la fois facultatifs et de valeur None. * Mise à jour de la fabrique (builder) pour inclure tous les attributs. * Ajout de la méthode optional() à SchemaObject.

  • Mise à jour du wsdl pour remplacer l'espace de noms dans l'opération s'il est spécifié.

  • Correction du problème de chargement du schéma - construire tous les schémas avant de traiter les importations.

  • Mise à jour du packaging en préparation de la soumission à fedora

version 0.2.7 (8-11-08) :

  • Ajout de la détection / prise en charge de document/literal - wrapped et unwrapped.
  • Mise à jour de document/literal {wrapped} pour que la racine du document (sous ) soit l'élément wrapper (avec l'espace de noms approprié).
  • Ajout de la prise en charge de , et ayant maxOccurs et ce qui fait que le unmarshaller définit les valeurs des éléments contenus dans une collection non bornée comme une liste.
  • Mise à jour de client.factory (builder) pour omettre les enfants de puisque l''utilisateur' doit vraiment décider quels enfants inclure.
  • Mise à jour de l'algorithme d'aplatissement pour empêcher le ré-aplatissement des types provenant de schémas importés.
  • Ajustements des algorithmes d'aplatissement/fusion.

version 0.2.6 (8-5-08) :

  • Correction des ENUM cassés lors de la refonte du package xsd.
  • Correction du type tel que défini dans le ticket #24.
  • Correction des noms de paramètres en double dans les signatures de méthodes comme signalé dans le ticket #30.
  • Suds sous licence LGPL.
  • Suppression de la configuration de journalisation dans suds.init() comme suggéré par le correctif du ticket #31. Les utilisateurs devront désormais configurer le logger.
  • Ajout de la prise en charge de Client.Factory.create() alt : syntaxe pour qualifier complètement le type à construire comme suit : {namespace}name. Ex : client.factory.create('{http://blabla.com/ns}Person')

version 0.2.5 (8-01-08) :

  • Refonte du package (XSD). Cette nouvelle approche (par fusion) est plus simple et devrait être plus fiable et maintenable. Elle devrait également offrir de meilleures performances puisque le schéma fusionné effectue des recherches via dictionnaire.

    Cette refonte devrait corriger les problèmes actuels de TypeNotFound et de xs:extension/, je l'espère :-).

  • Correction du bug d'impression de dateTime.

  • Ajout de la prévention de récursion infinie dans builder.Builder pour les types xsd qui se contiennent eux-mêmes.

version 0.2.4 (7-28-08) :

  • Ajout de la prise en charge des importations WSDL : wsdl:import/
  • Ajout de la prise en charge des conversions de types xsd<->python (merci : Nathan Van Gheem) pour :
    • xs:date
    • xs:time
    • xs:dateTime
  • Correctifs :
    • Bug : avec schemaLocation spécifié.
    • Bug : les espaces de noms spécifiés dans la description du service ne sont valides qu'après l'impression du client/proxy.

version 0.2.3 (7-23-08) :

  • Optimisations.

version 0.2.2 (7-8-08) :

  • Mise à jour des exceptions pour qu'elles soient plus /standard/ en Python en utilisant Exception.init() pour définir Exception.message comme suggéré par le Ticket #14 ; mise à jour des liaisons pour lever WebFault en passant (p)

  • Ajout de la capacité dans les liaisons à gérer plusieurs nœuds racines dans les valeurs renvoyées ; renvoyées comme un objet composite contrairement aux listes renvoyées

  • Correction de soapAction pour qu''il soit entre guillemets

  • Ajout de la prise en charge de xs:all/

  • Correction de la méthode unbounded() dans SchemaObject

  • Refactorisation du schéma dans le nouveau package (xsd). Les fichiers devenaient tout simplement trop volumineux. Ajout de execute() à Query et adaptation de suds pour exécuter la requête via execute() au lieu d'utiliser directement Schema.find().
    Déplacement également des méthodes start() peu fiables du schéma, ainsi que de l'incrémentation des requêtes.

  • Ajout du mot-clé inject utilisé pour injecter des messages SOAP sortants et/ou des messages de réponse entrants. Refactoriser SoapClient :

    1. renommer send() en invoke()
    2. séparer l'envoi du message de invoke() et le placer dans send() ; Ajout de TestClient qui permet aux kwargs d'invocation d'avoir inject={'msg=, and reply='} pour l'injection de message et de réponse
  • Ajout de la classe Namespace à sax pour une meilleure gestion du comportement des espaces de noms ; adaptation de suds pour importer et utiliser Namespace

  • Modification de l'espace de noms par défaut utilisé pour résoudre les types référencés (ayant les attributs @base="", @type="") afin que lorsqu'aucun préfixe n'est spécifié : l'espace de noms XML (nœud) soit utilisé à la place du targetNamespace.

  • Application du correctif tel que défini par [email protected] dans le ticket #13

  • Mise à jour de la définition de service pour afficher les méthodes de service comme ' my_method(xs:int arg0, Person arg1) ' au lieu de ' my_method(arg0{xs:int}, arg1{Person}) ' qui ressemble davantage aux signatures de méthodes traditionnelles

  • Ajout de la conversion de types xsd/python au unmarshaller (XBoolean uniquement) ; refactorisation du unmarshaller pour utiliser la classe Content qui rend les API plus propres, ajoute une symétrie entre marshaller(s) et unmarshaller(s), fournit un bon mécanisme pour les conversions de types basées sur les propriétés du schéma

  • Refactorisation du marshaller avec Appenders ; ajout du drapeau nobuiltin à resolve() pour prendre en charge le correctif de returned_type() et returnes_collection() dans les liaisons.

  • Ajout de la prise en charge des codes HTTP (202,204)

  • Ajout de XBoolean et des mappages ; ajout de findattr() à TreeResolver en préparation des conversions de types

  • Mise à jour du chargement du schéma et des propriétés du schéma (arrêt de la récursion profonde) ; modification des schémas importés afin qu''ils ne copient plus les schémas importés, mais que l''importation représente des requêtes de recherche ; ajout de la classe ServiceDefinition qui offre une meilleure inspection du service ; fournit également le mappage des espaces de noms et l''affichage des types ; simplification de l''API des propriétés de schéma ; ajout de la prise en charge de xs:any et xs:anyType ; correction de certains problèmes de recherche de schéma ; légère refactorisation des classes Binding ; ajout de beaucoup de journalisation de débogage (il faudra peut-être en commenter une partie pour la performance - certains arguments sont coûteux).

  • Ajout de sudsobject.Property ; une propriété est un Object spécial qui contient un attribut (value) et est renvoyé par le Builder (factory) pour les types de schéma sans enfants tels que : et ; mise à jour de Builder, Marshallers et Resolvers pour gérer les propriétés ; Resolver et Schema également mis à jour pour gérer les recherches d''attributs (ce qui manquait)

  • Ajout des fondations pour les en-têtes SOAP définis par l'utilisateur.

  • Correction de elementFormDefault selon le ticket #7

  • Suppression des kwargs inutilisés des liaisons ; mise en cache des liaisons dans wsdl ; adaptation de l'ancien ServiceProxy pour déléguer à la {nouvelle} API Client ; suppression du mot-clé nil_supported au profit de la gestion naturelle par l'attribut 'nillable' sur dans les schémas

  • Ajout de la prise en charge des attributs de drapeau de (nillable et form)

  • Ajout de la classe Proxy (API de 2e génération)

  • Ajout de fonctions d'accès/conversion pour que l'utilisateur n'ait pas besoin d'accéder aux attributs x. Ajout également de todict() et get_items() pour faciliter la conversion en dictionnaire et l'itération

  • Recherche des éléments de niveau supérieur pour @ref avant d'aller plus loin

  • Ajout de derived() à SchemaObject. Ceci est nécessaire pour garantir que tous les types dérivés (classes wsdl) sont qualifiés par xsi:type sans spécifier le xsi:type pour tous les types personnalisés comme c'était le cas dans les versions antérieures de suds. Mise à jour du marshaller littéral pour n'ajouter le xsi:type que lorsque le type doit être spécifié.

  • Modification de la promotion ns dans sax pour empêcher la promotion du ns vers le parent lorsque le parent possède le préfixe.

  • Modification de returned_type() des liaisons pour renvoyer l'élément (non résolu) Element

  • Afin de prendre en charge les nouvelles fonctionnalités et de corriger les bugs signalés, je suis en train de refactoriser et, je l'espère, de faire évoluer les composants de Suds qui assurent les traductions entrée/sortie :

    • Builder ( traduit : objets XSD => objets python )
    • Marshaller ( traduit : objets python => XML/SOAP )
    • Unmarshaller ( traduit : soap/xml => objets python )

    Cette évolution offrira une meilleure symétrie entre ces composants comme suit :

    Le Builder et l'Unmarshaller produiront des objets python (sous-classe de sudsobject.Object) avec :

    • metadata.type = type XSD (SchemaObject)
    • nom de la sous-classe ( class.name ) = nom du type de schéma.

    et

    Le(s) Marshaller(s), tout en consommant les objets python produits par le Builder ou l'Unmarshaller, exploiteront ces informations standard pour produire la sortie appropriée ( XML/SOAP ).

    Le code 0.2.1 se comporte en grande partie ainsi mais ... pas tout à fait. De plus, les implémentations présentent des redondances.

    En faisant cela, il était logique d'extraire la fonctionnalité commune de « recherche » de type de schéma utilisée par les classes Builder, Marshallers et Unmarshaller dans une hiérarchie de classes « Resolver ». Cela réduit la complexité et la redondance des classes Builder, Marshallers et Unmarshaller et permet une meilleure modularité. Une fois cette refactorisation terminée, la différence entre les Marshallers littéral/encodé est devenue très faible. Étant donné que la quantité de code dans les packages bindings.literal et bindings.encoded était faible (et diminuait) et dans un souci de compacité de la base de code de Suds, j'ai déplacé toutes les classes de marshalling vers le module bindings.marshaller. Tous les sous-packages bindings.XX seront supprimés.

    L'effet net :

    Tous les composants majeurs de Suds :

    • client (ancien : service proxy)
    • wsdl
      • schema (package xsd)
      • resolvers
    • output (marshalling)
    • builder
    • input (unmarshalling)

    Désormais mieux :

    • modularité
    • symétrie concernant les métadonnées Object.
    • réutilisation du code (< 1% de duplication de code --- je l'espère)
    • couplage plus lâche

    ... et mieux prendre en charge les fonctionnalités/correctifs suivants :

    • (correctif) Niveau approprié de qualification des éléments XML basé sur l'attribut . Cela garantira que lorsque elementFormDefault="qualified", Suds inclura l'espace de noms approprié sur les éléments racines pour les liaisons littérales et encodées. Pour que cela fonctionne correctement, le marshaller littéral (comme le marshaller encodé) devait connaître le type de schéma. Si j'avais ajouté la même recherche de type de schéma que le marshaller encodé au lieu de la refactorisation décrite ci-dessus, les deux classes auraient été presque un doublon complet l'une de l'autre :-(
  • Le builder et l'unmarshaller utilisaient schema.Schema.find() pour résoudre les types de schéma. Ils construisaient un chemin comme « person.name.first » pour résoudre les types dans le contexte approprié. Comme Schema.find() était sans état, il résolvait les éléments de chemin intermédiaires à chaque appel. Les nouvelles classes resolver sont avec état et résolvent les types enfants beaucoup plus efficacement.

  • Prévention des collisions de noms dans sudsobject.Object comme la méthode items(). J'ai déplacé toutes les méthodes (y compris les méthodes de classe) vers une classe Factory incluse dans la classe Object comme attribut de classe ( factory ). Maintenant que tous les attributs respectent la convention de nommage intégrée de Python, nous ne devrions plus avoir de collisions de noms. Cela suppose bien sûr qu'aucun nom d'entité wsdl/schema n'aura un nom utilisant la convention de nommage intégrée de Python, mais il faut bien s'arrêter quelque part :-)

version 0.2.1 (5-8-08) :

  • Mise à jour de la séquence de chargement de SchemaProperty dans schema.py afin que le schéma soit chargé en 3 étapes : 1) construire l'arbre brut. 2) résoudre les dépendances telles que @ref et @base.
    3) remonter les petits-enfants si nécessaire pour aplatir (dénormaliser) l'arbre.

    Le wsdl a également été modifié pour ne charger le schéma qu'une seule fois et le stocker. La collection de schémas a été modifiée pour charger les schémas en 2 étapes : 1) créer tous les objets de schéma bruts. 2) charger les schémas.

    Cela garantit que les schémas 'd locaux peuvent être trouvés lorsqu'ils sont référencés hors ordre.
    L'interface Element de sax.py a changé : attribute() remplacé par get() et set().
    De plus, getitem et setitem peuvent être utilisés pour accéder aux valeurs d'attributs.
    Epydocs mis à jour pour sax.py. Et ... le dernier est désormais correctement pris en charge.

  • Correction de la journalisation en : ne définissant PAS info dans suds.init.logger() ; configuration du handler uniquement sur le logger racine ; déplacement du logger (log) des classes vers les modules et utilisation de name comme nom de logger. REMARQUE : Cela signifie que pour activer la journalisation des messages SOAP : > > logger('suds.serviceproxy').setLevel(logging.DEBUG) > -- au lieu de -- > > logger('serviceproxy').setLevel(logging.DEBUG) >

  • Ajout de la prise en charge des nœuds d'attribut du schéma (xsd), ce qui affecte principalement les objets renvoyés par le Builder

  • Mise à jour de serviceproxy.py:set_proxies() pour journaliser en DEBUG au lieu de INFO.

  • Amélioration de schema.str pour afficher à la fois le xml brut et le modèle (principalement pour le débogage).

version-0.2 (04-28-08) :

  • Contient la première ébauche du style soap rpc/encoded.

  • Remplacement de la classe Property par suds.sudsobject.Object. La classe Property a été développée il y a longtemps avec un but légèrement différent. L'objet suds est une approche plus simple (plus directe) qui nécessite moins de code et fonctionne mieux dans le débogueur.

  • La liaison (et l'encodage) est sélectionnée par méthode, ce qui est plus cohérent avec le wsdl. Dans <= 0.1.7, la liaison était sélectionnée lors de la construction du ServiceProxy et utilisée pour toutes les méthodes du service. La liaison était stockée comme self.binding. Étant donné que le WSDL fournit un style de liaison et un encodage distincts pour chaque opération, Suds devait être modifié pour fonctionner de la même manière.* Les indicateurs (nil_supported) et (faults) passés au proxy de service via **kwargs. En plus de ces indicateurs, un indicateur (http_proxy) a été ajouté et est passé à l'objet urllib2.Request. Les arguments suivants sont pris en charge :

    • faults = Lève les fautes remontées par le serveur (défaut : True), sinon retourne un tuple de l'invocation de méthode du service sous la forme (code http, objet).
    • nil_supported = Les bindings définiront xsi:nil="true" sur les nœuds ayant une valeur None lorsque cet indicateur est True (défaut : True). Sinon, un nœud vide est envoyé.
    • proxy = Un proxy http à spécifier sur les requêtes (défaut : {}). Le proxy est défini comme {protocole:proxy,}
  • ServiceProxy refactorisé pour déléguer à un SoapClient. Étant donné que le proxy de service expose les services web via getattr(), tout attribut (y compris les méthodes) fourni par la classe ServiceProxy masque les opérations WS définies par le wsdl. Ainsi, en déplaçant tout vers SoapClient, les opérations wsdl ne sont plus masquées sans avoir à utiliser des noms bizarres pour les attributs et méthodes du proxy de service. À la place, le proxy de service possède des attributs client et factory (qui devraient vraiment présenter un faible risque de collision de noms). Pour l'instant, les méthodes get_instance() et get_enum() n'ont pas été déplacées afin de préserver la rétrocompatibilité. Cependant, le changement d'API préféré serait de remplacer :

    service = ServiceProxy('myurl') person = service.get_instance('person')

    ... par quelque chose comme ...

    service = ServiceProxy('myurl') person = service.factory.get_instance('person')

    Après quelques versions laissant le temps aux utilisateurs de basculer vers la nouvelle API, les méthodes get_instance() et get_enum() pourront être supprimées avec un avis en grosses lettres.

  • Corrige le problème où un wsdl ne définit pas de section et Suds ne peut pas résoudre les préfixes de l'espace de noms http://www.w3.org/2001/XMLSchema pour détecter les types intégrés tels que (xs:string).

version-0.1.7 (04-08-08):

  • Ajout de Binding.nil_supported pour contrôler la manière dont les valeurs de propriété (sortie) = None et les balises vides (entrée) sont traitées.

    • service.binding.nil_supported = True -- signifie que les valeurs de propriété = None sont sérialisées (en sortie) comme et que est désérialisé comme '' et comme None.
    • service.binding.nil_supported = False -- signifie que les valeurs de propriété = None sont sérialisées (en sortie) comme et que et sont désérialisés comme None. Le xsi:nil est réellement ignoré.
    • LA VALEUR PAR DÉFAUT EST (TRUE)
  • Le gestionnaire Sax a été mis à jour pour gérer de multiples rappels character() lorsque le parseur sax « fragmente » le texte. Lorsque node.text est None, node.text est défini avec les caractères. Sinon, les caractères sont ajoutés. Merci - [email protected]

  • Remplacement de l'attribut spécial (text) par text pour permettre des éléments naturels nommés « text »

  • Ajout du support unicode en :

    • Ajout de unicode à toutes les classes ayant str
    • Remplacement de tous les appels str() par unicode().
    • str() retourne le résultat de unicode encodé en UTF-8.
  • Sortie XML encodée en UTF-8, ce qui correspond à l'en-tête HTTP et prend en charge unicode.

  • SchemaCollection modifié pour fournir les méthodes builtin() et custom(). Pour ce faire, findPrefixes() a été ajouté à l'élément Element dans sax.py. C'est de toute façon une meilleure approche puisque le wsdl et les schémas peuvent avoir de nombreux préfixes vers http://www.w3.org/2001/XMLSchema. Testé avec les bindings doc/lit et rpc/lit.

  • Paquets de bindings refactorisés de document & rpc vers literal & encoded

  • Contient l'achèvement du support complet des espaces de noms comme suit :

    • Les préfixes d'espaces de noms ne sont plus supprimés des valeurs d'attributs qui référencent des types définis dans le wsdl.
    • Les schémas importés à l'aide de doivent gérer correctement l'espace de noms et le mapping de préfixes, ainsi que leur re-mapping si nécessaire.
    • Tous les types sont résolus à l'aide de recherches entièrement qualifiées (avec espaces de noms).
    • Schema.get_type() prend en charge les chemins avec et sans préfixes ns. Lorsqu'aucun préfixe n'est spécifié, le type est mis en correspondance en utilisant l'espace de noms cible du schéma.
  • Property conserve les noms d'attributs (clés) dans l'ordre d'ajout. Cela signifie également que get_item() et get_names() retournent des valeurs ordonnées. ( Bien que je soupçonne que l'ordonnancement doive en réalité être effectué dans le marshaller en utilisant l'ordre spécifié dans le wsdl/schema )

Refactorisation majeure de schema.py. L'objectif principal est la préparation de recherches de types entièrement qualifiés par espace de noms. Une fois terminé, les préfixes sur les valeurs d'attributs ne seront plus supprimés (purgés). Résumé des modifications : 1) Les classes de surcouche SchemaProperty créées à init au lieu d'à la demande. 2) Les imports de schémas effectués par la nouvelle classe Import au lieu de Schema. 3) Schema charge les propriétés de premier niveau à l'aide d'une fabrique. 4) Toutes les listes /children/ de SchemaProperty sont triées par cmp dans les classes dérivées de SchemaProperty. Cela garantit que les types portant le même nom sont résolus dans l'ordre suivant (Import, Complex, Simple, Element). 5) Toutes les listes /children/ de SchemaProperty sont construites à init au lieu d'à la demande. 6) La classe SchemaGroup a été créée et la classe WSDL mise à jour. Cela fonctionne mieux que de faire agréger par le wsdl les nœuds qui rompent la liaison avec l'élément parent du wsdl possédant le mapping des préfixes d'espaces de noms. 7) L'élément est géré correctement dans la mesure où le re-mapping de l'espace de noms et le re-mapping du préfixe du targetNamespace du schéma importé et du mapping de préfixe associé - sont effectués. Ex. : SCHMEA-A a un préfixe (tns) mappé comme xmlns:tns=http://nsA et a targetNamespace=http://nsA. SCHEMA-B importe le schéma A et a un préfixe (abc) mappé comme xmlns:abc=http://nsABC. SCHEMA-B importe A comme <import namespace=http://nsB xxx schemaLocation=http://nsA/schema-a.xsd>. Ainsi, puisque SCHEMA-B fera référence aux éléments de SCHEMA-A avec le préfixe (abc) tel que abc:something, le targetNamespace de SCHEMA-A doit être mis à jour comme http://nsABC et tous les éléments avec type=tns:something doivent être mis à jour pour être type=abc:something afin de pouvoir être résolus.

  • Corrige le problème de désérialisation où les nœuds sont ajoutés à la propriété comme (text, value). Cela a été introduit lorsque les bindings ont été refactorisés.

  • Corrigé divers problèmes d'impression de Property.

Notes :

root@kitploit:~
Merci à Jesper Noehr de Coniuro pour la majorité du binding rpc/literal et
pour de nombreuses collaborations sur #suds.

version-0.1.6 (03-06-08):

  • Fournit une gestion correcte des wsdls contenant des sections de schéma comportant des imports de schémas xsd : <import namespace="" schemaLocation=""?>. Les schémas référencés sont importés lorsqu'un schemaLocation est spécifié.
  • Lève des exceptions pour les codes de statut http non déjà gérés.

version-0.1.5( 02-21-08 ):

  • Fournit une meilleure journalisation dans les modules, obtenant un logger par noms hiérarchiques.
  • Refactorisé selon les besoins pour prendre réellement en charge d'autres bindings.
  • Ajoute le module sax qui remplace ElementTree. C'est plus rapide, plus simple et gère correctement les espaces de noms (préfixes).

version-0.1.4 (12-21-07):

  • Permet que les paramètres de méthodes de service soient None.
  • Ajoute une gestion correcte des paramètres de méthodes qui sont des listes d'objets property.

version-0.1.3 (12-19-07):

  • Corrige le problème où les nœuds marqués comme collection (maxOccurs > 1) ne créaient pas d'objets property avec value=[] lorsqu'ils étaient mappés avec moins de 2 valeurs par le DocumentReader. Causé par l'absence de la conversion de bindings.Document.ReplyHint.stripns() (qui utilise le DocumentReader.stripns()) en DocumentReader.stripn() retournant désormais un tuple (ns,tag) depuis la version 0.1.2.

version-0.1.2 (12-18-07):

Cette version contient une mise à jour des ajouts property : * support des métadonnées * surcharges : getitem, setitem, contans * modifie property(reader|writer) pour utiliser property.metadata afin de gérer les espaces de noms pour les documents XML. * corrige les requires de setup.py.

version-0.1.1 (12-17-07):

Cette version marque la première publication sur Fedora Hosted.