[Fedora-suds-list] SharePoint <Any> element

Steve Chernyak mrrothstein at gmail.com
Sun Apr 26 14:54:45 UTC 2009


I'm running into problems using sharepoint soap API.
This is my first time working with python, so I could be totally wrong.
However, it seems that there is a bug in how SUDS handles attributes when
the schema is defined by "any".

Here is the relative part of the schema:
<s:element name="GetListItemsResponse">
  <s:complexType>
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="GetListItemsResult">
        <s:complexType mixed="true">
          <s:sequence>
            <s:any />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:sequence>
  </s:complexType>
</s:element>

And here is the relative part of the response:
<GetListResult>
            <List DocTemplateUrl="" EmailInsertsFolder="" >
....

This fails with:
DEBUG:suds.resolver:searching parent (<Any:0x12fed28 />) for
(@EmailInsertsFolder)
Traceback (most recent call last):
  File
"C:\development\IDEs\eclipse\workspace\cgi\sharepoint2jira\src\synch\sharepoint2jira.py",
line 13, in <module>
    list = client.service.GetList(listName='Issues List')
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 240,
in __call__
    return target.call(*args, **kwargs)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 379,
in call
    return method(*args, **kwargs)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 240,
in __call__
    return target.call(*args, **kwargs)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 422,
in call
    return client.invoke(args, kwargs)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 480,
in invoke
    result = self.send(msg)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 505,
in send
    result = self.succeeded(binding, reply.message)
  File "C:\development\python\python-suds-0.3.5\suds\client.py", line 537,
in succeeded
    r, p = binding.get_reply(self.method, reply)
  File "C:\development\python\python-suds-0.3.5\suds\bindings\binding.py",
line 149, in get_reply
    result = unmarshaller.process(nodes[0], resolved)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 302, in process
    return UMBase.process(self, content)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 87, in process
    data, result = self.append(content)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 103, in append
    self.append_children(content)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 180, in append_children
    cdata, cval = self.append(cont)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 102, in append
    self.append_attributes(content)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 156, in append_attributes
    self.append_attribute(name, value, content)
  File
"C:\development\python\python-suds-0.3.5\suds\bindings\unmarshaller.py",
line 389, in append_attribute
    type = self.resolver.findattr(name)
  File "C:\development\python\python-suds-0.3.5\suds\resolver.py", line 364,
in findattr
    result, ancestry = self.getchild(name, parent)
ValueError: need more than 0 values to unpack

I was able to trace it down to the Any class in sxbasics.py returning self
from get_attribute (which fails to unpack into 2 variables?)
Changing the return to (None, []) fixes the problem, but I'm not sure if
that's the correct fix or I'm just doing something wrong.

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/fedora-suds-list/attachments/20090426/ef810377/attachment.htm>


More information about the fedora-suds-list mailing list