轻量级soap客户端,带有salesforce soap api的mods

sf-suds的Python项目详细描述


salesforce.com的修补程序
==


时区处理的suds修补程序
=--
标准suds库无法从salesforce.com正确分析时区信息。这个版本包括一些更好的日期处理。您可以尝试导入suds.sax.date.localtimezone来测试此版本是否存在,如果找不到则抛出一个错误。



overview


"suds"web服务客户端是基于python的轻量级soap客户端
根据lgpl获得许可。

有关详细信息,请访问:

*项目站点:https://fedorahosorg/suds/
*文档:http://fedorahohosted.org/suds/wiki/documentation
*epydocs:http://jotel.fedorapeople.org/suds/doc/





>发布说明:
===========================================================================0.4.4.5版0.4.5版
======================br/>
0.4.4版
*修复XML编码

0.4.3版
*修正允许克隆suds客户端共享wsdl信息而不共享其他状态

0.3.6版(04-31-09):
*将硬编码/tmp/suds更改为tempfile.gettempdir()并按需创建suds。
*修正任何.get_attribute()的返回类型。
*更新http缓存以忽略file://url。
*在只注入应答时更好地记录消息。
*修复xinteger和xfloat类型以正确转换返回的数组。
*修复xs:导入具有相同命名空间的架构。
*更新parser以不加载外部引用,并为xmlschema.xsd位置添加import.bind()。
*添加架构医生-用于在运行时修补xsd时间。(请参见option.doc)
*修复python 2.6中的弃用警告。
*添加在<;element/>;上定义的@default的行为
*将@xsi:type值更改为始终符合doc/literal的条件。(还原0.3.5更改)。
*添加option.xstq选项以控制何时@xsi:type类型符合条件。
*添加option.xstq选项以控制何时@xsi:type类型符合条件。
*固定票:64,129,205,206,217,221,222,224,225,,,/>*添加http缓存。默认为(1)天。不适用于方法调用。有关详细信息,请参阅:文档。
*删除了检查Fedora版本签入规范,因为不再构建<;fc9。
*更新了Makefile以使用tar.sh滚动tarball。
*将裸/包装的确定移到wsdl以获取文档/文本。
*将传输重构为包(提供更好的http头记录)。
*修复了ti点评:207、209、210、212、214、215


