[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