From ralienpp at gmail.com Wed Aug 1 09:58:57 2012 From: ralienpp at gmail.com (Alex Railean) Date: Wed, 1 Aug 2012 10:58:57 +0300 Subject: [Soap-Python] rpclib is now spyne In-Reply-To: <5016D9A8.5010507@arskom.com.tr> References: <4FE78987.1050704@arskom.com.tr> <20456.46523.262726.129777@localhost.localdomain> <5016D9A8.5010507@arskom.com.tr> Message-ID: <302429677.20120801105857@gmail.com> Hi, > Bad news: Well, I can't promise a release date at the moment. I > need to spend some quality time with the docs :) I can help with that. If you tell me which parts of the documentation need to be updated, I can contribute to the areas in which I have competence. > find -name "*.py" -print0 | xargs -0 sed -i s/rpclib/spyne/g > should work just fine. Alright, I'll do that. Thanks! From burak.arslan at arskom.com.tr Wed Aug 1 14:07:19 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Wed, 01 Aug 2012 15:07:19 +0300 Subject: [Soap-Python] rpclib is now spyne In-Reply-To: <302429677.20120801105857@gmail.com> References: <4FE78987.1050704@arskom.com.tr> <20456.46523.262726.129777@localhost.localdomain> <5016D9A8.5010507@arskom.com.tr> <302429677.20120801105857@gmail.com> Message-ID: <50191BF7.9060006@arskom.com.tr> On 08/01/12 10:58, Alex Railean wrote: >> > Bad news: Well, I can't promise a release date at the moment. I >> > need to spend some quality time with the docs:) > I can help with that. If you tell me which parts of the documentation > need to be updated, I can contribute to the areas in which I have > competence. > > Hello Alex, Thanks a lot for the offer. I'm doing a few things with the docs: 1) I'm re-reading everything and tweaking as appropriate. (e.g. https://github.com/arskom/spyne/commit/72c5202f477d002f95695e4753be789a3935e62e) 2) I'm revising docstrings and adding/removing them as appropriate. Docstring'd modules and functions show up in the library reference, thus are part of the public api. As the public api will get frozen with this release, this is an important task. I'll release once I'm satisfied with the amount of work that went to those points. Then: 1) I'll document undocumented features that was added with this release. E.g. the spyne.auxproc package, or the new Twisted integration, etc. Nobody uses these yet, so having docs for them is not that critical :) 2) I'll work on adding a "Spyne tips" chapter which contains non-obvious ways of using spyne tools. The mailing list archive is actually a treasure of such examples :) For example, to set a default namespace, you should define your own ComplexModel like this: class MyComplexModel(ComplexModelBase): __metaclass__ = ComplexModelMeta __namespace__ = 'my_awesome_namespace' and base your classes on this model. This is obvious when you actually think about it, but not totally obvious for people who are not intimately familiar with spyne. As for your question; Well, initially you can help with the introductory tutorials. If you can proofread and verify that examples still work the way the docs claim, I can focus on the second point. But of course, it's totally up to you, every little would help. Thanks a lot and best regards, Burak -------------- next part -------------- An HTML attachment was scrubbed... URL: From ralienpp at gmail.com Wed Aug 1 16:31:43 2012 From: ralienpp at gmail.com (Alex Railean) Date: Wed, 1 Aug 2012 17:31:43 +0300 Subject: [Soap-Python] rpclib is now spyne In-Reply-To: <50191BF7.9060006@arskom.com.tr> References: <4FE78987.1050704@arskom.com.tr> <20456.46523.262726.129777@localhost.localdomain> <5016D9A8.5010507@arskom.com.tr> <302429677.20120801105857@gmail.com> <50191BF7.9060006@arskom.com.tr> Message-ID: <195624933.20120801173143@gmail.com> > 1) I'll document undocumented features that was added with this > release. E.g. the spyne.auxproc package, or the new Twisted > integration, etc. Nobody uses these yet, so having docs for them is > not that critical :) I see, but given that the thing I'm currently working on does have some intersections with Twisted - I think it is natural if this is what I begin with :-) What I can write now is a beginner-friendly explanation of what you shared in the previous emails: - disable directory listing for the / path of the web-server - adjust the system such that the web-service is available at / (instead of /appname/) What else is new, and what else do you want the doc to reflect? From burak.arslan at arskom.com.tr Thu Aug 2 11:43:10 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Thu, 02 Aug 2012 12:43:10 +0300 Subject: [Soap-Python] rpclib is now spyne In-Reply-To: <195624933.20120801173143@gmail.com> References: <4FE78987.1050704@arskom.com.tr> <20456.46523.262726.129777@localhost.localdomain> <5016D9A8.5010507@arskom.com.tr> <302429677.20120801105857@gmail.com> <50191BF7.9060006@arskom.com.tr> <195624933.20120801173143@gmail.com> Message-ID: <501A4BAE.7020508@arskom.com.tr> On 08/01/12 17:31, Alex Railean wrote: > >> 1) I'll document undocumented features that was added with this >> release. E.g. the spyne.auxproc package, or the new Twisted >> integration, etc. Nobody uses these yet, so having docs for them is >> not that critical :) > I see, but given that the thing I'm currently working on does have > some intersections with Twisted - I think it is natural if this is > what I begin with :-) > > What I can write now is a beginner-friendly explanation of what you > shared in the previous emails: > - disable directory listing for the / path of the web-server > - adjust the system such that the web-service is available at / > (instead of /appname/) > > > What else is new, and what else do you want the doc to reflect? > Well, there are two ways of integrating with twisted. Spyne's TwistedWebResource and Twisted's WSGIResource. With the former, your code runs inside the reactor loop, so you should be very careful and use twisted's async primitives everywhere. The latter is just a way of integrating your existing code inside reactor loop -- every request still runs in its own thread. See the difference for yourself: https://github.com/arskom/spyne/tree/master/examples/twisted The suppression of static serving is just a rather irrelevant side effect. I've updated the run_twisted docstring for you as well. Best, Burak -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Sun Aug 5 22:45:30 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Sun, 05 Aug 2012 23:45:30 +0300 Subject: [Soap-Python] Array inside another Array In-Reply-To: References: Message-ID: <501EDB6A.3060003@arskom.com.tr> On 08/05/12 21:48, Gabriel Monnerat wrote: > So, how to create Addresses inside the User tag instead of a new tag. > In this case, I am trying > > class Address(ComplexModel): > number = String > street = String > > class User(ComplexModel): > name = String > address = Array(Address) You should do: address = Address.customize(max_occurs='unbounded') Does it help? Best, Burak From gabrielmonnerat at gmail.com Fri Aug 10 10:21:11 2012 From: gabrielmonnerat at gmail.com (Gabriel Monnerat) Date: Fri, 10 Aug 2012 10:21:11 +0200 Subject: [Soap-Python] Use different namespace to Authentication Model Message-ID: Hello, I am trying use the WSSE namespace for my Authentication model. But I have one exception when I am trying instantiate the Client. i.e gabriel:~$ python Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from suds.client import Client >>> Client("http://localhost:7789/?wsdl") Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", line 112, in __init__ File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/reader.py", line 152, in open File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", line 158, in __init__ File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", line 207, in resolve File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", line 661, in resolve File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", line 725, in resolveheaders Exception: message's0:Security', not-found Here is the soap server that I am using: http://pastebin.com/uJXZ6CdL Thanks in advance, -- Gabriel M. Monnerat -------------- next part -------------- An HTML attachment was scrubbed... URL: From gabrielmonnerat at gmail.com Fri Aug 10 10:22:50 2012 From: gabrielmonnerat at gmail.com (Gabriel Monnerat) Date: Fri, 10 Aug 2012 10:22:50 +0200 Subject: [Soap-Python] Use different namespace to Authentication Model In-Reply-To: References: Message-ID: Is missing to define one tns? Any advice is welcome! Thanks Regards, On Fri, Aug 10, 2012 at 10:21 AM, Gabriel Monnerat < gabrielmonnerat at gmail.com> wrote: > Hello, > > I am trying use the WSSE namespace for my Authentication model. But I have > one exception when I am trying instantiate the Client. i.e > > gabriel:~$ python > Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) > [GCC 4.4.5] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> from suds.client import Client > >>> Client("http://localhost:7789/?wsdl") > Traceback (most recent call last): > File "", line 1, in > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", > line 112, in __init__ > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/reader.py", > line 152, in open > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 158, in __init__ > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 207, in resolve > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 661, in resolve > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 725, in resolveheaders > Exception: message's0:Security', not-found > > > Here is the soap server that I am using: http://pastebin.com/uJXZ6CdL > > Thanks in advance, > > -- > Gabriel M. Monnerat > -- Gabriel M. Monnerat -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Fri Aug 10 12:04:39 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Fri, 10 Aug 2012 13:04:39 +0300 Subject: [Soap-Python] Use different namespace to Authentication Model In-Reply-To: References: Message-ID: <5024DCB7.7020801@arskom.com.tr> Hi Gabriel, First, thanks for providing a working test case, makes my life much much easier. If you apply the attached patch to Spyne trunk and run test/interop/test_wsi.py, you will see that the WSDL that Spyne produces is fine, and you're in fact running into a suds bug. Turns out I'd ran into that bug and fixed it in my personal fork of suds years ago. I'm now making available my fork of suds here: https://github.com/plq/suds Better late than never, I guess :) The relevant patch seems to be this one: https://github.com/plq/suds/commit/952cc6927e4c627fb95fdfd3d6dfc23277d87483#L2L722 but to be honest, I have no idea why OR how this fixes the issue. Hope that helps. Best, Burak On 08/10/12 11:21, Gabriel Monnerat wrote: > Hello, > > I am trying use the WSSE namespace for my Authentication model. But I > have one exception when I am trying instantiate the Client. i.e > > gabriel:~$ python > Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) > [GCC 4.4.5] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> from suds.client import Client > >>> Client("http://localhost:7789/?wsdl") > Traceback (most recent call last): > File "", line 1, in > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py", > line 112, in __init__ > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/reader.py", > line 152, in open > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 158, in __init__ > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 207, in resolve > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 661, in resolve > File > "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", > line 725, in resolveheaders > Exception: message's0:Security', not-found > > > Here is the soap server that I am using: http://pastebin.com/uJXZ6CdL > > Thanks in advance, > > -- > Gabriel M. Monnerat > > > _______________________________________________ > Soap mailing list > Soap at python.org > http://mail.python.org/mailman/listinfo/soap -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: test_wsi.patch Type: text/x-patch Size: 2489 bytes Desc: not available URL: From dieter at handshake.de Fri Aug 10 18:34:29 2012 From: dieter at handshake.de (Dieter Maurer) Date: Fri, 10 Aug 2012 18:34:29 +0200 Subject: [Soap-Python] Use different namespace to Authentication Model In-Reply-To: References: Message-ID: <20517.14357.285437.343262@localhost.localdomain> Gabriel Monnerat wrote at 2012-8-10 10:21 +0200: >Hello, > >I am trying use the WSSE namespace for my Authentication model. But I have >one exception when I am trying instantiate the Client. i.e > >gabriel:~$ python > ... >"/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/wsdl.py", >line 725, in resolveheaders >Exception: message's0:Security', not-found It looks as if "suds" where unable to resolve "s0:Security" in the WSDL description. This may be the fault of "suds" or that of the WSDL description. Thus, check the WSDL description whether it contains the relevant information to resolve "s0:Security". -- Dieter From szybalski at gmail.com Thu Aug 16 22:45:55 2012 From: szybalski at gmail.com (Lukasz Szybalski) Date: Thu, 16 Aug 2012 15:45:55 -0500 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: Message-ID: On 7/12/12, Rapha?l Barrois wrote: > Hi Lukasz, > > I encountered the same issue recently with suds and a .net-generated WSDL, > so I wrote a patch ? works great in production for a few months. > I'm planning to submit it upstream if I can find an example WSDL suds cannot > parse. > > Hope it helps ! > > Rapha?l BARROIS > > > Which version of suds is this against? 4.0? Any other client I can use? I'm still getting an error: File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 226, in __init__ self.open_imports(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 305, in open_imports imported = imp.open(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 542, in open result = self.download(options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 563, in download return self.schema.instance(root, url, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 397, in instance return Schema(root, baseurl, options) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 225, in __init__ self.build() File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 250, in build self.children = BasicFactory.build(self.root, self) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 778, in build c = cls.build(node, schema, child.childtags()) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 774, in build child = cls.create(node, schema) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 756, in create return fn(schema, root) File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbase.py", line 95, in __init__ self.name = root.get('name') File "/home/lucas/tmp/soap2/suds1/trunk/suds/sax/element.py", line 235, in get attr = self.getAttribute(name, ns) File "/home/lucas/tmp/soap2/suds1/trunk/suds/sax/element.py", line 405, in getAttribute prefix, name = splitPrefix(name) File "/home/lucas/tmp/soap2/suds1/trunk/suds/sax/__init__.py", line 49, in splitPrefix if isinstance(name, basestring) \ RuntimeError: maximum recursion depth exceeded while calling a Python object From szybalski at gmail.com Thu Aug 16 23:14:25 2012 From: szybalski at gmail.com (Lukasz Szybalski) Date: Thu, 16 Aug 2012 16:14:25 -0500 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: Message-ID: Hello Burak/All, The patch that Rapha?l sent does not work for me in version 0.4 nor 0.4.1. The client still fails on : from suds.client import Client c=Client(myurl) with the error on prior email. The example in the folder all use suds which fails for me. Are there examples of client from spyne? from spyne import client? client.... Still trying to find something that works related to rpclib/spyne that can use soap as well? Any idea how I can resolve this problem? Thanks, Lucas -- Need Quality Hardwood Floors at reasonable prices? http://www.azrichardflooring.com/ http://lucasmanual.com/ From burak.arslan at arskom.com.tr Thu Aug 16 23:41:50 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Fri, 17 Aug 2012 00:41:50 +0300 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: Message-ID: <502D691E.3000403@arskom.com.tr> Hi Lukasz, Now I remember this thread :) I still think it's a suds bug. Did you actually try Spyne's soap client? As long as you can ship client code with server code (or at least, just the service definitions) together, I think you can use it. That said, if you can provide a Spyne code that crashes suds, maybe I can look into it more closely. Best, Burak On 08/17/12 00:14, Lukasz Szybalski wrote: > Hello Burak/All, > > The patch that Rapha?l sent does not work for me in version 0.4 nor 0.4.1. > > The client still fails on : > from suds.client import Client > c=Client(myurl) > > with the error on prior email. > > The example in the folder all use suds which fails for me. Are there > examples of client from spyne? > from spyne import client? > client.... > > Still trying to find something that works related to rpclib/spyne that > can use soap as well? > > Any idea how I can resolve this problem? > > Thanks, > Lucas > > -- Burak Arslan Tech lead, Arskom Group Esin Sok. 3/6 34734 Kozyata??, ?stanbul Mobile: +90 532 242 4841 Office: +90 216 411 6800 http://arskom.com.tr From szybalski at gmail.com Thu Aug 16 23:46:57 2012 From: szybalski at gmail.com (Lukasz Szybalski) Date: Thu, 16 Aug 2012 16:46:57 -0500 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: <502D691E.3000403@arskom.com.tr> References: <502D691E.3000403@arskom.com.tr> Message-ID: On Thu, Aug 16, 2012 at 4:41 PM, Burak Arslan wrote: > Hi Lukasz, > > Now I remember this thread :) > > I still think it's a suds bug. > > Did you actually try Spyne's soap client? As long as you can ship client > code with server code (or at least, just the service definitions) together, > I think you can use it. > > That said, if you can provide a Spyne code that crashes suds, maybe I can > look into it more closely. > > Can you give me an example on how to invoke spyne client? I was not able to find anything online. The server is an outside .net service that I have no control over. I need to connect to it, authenticate and then get some data out of it. Thanks, Lucas > Best, > > Burak > > On 08/17/12 00:14, Lukasz Szybalski wrote: > >> Hello Burak/All, >> >> The patch that Rapha?l sent does not work for me in version 0.4 nor 0.4.1. >> >> The client still fails on : >> from suds.client import Client >> c=Client(myurl) >> >> with the error on prior email. >> >> The example in the folder all use suds which fails for me. Are there >> examples of client from spyne? >> from spyne import client? >> client.... >> >> Still trying to find something that works related to rpclib/spyne that >> can use soap as well? >> >> Any idea how I can resolve this problem? >> >> Thanks, >> Lucas >> >> >> > > -- > Burak Arslan > Tech lead, Arskom Group > Esin Sok. 3/6 34734 > Kozyata??, ?stanbul > Mobile: +90 532 242 4841 > Office: +90 216 411 6800 > http://arskom.com.tr > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From dieter at handshake.de Fri Aug 17 07:36:14 2012 From: dieter at handshake.de (Dieter Maurer) Date: Fri, 17 Aug 2012 07:36:14 +0200 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: Message-ID: <20525.55374.419880.303308@localhost.localdomain> Lukasz Szybalski wrote at 2012-8-16 15:45 -0500: > ... >I'm still getting an error: > > > File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line >397, in instance > return Schema(root, baseurl, options) > ... > File "/home/lucas/tmp/soap2/suds1/trunk/suds/sax/element.py", line >405, in getAttribute > prefix, name = splitPrefix(name) > File "/home/lucas/tmp/soap2/suds1/trunk/suds/sax/__init__.py", line >49, in splitPrefix > if isinstance(name, basestring) \ >RuntimeError: maximum recursion depth exceeded while calling a Python object Looks like cyclic import dependencies (at the XML-schema level). I would check whether the WSDL and associated documents (e.g. schema definition) is sensible. -- Dieter From esiotrot at gmail.com Fri Aug 17 08:32:50 2012 From: esiotrot at gmail.com (Michael Wood) Date: Fri, 17 Aug 2012 08:32:50 +0200 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: Message-ID: On 16 August 2012 22:45, Lukasz Szybalski wrote: > On 7/12/12, Rapha?l Barrois wrote: >> Hi Lukasz, >> >> I encountered the same issue recently with suds and a .net-generated WSDL, >> so I wrote a patch ? works great in production for a few months. >> I'm planning to submit it upstream if I can find an example WSDL suds cannot >> parse. >> >> Hope it helps ! >> >> Rapha?l BARROIS >> > Which version of suds is this against? 4.0? Any other client I can use? Perhaps you could try pysimplesoap. I used pysimplesoap for testing when I ran into a suds encoding bug and it worked fine for me. Of course I don't know if it will work better for your purposes than suds :) -- Michael Wood From gabrielmonnerat at gmail.com Fri Aug 17 21:18:32 2012 From: gabrielmonnerat at gmail.com (Gabriel Monnerat) Date: Fri, 17 Aug 2012 21:18:32 +0200 Subject: [Soap-Python] Use a different namespace for SOAP-ENV Message-ID: Hello, Is required for my environment use a different namespace for SOAP-ENV. i checked that he is defined here: suds/binding/binding.py .. 39 envns = ('SOAP-ENV', 'http://schemas.xmlsoap.org/soap/envelope/') So, how can I handle with it? I checked on internet and one way is use MessagePlugin, this features does exists on https://github.com/plq/suds or is supported differently King Regards, -- Gabriel M. Monnerat -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Sat Aug 18 21:52:55 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Sat, 18 Aug 2012 22:52:55 +0300 Subject: [Soap-Python] Use a different namespace for SOAP-ENV In-Reply-To: References: Message-ID: <502FF297.5050305@arskom.com.tr> Hi Gabriel, The suds version in my github account is 0.3.9 plus my patches. You'd have to consult suds docs to see whether it's supported. I'm not familiar with the MessagePlugin functionality that you mention. Best, Burak On 08/17/12 22:18, Gabriel Monnerat wrote: > Hello, > > Is required for my environment use a different namespace for SOAP-ENV. > > i checked that he is defined here: > > suds/binding/binding.py > .. > 39 envns = ('SOAP-ENV', 'http://schemas.xmlsoap.org/soap/envelope/') > > So, how can I handle with it? > > I checked on internet and one way is use MessagePlugin, this features > does exists on https://github.com/plq/suds or is supported differently > > King Regards, > > -- > Gabriel M. Monnerat > > > _______________________________________________ > Soap mailing list > Soap at python.org > http://mail.python.org/mailman/listinfo/soap -- Burak Arslan Tech lead, Arskom Group Esin Sok. 3/6 34734 Kozyatag(?, I.stanbul Mobile: +90 532 242 4841 Office: +90 216 411 6800 http://arskom.com.tr -------------- next part -------------- An HTML attachment was scrubbed... URL: From szybalski at gmail.com Tue Aug 21 23:50:48 2012 From: szybalski at gmail.com (Lukasz Szybalski) Date: Tue, 21 Aug 2012 16:50:48 -0500 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: <502D691E.3000403@arskom.com.tr> References: <502D691E.3000403@arskom.com.tr> Message-ID: On Thu, Aug 16, 2012 at 4:41 PM, Burak Arslan wrote: > Hi Lukasz, > > Now I remember this thread :) > > I still think it's a suds bug. > > Did you actually try Spyne's soap client? As long as you can ship client > code with server code (or at least, just the service definitions) together, > I think you can use it. > Hello, Is there a spyne soap client other then suds? suds does not work for me(https://fedorahosted.org/suds/ticket/239) , so I figured I try spyne client if there is one. Any info would be great, as I'm trying to get this client service up and running. Thanks, Lucas > > That said, if you can provide a Spyne code that crashes suds, maybe I can > look into it more closely. > > Best, > > Burak > > On 08/17/12 00:14, Lukasz Szybalski wrote: > >> Hello Burak/All, >> >> The patch that Rapha?l sent does not work for me in version 0.4 nor 0.4.1. >> >> The client still fails on : >> from suds.client import Client >> c=Client(myurl) >> >> with the error on prior email. >> >> The example in the folder all use suds which fails for me. Are there >> examples of client from spyne? >> from spyne import client? >> client.... >> >> Still trying to find something that works related to rpclib/spyne that >> can use soap as well? >> >> Any idea how I can resolve this problem? >> >> Thanks, >> Lucas >> >> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Wed Aug 22 01:33:51 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Wed, 22 Aug 2012 02:33:51 +0300 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: References: <502D691E.3000403@arskom.com.tr> Message-ID: <50341ADF.9070004@arskom.com.tr> On 08/22/12 00:50, Lukasz Szybalski wrote: > Is there a spyne soap client other then suds? Hi Lukasz, Yes, there is a Soap client in Spyne, but it's only easy to get it working with Spyne servers, because it doesn't parse wsdl documents and needs the server code. If suds isn't working for you, perhaps http://pyxb.sourceforge.net/ could do the job for you. I did not try it but it looks promising. See also here: http://www.w3.org/XML/Schema#Tools Let us know about how it goes. Best, Burak From ralienpp at gmail.com Fri Aug 24 18:11:08 2012 From: ralienpp at gmail.com (Alex Railean) Date: Fri, 24 Aug 2012 19:11:08 +0300 Subject: [Soap-Python] Spyne, URL in address location Message-ID: <637960965.20120824191108@gmail.com> Hi, My Spyne-powered server is generating a WSDL schema that reveals my server's address, yet I prefer that a domain name is used instead. Here is the bit I refer to: Having explored the code, I found that there's a function that takes a URL at the input, and apparently - this is the code responsible for generating that part of the schema. The function is build_interface_document, but I did not find a part in the code that calls it - thus I cannot figure out how to leverage this function's possibilities. If it is of any help, this is how the server is created: from rpclib.util.wsgi_wrapper import run_twisted app = Application([RegistrationService], config.namespaceServer, interface=Wsdl11(), in_protocol=Soap11(validator='lxml'), out_protocol=Soap11()) wsgi_app = WsgiApplication(app) run_twisted(((wsgi_app, 'ra'),), config.listenPort, None) My other question is Twisted-specific - how to define the listening interface? The examples here use a variable called 'host': https://github.com/arskom/spyne/tree/master/examples/twisted However, I only see that it is used to print some debug information, whereas the twisted server itself is not related to it in anyway. What am I missing? Alex From burak.arslan at arskom.com.tr Fri Aug 24 18:38:22 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Fri, 24 Aug 2012 19:38:22 +0300 Subject: [Soap-Python] Spyne, URL in address location In-Reply-To: <5037ACFA.9010907@arskom.com.tr> References: <637960965.20120824191108@gmail.com> <5037ACFA.9010907@arskom.com.tr> Message-ID: <5037ADFE.6030806@arskom.com.tr> On 08/24/12 19:34, Burak Arslan wrote: > Hello Alex, > > On 08/24/12 19:11, Alex Railean wrote: >> My Spyne-powered server is generating a WSDL schema that reveals my >> server's address, yet I prefer that a domain name is used instead. > > https://github.com/arskom/spyne/blob/26c565589f8b3d8da6c98eeb24f80467f0de5e7c/spyne/server/wsgi.py#L166 > > minor fix: wsgi_app = WsgiApplication(...) from spyne.interface.wsdl import Wsdl11 wsdl = Wsdl11(wsgi_app.app.interface) wsdl.build_interface_document("http://my_awesome_domain.name/") wsgi_app._wsdl = wsdl.get_interface_document() burak From burak.arslan at arskom.com.tr Fri Aug 24 18:34:02 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Fri, 24 Aug 2012 19:34:02 +0300 Subject: [Soap-Python] Spyne, URL in address location In-Reply-To: <637960965.20120824191108@gmail.com> References: <637960965.20120824191108@gmail.com> Message-ID: <5037ACFA.9010907@arskom.com.tr> Hello Alex, On 08/24/12 19:11, Alex Railean wrote: > My Spyne-powered server is generating a WSDL schema that reveals my > server's address, yet I prefer that a domain name is used instead. wsgi_app = WsgiApplication(...) from spyne.interface.wsdl import Wsdl11 wsdl = Wsdl11(self.app.interface) wsdl.build_interface_document("http://my_awesome_domain.name/") wsgi_app._wsdl = wsdl.get_interface_document() https://github.com/arskom/spyne/blob/26c565589f8b3d8da6c98eeb24f80467f0de5e7c/spyne/server/wsgi.py#L166 > My other question is Twisted-specific - how to define the listening > interface? > > The examples here use a variable called 'host': > https://github.com/arskom/spyne/tree/master/examples/twisted > > However, I only see that it is used to print some debug information, heh :) I sometimes to the weirdest things. > whereas the twisted server itself is not related to it in anyway. What > am I missing? Look it up in the twisted docs and let me know as well. Best, Burak From ralienpp at gmail.com Fri Aug 24 22:45:04 2012 From: ralienpp at gmail.com (Alex Railean) Date: Fri, 24 Aug 2012 23:45:04 +0300 Subject: [Soap-Python] Spyne, URL in address location In-Reply-To: <5037ACFA.9010907@arskom.com.tr> References: <637960965.20120824191108@gmail.com> <5037ACFA.9010907@arskom.com.tr> Message-ID: <865626212.20120824234504@gmail.com> > Look it up in the twisted docs and let me know as well. I found a solution, this wasn't possible out of the box, so a change had to be applied in spyne: https://github.com/ralienpp/rpclib/commit/bcca45bca309963771e2d720ac954e16610a8df3 Have a look and let me know if this looks right. If so, I will also modify the examples, so this feature is reflected in them as well. It is used like this: from spyne.util.wsgi_wrapper import run_twisted run_twisted(((wsgi_app, 'myapp'),), 7789, None, '192.168.1.4') OR run_twisted(((wsgi_app, 'myapp'),), 7789, None) #listen any From szybalski at gmail.com Mon Aug 27 16:33:39 2012 From: szybalski at gmail.com (Lukasz Szybalski) Date: Mon, 27 Aug 2012 09:33:39 -0500 Subject: [Soap-Python] How to interact with SOAP service from client perspective ? In-Reply-To: <50341ADF.9070004@arskom.com.tr> References: <502D691E.3000403@arskom.com.tr> <50341ADF.9070004@arskom.com.tr> Message-ID: I have tried: 1. from ZSI.ServiceProxy import ServiceProxy (It works, it does not have a recursion problem but I have no idea how to specify a "complex type" of "request" to be passed as input parameters. 2. Pysimplesoap also works. Couldn't find any instructions on how to call the service. I did find that you can easly do (dir) to figure out what parameters you need to supply. 3. wsdl2py also works. It builds a "request" pyclass for me as well, but setting any fields like ".username" doesn't seem to work or I'm passing/setting it incorrectly. so I guess I'm still in a search of a client that will work for me and support complex types. suds - RuntimeError: maximum recursion depth exceeded while calling a Python object --even with the patch in ticket#239 either recursion happens or "suds.TypeNotFound: Type not found". Thanks, Lucas On Tue, Aug 21, 2012 at 6:33 PM, Burak Arslan wrote: > On 08/22/12 00:50, Lukasz Szybalski wrote: > >> Is there a spyne soap client other then suds? >> > > Hi Lukasz, > > Yes, there is a Soap client in Spyne, but it's only easy to get it working > with Spyne servers, because it doesn't parse wsdl documents and needs the > server code. > > If suds isn't working for you, perhaps http://pyxb.sourceforge.net/ could > do the job for you. I did not try it but it looks promising. > > See also here: http://www.w3.org/XML/Schema#**Tools > > Let us know about how it goes. > > Best, > Burak > > http://lucasmanual.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Mon Aug 27 23:57:22 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Tue, 28 Aug 2012 00:57:22 +0300 Subject: [Soap-Python] Spyne, URL in address location In-Reply-To: <865626212.20120824234504@gmail.com> References: <637960965.20120824191108@gmail.com> <5037ACFA.9010907@arskom.com.tr> <865626212.20120824234504@gmail.com> Message-ID: <503BED42.9040600@arskom.com.tr> Hi Alex, For some reason, I did not notice this message until now. The patch looks fine, if you can send a pull request, I can merge it. Best, Burak On 08/24/12 23:45, Alex Railean wrote: >> Look it up in the twisted docs and let me know as well. > I found a solution, this wasn't possible out of the box, so a change > had to be applied in spyne: > https://github.com/ralienpp/rpclib/commit/bcca45bca309963771e2d720ac954e16610a8df3 > > Have a look and let me know if this looks right. If so, I will also > modify the examples, so this feature is reflected in them as well. > > > It is used like this: > > from spyne.util.wsgi_wrapper import run_twisted > run_twisted(((wsgi_app, 'myapp'),), 7789, None, '192.168.1.4') > > OR > > run_twisted(((wsgi_app, 'myapp'),), 7789, None) #listen any > > _______________________________________________ > Soap mailing list > Soap at python.org > http://mail.python.org/mailman/listinfo/soap -- Burak Arslan Tech lead, Arskom Group Esin Sok. 3/6 34734 Kozyata??, ?stanbul Mobile: +90 532 242 4841 Office: +90 216 411 6800 http://arskom.com.tr From ralienpp at gmail.com Tue Aug 28 12:21:42 2012 From: ralienpp at gmail.com (Alex Railean) Date: Tue, 28 Aug 2012 13:21:42 +0300 Subject: [Soap-Python] Spyne validation error Message-ID: <1034545755.20120828132142@gmail.com> Hi, I have just switched to the latest version of Spyne from Github, I observe the following behaviour when a client connects: { DEBUG ValueError(u'Unicode strings with encoding declaration are not supported.',) -- falling back to str decoding. DEBUG Validated ? True ERROR Fault(Client.ValidationError: "The value '1985-04-06' could not be validated.") } The request is defined as follows: class PhysicalPersonDataRequest(ComplexModel): lastName = Unicode(max_len = 30) firstName = Unicode(max_len = 30) birthDate = Date idnp = Unicode(max_len = 13) icSerial = Unicode(max_len = 5) icNumber = Unicode(max_len = 15) The date looks right and I can't understand why this happens. I tried switching the validation method to 'soft', but it yields the same result. Which troubleshooting steps are recommended? From burak.arslan at arskom.com.tr Tue Aug 28 12:33:00 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Tue, 28 Aug 2012 13:33:00 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <1034545755.20120828132142@gmail.com> References: <1034545755.20120828132142@gmail.com> Message-ID: <503C9E5C.2020206@arskom.com.tr> Hi Alex, Can you please provide the the actual stack trace? Thanks, Burak On 08/28/12 13:21, Alex Railean wrote: > Hi, > > > I have just switched to the latest version of Spyne from Github, I > observe the following behaviour when a client connects: > { > DEBUG ValueError(u'Unicode strings with encoding declaration are not supported.',) -- falling back to str decoding. > DEBUG Validated ? True > ERROR Fault(Client.ValidationError: "The value '1985-04-06' could not be validated.") > } > > > > The request is defined as follows: > > > class PhysicalPersonDataRequest(ComplexModel): > lastName = Unicode(max_len = 30) > firstName = Unicode(max_len = 30) > birthDate = Date > idnp = Unicode(max_len = 13) > icSerial = Unicode(max_len = 5) > icNumber = Unicode(max_len = 15) > > > The date looks right and I can't understand why this happens. I tried > switching the validation method to 'soft', but it yields the same > result. > > > Which troubleshooting steps are recommended? > > > _______________________________________________ > Soap mailing list > Soap at python.org > http://mail.python.org/mailman/listinfo/soap From ralienpp at gmail.com Tue Aug 28 13:29:11 2012 From: ralienpp at gmail.com (Alex Railean) Date: Tue, 28 Aug 2012 14:29:11 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <503C9E5C.2020206@arskom.com.tr> References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> Message-ID: <1991553328.20120828142911@gmail.com> > Can you please provide the the actual stack trace? Hmm, how do I do that? There is no crash, so there's no stack trace. The logger is set to 'debug', so I guess all there is to be seen is in the log, and that is: >> { >> DEBUG ValueError(u'Unicode strings with encoding declaration are not supported.',) -- falling back to str decoding. >> DEBUG Validated ? True >> ERROR Fault(Client.ValidationError: "The value '1985-04-06' could not be validated.") >> } I guess I am missing something. From ralienpp at gmail.com Tue Aug 28 15:16:39 2012 From: ralienpp at gmail.com (Alex Railean) Date: Tue, 28 Aug 2012 16:16:39 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <503C9E5C.2020206@arskom.com.tr> References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> Message-ID: <1423430767.20120828161639@gmail.com> > Can you please provide the the actual stack trace? Wait a minute, I was talking about my own log, but not the one by Spyne itself. Here's what it writes: http://pastebin.com/jj2wj1Lc From burak.arslan at arskom.com.tr Tue Aug 28 15:44:41 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Tue, 28 Aug 2012 16:44:41 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <1991553328.20120828142911@gmail.com> References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> <1991553328.20120828142911@gmail.com> Message-ID: <503CCB49.80503@arskom.com.tr> On 08/28/12 14:29, Alex Railean wrote: >> Can you please provide the the actual stack trace? > Hmm, how do I do that? > > There is no crash, so there's no stack trace. > > > The logger is set to 'debug', so I guess all there is to be seen is in > the log, and that is: > >>> { >>> DEBUG ValueError(u'Unicode strings with encoding declaration are not supported.',) -- falling back to str decoding. >>> DEBUG Validated ? True >>> ERROR Fault(Client.ValidationError: "The value '1985-04-06' could not be validated.") >>> } > > I guess I am missing something. Nope, it was a bug. Your test case is here: https://gist.github.com/3497846 This commit fixes it: https://github.com/arskom/spyne/commit/c45fce75096908ffe8fa7bff475206c255c045f7 Let me know if it works for you. Best, Burak From ralienpp at gmail.com Tue Aug 28 21:00:53 2012 From: ralienpp at gmail.com (Alex) Date: Tue, 28 Aug 2012 22:00:53 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <503CCB49.80503@arskom.com.tr> References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> <1991553328.20120828142911@gmail.com> <503CCB49.80503@arskom.com.tr> Message-ID: Thanks for the quick reaction, Burak. It works now, but I noticed a side effect. I receive the date in %Y-%m-%d format, the previous version I was using - rpclib, gave me a string. The new one, spyne, returns a datetime object. There are other parts of the code that failed because of this. So I adjusted the server such that when it receives the request, it transforms the birthDate into a string. This way everything works as it did before. This implies that the transition from rpclib to spyne is not a simple matter of replacing every occurrence of 'rpblib' with 'spyne'. In this case I had to apply a minor tweak. -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Tue Aug 28 21:13:47 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Tue, 28 Aug 2012 22:13:47 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> <1991553328.20120828142911@gmail.com> <503CCB49.80503@arskom.com.tr> Message-ID: <503D186B.3000607@arskom.com.tr> On 08/28/12 22:00, Alex wrote: > > Thanks for the quick reaction, Burak. It works now, but I noticed a > side effect. > > I receive the date in %Y-%m-%d format, the previous version I was > using - rpclib, gave me a string. > > The new one, spyne, returns a datetime object. There are other parts > of the code that failed because of this. So I adjusted the server such > that when it receives the request, it transforms the birthDate into a > string. This way everything works as it did before. > > This implies that the transition from rpclib to spyne is not a simple > matter of replacing every occurrence of 'rpblib' with 'spyne'. In this > case I had to apply a minor tweak. > Hi Alex, Well, If you wanted a Date object returned as string, you should have used an appropriate Unicode type, and reported the Date-as-string behavior as a bug instead of relying buggy behavior. But anyway, I'm happy that it's working for you now. Best, Burak From ralienpp at gmail.com Tue Aug 28 21:25:19 2012 From: ralienpp at gmail.com (Alex) Date: Tue, 28 Aug 2012 22:25:19 +0300 Subject: [Soap-Python] Spyne validation error In-Reply-To: <503D186B.3000607@arskom.com.tr> References: <1034545755.20120828132142@gmail.com> <503C9E5C.2020206@arskom.com.tr> <1991553328.20120828142911@gmail.com> <503CCB49.80503@arskom.com.tr> <503D186B.3000607@arskom.com.tr> Message-ID: > > Well, If you wanted a Date object returned as string, you should have used > an appropriate Unicode type, and reported the Date-as-string behavior as a > bug instead of relying buggy behavior. > The explanation is simple - I didn't know it was a bug. At that time I was familiarizing with the library, I saw what kind of data I received and adapter to that. Now I know it was a bug. -------------- next part -------------- An HTML attachment was scrubbed... URL: From burak.arslan at arskom.com.tr Tue Aug 28 22:05:40 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Tue, 28 Aug 2012 23:05:40 +0300 Subject: [Soap-Python] spyne 2.8.0-rc released Message-ID: <503D2494.1000909@arskom.com.tr> All, I've just pushed Spyne-2.8.0-rc to pypi and tagged it in the Github repository. As of now, you should now stop following trunk and get the release from pypi. It's hectic here nowadays, so release notes and other releases will follow in the coming days. Best, Burak From ralienpp at gmail.com Thu Aug 30 17:56:38 2012 From: ralienpp at gmail.com (Alex Railean) Date: Thu, 30 Aug 2012 18:56:38 +0300 Subject: [Soap-Python] Spyne and the basic use of Arrays Message-ID: <1181541895.20120830185638@gmail.com> Hello, I am having a hard time figuring out how to use arrays in Spyne. Here are my data type definitions: { class SearchResult(ComplexModel): """A search result returned by LDAP""" subjectName = Unicode(min_occurs = 1, nillable = False) serialNumber = Unicode(min_occurs = 1, nillable = False) before = Date(min_occurs = 1, nillable = False) after = Date(min_occurs = 1, nillable = False) subjectAltName = TypeSubjectAltName(min_occurs = 1, nillable = False) certificatePolicy = Unicode(min_occurs = 1, nillable = False) #oid certificate = ByteArray(default = None) class DSearchResponse(ComplexModel): results = Array(SearchResult) } I receive a request with some search criteria, retrieve the results from an LDAP server, then return the response via SOAP/XML. A result can be a single entry, or a list of entries - thus I created a type called SearchResult (for one entry), and set the return type of my service method to a type that contains an array of SearchResult object. This is what the service looks like: { class DSearchService(ServiceBase): @srpc(DSearchRequest, _returns = DSearchResponse) def Search(request): result = DSearchResponse() resultElement = SearchResult() resultElement.subjectName = 'dummy' result.append(resultElement) # <--- ouch! return result } My understanding is that the Array type behaves like a list, so I attempt to use it like one - but that results in an error. I have reviewed the documentation and didn't find a sample that could show me how to add elements to an array. The UserManager sample seems to be close, because it does define `permissions` as `Array(Permission)` - but the sample itself does not contain an example of how to add a permission to the list. Burak, can you offer some hints, or some examples of using arrays? Alex From anthony.risinger at corvisa.com Thu Aug 30 19:56:12 2012 From: anthony.risinger at corvisa.com (C Anthony Risinger) Date: Thu, 30 Aug 2012 12:56:12 -0500 Subject: [Soap-Python] Spyne and the basic use of Arrays In-Reply-To: <1181541895.20120830185638@gmail.com> References: <1181541895.20120830185638@gmail.com> Message-ID: <503FA93C.3060904@corvisa.com> On 08/30/2012 10:56 AM, Alex Railean wrote: > > [...] > > This is what the service looks like: > { > class DSearchService(ServiceBase): > @srpc(DSearchRequest, _returns = DSearchResponse) > def Search(request): > result = DSearchResponse() > resultElement = SearchResult() > resultElement.subjectName = 'dummy' > > result.append(resultElement) # <--- ouch! > return result > } try: result.results.append(resultElement) -- C Anthony ----------------------------------------- CONFIDENTIALITY: The information contained in this communication may be confidential and is intended only for the use of the intended recipient(s). If the reader of this message is not the intended recipient(s), you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete any copy of it from your computer system. From ralienpp at gmail.com Thu Aug 30 20:39:14 2012 From: ralienpp at gmail.com (Alex Railean) Date: Thu, 30 Aug 2012 21:39:14 +0300 Subject: [Soap-Python] Spyne and the basic use of Arrays In-Reply-To: <503FA93C.3060904@corvisa.com> References: <1181541895.20120830185638@gmail.com> <503FA93C.3060904@corvisa.com> Message-ID: <1837506628.20120830213914@gmail.com> Hi, thank you for the help > result.results.append(resultElement) I tried that as well, but this doesn't work: (Pdb) result.results.append(resultElement) *** AttributeError: 'NoneType' object has no attribute 'append' Here's some additional info about what I have: (Pdb) resultElement SearchResult(after=None, certificate=None, serialNumber=None, certificatePolicy=None, subjectName='dummy', before=None) (Pdb) result DSearchResponse(results=None) (Pdb) result.results None You can see that the type or resultEment is correct, and so is the type of result. result.results is of type None, whereas I expected it to be of type Array, or something along those lines. I thought maybe I need to manually create result.results, so I did this: (Pdb) res = Array(SearchResult) (Pdb) res (Pdb) res.append(resultElement) *** AttributeError: type object 'Array' has no attribute 'append' But that doesn't work either. From anthony.risinger at corvisa.com Thu Aug 30 20:50:26 2012 From: anthony.risinger at corvisa.com (C Anthony Risinger) Date: Thu, 30 Aug 2012 13:50:26 -0500 Subject: [Soap-Python] Spyne and the basic use of Arrays In-Reply-To: <1837506628.20120830213914@gmail.com> References: <1181541895.20120830185638@gmail.com> <503FA93C.3060904@corvisa.com> <1837506628.20120830213914@gmail.com> Message-ID: <503FB5F2.9030501@corvisa.com> On 08/30/2012 01:39 PM, Alex Railean wrote: > Hi, thank you for the help > >> result.results.append(resultElement) > I tried that as well, but this doesn't work: > > (Pdb) result.results.append(resultElement) > *** AttributeError: 'NoneType' object has no attribute 'append' hmm, yes i think it's suppose to be an empty list by default, but it's been a little while since i was in that code. under the hood, the library is just creating a container for you, so at the and of the day you can do the same if need be, eg: class SearchResultArray(ComplexModel) results = SearchResult(max_occurs='unbounded') ... note the syntax changed recently that might be wrong (could be Decimal('inf') or some such) also try adding `max_occurs` to the Array: results = Array(SearchResult, max_occurs='unbounded') ... last but not least, try to just assign a list to the attribute: result = DSearchResponse() result.results = [] resultElement = SearchResult() resultElement.subjectName = 'dummy' result.results.append(resultElement) # <--- ouch! return result -- C Anthony ----------------------------------------- CONFIDENTIALITY: The information contained in this communication may be confidential and is intended only for the use of the intended recipient(s). If the reader of this message is not the intended recipient(s), you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please return it to the sender immediately and delete any copy of it from your computer system. From ralienpp at gmail.com Thu Aug 30 22:22:23 2012 From: ralienpp at gmail.com (Alex Railean) Date: Thu, 30 Aug 2012 23:22:23 +0300 Subject: [Soap-Python] Spyne and the basic use of Arrays In-Reply-To: <503FB5F2.9030501@corvisa.com> References: <1181541895.20120830185638@gmail.com> <503FA93C.3060904@corvisa.com> <1837506628.20120830213914@gmail.com> <503FB5F2.9030501@corvisa.com> Message-ID: <43858174.20120830232223@gmail.com> The last suggestion was the first one I tried, and it works. As a reference for future generations, here's a code sample, it uses the type definitions from my previous email: { class DSearchService(ServiceBase): @srpc(DSearchRequest, _returns = DSearchResponse) def Search(request): result = DSearchResponse() resultElement = SearchResult() resultElement.subjectName = 'dummy' testList = [] testList.append(resultElement) testList.append(resultElement) testList.append(resultElement) result.results = testList return result } To sum things up: - just declare a list - populate it with what you need - set the array attribute to that list Thank you for your help. From burak.arslan at arskom.com.tr Thu Aug 30 22:57:59 2012 From: burak.arslan at arskom.com.tr (Burak Arslan) Date: Thu, 30 Aug 2012 23:57:59 +0300 Subject: [Soap-Python] Spyne and the basic use of Arrays In-Reply-To: <1181541895.20120830185638@gmail.com> References: <1181541895.20120830185638@gmail.com> Message-ID: <503FD3D7.3060704@arskom.com.tr> Hi Alex, All, Here's my version of your code: class SearchResult(ComplexModel): """A search result returned by LDAP""" subjectName = Mandatory.Unicode serialNumber = Mandatory.Unicode before = Mandatory.Date after = Mandatory.Date subjectAltName = TypeSubjectAltName(min_occurs = 1, nillable = False) # not sure about this one, is this ^ here a ComplexModel subclass? certificatePolicy = Mandatory.Unicode #oid certificate = ByteArray(default = None) class DSearchService(ServiceBase): @srpc(Array(SearchRequest), _returns = Array(SearchResult)) def Search(request): result = SearchResult() result.subjectName = 'dummy' return [result] Your code in the last mail is also perfectly fine if that's the kind of Xml document you need to produce. On 08/30/12 20:56, C Anthony Risinger wrote: > try: > > result.results.append(resultElement) > This is suds code, not Spyne. Spyne tries to hide implementation details, so it's a little bit different. Here's an example: class Return(ComplexModel): responses = Array(String) ['a','b'] gets serialized as: a b However for the following object; class Return(ComplexModel): responses = String(max_occurs='unbounded') # or max_occurs=Decimal('inf'), both work. ['a','b'] gets serialized as: a b Both are the same thing from Spyne's perspective, because Spyne hides such details from the user. But Suds does not, so dealing with these responses would be different in Suds' case. On 08/30/12 21:39, Alex Railean wrote: > (Pdb) res = Array(SearchResult) > (Pdb) res > > (Pdb) res.append(resultElement) > *** AttributeError: type object 'Array' has no attribute 'append' Classes in spyne.model package are just markers, so this would not work. You should work with their native types. When returning for Array types, just return any kind of iterable (e.g. tuple, list, generator, iterator, etc) Hope this helps, Best, Burak On 08/30/12 18:56, Alex Railean wrote: > Hello, > > > I am having a hard time figuring out how to use arrays in Spyne. > > > Here are my data type definitions: > { > > class SearchResult(ComplexModel): > """A search result returned by LDAP""" > subjectName = Unicode(min_occurs = 1, nillable = False) > serialNumber = Unicode(min_occurs = 1, nillable = False) > before = Date(min_occurs = 1, nillable = False) > after = Date(min_occurs = 1, nillable = False) > subjectAltName = TypeSubjectAltName(min_occurs = 1, nillable = False) > certificatePolicy = Unicode(min_occurs = 1, nillable = False) #oid > certificate = ByteArray(default = None) > > class DSearchResponse(ComplexModel): > results = Array(SearchResult) > } > > > > I receive a request with some search criteria, retrieve the results > from an LDAP server, then return the response via SOAP/XML. > > A result can be a single entry, or a list of entries - thus I created > a type called SearchResult (for one entry), and set the return type of > my service method to a type that contains an array of SearchResult > object. > > > This is what the service looks like: > { > class DSearchService(ServiceBase): > @srpc(DSearchRequest, _returns = DSearchResponse) > def Search(request): > result = DSearchResponse() > resultElement = SearchResult() > resultElement.subjectName = 'dummy' > > result.append(resultElement) #<--- ouch! > return result > } > > > > > My understanding is that the Array type behaves like a list, so I > attempt to use it like one - but that results in an error. > > > I have reviewed the documentation and didn't find a sample that could > show me how to add elements to an array. The UserManager sample seems > to be close, because it does define `permissions` as > `Array(Permission)` - but the sample itself does not contain an > example of how to add a permission to the list. > > > > Burak, can you offer some hints, or some examples of using arrays? > > > > Alex > > _______________________________________________ > Soap mailing list > Soap at python.org > http://mail.python.org/mailman/listinfo/soap