0.3.4(02-24-09)0.3.4(02-24-24-09)0.3.4(02-24-09)0.3.4(02-24-24-09)0.3.4版:
*静态(自动)导入.绑定(http://schemas.xmlssoap.org/soap/encoding/'),
>用户不再需要这样做。
*基本的ws-security,{{{{{{{{{usernametnametoken}}}}}}}}}和明文文本密码仅限密码。
*增加对"稀疏(稀疏"的支持,
*增加对"稀疏(""通过传递di的soap头ctionary
*添加对任意用户定义的soap头的支持
*修复具有多个soap头项的服务操作。
*架构加载和取消引用算法增强。
*嵌套soap multirefs fixed。
*更好(正确)支持elementformdefault="unqualified"提供更多
准确的名称
*wsdl部分类型不再默认为wsdl目标命名空间。
*固定票据:4,6,21,32,62,66,71,72,72,114,://fedorahosted.org/suds/wiki/api3proposal)
-可插拔传输
-关键字方法参数
-默认传输中的basc http身份验证
*在soap消息中添加命名空间前缀规范化。
*更好地修剪空节点的soap消息。
*固定票证:51-60




0.3.2版(11-7-08):
*soap{{{{{{multiref}}}支持""(第一次通过添加了r300)'
*add s支持新的架构标记:
*<;xs:include/>;
*<;xs:simplecontent/>;
*<;xs:group/>;
*<;xs:attributegroup/>;
*添加了对新xs的支持<;-->;python类型转换:
*xs:int
*xs:long
*xs:float
*xs:double
*修改封送拆收器并绑定到fur提高生成的节点的命名空间。
*在架构加载期间,在"xsd"包dereference()中修复了无限递归。
*将对架构文件的<;wsdl:import/>;的支持添加到wsdl根<;definitions/>;
*修复(&;)的双重编码
*添加客户端Api:
*setHeaders()-与关键字相同,但适用于所有调用。
*addPrefix()-映射命名空间前缀。
*setLocation()-覆盖wsdl中的位置;与关键字相同,但不包括所有调用。
*setProxy()-与代理关键字相同,但适用于所有调用
*为soap头添加适当的命名空间前缀。
*固定票证:3535; 5,12,34,37,40,44,45,46,46,; 46,使工作多端口服务定义比nece困难萨里。经过考虑(和一个良好的夜间睡眠),
很明显,一些更改会使这变得更容易:1)过滤掉
非soap绑定-它们造成了真正的麻烦;2)因为大多数服务器
对soap绑定(soap 1.1和1.2)、ambig都很满意。在没有端口限定的情况下调用then时,对方法
的ios引用在几乎所有
情况下都可以正常工作。所以,为什么不让suds选择端口呢?我们不要让用户在没有必要的时候做这件事。在大多数情况下,在0.2.9及更早版本上的使用在移动到0.3.1时不必像在0.3中那样更新代码。




0.3版(9-30-08):

*扩展了对0.2.9中引入的多端口服务的支持。这个附加的
提供了多个服务来定义*相同的*方法,sud将
正确地处理它。请参阅"具有多个端口的服务:"

*添加对多文档文档/文本soap绑定样式的支持。
请参阅"多文档文档文档/文本:"

*添加对(xs:group,xs:attributegroup)标记的支持。

*添加client.last\sent()和client.last_received()。

0.2.9版(9-09-08):

*支持一个服务中的多个端口。
*属性引用<;xs:attribute ref="/>;
*在SAX包中生成XML特殊字符编码器-可插入



0.2.8版(8-28-08):

*更新document/literal binding以始终发送<;part/>;
在再次检查空间和用户输入之后引用的文档根,似乎引用的
元素始终是文档根。

*将对"binding"架构的支持添加到命名空间uri。
这适用于未指定schemaLocation但仍希望下载schema
的导入。例如:axis引用"http://schemas.xmlsoap.org/soap/encoding/"
而没有schemalocation。因此,通过这样做:
>;
>;从suds.xsd.sxbasic导入导入。
>;import.bind('http://schemas.xmlsoap.org/soap/encoding/')
>;
架构绑定到schemalocation并下载它。

*基本解组器不需要/模式/。
应该在重构过程中删除,但丢失了。

*更新客户端以传递kwargs to send()并添加/定位/kwarg以覆盖wsdl中的
服务位置。

*更新封送拆收器以不为表示元素的对象属性发出xml。
的ts和/或属性都是*可选的,值=无。
*更新factory(builder)以包含清除所有属性。
*向schemaobject添加可选的()方法。

*更新wsdl以覆盖操作中的命名空间(如果指定)。

*修复架构加载问题-在处理导入之前生成所有架构。

*在准备提交时更新打包到Fedora



0.2.7版(8-11-08):


*添加对文档的检测/支持/literal-wrapped和unwrapped。
*更新文档/literal{wrapped}以将文档根(在<;body/>;下)设置为
包装元素(带正确的命名空间)。
*添加sup<;sequence/>;、<;all/>;和<;choice/>;的端口,其中maxOccurs和
使解组器将包含在无限
集合中的元素的值设置为列表。
*更新client.factory(builder)以省略<;choice/>;的子级,因为"用户"确实需要
来决定要包含哪些子项。
*更新展平算法以防止从导入架构中重新展平类型。
*对展平/合并算法的调整。




0.2.6版(8-5-08):

*修复期间中断的枚举xsd包彻底检查。
*修复ticket 24中定义的类型。
*修复ticket 30中报告的方法签名中的重复参数名。
*许可为lgpl的sud。
*删除sud中的日志设置。*添加对client.factory.create()alt:syntax的支持,以便完全限定要生成为{namespace}name的类型。例如:client.factory.create('{http://blabla.com/ns}person')




0.2.5版(8-01-08):

*这种新的(合并)方法更简单,而且应该更可靠和可维护。此外,由于合并的模式通过字典查找执行查找,因此应该提供更好的性能。

builder.builder中的无限递归保护,用于包含自身的xsd类型。



0.2.4版(7-28-08):

*添加了对wsdl导入的支持:<;wsdl:import/>;
*添加了对xsd<;->;python类型转换的支持(感谢:nathan van gheem):
*xs:date
*xs:time
*xs:datetime
*已修复:
*bug:schema<;import/>;已指定schemaLocation。
*bug:service description中指定的命名空间在打印客户端/代理之前无效。



0.2.3版(7-23-08):

*opt限制。



0.2.2版(7-8-08):

*使用异常更新异常以使其更标准/python。uu init_uu()设置异常。根据票证14的建议,
将消息更新为
;更新绑定以提高WebFault传递(p)

*将绑定中的功能添加到HAN在返回的值中处理多个根节点;
作为复合对象返回,与返回列表时不同

*fix soapaction要用引号括起来

*add支持schemaobject中的<;xs:all/>;

*fix unbounded()方法

*r将架构默认到新(xsd)包中。文件太大了。将execute()添加到
查询中,并将suds改为execute()查询,而不是直接使用schema.find()。
同时,将hokey start()方法从架构中移动,以及查询增量。

*添加用于注入出站soap消息和/或入站回复消息的inject关键字。
重构soapclient并
1)将rename send()重命名为invoke()
2)拆分消息从invoke()发送并放入send();
添加testclient,它允许调用kwargs的inject={'msg=,and reply='}对于消息
和reply injection

