]> granicus.if.org Git - python/commitdiff
Replace yield with sequence class. Fixes #1009803.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Aug 2004 16:04:50 +0000 (16:04 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 22 Aug 2004 16:04:50 +0000 (16:04 +0000)
Lib/xmlrpclib.py

index 0ad1077103efc2f59f8935c4bc1fc69bd400dea3..e3895bd33ebac928cce046670e4ae6f3cebefb46 100644 (file)
@@ -892,15 +892,19 @@ class _MultiCallMethod:
     def __call__(self, *args):
         self.__call_list.append((self.__name, args))
 
-def MultiCallIterator(results):
+class MultiCallIterator:
     """Iterates over the results of a multicall. Exceptions are
     thrown in response to xmlrpc faults."""
 
-    for i in results:
-        if type(i) == type({}):
-            raise Fault(i['faultCode'], i['faultString'])
-        elif type(i) == type([]):
-            yield i[0]
+    def __init__(self, results):
+        self.results = results
+
+    def __getitem__(self, i):
+        item = self.results[i]
+        if type(item) == type({}):
+            raise Fault(item['faultCode'], item['faultString'])
+        elif type(item) == type([]):
+            return item[0]
         else:
             raise ValueError,\
                   "unexpected type in multicall result"
@@ -1412,11 +1416,20 @@ if __name__ == "__main__":
     # simple test program (from the XML-RPC specification)
 
     # server = ServerProxy("http://localhost:8000") # local server
-    server = ServerProxy("http://betty.userland.com")
+    server = ServerProxy("http://time.xmlrpc.com/RPC2")
 
     print server
 
     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:
         print "ERROR", v