跳转到主要内容

从WSDL文件创建zope.interface风格的接口

项目描述

wsdl2interface

本包提供了一个简单的脚本,可以从WSDL文件生成zope.interface风格接口的代码。它依赖于suds进行转换。

安装

要安装此包,请使用easy_install,buildout或其他机制安装Python eggs,例如。

$ easy_install -U wsdl2interface

您也可以将其作为另一个包的依赖项安装,例如,通过在该包的setup.py install_requires行中列出它。

使用方法

默认情况下,wsdl2interface会安装同名的控制台脚本,您可以使用它将生成的代码打印到屏幕上。将WSDL文件的URL(可以是本地文件的file:// URL)作为唯一参数传递

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

输出将类似于以下内容

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

from zope.interface import Interface, Attribute
from zope import schema


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

    Component = Attribute('Type: IComponent[]. Required: False')


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

    PricedComponent = Attribute('Type: IPricedComponent[]. Required: False')


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

    Outcome = Attribute('Type: IOutcomeTypes. Required: True')
    Message = schema.TextLine(description=u"WSDL type: string", required=False)
    Identity = schema.TextLine(description=u"WSDL type: string", required=False)
    Delay = schema.Float(description=u"WSDL type: double", required=True)


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

    Security = Attribute('Type: ISecurity. Required: False')
    Weight = schema.Float(description=u"WSDL type: double", required=True)
    AdjustmentFactor = schema.Float(description=u"WSDL type: double", required=True)
    IndexComponentWeightType = Attribute('Type: IIndexComponentWeightTypes. Required: True')


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

    Outcome = Attribute('Type: IOutcomeTypes. Required: True')
    Message = schema.TextLine(description=u"WSDL type: string", required=False)
    Identity = schema.TextLine(description=u"WSDL type: string", required=False)
    Delay = schema.Float(description=u"WSDL type: double", required=True)
    Security = Attribute('Type: ISecurity. Required: False')
    Count = schema.Int(description=u"WSDL type: int", required=True)
    Components = Attribute('Type: IArrayOfComponent. Required: False')


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

    Username = schema.TextLine(description=u"WSDL type: string", required=False)
    Password = schema.TextLine(description=u"WSDL type: string", required=False)
    Tracer = schema.TextLine(description=u"WSDL type: string", required=False)


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. Required: True')
    Message = schema.TextLine(description=u"WSDL type: string", required=False)
    Identity = schema.TextLine(description=u"WSDL type: string", required=False)
    Delay = schema.Float(description=u"WSDL type: double", required=True)
    Symbol = schema.TextLine(description=u"WSDL type: string", required=False)
    Name = schema.TextLine(description=u"WSDL type: string", required=False)
    Exchange = schema.TextLine(description=u"WSDL type: string", required=False)
    CIK = schema.TextLine(description=u"WSDL type: string", required=False)
    Cusip = schema.TextLine(description=u"WSDL type: string", required=False)
    ISIN = schema.TextLine(description=u"WSDL type: string", required=False)
    SEDOL = schema.TextLine(description=u"WSDL type: string", required=False)
    Valoren = schema.TextLine(description=u"WSDL type: string", required=False)
    Sector = schema.TextLine(description=u"WSDL type: string", required=False)
    Class = schema.TextLine(description=u"WSDL type: string", required=False)
    IndustryGroup = schema.TextLine(description=u"WSDL type: string", required=False)
    Industry = schema.TextLine(description=u"WSDL type: string", required=False)
    Country = schema.TextLine(description=u"WSDL type: string", required=False)
    Currency = schema.TextLine(description=u"WSDL type: string", required=False)
    Style = schema.TextLine(description=u"WSDL type: string", required=False)
    Price = schema.Float(description=u"WSDL type: double", required=True)
    Weight = schema.Float(description=u"WSDL type: double", required=True)
    Value = schema.Float(description=u"WSDL type: double", required=True)
    MarketCapitalization = schema.Float(description=u"WSDL type: double", required=True)
    AdjustmentFactor = schema.Float(description=u"WSDL type: double", required=True)
    IndexComponentWeightType = Attribute('Type: IIndexComponentWeightTypes. Required: True')


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

    Outcome = Attribute('Type: IOutcomeTypes. Required: True')
    Message = schema.TextLine(description=u"WSDL type: string", required=False)
    Identity = schema.TextLine(description=u"WSDL type: string", required=False)
    Delay = schema.Float(description=u"WSDL type: double", required=True)
    Security = Attribute('Type: ISecurity. Required: False')
    Count = schema.Int(description=u"WSDL type: int", required=True)
    AsOfDate = schema.TextLine(description=u"WSDL type: string", required=False)
    Price = schema.Float(description=u"WSDL type: double", required=True)
    Divisor = schema.Float(description=u"WSDL type: double", required=True)
    DivisorDate = schema.TextLine(description=u"WSDL type: string", required=False)
    PricedComponents = Attribute('Type: IArrayOfPricedComponent. Required: False')


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

    Outcome = Attribute('Type: IOutcomeTypes. Required: True')
    Message = schema.TextLine(description=u"WSDL type: string", required=False)
    Identity = schema.TextLine(description=u"WSDL type: string", required=False)
    Delay = schema.Float(description=u"WSDL type: double", required=True)
    CIK = schema.TextLine(description=u"WSDL type: string", required=False)
    Cusip = schema.TextLine(description=u"WSDL type: string", required=False)
    Symbol = schema.TextLine(description=u"WSDL type: string", required=False)
    ISIN = schema.TextLine(description=u"WSDL type: string", required=False)
    Valoren = schema.TextLine(description=u"WSDL type: string", required=False)
    Name = schema.TextLine(description=u"WSDL type: string", required=False)
    Market = schema.TextLine(description=u"WSDL type: string", required=False)
    CategoryOrIndustry = schema.TextLine(description=u"WSDL type: string", required=False)


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

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

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

        Returns: GetIndexComponentsResponse
        """


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

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

        Returns: GetPricedIndexComponentsResponse
        """


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

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

        Returns: GetPricedIndexComponentsSubsetResponse
        """



WSDL_TYPES = {
    'ArrayOfComponent': IArrayOfComponent,
    'ArrayOfPricedComponent': IArrayOfPricedComponent,
    'Common': ICommon,
    'Component': IComponent,
    'Components': IComponents,
    'Header': IHeader,
    'IdentifierTypes': IIdentifierTypes,
    'IndexComponentWeightTypes': IIndexComponentWeightTypes,
    'OutcomeTypes': IOutcomeTypes,
    'PricedComponent': IPricedComponent,
    'PricedComponents': IPricedComponents,
    'Security': ISecurity
}

如果您想从Python中使用生成器,您可以这样做

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

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

注意事项

本包不保证生成100%正确的代码。在大多数情况下,您可能需要之后进行一些手动清理。它也没有经过充分的测试。欢迎提交补丁!

请注意

  • WSDL允许Python中无效的标识符。因此,您可能会得到无效Python的属性或方法。脚本将转换空格为下划线,但不会处理名称以数字开头等情况。

  • 具有多个服务定义和/或端口的WSDL文件将被展平。

  • 在WSDL文件中指定的复杂类型和枚举类型将首先作为单个接口输出。

  • 复杂数据类型或枚举生成的接口的docstring中,同时输出命名空间和原始类型名。但是,可能输出相同的名称。

  • 以下命名空间中的类型不输出为复杂数据类型接口,在属性或方法参数中使用时作为基本数据类型引用。

变更日志

1.0b2 - 2010-05-31

  • 对复杂数据类型继承(扩展)的基本支持

1.0b1 - 2010-05-07

  • 指示复杂数据类型中的给定字段是否为必需的(必须设置)。

1.0a5 - 2010-03-22

  • 不要将输入/输出消息类型包含在复杂数据类型的列表中。

  • 如果可能,展开返回类型以显示Suds将返回的实际对象。

1.0a4 - 2010-03-22

  • 根据SOAP输出消息显示每个方法的返回类型。请注意,这并不完美 - 它假设响应类型位于主目标命名空间且无歧义。

1.0a3 - 2010-03-18

  • 在复杂数据类型中,使用zope.schema字段表示常见属性类型。

  • 修改标识符以确保它们是有效的Python标识符。

1.0a2 - 2010-03-17

  • 修复损坏的发布版

1.0a1 - 2010-02-12

  • 初始发布版

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

wsdl2interface-1.0b2.tar.gz (9.2 kB 查看哈希值)

上传时间 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面