*将命名空间类添加到sax以更好地管理命名空间行为;
将sud还原为导入和使用命名空间

*更改用于解析引用类型(具有attributes@base属性)的默认命名空间=",@type=")
以便在未指定前缀时:使用xml(node)namesapce而不是targetnamespace。

*应用由davidglick@onenw.org在ticket 13中定义的修复程序

*更新要打印的服务定义以将服务方法显示为"my_u方法"(xs:int arg0,person arg1)
而不是更像传统方法签名的"my_method(arg0{xs:int},arg1{person})"

*add xsd/python type conversation to unmarshaller(仅限xboolean);重构unmarshaller以使用内容
class(使api更干净),添加symm在封送处理程序和解封处理程序之间进行排序,
为基于架构属性的类型转换提供了良好的机制

*使用附加程序重构封送处理程序;添加nobuiltin flag to resolve()以支持对绑定中的
returned_type()和returns_collection()进行修复。

*添加对(202204)http代码的支持opy imported schemas,而不是import代理查找请求;添加serviceDefinition类,该类提供更好的服务检查;还提供名称空间映射和显示类型;简化了架构属性api;
支持xs:any和xs:anytype added;一些架构查找问题ms fixed;绑定类稍微进行了重构;
添加了很多调试日志记录(可能需要注释一些以提高性能-一些参数很昂贵)。

*add sudsobject.property;属性是一个包含(值)属性的特殊对象,并且由r/>builder(factory)用于没有子级的架构类型,例如:<;element/>;和<;simpleType/>;;builder、封送拆收器
和已更新以处理属性的解析器;resolver、schema也已更新以处理属性查找(这是缺少的)

*为用户定义的soap头。

*fix elementformdefault per ticket 7

*remove unused kwargs from bindings;cache bindings in wsdl;reform legacy serviceproxy to delegate to{new}client api;
remove keyword nil支持nil以支持"nillab"的自然处理在架构中添加对属性标志(nillable和form)的支持

*添加代理(第二代api)类

*向该用户添加访问器/转换函数不需要访问x属性。
还要添加todict()和get_items(),以便轻松转换到字典和迭代

*在深入查看schemaobject之前搜索@ref的顶级元素

*add derived()。这是为了确保所有派生类型(wsdl类)
都由xsi:type限定,而不象以前的sud版本那样为所有自定义类型指定xsi:type。更新文本封送拆收器以仅在需要指定类型
时添加xsi:type。


