[Fedora-suds-list] RuntimeError: maximum recursion depth exceeded while calling a Python object

Lukasz Szybalski szybalski at gmail.com
Sat Aug 25 17:28:15 UTC 2012


On Tue, Aug 21, 2012 at 9:14 PM, Chris Sears <csears at gmail.com> wrote:

> Lucas,
>
> If you can identify which import the missing type belongs to, you could
> try using the ImportDoctor feature to override the default imports from the
> WSDL. There's an example and discussion of using it with a .Net WCF
> endpoint here:
>
>
> http://stackoverflow.com/questions/3760427/problem-accessing-wsdl-service-with-python-suds-raises-typenotfound-arrayofint
>
>

that's nice if you know the schema that is broken

In my case:

suds.TypeNotFound: Type not found: '(GuestUser.Request, http://tempuri.org/,
)'

Obviously I do not know what tempurl schema is.

 I've checked zsi.soapproxy and I was able to laod the wsdl with it.
Pysimplesoap also seems to be loading it fine. What can I provide to get
this ticket#239 fixed so that suds doesn't fail with infinite loop
recursion?



After I connect my next problem will be to figure out how to pass a
variable Loginname and password of type "request" to the login function,
but for now I need to connect at least.

Thanks,
Lucas








 - Chris
>
>
> On Tue, Aug 21, 2012 at 5:22 PM, Lukasz Szybalski <szybalski at gmail.com>wrote:
>
>>
>>
>> On Tue, Aug 21, 2012 at 11:02 AM, Chris Sears <csears at gmail.com> wrote:
>>
>>> Hi Lucas,
>>>
>>> There is an existing ticket on this issue, opened over 3 years ago:
>>> https://fedorahosted.org/suds/ticket/239
>>>
>>> You might try the patch added by aronb. Others have mentioned it doing
>>> the trick.
>>>
>>
>> Chris,
>>
>>
>> On Tue, Aug 21, 2012 at 11:02 AM, Chris Sears <csears at gmail.com> wrote:
>>
>> Hi Lucas,
>>>
>>> There is an existing ticket on this issue, opened over 3 years ago:
>>> https://fedorahosted.org/suds/ticket/239
>>>
>>> You might try the patch added by aronb. Others have mentioned it doing
>>> the trick.
>>>
>>
>>
>>
>> The conclusion of the ticket is to apply this patch:
>>
>> https://fedorahosted.org/suds/attachment/ticket/239/recurselevel-schema.py.patch
>>
>> which seems to be fixing the recursion but causes:
>>
>> >>> from suds.client import Client
>> >>> c=Client('http:/xxxxx/Service.svc?wsdl')
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/client.py", line 112, in
>> __init__
>>     self.wsdl = reader.open(url)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/reader.py", line 152, in
>> open
>>     d = self.fn(url, self.options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/wsdl.py", line 159, in
>> __init__
>>     self.build_schema()
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/wsdl.py", line 220, in
>> build_schema
>>     self.schema = container.load(self.options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 96,
>> in load
>>     child.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 231,
>> in __init__
>>     self.dereference()
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 326,
>> in dereference
>>     midx, deps = x.dependencies()
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/sxbasic.py", line 469,
>> in dependencies
>>     raise TypeNotFound(self.ref)
>> suds.TypeNotFound: Type not found: '(InsObject,
>> http://www.xxxxxx.com/common/objects/1.0, )'
>>
>>
>> If I increase the MAX RECURSION from 3 to 800 I'm back to square one with
>> the:
>>
>>
>> .....
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 229,
>> in __init__
>>     self.open_imports(options)
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 308,
>> 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 421,
>> in instance
>>     return Schema(root, baseurl, options)
>>    File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 228,
>> in __init__
>>     self.build()
>>   File "/home/lucas/tmp/soap2/suds1/trunk/suds/xsd/schema.py", line 253,
>> 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
>>
>>
>> Any other ideas of possible patch ?
>>
>>
>> Is there a way I can add some line maybe to "schema.py" to see which
>> resource is being requested over and over again?
>>
>> Background: I'm connecting to our system written in .net and trying
>> to authenticate my user by calling one of the functions.)
>>
>> Thanks
>> Lucas
>>
>>
>>

http://lucasmanual.com/ <http://lucasmanual.com/blog/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/suds/attachments/20120825/794eec0b/attachment-0001.html>


More information about the suds mailing list