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

 - Chris

On Tue, Aug 21, 2012 at 5:22 PM, Lukasz Szybalski <szybalski@gmail.com> wrote:


On Tue, Aug 21, 2012 at 11:02 AM, Chris Sears <csears@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@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:

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