*更改sax中的ns提升以防止在父级具有前缀时ns提升为父级。

*changed binding returned_type()返回(未解析)元素

*为了支持新功能并修复报告的错误,
我正在重构并希望在提供输入/输出转换的sud中改进组件:

*builder(translates:xsd objects=>;python objects)
*marshaller(translate:python objects=>;xml/soap)
*解组器(translate:soap/xml=>;python objects)


这种演进将在这些组件之间提供更好的对称性,如下所示:

builder和解组器将生成python
(sudsobject.object的子类)对象具有:

*\u metadata\uuu.\uu type\uuu=xsd type(schemaobject)
*子类名称(\uu class\uu name\uu)=架构类型名称。




r/>解组器将利用此标准信息来生成适当的输出(xml/soap)。不完全是这样。
而且,实现也有一些冗余。

在这样做的时候,将生成器、封送拆收器和解编器类使用的公共模式类型"查找"功能分解为"解析器"类的
层次结构是有意义的。这降低了构建器、封送拆收器和解编器类的复杂性和冗余度,并允许更好的模块化。一旦重构完成,文本/编码封送拆收器之间的差异就变得非常小。考虑到bindings.literal和bindings.encoded包中的代码量很小(而且越来越小)
,为了保持suds代码库的紧凑,我将所有的封送处理类移动到bindings.marshaller模块。
所有的bin将删除dings.xx子包。

净效果:


所有suds主要组件:

*客户端(旧的:服务代理)
*wsdl
*架构(xsd包)
*解析器
*输出(编组)
*builder
*输入(解组)


现在有更好的选择:

*模块性
*对象元数据的对称性。
*代码重用(希望有1%的代码重复)
*松散耦合

…更好地提供以下特性/错误修复:

*(修复)基于
<;schema elementformdefault=""/>;属性的适当xml元素限定级别。这将确保当
elementformdefault="qualified"时,sud将在
根元素上为文本绑定和编码绑定包含正确的命名空间。为了使这个
正常工作,文本封送拆收器(如编码封送拆收器)需要
能够识别模式类型。如果我添加了与
编码封送拆收器相同的模式类型查找,而不是上面描述的重构,那么这两个
类将几乎是彼此的完全副本:-(

*生成器和解组器使用schema.schema.find()
解析架构类型。他们将路径构造为"person.name.first"
,以在适当的上下文中解析类型。由于schema.find()是无状态的,
它在每次调用时都解析中间路径元素。新的解析器
类是有状态的,解析子类型*效率更高。

*防止sudsobject.object中的名称冲突,如items()方法。我已经将所有
方法(包括类方法)移动到一个工厂类中,该工厂类作为类attr(\uu factory)包含在对象类
中。既然*所有*属性都有python内置的命名,
我们就不应该再有名称冲突了。当然,这假设没有wsdl/schema
实体名将具有python内置命名约定的名称,但是我必须在某处画一条线:-)




0.2.1版(5-8-08):

*更新schema.py schemaProperty加载序列,以便胆碱酯酶ma分三步加载:
1)构建原始树。
2)解决依赖关系,如@ref和@base。
3)根据需要提升孙辈以使树变平(非规范化)。

wsdl也被更改为只加载一次架构并存储它。架构集合已在两个步骤中更改为加载架构:
1)创建所有原始架构对象。
2)加载架构。

这可确保在无序引用时可以找到本地<;import/>;'d架构。
sax.py元素接口已更改:attribute()替换为get()和set()。
此外,可以使用"getitem"和"setitem"访问属性值。
为sax.py更新了epydocs。还有…最后一个<;element ref=/>;现在得到了正确的支持。

*修复日志记录方式:不在suds中设置为info。;将日志记录程序(log)从类移动到模块,并使用日志记录程序名称。
注意:这意味着要启用soap message日志:
>;
>;logger('suds.serviceproxy')。setlevel(logging.debug)
>;
--而不是--
>;
>;logger('serviceproxy')。setlevel(logging.debug)
>;

*添加对(xsd)schema<;attribute/>;节点,主要影响生成器返回的对象

