Commit 12237b3a authored by Martin v. Löwis's avatar Martin v. Löwis

Replace yield with sequence class. Fixes #1009803.

parent d3b0babf
...@@ -892,15 +892,19 @@ class _MultiCallMethod: ...@@ -892,15 +892,19 @@ class _MultiCallMethod:
def __call__(self, *args): def __call__(self, *args):
self.__call_list.append((self.__name, args)) self.__call_list.append((self.__name, args))
def MultiCallIterator(results): class MultiCallIterator:
"""Iterates over the results of a multicall. Exceptions are """Iterates over the results of a multicall. Exceptions are
thrown in response to xmlrpc faults.""" thrown in response to xmlrpc faults."""
for i in results: def __init__(self, results):
if type(i) == type({}): self.results = results
raise Fault(i['faultCode'], i['faultString'])
elif type(i) == type([]): def __getitem__(self, i):
yield i[0] item = self.results[i]
if type(item) == type({}):
raise Fault(item['faultCode'], item['faultString'])
elif type(item) == type([]):
return item[0]
else: else:
raise ValueError,\ raise ValueError,\
"unexpected type in multicall result" "unexpected type in multicall result"
...@@ -1412,11 +1416,20 @@ if __name__ == "__main__": ...@@ -1412,11 +1416,20 @@ if __name__ == "__main__":
# simple test program (from the XML-RPC specification) # simple test program (from the XML-RPC specification)
# server = ServerProxy("http://localhost:8000") # local server # server = ServerProxy("http://localhost:8000") # local server
server = ServerProxy("http://betty.userland.com") server = ServerProxy("http://time.xmlrpc.com/RPC2")
print server print server
try: try:
print server.examples.getStateName(41) print server.currentTime.getCurrentTime()
except Error, v:
print "ERROR", v
multi = MultiCall(server)
multi.currentTime.getCurrentTime()
multi.currentTime.getCurrentTime()
try:
for response in multi():
print response
except Error, v: except Error, v:
print "ERROR", v print "ERROR", v
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment