Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

wsdl2interface

This package provides a simple script to generate the code for zope.interface style interfaces based on a WSDL file. It relies on suds to perform the conversion.

Installation

To install the package, use easy_install, buildout or some other mechanism to install Python eggs, e.g.:

$ easy_install -U wsdl2interface

You can also install it as a dependency of another package, e.g. by listing it in that package’s setup.py install_requires line.

Usage

By default, wsdl2interface` installs a console script of the same name, which you can use to print the generated code to the screen. Pass the URL of a WSDL file (which could be a file:// URL for a local file) as the only argument:

$ wsdl2interface http://www.xignite.com/xIndexComponents.asmx?WSDL

The output will look something like this:

"""SOAP web services generated from:
http://www.xignite.com/xIndexComponents.asmx?WSDL.
"""

from zope.interface import Interface, Attribute

class IArrayOfComponent(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}ArrayOfComponent``
    """

    Component = Attribute('Type: IComponent[]')

class IArrayOfPricedComponent(Interface):
    """SOAP complex type
    ``{http://www.xignite.com/services/}ArrayOfPricedComponent``
    """

    PricedComponent = Attribute('Type: IPricedComponent[]')

class ICommon(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}Common``
    """

    Outcome = Attribute('Type: IOutcomeTypes')
    Message = Attribute('Type: string')
    Identity = Attribute('Type: string')
    Delay = Attribute('Type: double')

class IComponent(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}Component``
    """

    Security = Attribute('Type: ISecurity')
    Weight = Attribute('Type: double')
    AdjustmentFactor = Attribute('Type: double')
    IndexComponentWeightType = Attribute('Type: IIndexComponentWeightTypes')

class IComponents(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}Components``
    """

    Outcome = Attribute('Type: IOutcomeTypes')
    Message = Attribute('Type: string')
    Identity = Attribute('Type: string')
    Delay = Attribute('Type: double')
    Security = Attribute('Type: ISecurity')
    Count = Attribute('Type: int')
    Components = Attribute('Type: IArrayOfComponent')

class IHeader(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}Header``
    """

    Username = Attribute('Type: string')
    Password = Attribute('Type: string')
    Tracer = Attribute('Type: string')

class IIdentifierTypes(Interface):
    """SOAP enumeration ``{http://www.xignite.com/services/}IdentifierTypes``
    """

    Symbol = Attribute('Enumeration value')
    CIK = Attribute('Enumeration value')
    CUSIP = Attribute('Enumeration value')
    ISIN = Attribute('Enumeration value')
    Valoren = Attribute('Enumeration value')
    SEDOL = Attribute('Enumeration value')

class IIndexComponentWeightTypes(Interface):
    """SOAP enumeration
    ``{http://www.xignite.com/services/}IndexComponentWeightTypes``
    """

    Unknown = Attribute('Enumeration value')
    MarketCapitalizationWeighted = Attribute('Enumeration value')
    EqualWeighted = Attribute('Enumeration value')
    PriceWeighted = Attribute('Enumeration value')
    MarketCapitalizationWeightedWithLimits = Attribute('Enumeration value')
    OtherWeighting = Attribute('Enumeration value')

class IOutcomeTypes(Interface):
    """SOAP enumeration ``{http://www.xignite.com/services/}OutcomeTypes``
    """

    Success = Attribute('Enumeration value')
    SystemError = Attribute('Enumeration value')
    RequestError = Attribute('Enumeration value')
    RegistrationError = Attribute('Enumeration value')

class IPricedComponent(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}PricedComponent``
    """

    Outcome = Attribute('Type: IOutcomeTypes')
    Message = Attribute('Type: string')
    Identity = Attribute('Type: string')
    Delay = Attribute('Type: double')
    Symbol = Attribute('Type: string')
    Name = Attribute('Type: string')
    Exchange = Attribute('Type: string')
    CIK = Attribute('Type: string')
    Cusip = Attribute('Type: string')
    ISIN = Attribute('Type: string')
    SEDOL = Attribute('Type: string')
    Valoren = Attribute('Type: string')
    Sector = Attribute('Type: string')
    Class = Attribute('Type: string')
    IndustryGroup = Attribute('Type: string')
    Industry = Attribute('Type: string')
    Country = Attribute('Type: string')
    Currency = Attribute('Type: string')
    Style = Attribute('Type: string')
    Price = Attribute('Type: double')
    Weight = Attribute('Type: double')
    Value = Attribute('Type: double')
    MarketCapitalization = Attribute('Type: double')
    AdjustmentFactor = Attribute('Type: double')
    IndexComponentWeightType = Attribute('Type: IIndexComponentWeightTypes')

class IPricedComponents(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}PricedComponents``
    """

    Outcome = Attribute('Type: IOutcomeTypes')
    Message = Attribute('Type: string')
    Identity = Attribute('Type: string')
    Delay = Attribute('Type: double')
    Security = Attribute('Type: ISecurity')
    Count = Attribute('Type: int')
    AsOfDate = Attribute('Type: string')
    Price = Attribute('Type: double')
    Divisor = Attribute('Type: double')
    DivisorDate = Attribute('Type: string')
    PricedComponents = Attribute('Type: IArrayOfPricedComponent')

class ISecurity(Interface):
    """SOAP complex type ``{http://www.xignite.com/services/}Security``
    """

    Outcome = Attribute('Type: IOutcomeTypes')
    Message = Attribute('Type: string')
    Identity = Attribute('Type: string')
    Delay = Attribute('Type: double')
    CIK = Attribute('Type: string')
    Cusip = Attribute('Type: string')
    Symbol = Attribute('Type: string')
    ISIN = Attribute('Type: string')
    Valoren = Attribute('Type: string')
    Name = Attribute('Type: string')
    Market = Attribute('Type: string')
    CategoryOrIndustry = Attribute('Type: string')

class IXigniteIndexComponents(Interface):
    """SOAP service ``XigniteIndexComponents`` with target namespace
    http://www.xignite.com/services/.
    """

    def GetIndexComponents(Identifier, IdentifierType):
        """Parameters:

        ``Identifier`` -- string (optional)
        ``IdentifierType`` -- IIdentifierTypes
        """

    def GetPricedIndexComponents(Identifier, IdentifierType, AsOfDate):
        """Parameters:

        ``Identifier`` -- string (optional)
        ``IdentifierType`` -- IIdentifierTypes
        ``AsOfDate`` -- string (optional)
        """

    def GetPricedIndexComponentsSubset(Identifier, IdentifierType, AsOfDate, StartIndex, EndIndex):
        """Parameters:

        ``Identifier`` -- string (optional)
        ``IdentifierType`` -- IIdentifierTypes
        ``AsOfDate`` -- string (optional)
        ``StartIndex`` -- int
        ``EndIndex`` -- int
        """

If you want to use the generator from Python, you can do:

>>> from suds.client import Client
>>> client = Client(wsdlURL)

>>> from wsdl2interface import generate
>>> generated = generate(client, wsdlURL)

Caveats

This package is not guaranteed to produce 100% correct code. In most cases, you will need to perform some manual cleanup afterwards. It is also not terribly well tested. Patches welcome!

Please note:

  • WSDL allows identifiers that are not valid in Python. Thus, you could end up with attributes or method which are not valid Python. The script will convert spaces to underscores, but will not handle things like names starting with a digit.

  • WSDL files with multiple service definitions and/or ports will be flattened.

  • Complex types and enumerations specifies in the WSDL file will be output first, as individual interfaces.

  • The namespace and original type name are both output in the docstring of the generated interface for a complex type or enumeration. However, it is possible that the same name will be output.

  • Types in the following namespaces are not output as complex type interfaces, and are referenced as primitives when used in attributes or method arguments:

Changelog

1.0a4 - 2010-03-22

  • Display a return type for each method based on the SOAP output message. Note that this isn’t perfect - it assumes the response type is in the main target namespace and unambiguous.

1.0a3 - 2010-03-18

  • Use zope.schema fields for common attribute types in complex types.

  • Mangle identifiers to ensure they are valid Python

1.0a2 - 2010-03-17

  • Fix broken release

1.0a1 - 2010-02-12

  • Initial release

Release files for wsdl2interface 1.0a3-20100322

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wsdl2interface 1.0a3-20100322
File Size Uploaded
wsdl2interface-1.0a3-20100322.tar.gz 6.6 kB Details

Release files / wsdl2interface-1.0a3-20100322.tar.gz

Download URL wsdl2interface-1.0a3-20100322.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f0d2cbc7f89e0ca68d62570b82983c45efe7d9d61ac6ae114fbd153079b0f569
BLAKE2b-256 checksum
How to use checksums
5381bcc1f57849d20c4422cf5650057aae6b463e678041a87f122c7df58e42aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page