*update serviceproxy.py:将"代理"设置为记录调试而不是信息。

*增强schema\uu str\uu以显示原始XML和模型(主要用于调试)。



版本0.2(04-28-08):

*包含rpc/编码soap样式的第一个剪切。

*将属性类替换为suds.suds object.object。属性类是在很久以前开发的,目的略有不同。suds对象是一种更简单(更直接)的方法,它需要更少的代码,在调试器中工作得更好。

*绑定(和编码)是根据更符合wsdl的每个方法选择的。
在<;=0.1.7中,绑定是在构建serviceproxy并用于所有服务
方法时选择的。绑定存储为自绑定。由于wsdl为每个操作提供了单独的绑定样式和
编码,因此sud需要更改才能以相同的方式工作。

*使用**kwargs传递到服务代理的(支持nil)和(faults)标志。除了这些
标志之外,还添加了一个(http_proxy)标志并将其传递给urllib2.request对象。支持以下参数

*faults=引发服务器引发的错误(默认值:true),否则从服务方法调用返回元组
为(http代码,对象)。
*nil\u supported=绑定将在具有当此
标志为真时,E a值=无(默认值:真)。否则,将发送空节点<;x/>;。
*proxy=请求时指定的http代理(默认值:{})。
该代理定义为{protocol:proxy,}


*支持http代理(见上文)。

*serviceproxy重构为委托给soapclient。由于服务代理通过getattr()公开web服务,
service proxy类提供的任何属性(包括方法)都隐藏由
wsdl定义的ws操作。因此,通过将所有内容移动到soapclient,wsdl操作将不再隐藏,而不需要
为服务代理中的属性和方法使用*hoky*名称。相反,服务代理具有
uu client_uuu和uuu factory_uuu属性(它们确实应该处于名称冲突的低风险)。现在
获得尚未移动nstance()和get_enum()方法以保持向后兼容性。不过,
首选的api更改将替换:

>;service=serviceproxy('myurl')
>;person=service.get_instance('person')

…使用类似于…

>;service=serviceproxy('myurl')
>;person=service.\uu factory\uu.get\u instance('person')

这是一个大写的通知。

*修复了wsdl不定义<;schema/>;节的问题,suds无法解析
http://www.w3.org/2001/xmlschema命名空间的前缀以检测内置类型,如(xs:string)。



version-0.1.7(04-08-08):

*添加了binding.nil支持控制如何处理属性值(out)=none和空标记(in)。
*service.binding.nil支持=true--表示属性值=none被封送(out)为
<;x xsi:nil=true/>;<;x/>;是解组led为""且<;x xsi:nil/>;被解组为none。
*service.binding.nil_supported=false--表示属性值=none被解组(out)为
<;x/>;且<;x/>;*和*<;x xsi:nil=true/>;被解组为none。
xsi:nil被真正忽略。
*默认值为(true)

*当sax解析器"分块"文本时,sax处理程序更新为处理多个character()回调。
当node.text为none时,node.text设置为字符。否则,将追加字符。
谢谢-andrea.spinelli@imteam.it

*将特殊(文本)属性替换为"文本",以允许名为"文本"的自然元素

*将Unicode支持添加为:
*将"Unicode"添加到所有具有"str"的类str()使用unicode()调用。
*\u str\uuu()返回编码为utf-8的"unicode"的结果。

*编码为utf-8的XML输出与http头匹配并支持Unicode。

*schemacollection更改为提供内置()和自定义()方法。为了支持这一点,findPrefixes()被添加到sax.py中的
元素中。无论如何,这是一种更好的方法,因为wsdl和模式可能有许多前缀
指向http://www.w3.org/2001/xmlschema。使用doc/lit和rpc/lit绑定进行测试

*从document&rpc到literal&;encoded的重构绑定包

*包含以下*完整*命名空间支持:

*命名空间前缀不再从属性值中剥离
在wsdl中定义的引用类型。
*使用<;import/>;导入的架构应根据需要正确处理命名空间和前缀映射和重新映射。
*使用完全限定(w/命名空间)查找解析所有类型。
*schema.get_type()支持带和不带ns前缀的路径。如果未指定前缀
,则使用架构的目标命名空间匹配类型。

*属性按添加的顺序维护属性名称(键)。这也意味着
get_item()和get_names()返回有序值。
(不过,我怀疑排序确实需要在封送拆收器中使用wsdl/schema中指定的
顺序来完成)

schema.py的主要重构。主要目标是分离
完全由命名空间限定的类型查找。完成后,属性值上的前缀将不再被删除(清除)。
更改摘要:
1)在初始化时而不是按需创建的schemaProperty覆盖类。
2)由新导入类而不是架构执行的架构导入。
3)架构加载使用工厂的顶级属性。
4)所有schemaproperty/children/list都按schemaproperty派生类中的cmp进行排序。
这样可以确保按以下顺序解析具有相同名称的类型(import、complex、simple、element)。
5)所有/children/schemaproperty列表都在__初始化而不是按需启动。
6)schemaGroup创建并更新了wsdl类。这比让wsdl聚合<;schema/>;
节点更好,这些节点断开与具有命名空间前缀映射的wsdl父元素的链接。
7)<;import/>;元素可以正确处理导入架构的命名空间重映射和前缀重映射。's
执行targetnamespace和相关前缀映射。
例如:schmea-a的前缀(tns)映射为xmlns:tns=http://nsa,targetnamespace=http://nsa。
schema-b正在导入schema a,前缀(abc)映射为xmlns:abc=http://nsabc。
schema-b将a导入为<;import namespace=http://nsb xxx schemalocation=http://nsa/schema-a.xsd>;
因此,由于schema-b将引用带有前缀(abc)的schema-a元素,例如abc:something,schema-a的
targetnamespace必须更新为http://nsabc和所有elemtype=tns的ent:something必须更新为
type=abc:something,然后才能解决。

*修复了将节点添加到属性as(文本、值)的解组问题。这是在重构绑定时引入的。


*修复了各种属性打印问题。


注意:

N-0.1.6(03-06-08):

*提供对包含
xsd架构导入的架构节的wsdl的正确处理:<;import namespace=""schemalocation=""?&。
引用的架构在指定架构位置时导入。
*引发尚未处理的http状态代码的异常。




version-0.1.5(02-21-08):

*提供按分层名称更好地登录模块get logger。
*根据需要进行重构要真正支持其他绑定,
*添加替换elementtree的sax模块。这样做更快、更简单,而且
可以正确处理名称空间(前缀)。



version-0.1.4(12-21-07):

*提供服务方法参数为none。
*添加对属性列表
对象的方法参数的正确处理。



版本0.1.3(12-19-07):

*修复了以下问题:当documentreader使用<;2
值映射时,标记为集合(maxOccurs>;1)的节点不
创建值为[]的属性对象。由于缺少bindings.document.replyhint.stripns()(它使用documentreader.stripns())
转换为documentreader.stripn(),现在返回一个元组(ns,标记)作为0.1.2的





version-0.1.2(12-18-07):

roperty添加:
*元数据支持
*覆盖:uugetitem_uuu,uusetitem_uuu,uu contans_uuu
*更改属性(reader writer)以使用属性。元数据
处理xml文档的命名空间。
*修复setup.py需要。


version-0.1.1(12-17-07):

此版本是Fedora托管的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有字符串的java JNA调用与带有字节[]的java JNA调用的行为不同   java基于键列表获取子映射   重启后永久增加java堆大小?   JavaHTTPS服务器:相互SSL身份验证   java为什么接受接口的方法会拒绝该接口的实现?   片段中的java视图无法应用于()   ms access Java SQL更新命令不工作   java将web服务自动打包和部署到Oracle Application Server 10g   java有没有办法在安卓 studio中为安卓时钟设置多个警报?   位于FTP服务器上的文件上的Java校验和md5   在Java中创建类时遇到问题。有些方法不太确定   java错误:在类chrome\u驱动程序中找不到主方法   通用海图(Javascript\Java)