| @@ -18,9 +18,9 @@ def usage (error = None): | |||
| sys.stdout = sys.stderr | |||
| if error != None: | |||
| print error | |||
| print(error) | |||
| print """usage: %s [options] [server ...] | |||
| print("""usage: %s [options] [server ...] | |||
| If a long option shows an argument is mandatory, it's mandatory for the | |||
| equivalent short option also. | |||
| @@ -38,7 +38,7 @@ def usage (error = None): | |||
| -t, --stacktrace print a stack trace on each unexpected failure | |||
| -T, --always-stacktrace | |||
| print a stack trace on any failure | |||
| """ % (sys.argv[0], DEFAULT_SERVERS_FILE), | |||
| """ % (sys.argv[0], DEFAULT_SERVERS_FILE), end=' ') | |||
| sys.exit (0) | |||
| @@ -46,18 +46,18 @@ def usage (error = None): | |||
| def methodUsage (): | |||
| sys.stdout = sys.stderr | |||
| print "Methods are specified by number. Multiple methods can be " \ | |||
| print("Methods are specified by number. Multiple methods can be " \ | |||
| "specified using a\ncomma-separated list of numbers or ranges. " \ | |||
| "For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n" | |||
| "For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n") | |||
| print "The available methods are:\n" | |||
| print("The available methods are:\n") | |||
| half = (len (DEFAULT_METHODS) + 1) / 2 | |||
| for i in range (half): | |||
| print "%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), | |||
| print("%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), end=' ') | |||
| if i + half < len (DEFAULT_METHODS): | |||
| print "%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), | |||
| print("%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), end=' ') | |||
| print() | |||
| sys.exit (0) | |||
| @@ -121,7 +121,7 @@ def str2list (s): | |||
| else: | |||
| l[int (i)] = 1 | |||
| l = l.keys () | |||
| l = list(l.keys ()) | |||
| l.sort () | |||
| return l | |||
| @@ -144,7 +144,7 @@ def Buy(serv, sa, epname): | |||
| shipTo_d = {"name":"Buyer One ", "address":"1 1st Street ", | |||
| "city":"New York ", "state":"NY ", "zipCode":"10000 "} | |||
| for k,v in shipTo_d.items(): | |||
| for k,v in list(shipTo_d.items()): | |||
| shipTo_d[k] = v[:-1] | |||
| itemd1 = SOAP.structType( {"name":"widg1","quantity":200,"price":SOAP.decimalType(45.99), "_typename":"LineItem"}) | |||
| @@ -200,8 +200,7 @@ def main(): | |||
| elif opt in ('-s', '--servers'): | |||
| servers = arg | |||
| else: | |||
| raise AttributeError, \ | |||
| "Recognized but unimplemented option `%s'" % opt | |||
| raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
| except SystemExit: | |||
| raise | |||
| except: | |||
| @@ -213,7 +212,7 @@ def main(): | |||
| servers = readServers(servers) | |||
| if methodnums == None: | |||
| methodnums = range (1, len (DEFAULT_METHODS) + 1) | |||
| methodnums = list(range(1, len (DEFAULT_METHODS) + 1)) | |||
| limitre = re.compile ('|'.join (args), re.IGNORECASE) | |||
| @@ -239,48 +238,48 @@ def main(): | |||
| raise | |||
| except: | |||
| if 'n' in output: | |||
| print title, "test not yet implemented" | |||
| print(title, "test not yet implemented") | |||
| notimp += 1 | |||
| continue | |||
| try: | |||
| res = fn (serv, s['soapaction'], s['name']) | |||
| if s['nonfunctional'].has_key (name): | |||
| print title, "succeeded despite marked nonfunctional" | |||
| if name in s['nonfunctional']: | |||
| print(title, "succeeded despite marked nonfunctional") | |||
| elif 's' in output: | |||
| print title, "succeeded " | |||
| print(title, "succeeded ") | |||
| succeed += 1 | |||
| except KeyboardInterrupt: | |||
| print "fail" | |||
| print("fail") | |||
| raise | |||
| except: | |||
| if s['nonfunctional'].has_key (name): | |||
| if name in s['nonfunctional']: | |||
| if 'F' in output: | |||
| t = 'as expected' | |||
| if s['nonfunctional'][name] != '': | |||
| t += ', ' + s['nonfunctional'][name] | |||
| print title, "failed (%s) -" %t, sys.exc_info()[1] | |||
| print(title, "failed (%s) -" %t, sys.exc_info()[1]) | |||
| failok += 1 | |||
| else: | |||
| if 'f' in output: | |||
| print title, "failed -", str (sys.exc_info()[1]) | |||
| print(title, "failed -", str (sys.exc_info()[1])) | |||
| fail += 1 | |||
| if stats: | |||
| print " Tests ended at:", time.ctime (time.time()) | |||
| print(" Tests ended at:", time.ctime (time.time())) | |||
| if stats > 0: | |||
| print " Total tests: %d" % total | |||
| print " Successes: %d (%3.2f%%)" % \ | |||
| (succeed, 100.0 * succeed / total) | |||
| print(" Total tests: %d" % total) | |||
| print(" Successes: %d (%3.2f%%)" % \ | |||
| (succeed, 100.0 * succeed / total)) | |||
| if stats > 0 or fail > 0: | |||
| print "Failed unexpectedly: %d (%3.2f%%)" % \ | |||
| (fail, 100.0 * fail / total) | |||
| print("Failed unexpectedly: %d (%3.2f%%)" % \ | |||
| (fail, 100.0 * fail / total)) | |||
| if stats > 0: | |||
| print " Failed as expected: %d (%3.2f%%)" % \ | |||
| (failok, 100.0 * failok / total) | |||
| print(" Failed as expected: %d (%3.2f%%)" % \ | |||
| (failok, 100.0 * failok / total)) | |||
| if stats > 0 or notimp > 0: | |||
| print " Not implemented: %d (%3.2f%%)" % \ | |||
| (notimp, 100.0 * notimp / total) | |||
| print(" Not implemented: %d (%3.2f%%)" % \ | |||
| (notimp, 100.0 * notimp / total)) | |||
| return fail + notimp | |||
| @@ -15,7 +15,7 @@ def SimpleBuy(Address, ProductName, Quantity): | |||
| # the strings are of len > 0 | |||
| global NUMSIMPLEBUYS | |||
| NUMSIMPLEBUYS += 1 | |||
| if Quantity < 1: raise ValueError, "must order at least one" | |||
| if Quantity < 1: raise ValueError("must order at least one") | |||
| else: return "Receipt for %d %s(s) bought from %s" % (int(Quantity), ProductName, serverstring) | |||
| @@ -23,7 +23,7 @@ def RequestForQuote(ProductName, Quantity): | |||
| # type-checks and makes sure Quantity >= 1 | |||
| global NUMREQUESTS | |||
| NUMREQUESTS += 1 | |||
| if Quantity < 1: raise ValueError, "must order at least 1" | |||
| if Quantity < 1: raise ValueError("must order at least 1") | |||
| else: | |||
| import whrandom | |||
| mult = whrandom.random() | |||
| @@ -33,7 +33,7 @@ def RequestForQuote(ProductName, Quantity): | |||
| times += 1 | |||
| mult += 0.5 | |||
| mult = round(mult, 3) | |||
| print mult, times | |||
| print(mult, times) | |||
| return SOAP.doubleType(round(mult*int(Quantity),2)) | |||
| @@ -51,9 +51,9 @@ def Buy(**kw): | |||
| POkeys_expected = ["shipTo","billTo","items","poID","createDate"] | |||
| POkeys_expected.sort() | |||
| if POkeys != POkeys_expected: | |||
| raise ValueError, "struct 'PurchaseOrder' needs %s, %s, %s, %s, and %s" % tuple(POkeys_expected) | |||
| raise ValueError("struct 'PurchaseOrder' needs %s, %s, %s, %s, and %s" % tuple(POkeys_expected)) | |||
| except: | |||
| raise TypeError, "'PurchaseOrder' missing one or more element(s)" | |||
| raise TypeError("'PurchaseOrder' missing one or more element(s)") | |||
| try: | |||
| btkeys = PurchaseOrder["billTo"]["_keyord"] | |||
| @@ -61,7 +61,7 @@ def Buy(**kw): | |||
| btkeys_expected = ["address","zipCode","name","state","city"] | |||
| btkeys_expected.sort() | |||
| except: | |||
| raise TypeError, "'billTo' missing one or more elements" | |||
| raise TypeError("'billTo' missing one or more elements") | |||
| try: | |||
| stkeys = PurchaseOrder["shipTo"]["_keyord"] | |||
| @@ -69,7 +69,7 @@ def Buy(**kw): | |||
| stkeys_expected = ["address","zipCode","name","state","city"] | |||
| stkeys_expected.sort() | |||
| except: | |||
| raise TypeError, "'shipTo' missing one or more elements" | |||
| raise TypeError("'shipTo' missing one or more elements") | |||
| try: | |||
| @@ -90,7 +90,7 @@ def Buy(**kw): | |||
| return retstring | |||
| except: | |||
| raise TypeError, "items must be an array of 'item' structs" | |||
| raise TypeError("items must be an array of 'item' structs") | |||
| def Ping(): | |||
| global NUMPINGS | |||
| @@ -106,7 +106,7 @@ def Monitor(str): | |||
| return "(Buys, RequestForQuote(s),SimpleBuy(s), Ping(s)) = " + \ | |||
| repr( (NUMBUYS,NUMREQUESTS,NUMSIMPLEBUYS, NUMPINGS) ) | |||
| else: | |||
| raise ValueError, "not the right string" | |||
| raise ValueError("not the right string") | |||
| def Clear(str): | |||
| if str=="actzero": | |||
| @@ -121,16 +121,16 @@ def Clear(str): | |||
| return "(Buys, RequestForQuote(s),SimpleBuy(s), Ping(s)) = " + \ | |||
| repr( (NUMBUYS,NUMREQUESTS,NUMSIMPLEBUYS, NUMPINGS) ) | |||
| else: | |||
| raise ValueError, "not the right string" | |||
| raise ValueError("not the right string") | |||
| if __name__ == "__main__": | |||
| if len(sys.argv) > 1: | |||
| try: | |||
| port = int(sys.argv[1]) | |||
| if port not in range(2000,15000): raise ValueError | |||
| if port not in list(range(2000,15000)): raise ValueError | |||
| except: | |||
| print "port must be a number between 2000 and 15000" | |||
| print("port must be a number between 2000 and 15000") | |||
| sys.exit(1) | |||
| else: port = 9000 | |||
| namespace = "http://www.soapinterop.org/Bid" | |||
| @@ -4,15 +4,15 @@ import getopt | |||
| def usage(): | |||
| print """usage: %s [options] | |||
| print("""usage: %s [options] | |||
| -m, --method=METHOD#[,METHOD#...] specify METHOD# of ? for the list | |||
| -p, --port=PORT# allows to specify PORT# of server | |||
| """ | |||
| """) | |||
| sys.exit(1) | |||
| def methodUsage(): | |||
| print "The available methods are:" | |||
| print "1. Monitor \t\t2. Clear" | |||
| print("The available methods are:") | |||
| print("1. Monitor \t\t2. Clear") | |||
| sys.exit(0) | |||
| @@ -29,7 +29,7 @@ try: | |||
| elif opt in ('-p', '--port'): | |||
| port = int(arg) | |||
| else: | |||
| raise AttributeError, "Recognized but unimpl option '%s'" % opt | |||
| raise AttributeError("Recognized but unimpl option '%s'" % opt) | |||
| except SystemExit: | |||
| raise | |||
| except: | |||
| @@ -41,10 +41,10 @@ ns = "http://www.soapinterop.org/Bid" | |||
| serv = SOAP.SOAPProxy(ep, namespace =ns, soapaction = sa) | |||
| if methodnum == 1: | |||
| print serv.Monitor(str="actzero") | |||
| print(serv.Monitor(str="actzero")) | |||
| elif methodnum == 2: | |||
| print serv.Clear(str="actzero") | |||
| print(serv.Clear(str="actzero")) | |||
| else: | |||
| print "invalid methodnum" | |||
| print("invalid methodnum") | |||
| methodUsage() | |||
| @@ -8,12 +8,12 @@ srv = SOAP.SOAPProxy('http://localhost:10080/') | |||
| for p in ('good param', 'ok param'): | |||
| ret = srv.badparam(p) | |||
| if isinstance(ret, SOAP.faultType): | |||
| print ret | |||
| print(ret) | |||
| else: | |||
| print 'ok' | |||
| print('ok') | |||
| dt = SOAP.dateTimeType(time.localtime(time.time())) | |||
| print srv.dt(dt) | |||
| print(srv.dt(dt)) | |||
| @@ -27,7 +27,7 @@ class soap_handler: | |||
| def continue_request(self, data, request): | |||
| # Everthing that follows is cripped from do_POST(). | |||
| if self.config.debug: | |||
| print "\n***RECEIVING***\n", data, "*" * 13 + "\n" | |||
| print("\n***RECEIVING***\n", data, "*" * 13 + "\n") | |||
| sys.stdout.flush() | |||
| try: | |||
| @@ -47,8 +47,8 @@ class soap_handler: | |||
| try: | |||
| # First look for registered functions | |||
| if self.funcmap.has_key(ns) and \ | |||
| self.funcmap[ns].has_key(method): | |||
| if ns in self.funcmap and \ | |||
| method in self.funcmap[ns]: | |||
| f = self.funcmap[ns][method] | |||
| else: # Now look at registered objects | |||
| # Check for nested attributes | |||
| @@ -86,18 +86,18 @@ class soap_handler: | |||
| if f.keywords: | |||
| tkw = {} | |||
| # This is lame, but have to de-unicode keywords | |||
| for (k,v) in kw.items(): | |||
| for (k,v) in list(kw.items()): | |||
| tkw[str(k)] = v | |||
| if c: | |||
| tkw["_SOAPContext"] = c | |||
| fr = apply(f,(),tkw) | |||
| fr = f(*(), **tkw) | |||
| else: | |||
| if c: | |||
| fr = apply(f,args,{'_SOAPContext':c}) | |||
| fr = f(*args, **{'_SOAPContext':c}) | |||
| else: | |||
| fr = apply(f,args,{}) | |||
| fr = f(*args, **{}) | |||
| else: | |||
| fr = apply(f,args,{}) | |||
| fr = f(*args, **{}) | |||
| if type(fr) == type(self) and isinstance(fr, voidType): | |||
| resp = buildSOAP(kw = {'%sResponse' % method:fr}, | |||
| encoding = self.encoding, | |||
| @@ -107,7 +107,7 @@ class soap_handler: | |||
| {'%sResponse' % method:{'Result':fr}}, | |||
| encoding = self.encoding, | |||
| config = self.config) | |||
| except Fault, e: | |||
| except Fault as e: | |||
| resp = buildSOAP(e, config = self.config) | |||
| status = 500 | |||
| except: | |||
| @@ -123,7 +123,7 @@ class soap_handler: | |||
| status = 500 | |||
| else: | |||
| status = 200 | |||
| except Fault,e: | |||
| except Fault as e: | |||
| resp = buildSOAP(e, encoding = self.encoding, | |||
| config = self.config) | |||
| status = 500 | |||
| @@ -147,7 +147,7 @@ class soap_handler: | |||
| #self.end_headers() | |||
| if self.config.debug: | |||
| print "\n***SENDING***\n", resp, "*" * 13 + "\n" | |||
| print("\n***SENDING***\n", resp, "*" * 13 + "\n") | |||
| sys.stdout.flush() | |||
| """ | |||
| @@ -171,7 +171,7 @@ class soap_handler: | |||
| def registerFunction(self, function, namespace = '', funcName = None): | |||
| if not funcName : funcName = function.__name__ | |||
| if namespace == '': namespace = self.namespace | |||
| if self.funcmap.has_key(namespace): | |||
| if namespace in self.funcmap: | |||
| self.funcmap[namespace][funcName] = function | |||
| else: | |||
| self.funcmap[namespace] = {funcName : function} | |||
| @@ -40,28 +40,29 @@ | |||
| ################################################################################ | |||
| """ | |||
| from __future__ import nested_scopes | |||
| ident = '$Id: Client.py 1496 2010-03-04 23:46:17Z pooryorick $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| #import xml.sax | |||
| import urllib | |||
| from types import * | |||
| import urllib.request, urllib.parse, urllib.error | |||
| from .types import * | |||
| import re | |||
| import base64 | |||
| import socket, httplib | |||
| from httplib import HTTPConnection, HTTP | |||
| import Cookie | |||
| import socket, http.client | |||
| from http.client import HTTPConnection, HTTP | |||
| import http.cookies | |||
| # SOAPpy modules | |||
| from Errors import * | |||
| from Config import Config | |||
| from Parser import parseSOAPRPC | |||
| from SOAPBuilder import buildSOAP | |||
| from Utilities import * | |||
| from Types import faultType, simplify | |||
| from .Errors import * | |||
| from .Config import Config | |||
| from .Parser import parseSOAPRPC | |||
| from .SOAPBuilder import buildSOAP | |||
| from .Utilities import * | |||
| from .Types import faultType, simplify | |||
| import collections | |||
| ################################################################################ | |||
| # Client | |||
| @@ -74,7 +75,7 @@ def SOAPUserAgent(): | |||
| class SOAPAddress: | |||
| def __init__(self, url, config = Config): | |||
| proto, uri = urllib.splittype(url) | |||
| proto, uri = urllib.parse.splittype(url) | |||
| # apply some defaults | |||
| if uri[0:2] != '//': | |||
| @@ -84,7 +85,7 @@ class SOAPAddress: | |||
| uri = '//' + uri | |||
| proto = 'http' | |||
| host, path = urllib.splithost(uri) | |||
| host, path = urllib.parse.splithost(uri) | |||
| try: | |||
| int(host) | |||
| @@ -96,15 +97,13 @@ class SOAPAddress: | |||
| path = '/' | |||
| if proto not in ('http', 'https', 'httpg'): | |||
| raise IOError, "unsupported SOAP protocol" | |||
| raise IOError("unsupported SOAP protocol") | |||
| if proto == 'httpg' and not config.GSIclient: | |||
| raise AttributeError, \ | |||
| "GSI client not supported by this Python installation" | |||
| raise AttributeError("GSI client not supported by this Python installation") | |||
| if proto == 'https' and not config.SSLclient: | |||
| raise AttributeError, \ | |||
| "SSL client not supported by this Python installation" | |||
| raise AttributeError("SSL client not supported by this Python installation") | |||
| self.user,host = urllib.splituser(host) | |||
| self.user,host = urllib.parse.splituser(host) | |||
| self.proto = proto | |||
| self.host = host | |||
| self.path = path | |||
| @@ -154,7 +153,7 @@ class HTTPTransport: | |||
| def __init__(self): | |||
| self.cookies = Cookie.SimpleCookie(); | |||
| self.cookies = http.cookies.SimpleCookie(); | |||
| def getNS(self, original_namespace, data): | |||
| """Extract the (possibly extended) namespace from the returned | |||
| @@ -173,7 +172,7 @@ class HTTPTransport: | |||
| def __addcookies(self, r): | |||
| '''Add cookies from self.cookies to request r | |||
| ''' | |||
| for cname, morsel in self.cookies.items(): | |||
| for cname, morsel in list(self.cookies.items()): | |||
| attrs = [] | |||
| value = morsel.get('version', '') | |||
| if value != '' and value != '0': | |||
| @@ -205,7 +204,7 @@ class HTTPTransport: | |||
| from pyGlobus.io import GSIHTTP | |||
| r = GSIHTTP(real_addr, tcpAttr = config.tcpAttr) | |||
| elif addr.proto == 'https': | |||
| r = httplib.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) | |||
| r = http.client.HTTPS(real_addr, key_file=config.SSL.key_file, cert_file=config.SSL.cert_file) | |||
| else: | |||
| r = HTTPWithTimeout(real_addr, timeout=timeout) | |||
| @@ -223,7 +222,7 @@ class HTTPTransport: | |||
| # if user is not a user:passwd format | |||
| # we'll receive a failure from the server. . .I guess (??) | |||
| if addr.user != None: | |||
| val = base64.encodestring(urllib.unquote_plus(addr.user)) | |||
| val = base64.encodestring(urllib.parse.unquote_plus(addr.user)) | |||
| r.putheader('Authorization','Basic ' + val.replace('\012','')) | |||
| # This fixes sending either "" or "None" | |||
| @@ -235,12 +234,12 @@ class HTTPTransport: | |||
| if config.dumpHeadersOut: | |||
| s = 'Outgoing HTTP headers' | |||
| debugHeader(s) | |||
| print "POST %s %s" % (real_path, r._http_vsn_str) | |||
| print "Host:", addr.host | |||
| print "User-agent: SOAPpy " + __version__ + " (http://pywebsvcs.sf.net)" | |||
| print "Content-type:", t | |||
| print "Content-length:", len(data) | |||
| print 'SOAPAction: "%s"' % soapaction | |||
| print("POST %s %s" % (real_path, r._http_vsn_str)) | |||
| print("Host:", addr.host) | |||
| print("User-agent: SOAPpy " + __version__ + " (http://pywebsvcs.sf.net)") | |||
| print("Content-type:", t) | |||
| print("Content-length:", len(data)) | |||
| print('SOAPAction: "%s"' % soapaction) | |||
| debugFooter(s) | |||
| r.endheaders() | |||
| @@ -248,9 +247,9 @@ class HTTPTransport: | |||
| if config.dumpSOAPOut: | |||
| s = 'Outgoing SOAP' | |||
| debugHeader(s) | |||
| print data, | |||
| print(data, end=' ') | |||
| if data[-1] != '\n': | |||
| print() | |||
| debugFooter(s) | |||
| # send the payload | |||
| @@ -259,7 +258,7 @@ class HTTPTransport: | |||
| # read response line | |||
| code, msg, headers = r.getreply() | |||
| self.cookies = Cookie.SimpleCookie(); | |||
| self.cookies = http.cookies.SimpleCookie(); | |||
| if headers: | |||
| content_type = headers.get("content-type","text/xml") | |||
| content_length = headers.get("Content-length") | |||
| @@ -296,20 +295,20 @@ class HTTPTransport: | |||
| data = f.read(message_len) | |||
| if(config.debug): | |||
| print "code=",code | |||
| print "msg=", msg | |||
| print "headers=", headers | |||
| print "content-type=", content_type | |||
| print "data=", data | |||
| print("code=",code) | |||
| print("msg=", msg) | |||
| print("headers=", headers) | |||
| print("content-type=", content_type) | |||
| print("data=", data) | |||
| if config.dumpHeadersIn: | |||
| s = 'Incoming HTTP headers' | |||
| debugHeader(s) | |||
| if headers.headers: | |||
| print "HTTP/1.? %d %s" % (code, msg) | |||
| print "\n".join(map (lambda x: x.strip(), headers.headers)) | |||
| print("HTTP/1.? %d %s" % (code, msg)) | |||
| print("\n".join([x.strip() for x in headers.headers])) | |||
| else: | |||
| print "HTTP/0.9 %d %s" % (code, msg) | |||
| print("HTTP/0.9 %d %s" % (code, msg)) | |||
| debugFooter(s) | |||
| def startswith(string, val): | |||
| @@ -322,9 +321,9 @@ class HTTPTransport: | |||
| if config.dumpSOAPIn: | |||
| s = 'Incoming SOAP' | |||
| debugHeader(s) | |||
| print data, | |||
| print(data, end=' ') | |||
| if (len(data)>0) and (data[-1] != '\n'): | |||
| print() | |||
| debugFooter(s) | |||
| if code not in (200, 500): | |||
| @@ -434,7 +433,7 @@ class SOAPProxy: | |||
| except socket.timeout: | |||
| raise SOAPTimeoutError | |||
| except Exception, ex: | |||
| except Exception as ex: | |||
| # | |||
| # Call failed. | |||
| # | |||
| @@ -448,7 +447,7 @@ class SOAPProxy: | |||
| # | |||
| if hasattr(self.config, "faultHandler"): | |||
| if callable(self.config.faultHandler): | |||
| if isinstance(self.config.faultHandler, collections.Callable): | |||
| call_retry = self.config.faultHandler(self.proxy, ex) | |||
| if not call_retry: | |||
| raise | |||
| @@ -478,7 +477,7 @@ class SOAPProxy: | |||
| if throw_struct: | |||
| if self.config.debug: | |||
| print p | |||
| print(p) | |||
| raise p | |||
| # If unwrap_results=1 and there is only element in the struct, | |||
| @@ -489,7 +488,7 @@ class SOAPProxy: | |||
| if self.unwrap_results: | |||
| try: | |||
| count = 0 | |||
| for i in p.__dict__.keys(): | |||
| for i in list(p.__dict__.keys()): | |||
| if i[0] != "_": # don't count the private stuff | |||
| count += 1 | |||
| t = getattr(p, i) | |||
| @@ -514,7 +513,7 @@ class SOAPProxy: | |||
| def __getattr__(self, name): # hook to catch method calls | |||
| if name in ( '__del__', '__getinitargs__', '__getnewargs__', | |||
| '__getstate__', '__setstate__', '__reduce__', '__reduce_ex__'): | |||
| raise AttributeError, name | |||
| raise AttributeError(name) | |||
| return self.__Method(self.__call, name, config = self.config) | |||
| # To handle attribute weirdness | |||
| @@ -548,7 +547,7 @@ class SOAPProxy: | |||
| def __getattr__(self, name): | |||
| if name == '__del__': | |||
| raise AttributeError, name | |||
| raise AttributeError(name) | |||
| if self.__name[0] == "_": | |||
| # Don't nest method if it is a directive | |||
| return self.__class__(self.__call, name, self.__ns, | |||
| @@ -34,12 +34,12 @@ | |||
| """ | |||
| ident = '$Id: Config.py 1298 2006-11-07 00:54:15Z sanxiyn $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| import socket | |||
| from types import * | |||
| from .types import * | |||
| from NS import NS | |||
| from .NS import NS | |||
| ################################################################################ | |||
| # Configuration class | |||
| @@ -58,12 +58,11 @@ class SOAPConfig: | |||
| if config: | |||
| if not isinstance(config, SOAPConfig): | |||
| raise AttributeError, \ | |||
| "initializer must be SOAPConfig instance" | |||
| raise AttributeError("initializer must be SOAPConfig instance") | |||
| s = config.__dict__ | |||
| for k, v in s.items(): | |||
| for k, v in list(s.items()): | |||
| if k[0] != '_': | |||
| d[k] = v | |||
| else: | |||
| @@ -157,13 +156,13 @@ class SOAPConfig: | |||
| raise TypeError("Config dumpmap parameter must be a tuple") | |||
| self.dumpmap = dumpmap + self.dumpmap | |||
| for k, v in kw.items(): | |||
| for k, v in list(kw.items()): | |||
| if k[0] != '_': | |||
| setattr(self, k, v) | |||
| def __setattr__(self, name, value): | |||
| if name in self.__readonly: | |||
| raise AttributeError, "readonly configuration setting" | |||
| raise AttributeError("readonly configuration setting") | |||
| d = self.__dict__ | |||
| @@ -176,19 +175,19 @@ class SOAPConfig: | |||
| base, uri = name, 0 | |||
| if type(value) == StringType: | |||
| if NS.NSMAP.has_key(value): | |||
| if value in NS.NSMAP: | |||
| n = (value, NS.NSMAP[value]) | |||
| elif NS.NSMAP_R.has_key(value): | |||
| elif value in NS.NSMAP_R: | |||
| n = (NS.NSMAP_R[value], value) | |||
| else: | |||
| raise AttributeError, "unknown namespace" | |||
| raise AttributeError("unknown namespace") | |||
| elif type(value) in (ListType, TupleType): | |||
| if uri: | |||
| n = (value[1], value[0]) | |||
| else: | |||
| n = (value[0], value[1]) | |||
| else: | |||
| raise AttributeError, "unknown namespace type" | |||
| raise AttributeError("unknown namespace type") | |||
| d[base], d[base + 'URI'] = n | |||
| @@ -201,8 +200,8 @@ class SOAPConfig: | |||
| elif name == 'namespaceStyle': | |||
| value = str(value) | |||
| if not NS.STMAP.has_key(value): | |||
| raise AttributeError, "unknown namespace style" | |||
| if value not in NS.STMAP: | |||
| raise AttributeError("unknown namespace style") | |||
| d[name] = value | |||
| n = d['typesNamespace'] = NS.STMAP[value][0] | |||
| @@ -41,7 +41,7 @@ | |||
| """ | |||
| ident = '$Id: Errors.py 921 2005-02-15 16:32:23Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| import exceptions | |||
| @@ -43,33 +43,33 @@ GSIServer - Contributed by Ivan R. Judson <judson@mcs.anl.gov> | |||
| ################################################################################ | |||
| """ | |||
| from __future__ import nested_scopes | |||
| ident = '$Id: GSIServer.py 1468 2008-05-24 01:55:33Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| #import xml.sax | |||
| import re | |||
| import socket | |||
| import sys | |||
| import SocketServer | |||
| from types import * | |||
| import BaseHTTPServer | |||
| import socketserver | |||
| from .types import * | |||
| import http.server | |||
| # SOAPpy modules | |||
| from Parser import parseSOAPRPC | |||
| from Config import SOAPConfig | |||
| from Types import faultType, voidType, simplify | |||
| from NS import NS | |||
| from SOAPBuilder import buildSOAP | |||
| from Utilities import debugHeader, debugFooter | |||
| from .Parser import parseSOAPRPC | |||
| from .Config import SOAPConfig | |||
| from .Types import faultType, voidType, simplify | |||
| from .NS import NS | |||
| from .SOAPBuilder import buildSOAP | |||
| from .Utilities import debugHeader, debugFooter | |||
| try: from M2Crypto import SSL | |||
| except: pass | |||
| ##### | |||
| from Server import * | |||
| from .Server import * | |||
| from pyGlobus.io import GSITCPSocketServer, ThreadingGSITCPSocketServer | |||
| from pyGlobus import ioc | |||
| @@ -40,10 +40,10 @@ | |||
| ################################################################################ | |||
| """ | |||
| from __future__ import nested_scopes | |||
| ident = '$Id: NS.py 1468 2008-05-24 01:55:33Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| ############################################################################## | |||
| # Namespace Class | |||
| @@ -51,7 +51,7 @@ from version import __version__ | |||
| def invertDict(dict): | |||
| d = {} | |||
| for k, v in dict.items(): | |||
| for k, v in list(dict.items()): | |||
| d[v] = k | |||
| return d | |||
| @@ -98,7 +98,7 @@ class NS: | |||
| STMAP_R = invertDict(STMAP) | |||
| def __init__(self): | |||
| raise Error, "Don't instantiate this" | |||
| raise Error("Don't instantiate this") | |||
| @@ -1,17 +1,18 @@ | |||
| # SOAPpy modules | |||
| import traceback | |||
| from Config import Config | |||
| from Types import * | |||
| from NS import NS | |||
| from Utilities import * | |||
| from .Config import Config | |||
| from .Types import * | |||
| from .NS import NS | |||
| from .Utilities import * | |||
| import string | |||
| import xml.sax | |||
| from wstools.XMLname import fromXMLname | |||
| import collections | |||
| try: | |||
| from cStringIO import StringIO | |||
| from io import StringIO | |||
| except ImportError: | |||
| from StringIO import StringIO | |||
| from io import StringIO | |||
| try: from M2Crypto import SSL | |||
| except: pass | |||
| @@ -21,7 +22,7 @@ from defusedxml.common import DefusedXmlException | |||
| ident = '$Id: Parser.py 1497 2010-03-08 06:06:52Z pooryorick $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| ################################################################################ | |||
| @@ -63,7 +64,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| self.contents.append(data) | |||
| self.subattrs.append(attrs) | |||
| if self.namecounts.has_key(name): | |||
| if name in self.namecounts: | |||
| self.namecounts[name] += 1 | |||
| else: | |||
| self.namecounts[name] = 1 | |||
| @@ -102,7 +103,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| def toStr( name ): | |||
| prefix = name[0] | |||
| tag = name[1] | |||
| if self._prem_r.has_key(prefix): | |||
| if prefix in self._prem_r: | |||
| tag = self._prem_r[name[0]] + ':' + name[1] | |||
| elif prefix: | |||
| tag = prefix + ":" + tag | |||
| @@ -118,10 +119,10 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if self._next == "E": | |||
| if name[1] != 'Envelope': | |||
| raise Error, "expected `SOAP-ENV:Envelope', " \ | |||
| "got `%s'" % toStr( name ) | |||
| raise Error("expected `SOAP-ENV:Envelope', " \ | |||
| "got `%s'" % toStr( name )) | |||
| if name[0] != NS.ENV: | |||
| raise faultType, ("%s:VersionMismatch" % NS.ENV_T, | |||
| raise faultType("%s:VersionMismatch" % NS.ENV_T, | |||
| "Don't understand version `%s' Envelope" % name[0]) | |||
| else: | |||
| self._next = "HorB" | |||
| @@ -129,18 +130,17 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if name[0] == NS.ENV and name[1] in ("Header", "Body"): | |||
| self._next = None | |||
| else: | |||
| raise Error, \ | |||
| "expected `SOAP-ENV:Header' or `SOAP-ENV:Body', " \ | |||
| "got `%s'" % toStr( name ) | |||
| raise Error("expected `SOAP-ENV:Header' or `SOAP-ENV:Body', " \ | |||
| "got `%s'" % toStr( name )) | |||
| elif self._next == "B": | |||
| if name == (NS.ENV, "Body"): | |||
| self._next = None | |||
| else: | |||
| raise Error, "expected `SOAP-ENV:Body', " \ | |||
| "got `%s'" % toStr( name ) | |||
| raise Error("expected `SOAP-ENV:Body', " \ | |||
| "got `%s'" % toStr( name )) | |||
| elif self._next == "": | |||
| raise Error, "expected nothing, " \ | |||
| "got `%s'" % toStr( name ) | |||
| raise Error("expected nothing, " \ | |||
| "got `%s'" % toStr( name )) | |||
| if len(self._stack) == 2: | |||
| @@ -188,27 +188,27 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| name = fromXMLname(name) # convert to SOAP 1.2 XML name encoding | |||
| if self._next == "E": | |||
| raise Error, "didn't get SOAP-ENV:Envelope" | |||
| raise Error("didn't get SOAP-ENV:Envelope") | |||
| if self._next in ("HorB", "B"): | |||
| raise Error, "didn't get SOAP-ENV:Body" | |||
| raise Error("didn't get SOAP-ENV:Body") | |||
| cur = self.popFrame() | |||
| attrs = cur.attrs | |||
| idval = None | |||
| if attrs.has_key((None, 'id')): | |||
| if (None, 'id') in attrs: | |||
| idval = attrs[(None, 'id')] | |||
| if self._ids.has_key(idval): | |||
| raise Error, "duplicate id `%s'" % idval | |||
| if idval in self._ids: | |||
| raise Error("duplicate id `%s'" % idval) | |||
| del attrs[(None, 'id')] | |||
| root = 1 | |||
| if len(self._stack) == 3: | |||
| if attrs.has_key((NS.ENC, 'root')): | |||
| if (NS.ENC, 'root') in attrs: | |||
| root = int(attrs[(NS.ENC, 'root')]) | |||
| # Do some preliminary checks. First, if root="0" is present, | |||
| @@ -217,9 +217,9 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if root == 0: | |||
| if idval == None: | |||
| raise Error, "non-root element must have an id" | |||
| raise Error("non-root element must have an id") | |||
| elif root != 1: | |||
| raise Error, "SOAP-ENC:root must be `0' or `1'" | |||
| raise Error("SOAP-ENC:root must be `0' or `1'") | |||
| del attrs[(NS.ENC, 'root')] | |||
| @@ -227,19 +227,19 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| href = attrs.get((None, 'href')) | |||
| if href: | |||
| if href[0] != '#': | |||
| raise Error, "Non-local hrefs are not yet suppported." | |||
| raise Error("Non-local hrefs are not yet suppported.") | |||
| if self._data != None and \ | |||
| string.join(self._data, "").strip() != '': | |||
| raise Error, "hrefs can't have data" | |||
| raise Error("hrefs can't have data") | |||
| href = href[1:] | |||
| if self._ids.has_key(href): | |||
| if href in self._ids: | |||
| data = self._ids[href] | |||
| else: | |||
| data = RefHolder(name, self._stack[-1]) | |||
| if self._refs.has_key(href): | |||
| if href in self._refs: | |||
| self._refs[href].append(data) | |||
| else: | |||
| self._refs[href] = [data] | |||
| @@ -252,7 +252,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if attrs: | |||
| for i in NS.XSI_L: | |||
| if attrs.has_key((i, 'type')): | |||
| if (i, 'type') in attrs: | |||
| kind = attrs[(i, 'type')] | |||
| del attrs[(i, 'type')] | |||
| @@ -272,11 +272,11 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if attrs: | |||
| for i in (NS.XSI, NS.XSI2): | |||
| if attrs.has_key((i, 'null')): | |||
| if (i, 'null') in attrs: | |||
| null = attrs[(i, 'null')] | |||
| del attrs[(i, 'null')] | |||
| if attrs.has_key((NS.XSI3, 'nil')): | |||
| if (NS.XSI3, 'nil') in attrs: | |||
| null = attrs[(NS.XSI3, 'nil')] | |||
| del attrs[(NS.XSI3, 'nil')] | |||
| @@ -291,7 +291,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| # check for nil=1, but watch out for string values | |||
| try: | |||
| null = int(null) | |||
| except ValueError, e: | |||
| except ValueError as e: | |||
| if not e[0].startswith("invalid literal for int()"): | |||
| raise e | |||
| null = 0 | |||
| @@ -299,7 +299,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if null: | |||
| if len(cur) or \ | |||
| (self._data != None and string.join(self._data, "").strip() != ''): | |||
| raise Error, "nils can't have data" | |||
| raise Error("nils can't have data") | |||
| data = None | |||
| @@ -341,7 +341,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| # XXX What if rule != kind? | |||
| if callable(rule): | |||
| if isinstance(rule, collections.Callable): | |||
| data = rule(string.join(self._data, "")) | |||
| elif type(rule) == DictType: | |||
| data = structType(name = (ns, name), attrs = attrs) | |||
| @@ -444,7 +444,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if idval != None: | |||
| self._ids[idval] = data | |||
| if self._refs.has_key(idval): | |||
| if idval in self._refs: | |||
| for i in self._refs[idval]: | |||
| i.parent._placeItem(i.name, data, i.pos, i.subpos, attrs) | |||
| @@ -459,11 +459,9 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| def endDocument(self): | |||
| if len(self._refs) == 1: | |||
| raise Error, \ | |||
| "unresolved reference " + self._refs.keys()[0] | |||
| raise Error("unresolved reference " + list(self._refs.keys())[0]) | |||
| elif len(self._refs) > 1: | |||
| raise Error, \ | |||
| "unresolved references " + ', '.join(self._refs.keys()) | |||
| raise Error("unresolved references " + ', '.join(list(self._refs.keys()))) | |||
| def startPrefixMapping(self, prefix, uri): | |||
| self._prem[prefix] = uri | |||
| @@ -502,7 +500,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| else: | |||
| raise Exception | |||
| except: | |||
| raise AttributeError, "invalid Array offset" | |||
| raise AttributeError("invalid Array offset") | |||
| else: | |||
| offset = 0 | |||
| @@ -525,7 +523,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| return typedArrayType(None, name, (None, t), attrs, offset, | |||
| m.group('rank'), m.group('asize'), elemsname) | |||
| except: | |||
| raise AttributeError, "invalid Array type `%s'" % kind | |||
| raise AttributeError("invalid Array type `%s'" % kind) | |||
| # Conversion | |||
| @@ -696,7 +694,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| s = float(s) | |||
| else: | |||
| try: s = int(s) | |||
| except ValueError: s = long(s) | |||
| except ValueError: s = int(s) | |||
| if i < fn: fn = i | |||
| @@ -728,7 +726,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| try: | |||
| s = int(s) | |||
| except ValueError: | |||
| s = long(s) | |||
| s = int(s) | |||
| r.append(s) | |||
| @@ -761,7 +759,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| try: | |||
| s = int(s) | |||
| except ValueError: | |||
| s = long(s) | |||
| s = int(s) | |||
| if i < fn: | |||
| fn = i | |||
| @@ -794,14 +792,14 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| s = [] | |||
| for i in range(1, len(f)): | |||
| if d.has_key(f[i]): | |||
| if f[i] in d: | |||
| s.append(r[i - 1]) | |||
| if len(s) == 1: | |||
| return s[0] | |||
| return tuple(s) | |||
| except Exception, e: | |||
| raise Error, "invalid %s value `%s' - %s" % (kind, value, e) | |||
| except Exception as e: | |||
| raise Error("invalid %s value `%s' - %s" % (kind, value, e)) | |||
| intlimits = \ | |||
| { | |||
| @@ -809,17 +807,17 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| 'non-positive-integer': (0, None, 0), | |||
| 'negativeInteger': (0, None, -1), | |||
| 'negative-integer': (0, None, -1), | |||
| 'long': (1, -9223372036854775808L, | |||
| 9223372036854775807L), | |||
| 'int': (0, -2147483648L, 2147483647L), | |||
| 'long': (1, -9223372036854775808, | |||
| 9223372036854775807), | |||
| 'int': (0, -2147483648, 2147483647), | |||
| 'short': (0, -32768, 32767), | |||
| 'byte': (0, -128, 127), | |||
| 'nonNegativeInteger': (0, 0, None), | |||
| 'non-negative-integer': (0, 0, None), | |||
| 'positiveInteger': (0, 1, None), | |||
| 'positive-integer': (0, 1, None), | |||
| 'unsignedLong': (1, 0, 18446744073709551615L), | |||
| 'unsignedInt': (0, 0, 4294967295L), | |||
| 'unsignedLong': (1, 0, 18446744073709551615), | |||
| 'unsignedInt': (0, 0, 4294967295), | |||
| 'unsignedShort': (0, 0, 65535), | |||
| 'unsignedByte': (0, 0, 255), | |||
| } | |||
| @@ -845,12 +843,10 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if elemtype=="ur-type": | |||
| return(d) | |||
| else: | |||
| newarr = map( lambda(di): | |||
| self.convertToBasicTypes(d=di, | |||
| newarr = [self.convertToBasicTypes(d=di, | |||
| t = ( NS.XSD, elemtype), | |||
| attrs=attrs, | |||
| config=config), | |||
| d) | |||
| config=config) for di in d] | |||
| return newarr | |||
| else: | |||
| t = (NS.XSD, t[1]) | |||
| @@ -885,26 +881,26 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| try: | |||
| d = int(d) | |||
| if len(attrs): | |||
| d = long(d) | |||
| d = int(d) | |||
| except: | |||
| d = long(d) | |||
| d = int(d) | |||
| return d | |||
| if self.intlimits.has_key (t[1]): # range-bounded integer types | |||
| if t[1] in self.intlimits: # range-bounded integer types | |||
| l = self.intlimits[t[1]] | |||
| try: d = int(d) | |||
| except: d = long(d) | |||
| except: d = int(d) | |||
| if l[1] != None and d < l[1]: | |||
| raise UnderflowError, "%s too small" % d | |||
| raise UnderflowError("%s too small" % d) | |||
| if l[2] != None and d > l[2]: | |||
| raise OverflowError, "%s too large" % d | |||
| raise OverflowError("%s too large" % d) | |||
| if l[0] or len(attrs): | |||
| return long(d) | |||
| return int(d) | |||
| return d | |||
| if t[1] == "string": | |||
| if len(attrs): | |||
| return unicode(dnn) | |||
| return str(dnn) | |||
| try: | |||
| return str(dnn) | |||
| except: | |||
| @@ -915,7 +911,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| return False | |||
| if d in ('1', 'true'): | |||
| return True | |||
| raise AttributeError, "invalid boolean value" | |||
| raise AttributeError("invalid boolean value") | |||
| if t[1] in ('double','float'): | |||
| l = self.floatlimits[t[1]] | |||
| s = d.strip().lower() | |||
| @@ -933,23 +929,23 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if config.strict_range: | |||
| if NaN == d: | |||
| if s[0:2] != 'nan': | |||
| raise ValueError, "invalid %s: %s" % (t[1], s) | |||
| raise ValueError("invalid %s: %s" % (t[1], s)) | |||
| elif NegInf == d: | |||
| if s[0:3] != '-inf': | |||
| raise UnderflowError, "%s too small: %s" % (t[1], s) | |||
| raise UnderflowError("%s too small: %s" % (t[1], s)) | |||
| elif PosInf == d: | |||
| if s[0:2] != 'inf' and s[0:3] != '+inf': | |||
| raise OverflowError, "%s too large: %s" % (t[1], s) | |||
| raise OverflowError("%s too large: %s" % (t[1], s)) | |||
| elif d < 0 and d < l[1]: | |||
| raise UnderflowError, "%s too small: %s" % (t[1], s) | |||
| raise UnderflowError("%s too small: %s" % (t[1], s)) | |||
| elif d > 0 and ( d < l[0] or d > l[2] ): | |||
| raise OverflowError, "%s too large: %s" % (t[1], s) | |||
| raise OverflowError("%s too large: %s" % (t[1], s)) | |||
| elif d == 0: | |||
| if type(self.zerofloatre) == StringType: | |||
| self.zerofloatre = re.compile(self.zerofloatre) | |||
| if self.zerofloatre.search(s): | |||
| raise UnderflowError, "invalid %s: %s" % (t[1], s) | |||
| raise UnderflowError("invalid %s: %s" % (t[1], s)) | |||
| return d | |||
| if t[1] in ("dateTime", "date", "timeInstant", "time"): | |||
| @@ -974,7 +970,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| else: | |||
| return | |||
| if t[1] == "anyURI": | |||
| return urllib.unquote(collapseWhiteSpace(d)) | |||
| return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
| if t[1] in ("normalizedString", "token"): | |||
| return collapseWhiteSpace(d) | |||
| if t[0] == NS.ENC: | |||
| @@ -998,14 +994,14 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| except: | |||
| pass | |||
| raise Error, "unknown or missing binary encoding" | |||
| raise Error("unknown or missing binary encoding") | |||
| if t[1] == "uri": | |||
| return urllib.unquote(collapseWhiteSpace(d)) | |||
| return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
| if t[1] == "recurringInstant": | |||
| return self.convertDateTime(d, t[1]) | |||
| if t[0] in (NS.XSD2, NS.ENC): | |||
| if t[1] == "uriReference": | |||
| return urllib.unquote(collapseWhiteSpace(d)) | |||
| return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
| if t[1] == "timePeriod": | |||
| return self.convertDateTime(d, t[1]) | |||
| if t[1] in ("century", "year"): | |||
| @@ -1015,7 +1011,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| return self.convertDateTime(d, t[1]) | |||
| if t[0] == NS.XSD3: | |||
| if t[1] == "anyURI": | |||
| return urllib.unquote(collapseWhiteSpace(d)) | |||
| return urllib.parse.unquote(collapseWhiteSpace(d)) | |||
| if t[1] in ("gYearMonth", "gMonthDay"): | |||
| return self.convertDateTime(d, t[1]) | |||
| if t[1] == "gYear": | |||
| @@ -1039,7 +1035,7 @@ class SOAPParser(xml.sax.handler.ContentHandler): | |||
| if t[1] == "CDATA": | |||
| return collapseWhiteSpace(d) | |||
| raise UnknownTypeError, "unknown type `%s'" % (str(t[0]) + ':' + t[1]) | |||
| raise UnknownTypeError("unknown type `%s'" % (str(t[0]) + ':' + t[1])) | |||
| ################################################################################ | |||
| @@ -1078,13 +1074,13 @@ def _parseSOAP(xml_str, rules = None, ignore_ext=None, | |||
| try: | |||
| parser.parse(inpsrc) | |||
| except DefusedXmlException, e: | |||
| except DefusedXmlException as e: | |||
| parser._parser = None | |||
| print traceback.format_exc() | |||
| print(traceback.format_exc()) | |||
| raise e | |||
| except xml.sax.SAXParseException, e: | |||
| except xml.sax.SAXParseException as e: | |||
| parser._parser = None | |||
| print traceback.format_exc() | |||
| print(traceback.format_exc()) | |||
| raise e | |||
| return t | |||
| @@ -1106,9 +1102,9 @@ def parseSOAPRPC(xml_str, header = 0, body = 0, attrs = 0, rules = None, ignore_ | |||
| p = t.body[0] | |||
| # Empty string, for RPC this translates into a void | |||
| if type(p) in (type(''), type(u'')) and p in ('', u''): | |||
| if type(p) in (type(''), type('')) and p in ('', ''): | |||
| name = "Response" | |||
| for k in t.body.__dict__.keys(): | |||
| for k in list(t.body.__dict__.keys()): | |||
| if k[0] != "_": | |||
| name = k | |||
| p = structType(name) | |||
| @@ -4,19 +4,19 @@ Delete when 1.0.0 is released! | |||
| """ | |||
| ident = '$Id: SOAP.py 541 2004-01-31 04:20:06Z warnes $' | |||
| from version import __version__ | |||
| from Client import * | |||
| from Config import * | |||
| from Errors import * | |||
| from NS import * | |||
| from Parser import * | |||
| from SOAPBuilder import * | |||
| from Server import * | |||
| from Types import * | |||
| from Utilities import * | |||
| from .version import __version__ | |||
| from .Client import * | |||
| from .Config import * | |||
| from .Errors import * | |||
| from .NS import * | |||
| from .Parser import * | |||
| from .SOAPBuilder import * | |||
| from .Server import * | |||
| from .Types import * | |||
| from .Utilities import * | |||
| import wstools | |||
| import WSDL | |||
| from . import WSDL | |||
| from warnings import warn | |||
| @@ -34,15 +34,15 @@ | |||
| """ | |||
| ident = '$Id: SOAPBuilder.py 1498 2010-03-12 02:13:19Z pooryorick $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| import cgi | |||
| from wstools.XMLname import toXMLname, fromXMLname | |||
| # SOAPpy modules | |||
| from Config import Config | |||
| from NS import NS | |||
| from Types import * | |||
| from .Config import Config | |||
| from .NS import NS | |||
| from .Types import * | |||
| # Test whether this Python version has Types.BooleanType | |||
| # If it doesn't have it, then False and True are serialized as integers | |||
| @@ -100,7 +100,7 @@ class SOAPBuilder: | |||
| self.noroot = noroot | |||
| def build(self): | |||
| if self.config.debug: print "In build." | |||
| if self.config.debug: print("In build.") | |||
| ns_map = {} | |||
| # Cache whether typing is on or not | |||
| @@ -124,7 +124,7 @@ class SOAPBuilder: | |||
| self.depth += 1 | |||
| a = '' | |||
| if self.methodattrs: | |||
| for (k, v) in self.methodattrs.items(): | |||
| for (k, v) in list(self.methodattrs.items()): | |||
| a += ' %s="%s"' % (k, v) | |||
| if self.namespace: # Use the namespace info handed to us | |||
| @@ -144,11 +144,11 @@ class SOAPBuilder: | |||
| for i in args: | |||
| self.dump(i, typed = typed, ns_map = ns_map) | |||
| if hasattr(self.config, "argsOrdering") and self.config.argsOrdering.has_key(self.method): | |||
| if hasattr(self.config, "argsOrdering") and self.method in self.config.argsOrdering: | |||
| for k in self.config.argsOrdering.get(self.method): | |||
| self.dump(self.kw.get(k), k, typed = typed, ns_map = ns_map) | |||
| else: | |||
| for (k, v) in self.kw.items(): | |||
| for (k, v) in list(self.kw.items()): | |||
| self.dump(v, k, typed = typed, ns_map = ns_map) | |||
| except RecursionError: | |||
| @@ -182,8 +182,7 @@ class SOAPBuilder: | |||
| self.depth -= 1 | |||
| if self.envelope: | |||
| e = map (lambda ns: ' xmlns:%s="%s"\n' % (ns[1], ns[0]), | |||
| self.envns.items()) | |||
| e = [' xmlns:%s="%s"\n' % (ns[1], ns[0]) for ns in list(self.envns.items())] | |||
| self.out = ['<', self._env_top] + e + ['>\n'] + \ | |||
| self.out + \ | |||
| @@ -197,7 +196,7 @@ class SOAPBuilder: | |||
| return ''.join(self.out) | |||
| def gentag(self): | |||
| if self.config.debug: print "In gentag." | |||
| if self.config.debug: print("In gentag.") | |||
| self.tcounter += 1 | |||
| return "v%d" % self.tcounter | |||
| @@ -213,10 +212,10 @@ class SOAPBuilder: | |||
| else: | |||
| ns = None | |||
| if ns_map.has_key(nsURI): | |||
| if nsURI in ns_map: | |||
| return (ns_map[nsURI] + ':', '') | |||
| if self._env_ns.has_key(nsURI): | |||
| if nsURI in self._env_ns: | |||
| ns = self.envns[nsURI] = ns_map[nsURI] = self._env_ns[nsURI] | |||
| return (ns + ':', '') | |||
| @@ -252,7 +251,7 @@ class SOAPBuilder: | |||
| if self.depth < 2: | |||
| return '' | |||
| if not self.ids.has_key(id(obj)): | |||
| if id(obj) not in self.ids: | |||
| n = self.ids[id(obj)] = self.icounter | |||
| self.icounter = n + 1 | |||
| @@ -265,7 +264,7 @@ class SOAPBuilder: | |||
| self.multirefs.append((obj, tag)) | |||
| else: | |||
| if self.use_refs == 0: | |||
| raise RecursionError, "Cannot serialize recursive object" | |||
| raise RecursionError("Cannot serialize recursive object") | |||
| n = self.ids[id(obj)] | |||
| @@ -279,12 +278,12 @@ class SOAPBuilder: | |||
| # dumpers | |||
| def dump(self, obj, tag = None, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump.", "obj=", obj | |||
| if self.config.debug: print("In dump.", "obj=", obj) | |||
| ns_map = ns_map.copy() | |||
| self.depth += 1 | |||
| if type(tag) not in (NoneType, StringType, UnicodeType): | |||
| raise KeyError, "tag must be a string or None" | |||
| raise KeyError("tag must be a string or None") | |||
| self.dump_dispatch(obj, tag, typed, ns_map) | |||
| self.depth -= 1 | |||
| @@ -293,7 +292,7 @@ class SOAPBuilder: | |||
| def dumper(self, nsURI, obj_type, obj, tag, typed = 1, ns_map = {}, | |||
| rootattr = '', id = '', | |||
| xml = '<%(tag)s%(type)s%(id)s%(attrs)s%(root)s>%(data)s</%(tag)s>\n'): | |||
| if self.config.debug: print "In dumper." | |||
| if self.config.debug: print("In dumper.") | |||
| if nsURI == None: | |||
| nsURI = self.config.typesNamespaceURI | |||
| @@ -324,7 +323,7 @@ class SOAPBuilder: | |||
| "id": id, "attrs": a} | |||
| def dump_float(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_float." | |||
| if self.config.debug: print("In dump_float.") | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| @@ -346,7 +345,7 @@ class SOAPBuilder: | |||
| None, "double", obj, tag, typed, ns_map, self.genroot(ns_map))) | |||
| def dump_int(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_int." | |||
| if self.config.debug: print("In dump_int.") | |||
| # fix error "Bad types (class java.math.BigInteger -> class java.lang.Integer)" | |||
| if isinstance(obj, LongType): | |||
| @@ -358,12 +357,12 @@ class SOAPBuilder: | |||
| ns_map, self.genroot(ns_map))) | |||
| def dump_bool(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_bool." | |||
| if self.config.debug: print("In dump_bool.") | |||
| self.out.append(self.dumper(None, 'boolean', obj, tag, typed, | |||
| ns_map, self.genroot(ns_map))) | |||
| def dump_string(self, obj, tag, typed = 0, ns_map = {}): | |||
| if self.config.debug: print "In dump_string." | |||
| if self.config.debug: print("In dump_string.") | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| @@ -381,7 +380,7 @@ class SOAPBuilder: | |||
| dump_unicode = dump_string | |||
| def dump_None(self, obj, tag, typed = 0, ns_map = {}): | |||
| if self.config.debug: print "In dump_None." | |||
| if self.config.debug: print("In dump_None.") | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| ns = self.genns(ns_map, self.config.schemaNamespaceURI)[0] | |||
| @@ -392,7 +391,7 @@ class SOAPBuilder: | |||
| dump_NoneType = dump_None # For Python 2.2+ | |||
| def dump_list(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_list.", "obj=", obj | |||
| if self.config.debug: print("In dump_list.", "obj=", obj) | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| @@ -512,7 +511,7 @@ class SOAPBuilder: | |||
| dump_tuple = dump_list | |||
| def dump_map(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_map.", "obj=", obj | |||
| if self.config.debug: print("In dump_map.", "obj=", obj) | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| @@ -566,7 +565,7 @@ class SOAPBuilder: | |||
| self.out.append("</%sFault>\n" % vns) | |||
| def dump_dictionary(self, obj, tag, typed = 1, ns_map = {}): | |||
| if self.config.debug: print "In dump_dictionary." | |||
| if self.config.debug: print("In dump_dictionary.") | |||
| tag = tag or self.gentag() | |||
| tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding | |||
| @@ -580,7 +579,7 @@ class SOAPBuilder: | |||
| self.out.append('<%s%s%s%s>\n' % | |||
| (tag, id, a, self.genroot(ns_map))) | |||
| for (k, v) in obj.items(): | |||
| for (k, v) in list(obj.items()): | |||
| if k[0] != "_": | |||
| self.dump(v, k, 1, ns_map) | |||
| @@ -607,11 +606,11 @@ class SOAPBuilder: | |||
| (Exception, self.dump_exception), | |||
| (mapType, self.dump_map), | |||
| (arrayType, self.dump_list), | |||
| (basestring, self.dump_string), | |||
| (str, self.dump_string), | |||
| (NoneType, self.dump_None), | |||
| (bool, self.dump_bool), | |||
| (int, self.dump_int), | |||
| (long, self.dump_int), | |||
| (int, self.dump_int), | |||
| (list, self.dump_list), | |||
| (tuple, self.dump_list), | |||
| (dict, self.dump_dictionary), | |||
| @@ -644,7 +643,7 @@ class SOAPBuilder: | |||
| tag = ns + tag | |||
| self.out.append("<%s%s%s%s%s>\n" % (tag, ndecl, id, a, r)) | |||
| keylist = obj.__dict__.keys() | |||
| keylist = list(obj.__dict__.keys()) | |||
| # first write out items with order information | |||
| if hasattr(obj, '_keyord'): | |||
| @@ -688,7 +687,7 @@ class SOAPBuilder: | |||
| if d1 is None and hasattr(obj, "__slots__"): | |||
| d1 = dict(((k, getattr(obj, k)) for k in obj.__slots__)) | |||
| if d1 is not None: | |||
| for (k, v) in d1.items(): | |||
| for (k, v) in list(d1.items()): | |||
| if k[0] != "_": | |||
| self.dump(v, k, 1, ns_map) | |||
| @@ -40,33 +40,34 @@ | |||
| ################################################################################ | |||
| """ | |||
| from __future__ import nested_scopes | |||
| ident = '$Id: Server.py 1468 2008-05-24 01:55:33Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| #import xml.sax | |||
| import socket | |||
| import sys | |||
| import SocketServer | |||
| from types import * | |||
| import BaseHTTPServer | |||
| import thread | |||
| import socketserver | |||
| from .types import * | |||
| import http.server | |||
| import _thread | |||
| # SOAPpy modules | |||
| from Parser import parseSOAPRPC | |||
| from Config import Config | |||
| from Types import faultType, voidType, simplify | |||
| from NS import NS | |||
| from SOAPBuilder import buildSOAP | |||
| from Utilities import debugHeader, debugFooter | |||
| from .Parser import parseSOAPRPC | |||
| from .Config import Config | |||
| from .Types import faultType, voidType, simplify | |||
| from .NS import NS | |||
| from .SOAPBuilder import buildSOAP | |||
| from .Utilities import debugHeader, debugFooter | |||
| import collections | |||
| try: from M2Crypto import SSL | |||
| except: pass | |||
| ident = '$Id: Server.py 1468 2008-05-24 01:55:33Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| ################################################################################ | |||
| # Call context dictionary | |||
| @@ -76,7 +77,7 @@ _contexts = dict() | |||
| def GetSOAPContext(): | |||
| global _contexts | |||
| return _contexts[thread.get_ident()] | |||
| return _contexts[_thread.get_ident()] | |||
| ################################################################################ | |||
| # Server | |||
| @@ -93,7 +94,7 @@ class MethodSig: | |||
| self.__name__ = func.__name__ | |||
| def __call__(self, *args, **kw): | |||
| return apply(self.func,args,kw) | |||
| return self.func(*args, **kw) | |||
| class SOAPContext: | |||
| def __init__(self, header, body, attrs, xmldata, connection, httpheaders, | |||
| @@ -111,7 +112,7 @@ class SOAPContext: | |||
| class HeaderHandler: | |||
| # Initially fail out if there are any problems. | |||
| def __init__(self, header, attrs): | |||
| for i in header.__dict__.keys(): | |||
| for i in list(header.__dict__.keys()): | |||
| if i[0] == "_": | |||
| continue | |||
| @@ -123,7 +124,7 @@ class HeaderHandler: | |||
| fault = 0 | |||
| if fault: | |||
| raise faultType, ("%s:MustUnderstand" % NS.ENV_T, | |||
| raise faultType("%s:MustUnderstand" % NS.ENV_T, | |||
| "Required Header Misunderstood", | |||
| "%s" % i) | |||
| @@ -133,13 +134,13 @@ class HeaderHandler: | |||
| class SOAPServerBase: | |||
| def get_request(self): | |||
| sock, addr = SocketServer.TCPServer.get_request(self) | |||
| sock, addr = socketserver.TCPServer.get_request(self) | |||
| if self.ssl_context: | |||
| sock = SSL.Connection(self.ssl_context, sock) | |||
| sock._setup_ssl(addr) | |||
| if sock.accept_ssl() != 1: | |||
| raise socket.error, "Couldn't accept SSL connection" | |||
| raise socket.error("Couldn't accept SSL connection") | |||
| return sock, addr | |||
| @@ -157,7 +158,7 @@ class SOAPServerBase: | |||
| if namespace == '' and path != '': | |||
| namespace = path.replace("/", ":") | |||
| if namespace[0] == ":": namespace = namespace[1:] | |||
| if self.funcmap.has_key(namespace): | |||
| if namespace in self.funcmap: | |||
| self.funcmap[namespace][funcName] = function | |||
| else: | |||
| self.funcmap[namespace] = {funcName : function} | |||
| @@ -168,7 +169,7 @@ class SOAPServerBase: | |||
| namespace = path.replace("/", ":") | |||
| if namespace[0] == ":": namespace = namespace[1:] | |||
| for i in dir(object.__class__): | |||
| if i[0] != "_" and callable(getattr(object, i)): | |||
| if i[0] != "_" and isinstance(getattr(object, i), collections.Callable): | |||
| self.registerKWFunction(getattr(object,i), namespace) | |||
| # convenience - wraps your func for you. | |||
| @@ -189,7 +190,7 @@ class SOAPServerBase: | |||
| del self.objmap[namespace] | |||
| class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| class SOAPRequestHandler(http.server.BaseHTTPRequestHandler): | |||
| ignore_ext = True | |||
| def version_string(self): | |||
| return '<a href="http://pywebsvcs.sf.net">' + \ | |||
| @@ -198,7 +199,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| def date_time_string(self): | |||
| self.__last_date_time_string = \ | |||
| BaseHTTPServer.BaseHTTPRequestHandler.\ | |||
| http.server.BaseHTTPRequestHandler.\ | |||
| date_time_string(self) | |||
| return self.__last_date_time_string | |||
| @@ -211,9 +212,8 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| if self.server.config.dumpHeadersIn: | |||
| s = 'Incoming HTTP headers' | |||
| debugHeader(s) | |||
| print self.raw_requestline.strip() | |||
| print "\n".join(map (lambda x: x.strip(), | |||
| self.headers.headers)) | |||
| print(self.raw_requestline.strip()) | |||
| print("\n".join([x.strip() for x in self.headers.headers])) | |||
| debugFooter(s) | |||
| data = self.rfile.read(int(self.headers["Content-length"])) | |||
| @@ -221,9 +221,9 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| if self.server.config.dumpSOAPIn: | |||
| s = 'Incoming SOAP' | |||
| debugHeader(s) | |||
| print data, | |||
| print(data, end=' ') | |||
| if data[-1] != '\n': | |||
| print() | |||
| debugFooter(s) | |||
| (r, header, body, attrs) = \ | |||
| @@ -255,7 +255,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| if self.server.config.specialArgs: | |||
| for (k,v) in kw.items(): | |||
| for (k,v) in list(kw.items()): | |||
| if k[0]=="v": | |||
| try: | |||
| @@ -282,11 +282,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| # authorization method | |||
| a = None | |||
| keylist = ordered_args.keys() | |||
| keylist = list(ordered_args.keys()) | |||
| keylist.sort() | |||
| # create list in proper order w/o names | |||
| tmp = map( lambda x: ordered_args[x], keylist) | |||
| tmp = [ordered_args[x] for x in keylist] | |||
| ordered_args = tmp | |||
| #print '<-> Argument Matching Yielded:' | |||
| @@ -303,15 +303,15 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| try: | |||
| # First look for registered functions | |||
| if self.server.funcmap.has_key(ns) and \ | |||
| self.server.funcmap[ns].has_key(method): | |||
| if ns in self.server.funcmap and \ | |||
| method in self.server.funcmap[ns]: | |||
| f = self.server.funcmap[ns][method] | |||
| # look for the authorization method | |||
| if self.server.config.authMethod != None: | |||
| authmethod = self.server.config.authMethod | |||
| if self.server.funcmap.has_key(ns) and \ | |||
| self.server.funcmap[ns].has_key(authmethod): | |||
| if ns in self.server.funcmap and \ | |||
| authmethod in self.server.funcmap[ns]: | |||
| a = self.server.funcmap[ns][authmethod] | |||
| else: | |||
| # Now look at registered objects | |||
| @@ -357,11 +357,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| # and it won't be necessary here | |||
| # for now we're doing both | |||
| if "SOAPAction".lower() not in self.headers.keys() or \ | |||
| if "SOAPAction".lower() not in list(self.headers.keys()) or \ | |||
| self.headers["SOAPAction"] == "\"\"": | |||
| self.headers["SOAPAction"] = method | |||
| thread_id = thread.get_ident() | |||
| thread_id = _thread.get_ident() | |||
| _contexts[thread_id] = SOAPContext(header, body, | |||
| attrs, data, | |||
| self.connection, | |||
| @@ -370,7 +370,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| # Do an authorization check | |||
| if a != None: | |||
| if not apply(a, (), {"_SOAPContext" : | |||
| if not a(*(), **{"_SOAPContext" : | |||
| _contexts[thread_id] }): | |||
| raise faultType("%s:Server" % NS.ENV_T, | |||
| "Authorization failed.", | |||
| @@ -386,28 +386,28 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| if self.server.config.specialArgs: | |||
| if c: | |||
| named_args["_SOAPContext"] = c | |||
| fr = apply(f, ordered_args, named_args) | |||
| fr = f(*ordered_args, **named_args) | |||
| elif f.keywords: | |||
| # This is lame, but have to de-unicode | |||
| # keywords | |||
| strkw = {} | |||
| for (k, v) in kw.items(): | |||
| for (k, v) in list(kw.items()): | |||
| strkw[str(k)] = v | |||
| if c: | |||
| strkw["_SOAPContext"] = c | |||
| fr = apply(f, (), strkw) | |||
| fr = f(*(), **strkw) | |||
| elif c: | |||
| fr = apply(f, args, {'_SOAPContext':c}) | |||
| fr = f(*args, **{'_SOAPContext':c}) | |||
| else: | |||
| fr = apply(f, args, {}) | |||
| fr = f(*args, **{}) | |||
| else: | |||
| if self.server.config.specialArgs: | |||
| fr = apply(f, ordered_args, named_args) | |||
| fr = f(*ordered_args, **named_args) | |||
| else: | |||
| fr = apply(f, args, {}) | |||
| fr = f(*args, **{}) | |||
| if type(fr) == type(self) and \ | |||
| @@ -422,10 +422,10 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| config = self.server.config) | |||
| # Clean up _contexts | |||
| if _contexts.has_key(thread_id): | |||
| if thread_id in _contexts: | |||
| del _contexts[thread_id] | |||
| except Exception, e: | |||
| except Exception as e: | |||
| import traceback | |||
| info = sys.exc_info() | |||
| @@ -457,7 +457,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| status = 500 | |||
| else: | |||
| status = 200 | |||
| except faultType, e: | |||
| except faultType as e: | |||
| import traceback | |||
| info = sys.exc_info() | |||
| try: | |||
| @@ -479,7 +479,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| resp = buildSOAP(e, encoding = self.server.encoding, | |||
| config = self.server.config) | |||
| status = 500 | |||
| except Exception, e: | |||
| except Exception as e: | |||
| # internal error, report as HTTP server error | |||
| if self.server.config.dumpFaultInfo: | |||
| @@ -501,13 +501,13 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| self.request_version != 'HTTP/0.9': | |||
| s = 'Outgoing HTTP headers' | |||
| debugHeader(s) | |||
| if self.responses.has_key(status): | |||
| if status in self.responses: | |||
| s = ' ' + self.responses[status][0] | |||
| else: | |||
| s = '' | |||
| print "%s %d%s" % (self.protocol_version, 500, s) | |||
| print "Server:", self.version_string() | |||
| print "Date:", self.__last_date_time_string | |||
| print("%s %d%s" % (self.protocol_version, 500, s)) | |||
| print("Server:", self.version_string()) | |||
| print("Date:", self.__last_date_time_string) | |||
| debugFooter(s) | |||
| else: | |||
| # got a valid SOAP response | |||
| @@ -524,23 +524,23 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| self.request_version != 'HTTP/0.9': | |||
| s = 'Outgoing HTTP headers' | |||
| debugHeader(s) | |||
| if self.responses.has_key(status): | |||
| if status in self.responses: | |||
| s = ' ' + self.responses[status][0] | |||
| else: | |||
| s = '' | |||
| print "%s %d%s" % (self.protocol_version, status, s) | |||
| print "Server:", self.version_string() | |||
| print "Date:", self.__last_date_time_string | |||
| print "Content-type:", t | |||
| print "Content-length:", len(resp) | |||
| print("%s %d%s" % (self.protocol_version, status, s)) | |||
| print("Server:", self.version_string()) | |||
| print("Date:", self.__last_date_time_string) | |||
| print("Content-type:", t) | |||
| print("Content-length:", len(resp)) | |||
| debugFooter(s) | |||
| if self.server.config.dumpSOAPOut: | |||
| s = 'Outgoing SOAP' | |||
| debugHeader(s) | |||
| print resp, | |||
| print(resp, end=' ') | |||
| if resp[-1] != '\n': | |||
| print() | |||
| debugFooter(s) | |||
| self.wfile.write(resp) | |||
| @@ -573,11 +573,11 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| if path.endswith('wsdl'): | |||
| method = 'wsdl' | |||
| function = namespace = None | |||
| if self.server.funcmap.has_key(namespace) \ | |||
| and self.server.funcmap[namespace].has_key(method): | |||
| if namespace in self.server.funcmap \ | |||
| and method in self.server.funcmap[namespace]: | |||
| function = self.server.funcmap[namespace][method] | |||
| else: | |||
| if namespace in self.server.objmap.keys(): | |||
| if namespace in list(self.server.objmap.keys()): | |||
| function = self.server.objmap[namespace] | |||
| l = method.split(".") | |||
| for i in l: | |||
| @@ -587,7 +587,7 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| self.send_response(200) | |||
| self.send_header("Content-type", 'text/plain') | |||
| self.end_headers() | |||
| response = apply(function, ()) | |||
| response = function(*()) | |||
| self.wfile.write(str(response)) | |||
| return | |||
| @@ -618,16 +618,16 @@ class SOAPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| def log_message(self, format, *args): | |||
| if self.server.log: | |||
| BaseHTTPServer.BaseHTTPRequestHandler.\ | |||
| http.server.BaseHTTPRequestHandler.\ | |||
| log_message (self, format, *args) | |||
| class SOAPInsecureRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |||
| class SOAPInsecureRequestHandler(http.server.BaseHTTPRequestHandler): | |||
| '''Request handler that does load POSTed doctypes''' | |||
| ignore_ext = False | |||
| class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
| class SOAPServer(SOAPServerBase, socketserver.TCPServer): | |||
| def __init__(self, addr = ('localhost', 8000), | |||
| RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
| @@ -638,8 +638,7 @@ class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
| ''.encode(encoding) | |||
| if ssl_context != None and not config.SSLserver: | |||
| raise AttributeError, \ | |||
| "SSL server not supported by this Python installation" | |||
| raise AttributeError("SSL server not supported by this Python installation") | |||
| self.namespace = namespace | |||
| self.objmap = {} | |||
| @@ -651,10 +650,10 @@ class SOAPServer(SOAPServerBase, SocketServer.TCPServer): | |||
| self.allow_reuse_address= 1 | |||
| SocketServer.TCPServer.__init__(self, addr, RequestHandler) | |||
| socketserver.TCPServer.__init__(self, addr, RequestHandler) | |||
| class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
| class ThreadingSOAPServer(SOAPServerBase, socketserver.ThreadingTCPServer): | |||
| def __init__(self, addr = ('localhost', 8000), | |||
| RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
| @@ -665,8 +664,7 @@ class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
| ''.encode(encoding) | |||
| if ssl_context != None and not config.SSLserver: | |||
| raise AttributeError, \ | |||
| "SSL server not supported by this Python installation" | |||
| raise AttributeError("SSL server not supported by this Python installation") | |||
| self.namespace = namespace | |||
| self.objmap = {} | |||
| @@ -678,12 +676,12 @@ class ThreadingSOAPServer(SOAPServerBase, SocketServer.ThreadingTCPServer): | |||
| self.allow_reuse_address= 1 | |||
| SocketServer.ThreadingTCPServer.__init__(self, addr, RequestHandler) | |||
| socketserver.ThreadingTCPServer.__init__(self, addr, RequestHandler) | |||
| # only define class if Unix domain sockets are available | |||
| if hasattr(socket, "AF_UNIX"): | |||
| class SOAPUnixSocketServer(SOAPServerBase, SocketServer.UnixStreamServer): | |||
| class SOAPUnixSocketServer(SOAPServerBase, socketserver.UnixStreamServer): | |||
| def __init__(self, addr = 8000, | |||
| RequestHandler = SOAPRequestHandler, log = 0, encoding = 'UTF-8', | |||
| @@ -694,8 +692,7 @@ if hasattr(socket, "AF_UNIX"): | |||
| ''.encode(encoding) | |||
| if ssl_context != None and not config.SSLserver: | |||
| raise AttributeError, \ | |||
| "SSL server not supported by this Python installation" | |||
| raise AttributeError("SSL server not supported by this Python installation") | |||
| self.namespace = namespace | |||
| self.objmap = {} | |||
| @@ -707,7 +704,7 @@ if hasattr(socket, "AF_UNIX"): | |||
| self.allow_reuse_address= 1 | |||
| SocketServer.UnixStreamServer.__init__(self, str(addr), RequestHandler) | |||
| socketserver.UnixStreamServer.__init__(self, str(addr), RequestHandler) | |||
| @@ -2,10 +2,10 @@ | |||
| authentication""" | |||
| ident = '$Id: URLopener.py 541 2004-01-31 04:20:06Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| from Config import Config | |||
| from urllib import FancyURLopener | |||
| from .Config import Config | |||
| from urllib.request import FancyURLopener | |||
| class URLopener(FancyURLopener): | |||
| @@ -34,15 +34,15 @@ | |||
| """ | |||
| ident = '$Id: Utilities.py 1298 2006-11-07 00:54:15Z sanxiyn $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| import re | |||
| import string | |||
| import sys | |||
| from types import * | |||
| from .types import * | |||
| # SOAPpy modules | |||
| from Errors import * | |||
| from .Errors import * | |||
| ################################################################################ | |||
| # Utility infielders | |||
| @@ -84,8 +84,7 @@ def decodeHexString(data): | |||
| try: | |||
| c = conv[c] | |||
| except KeyError: | |||
| raise ValueError, \ | |||
| "invalid hex string character `%s'" % c | |||
| raise ValueError("invalid hex string character `%s'" % c) | |||
| if low: | |||
| bin += chr(high * 16 + c) | |||
| @@ -97,12 +96,11 @@ def decodeHexString(data): | |||
| i += 1 | |||
| if low: | |||
| raise ValueError, "invalid hex string length" | |||
| raise ValueError("invalid hex string length") | |||
| while i < len(data): | |||
| if data[i] not in string.whitespace: | |||
| raise ValueError, \ | |||
| "invalid hex string character `%s'" % c | |||
| raise ValueError("invalid hex string character `%s'" % c) | |||
| i += 1 | |||
| @@ -127,7 +125,7 @@ def cleanDate(d, first = 0): | |||
| names = ('year', 'month', 'day', 'hours', 'minutes', 'seconds') | |||
| if len(d) != 6: | |||
| raise ValueError, "date must have 6 elements" | |||
| raise ValueError("date must have 6 elements") | |||
| for i in range(first, 6): | |||
| s = d[i] | |||
| @@ -139,38 +137,38 @@ def cleanDate(d, first = 0): | |||
| except OverflowError: | |||
| if i > 0: | |||
| raise | |||
| s = long(s) | |||
| s = int(s) | |||
| if s != d[i]: | |||
| raise ValueError, "%s must be integral" % names[i] | |||
| raise ValueError("%s must be integral" % names[i]) | |||
| d[i] = s | |||
| elif type(s) == LongType: | |||
| try: s = int(s) | |||
| except: pass | |||
| elif type(s) != IntType: | |||
| raise TypeError, "%s isn't a valid type" % names[i] | |||
| raise TypeError("%s isn't a valid type" % names[i]) | |||
| if i == first and s < 0: | |||
| continue | |||
| if ranges[i] != None and \ | |||
| (s < ranges[i][0] or ranges[i][1] < s): | |||
| raise ValueError, "%s out of range" % names[i] | |||
| raise ValueError("%s out of range" % names[i]) | |||
| if first < 6 and d[5] >= 61: | |||
| raise ValueError, "seconds out of range" | |||
| raise ValueError("seconds out of range") | |||
| if first < 2: | |||
| leap = first < 1 and leapMonth(d[0], d[1]) | |||
| if d[2] > months[d[1]] + leap: | |||
| raise ValueError, "day out of range" | |||
| raise ValueError("day out of range") | |||
| def debugHeader(title): | |||
| s = '*** ' + title + ' ' | |||
| print s + ('*' * (72 - len(s))) | |||
| print(s + ('*' * (72 - len(s)))) | |||
| def debugFooter(title): | |||
| print '*' * 72 | |||
| print('*' * 72) | |||
| sys.stdout.flush() | |||
| @@ -3,14 +3,14 @@ | |||
| Rudimentary support.""" | |||
| ident = '$Id: WSDL.py 1467 2008-05-16 23:32:51Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| import wstools | |||
| import xml | |||
| from Errors import Error | |||
| from Client import SOAPProxy, SOAPAddress | |||
| from Config import Config | |||
| import urllib | |||
| from .Errors import Error | |||
| from .Client import SOAPProxy, SOAPAddress | |||
| from .Config import Config | |||
| import urllib.request, urllib.parse, urllib.error | |||
| class Proxy: | |||
| """WSDL Proxy. | |||
| @@ -41,14 +41,14 @@ class Proxy: | |||
| # From Mark Pilgrim's "Dive Into Python" toolkit.py--open anything. | |||
| if self.wsdl is None and hasattr(wsdlsource, "read"): | |||
| print 'stream:', wsdlsource | |||
| print('stream:', wsdlsource) | |||
| try: | |||
| self.wsdl = reader.loadFromStream(wsdlsource) | |||
| except xml.parsers.expat.ExpatError, e: | |||
| newstream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
| except xml.parsers.expat.ExpatError as e: | |||
| newstream = urllib.request.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
| buf = newstream.readlines() | |||
| raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf)) | |||
| raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf))) | |||
| # NOT TESTED (as of April 17, 2003) | |||
| @@ -63,25 +63,25 @@ class Proxy: | |||
| self.wsdl = reader.loadFromFile(wsdlsource) | |||
| #print 'file' | |||
| except (IOError, OSError): pass | |||
| except xml.parsers.expat.ExpatError, e: | |||
| newstream = urllib.urlopen(wsdlsource) | |||
| except xml.parsers.expat.ExpatError as e: | |||
| newstream = urllib.request.urlopen(wsdlsource) | |||
| buf = newstream.readlines() | |||
| raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf)) | |||
| raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf))) | |||
| if self.wsdl is None: | |||
| try: | |||
| stream = urllib.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
| stream = urllib.request.URLopener(key_file=config.SSL.key_file, cert_file=config.SSL.cert_file).open(wsdlsource) | |||
| self.wsdl = reader.loadFromStream(stream, wsdlsource) | |||
| except (IOError, OSError): pass | |||
| except xml.parsers.expat.ExpatError, e: | |||
| newstream = urllib.urlopen(wsdlsource) | |||
| except xml.parsers.expat.ExpatError as e: | |||
| newstream = urllib.request.urlopen(wsdlsource) | |||
| buf = newstream.readlines() | |||
| raise Error, "Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf)) | |||
| raise Error("Unable to parse WSDL file at %s: \n\t%s" % \ | |||
| (wsdlsource, "\t".join(buf))) | |||
| if self.wsdl is None: | |||
| import StringIO | |||
| import io | |||
| self.wsdl = reader.loadFromString(str(wsdlsource)) | |||
| #print 'string' | |||
| @@ -102,7 +102,7 @@ class Proxy: | |||
| def __str__(self): | |||
| s = '' | |||
| for method in self.methods.values(): | |||
| for method in list(self.methods.values()): | |||
| s += str(method) | |||
| return s | |||
| @@ -111,7 +111,7 @@ class Proxy: | |||
| Raises AttributeError is method name is not found.""" | |||
| if not self.methods.has_key(name): raise AttributeError, name | |||
| if name not in self.methods: raise AttributeError(name) | |||
| callinfo = self.methods[name] | |||
| self.soapproxy.proxy = SOAPAddress(callinfo.location) | |||
| @@ -120,18 +120,18 @@ class Proxy: | |||
| return self.soapproxy.__getattr__(name) | |||
| def show_methods(self): | |||
| for key in self.methods.keys(): | |||
| for key in list(self.methods.keys()): | |||
| method = self.methods[key] | |||
| print "Method Name:", key.ljust(15) | |||
| print("Method Name:", key.ljust(15)) | |||
| print() | |||
| inps = method.inparams | |||
| for parm in range(len(inps)): | |||
| details = inps[parm] | |||
| print " In #%d: %s (%s)" % (parm, details.name, details.type) | |||
| print(" In #%d: %s (%s)" % (parm, details.name, details.type)) | |||
| print() | |||
| outps = method.outparams | |||
| for parm in range(len(outps)): | |||
| details = outps[parm] | |||
| print " Out #%d: %s (%s)" % (parm, details.name, details.type) | |||
| print(" Out #%d: %s (%s)" % (parm, details.name, details.type)) | |||
| print() | |||
| @@ -1,15 +1,15 @@ | |||
| ident = '$Id: __init__.py 541 2004-01-31 04:20:06Z warnes $' | |||
| from version import __version__ | |||
| from .version import __version__ | |||
| from Client import * | |||
| from Config import * | |||
| from Errors import * | |||
| from NS import * | |||
| from Parser import * | |||
| from SOAPBuilder import * | |||
| from Server import * | |||
| from Types import * | |||
| from Utilities import * | |||
| from .Client import * | |||
| from .Config import * | |||
| from .Errors import * | |||
| from .NS import * | |||
| from .Parser import * | |||
| from .SOAPBuilder import * | |||
| from .Server import * | |||
| from .Types import * | |||
| from .Utilities import * | |||
| import wstools | |||
| import WSDL | |||
| from . import WSDL | |||
| @@ -21,12 +21,12 @@ server = WSDL.Proxy('http://www.xmethods.net/sd/2001/BabelFishService.wsdl', | |||
| english = "Hi Friend!" | |||
| print "Babelfish Translations" | |||
| print "------------------------" | |||
| print "English: '%s'" % english | |||
| print "French: '%s'" % server.BabelFish('en_fr',english) | |||
| print "Spanish: '%s'" % server.BabelFish('en_es',english) | |||
| print "Italian: '%s'" % server.BabelFish('en_it',english) | |||
| print "German: '%s'" % server.BabelFish('en_de',english) | |||
| print "Done." | |||
| print("Babelfish Translations") | |||
| print("------------------------") | |||
| print("English: '%s'" % english) | |||
| print("French: '%s'" % server.BabelFish('en_fr',english)) | |||
| print("Spanish: '%s'" % server.BabelFish('en_es',english)) | |||
| print("Italian: '%s'" % server.BabelFish('en_it',english)) | |||
| print("German: '%s'" % server.BabelFish('en_de',english)) | |||
| print("Done.") | |||
| @@ -57,19 +57,19 @@ kw2 = retval[1][1] | |||
| assert(retval[0] == adgroupid) | |||
| for key in kw1.keys(): | |||
| for key in list(kw1.keys()): | |||
| assert(kw1[key]==keyword1[key]) | |||
| for key in kw2.keys(): | |||
| for key in list(kw2.keys()): | |||
| assert(kw2[key]==keyword2[key]) | |||
| # Check that the header is preserved | |||
| retval = server.echo_header((adgroupid, keylist)) | |||
| assert(retval[1].has_key('useragent')) | |||
| assert('useragent' in retval[1]) | |||
| assert(retval[1]['useragent'] == 'foo') | |||
| server.quit() | |||
| print "Success!" | |||
| print("Success!") | |||
| @@ -20,24 +20,24 @@ Config.simplify_objects = 0 | |||
| server = SOAPProxy("http://localhost:9900/") | |||
| x = u'uMOO' # Single unicode string | |||
| x = 'uMOO' # Single unicode string | |||
| y = server.echo_simple((x,)) | |||
| assert( x==y[0] ) | |||
| x = [u'uMoo1',u'uMoo2'] # array of unicode strings | |||
| x = ['uMoo1','uMoo2'] # array of unicode strings | |||
| y = server.echo_simple(x) | |||
| assert( x[0] == y[0] ) | |||
| assert( x[1] == y[1] ) | |||
| x = { | |||
| u'A':1, | |||
| u'B':u'B', | |||
| 'C':u'C', | |||
| 'A':1, | |||
| 'B':'B', | |||
| 'C':'C', | |||
| 'D':'D' | |||
| } | |||
| y = server.echo_simple(x) | |||
| for key in x.keys(): | |||
| for key in list(x.keys()): | |||
| assert( x[key] == y[0][key] ) | |||
| print "Success" | |||
| print("Success") | |||
| @@ -35,4 +35,4 @@ z = parseSOAPRPC(detailed_fault.strip() ) | |||
| assert(z.__class__==faultType) | |||
| assert(z.faultstring=="Exception thrown on Server") | |||
| assert(z.detail.loginFailureFault.description=='Login failure (504):Unknown User') | |||
| print "Success" | |||
| print("Success") | |||
| @@ -8,4 +8,4 @@ results = server.doGoogleSearch(key, 'warnes', 0, 10, False, "", | |||
| for i in range(len(results.resultElements)): | |||
| res = results.resultElements[i] | |||
| print '%d: %s --> %s' % ( i, res.title, res.URL ) | |||
| print('%d: %s --> %s' % ( i, res.title, res.URL )) | |||
| @@ -4,5 +4,5 @@ from SOAPpy import * | |||
| one = typedArrayType(data=[1],typed=type(1)) | |||
| tmp = typedArrayType(data=[], typed=type(1)) | |||
| print buildSOAP( one ) | |||
| print buildSOAP( tmp ) | |||
| print(buildSOAP( one )) | |||
| print(buildSOAP( tmp )) | |||
| @@ -31,4 +31,4 @@ server = SOAPProxy(SoapEndpointURL, | |||
| ) | |||
| for category in server.GetCategories(): | |||
| print category | |||
| print(category) | |||
| @@ -16,15 +16,15 @@ ns = "http://soapinterop.org/" | |||
| serv = SOAPProxy(endpoint, namespace=ns, soapaction=sa) | |||
| try: hand = serv.dealHand(NumberOfCards = 13, StringSeparator = '\n') | |||
| except: print "no dealHand"; hand = 0 | |||
| except: print("no dealHand"); hand = 0 | |||
| try: sortedhand = serv.dealArrangedHand(NumberOfCards=13,StringSeparator='\n') | |||
| except: print "no sorted"; sortedhand = 0 | |||
| except: print("no sorted"); sortedhand = 0 | |||
| try: card = serv.dealCard() | |||
| except: print "no card"; card = 0 | |||
| except: print("no card"); card = 0 | |||
| print "*****hand****\n",hand,"\n*********" | |||
| print "******sortedhand*****\n",sortedhand,"\n*********" | |||
| print "card:",card | |||
| print("*****hand****\n",hand,"\n*********") | |||
| print("******sortedhand*****\n",sortedhand,"\n*********") | |||
| print("card:",card) | |||
| serv.quit() | |||
| @@ -26,7 +26,7 @@ for suit in [__cs, __ds, __hs, __ss]: | |||
| def deal(num): | |||
| if num not in range(1,53): | |||
| if num not in list(range(1,53)): | |||
| return -1 | |||
| else: | |||
| alreadydealt = [] | |||
| @@ -82,7 +82,7 @@ def dealHand (NumberOfCards, StringSeparator): | |||
| def dealArrangedHand (NumberOfCards, StringSeparator): | |||
| if NumberOfCards < 1 or NumberOfCards > 52: | |||
| raise ValueError, "NumberOfCards must be between 1 and 52" | |||
| raise ValueError("NumberOfCards must be between 1 and 52") | |||
| unarranged = deal(NumberOfCards) | |||
| hand = arrangeHand(unarranged) | |||
| return string.join(hand, StringSeparator) | |||
| @@ -38,65 +38,65 @@ else: | |||
| # Echo... | |||
| try: | |||
| print server.echo("MOO") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server.echo("MOO")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver.echo("MOO") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver.echo("MOO")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # ...in an object | |||
| try: | |||
| print server.echo_ino("moo") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server.echo_ino("moo")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver.echo_ino("cow") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver.echo_ino("cow")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # ...in an object in an object | |||
| try: | |||
| print server.prop.echo2("moo") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server.prop.echo2("moo")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver.prop.echo2("cow") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver.prop.echo2("cow")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # ...with keyword arguments | |||
| try: | |||
| print server.echo_wkw(third = "three", first = "one", second = "two") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server.echo_wkw(third = "three", first = "one", second = "two")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver.echo_wkw(third = "three", first = "one", second = "two") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver.echo_wkw(third = "three", first = "one", second = "two")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # ...with a context object | |||
| try: | |||
| print server.echo_wc("moo") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server.echo_wc("moo")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver.echo_wc("cow") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver.echo_wc("cow")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # ...with a header | |||
| hd = headerType(data = {"mystring": "Hello World"}) | |||
| try: | |||
| print server._hd(hd).echo_wc("moo") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(server._hd(hd).echo_wc("moo")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| try: | |||
| print pathserver._hd(hd).echo_wc("cow") | |||
| except Exception, e: | |||
| print "Caught exception: ", e | |||
| print(pathserver._hd(hd).echo_wc("cow")) | |||
| except Exception as e: | |||
| print("Caught exception: ", e) | |||
| # close down server | |||
| server.quit() | |||
| @@ -18,6 +18,6 @@ Config.BuildWithNoNamespacePrefix = 1 | |||
| hd = headerType(data = {"mystring": "Hello World"}) | |||
| server = SOAPProxy("http://localhost:9900/", header=hd) | |||
| print server.echo("Hello world") | |||
| print(server.echo("Hello world")) | |||
| server.quit() | |||
| @@ -36,8 +36,8 @@ def _authorize(*args, **kw): | |||
| global allowAll, Config | |||
| if Config.debug: | |||
| print "Authorize (function) called! (result = %d)" % allowAll | |||
| print "Arguments: %s" % kw | |||
| print("Authorize (function) called! (result = %d)" % allowAll) | |||
| print("Arguments: %s" % kw) | |||
| if allowAll: | |||
| return 1 | |||
| @@ -51,7 +51,7 @@ def echo(s): | |||
| # Test of context retrieval | |||
| ctx = Server.GetSOAPContext() | |||
| if Config.debug: | |||
| print "SOAP Context: ", ctx | |||
| print("SOAP Context: ", ctx) | |||
| return s + s | |||
| @@ -71,10 +71,10 @@ class echoBuilder: | |||
| global allowAll, Config | |||
| if Config.debug: | |||
| print "Authorize (method) called with arguments:" | |||
| print "*args=%s" % str(args) | |||
| print "**kw =%s" % str(kw) | |||
| print "Approved -> %d" % allowAll | |||
| print("Authorize (method) called with arguments:") | |||
| print("*args=%s" % str(args)) | |||
| print("**kw =%s" % str(kw)) | |||
| print("Approved -> %d" % allowAll) | |||
| if allowAll: | |||
| return 1 | |||
| @@ -91,40 +91,40 @@ def echo_wc(s, _SOAPContext): | |||
| # The Context object has extra info about the call | |||
| if Config.debug: | |||
| print "-- XML", sep[7:] | |||
| print("-- XML", sep[7:]) | |||
| # The original XML request | |||
| print c.xmldata | |||
| print(c.xmldata) | |||
| print "-- Header", sep[10:] | |||
| print("-- Header", sep[10:]) | |||
| # The SOAP Header or None if not present | |||
| print c.header | |||
| print(c.header) | |||
| if c.header: | |||
| print "-- Header.mystring", sep[19:] | |||
| print("-- Header.mystring", sep[19:]) | |||
| # An element of the SOAP Header | |||
| print c.header.mystring | |||
| print(c.header.mystring) | |||
| print "-- Body", sep[8:] | |||
| print("-- Body", sep[8:]) | |||
| # The whole Body object | |||
| print c.body | |||
| print(c.body) | |||
| print "-- Peer", sep[8:] | |||
| print("-- Peer", sep[8:]) | |||
| if not GSI: | |||
| # The socket object, useful for | |||
| print c.connection.getpeername() | |||
| print(c.connection.getpeername()) | |||
| else: | |||
| # The socket object, useful for | |||
| print c.connection.get_remote_address() | |||
| print(c.connection.get_remote_address()) | |||
| ctx = c.connection.get_security_context() | |||
| print ctx.inquire()[0].display() | |||
| print(ctx.inquire()[0].display()) | |||
| print "-- SOAPAction", sep[14:] | |||
| print("-- SOAPAction", sep[14:]) | |||
| # The SOAPaction HTTP header | |||
| print c.soapaction | |||
| print(c.soapaction) | |||
| print "-- HTTP headers", sep[16:] | |||
| print("-- HTTP headers", sep[16:]) | |||
| # All the HTTP headers | |||
| print c.httpheaders | |||
| print(c.httpheaders) | |||
| return s + s | |||
| @@ -149,8 +149,7 @@ SSL = 0 | |||
| if len(sys.argv) > 1 and sys.argv[1] == '-s': | |||
| SSL = 1 | |||
| if not Config.SSLserver: | |||
| raise RuntimeError, \ | |||
| "this Python installation doesn't have OpenSSL and M2Crypto" | |||
| raise RuntimeError("this Python installation doesn't have OpenSSL and M2Crypto") | |||
| ssl_context = SSL.Context() | |||
| ssl_context.load_cert('validate/server.pem') | |||
| server = SOAPServer(addr, ssl_context = ssl_context) | |||
| @@ -164,7 +163,7 @@ else: | |||
| server = SOAPServer(addr) | |||
| prefix = 'http' | |||
| print "Server listening at: %s://%s:%d/" % (prefix, addr[0], addr[1]) | |||
| print("Server listening at: %s://%s:%d/" % (prefix, addr[0], addr[1])) | |||
| # register the method | |||
| server.registerFunction(echo) | |||
| @@ -22,38 +22,38 @@ if __name__ == "__main__": | |||
| original_integer = 5 | |||
| result_integer = server.test_integer(original_integer) | |||
| print "original_integer %s" % original_integer | |||
| print "result_integer %s" % result_integer | |||
| print("original_integer %s" % original_integer) | |||
| print("result_integer %s" % result_integer) | |||
| assert(result_integer==original_integer) | |||
| print() | |||
| original_string = "five" | |||
| result_string = server.test_string(original_string) | |||
| print "original_string %s" % original_string | |||
| print "result_string %s" % result_string | |||
| print("original_string %s" % original_string) | |||
| print("result_string %s" % result_string) | |||
| assert(result_string==original_string) | |||
| print() | |||
| original_float = 5.0 | |||
| result_float = server.test_float(original_float) | |||
| print "original_float %s" % original_float | |||
| print "result_float %s" % result_float | |||
| print("original_float %s" % original_float) | |||
| print("result_float %s" % result_float) | |||
| assert(result_float==original_float) | |||
| print() | |||
| original_tuple = (1,2,"three","four",5) | |||
| result_tuple = server.test_tuple(original_tuple) | |||
| print "original_tuple %s" % str(original_tuple) | |||
| print "result_tuple %s" % str(result_tuple) | |||
| print("original_tuple %s" % str(original_tuple)) | |||
| print("result_tuple %s" % str(result_tuple)) | |||
| assert(tuple(result_tuple)==original_tuple) | |||
| print() | |||
| original_list = [5,4,"three",2,1] | |||
| result_list = server.test_list(original_list) | |||
| print "original_list %s" % original_list | |||
| print "result_list %s" % result_list | |||
| print("original_list %s" % original_list) | |||
| print("result_list %s" % result_list) | |||
| assert(result_list==original_list) | |||
| print() | |||
| original_dictionary = { | |||
| 'one': 1, | |||
| @@ -63,9 +63,9 @@ if __name__ == "__main__": | |||
| "five": 5, | |||
| } | |||
| result_dictionary = server.test_dictionary(original_dictionary) | |||
| print "original_dictionary %s" % original_dictionary | |||
| print "result_dictionary %s" % result_dictionary | |||
| print("original_dictionary %s" % original_dictionary) | |||
| print("result_dictionary %s" % result_dictionary) | |||
| assert(result_dictionary==original_dictionary) | |||
| print() | |||
| server.quit() | |||
| @@ -12,27 +12,27 @@ class test_service: | |||
| run = 1 | |||
| def test_integer(self,pass_integer): | |||
| print type(pass_integer) | |||
| print(type(pass_integer)) | |||
| return pass_integer | |||
| def test_string(self,pass_string): | |||
| print type(pass_string) | |||
| print(type(pass_string)) | |||
| return pass_string | |||
| def test_float(self,pass_float): | |||
| print type(pass_float) | |||
| print(type(pass_float)) | |||
| return pass_float | |||
| def test_tuple(self,pass_tuple): | |||
| print type(pass_tuple), pass_tuple | |||
| print(type(pass_tuple), pass_tuple) | |||
| return pass_tuple | |||
| def test_list(self,pass_list): | |||
| print type(pass_list), pass_list | |||
| print(type(pass_list), pass_list) | |||
| return pass_list | |||
| def test_dictionary(self,pass_dictionary): | |||
| print type(pass_dictionary), pass_dictionary | |||
| print(type(pass_dictionary), pass_dictionary) | |||
| return pass_dictionary | |||
| def quit(self): | |||
| @@ -22,29 +22,29 @@ else: | |||
| big = repr('.' * (1<<18) ) | |||
| # ...in an object | |||
| print "server.echo_ino(big):..", | |||
| print("server.echo_ino(big):..", end=' ') | |||
| tmp = server.echo_ino(big) | |||
| print "done" | |||
| print("done") | |||
| # ...in an object in an object | |||
| print "server.prop.echo2(big)..", | |||
| print("server.prop.echo2(big)..", end=' ') | |||
| tmp = server.prop.echo2(big) | |||
| print "done" | |||
| print("done") | |||
| # ...with keyword arguments | |||
| print 'server.echo_wkw(third = big, first = "one", second = "two")..', | |||
| print('server.echo_wkw(third = big, first = "one", second = "two")..', end=' ') | |||
| tmp = server.echo_wkw(third = big, first = "one", second = "two") | |||
| print "done" | |||
| print("done") | |||
| # ...with a context object | |||
| print "server.echo_wc(big)..", | |||
| print("server.echo_wc(big)..", end=' ') | |||
| tmp = server.echo_wc(big) | |||
| print "done" | |||
| print("done") | |||
| # ...with a header | |||
| hd = headerType(data = {"mystring": "Hello World"}) | |||
| print "server._hd(hd).echo_wc(big)..", | |||
| print("server._hd(hd).echo_wc(big)..", end=' ') | |||
| tmp = server._hd(hd).echo_wc(big) | |||
| print "done" | |||
| print("done") | |||
| server.quit() | |||
| @@ -25,22 +25,22 @@ MethodNamespaceURI = 'http://tempuri.org/' | |||
| server = SOAPProxy(SoapEndpointURL, namespace = MethodNamespaceURI, | |||
| soapaction='http://tempuri.org/GetCNNNews', encoding = None, | |||
| http_proxy=proxy) | |||
| print "[server level CNN News call]" | |||
| print server.GetCNNNews() | |||
| print("[server level CNN News call]") | |||
| print(server.GetCNNNews()) | |||
| # Do it inline ala SOAP::LITE, also specify the actually ns (namespace) and | |||
| # sa (soapaction) | |||
| server = SOAPProxy(SoapEndpointURL, encoding = None) | |||
| print "[inline CNNNews call]" | |||
| print server._ns('ns1', | |||
| MethodNamespaceURI)._sa('http://tempuri.org/GetCNNNews').GetCNNNews() | |||
| print("[inline CNNNews call]") | |||
| print(server._ns('ns1', | |||
| MethodNamespaceURI)._sa('http://tempuri.org/GetCNNNews').GetCNNNews()) | |||
| # Create an instance of your server with specific namespace and then use | |||
| # inline soapactions for each call | |||
| dq = server._ns(MethodNamespaceURI) | |||
| print "[namespaced CNNNews call]" | |||
| print dq._sa('http://tempuri.org/GetCNNNews').GetCNNNews() | |||
| print "[namespaced CBSNews call]" | |||
| print dq._sa('http://tempuri.org/GetCBSNews').GetCBSNews() | |||
| print("[namespaced CNNNews call]") | |||
| print(dq._sa('http://tempuri.org/GetCNNNews').GetCNNNews()) | |||
| print("[namespaced CBSNews call]") | |||
| print(dq._sa('http://tempuri.org/GetCBSNews').GetCBSNews()) | |||
| @@ -23,18 +23,18 @@ server = SOAPProxy("http://services.xmethods.com:9090/soap", | |||
| namespace = 'urn:xmethods-delayed-quotes', | |||
| http_proxy=proxy) | |||
| print "IBM>>", server.getQuote(symbol = 'IBM') | |||
| print("IBM>>", server.getQuote(symbol = 'IBM')) | |||
| # Do it inline ala SOAP::LITE, also specify the actually ns | |||
| server = SOAPProxy("http://services.xmethods.com:9090/soap", | |||
| http_proxy=proxy) | |||
| print "IBM>>", server._ns('ns1', | |||
| 'urn:xmethods-delayed-quotes').getQuote(symbol = 'IBM') | |||
| print("IBM>>", server._ns('ns1', | |||
| 'urn:xmethods-delayed-quotes').getQuote(symbol = 'IBM')) | |||
| # Create a namespaced version of your server | |||
| dq = server._ns('urn:xmethods-delayed-quotes') | |||
| print "IBM>>", dq.getQuote(symbol='IBM') | |||
| print "ORCL>>", dq.getQuote(symbol='ORCL') | |||
| print "INTC>>", dq.getQuote(symbol='INTC') | |||
| print("IBM>>", dq.getQuote(symbol='IBM')) | |||
| print("ORCL>>", dq.getQuote(symbol='ORCL')) | |||
| print("INTC>>", dq.getQuote(symbol='INTC')) | |||
| @@ -7,4 +7,4 @@ url = 'http://www.xmethods.org/sd/2001/TemperatureService.wsdl' | |||
| zip = '06340' | |||
| proxy = SOAPpy.WSDL.Proxy(url) | |||
| temp = proxy.getTemp(zip) | |||
| print 'Temperature at', zip, 'is', temp | |||
| print('Temperature at', zip, 'is', temp) | |||
| @@ -71,13 +71,13 @@ def DOMParse(inxml): | |||
| # Wierd but the SAX parser runs really slow the first time. | |||
| # Probably got to load a c module or something | |||
| SAXParse(x) | |||
| print "Simple XML" | |||
| print "SAX Parse, no marshalling ", SAXParse(x) | |||
| print "SOAP Parse, and marshalling ", SOAPParse(x) | |||
| print "DOM Parse, no marshalling ", DOMParse(x) | |||
| print "Complex XML (references)" | |||
| print "SAX Parse, no marshalling ", SAXParse(x2) | |||
| print "SOAP Parse, and marshalling ", SOAPParse(x2) | |||
| print "DOM Parse, no marshalling ", DOMParse(x2) | |||
| print() | |||
| print("Simple XML") | |||
| print("SAX Parse, no marshalling ", SAXParse(x)) | |||
| print("SOAP Parse, and marshalling ", SOAPParse(x)) | |||
| print("DOM Parse, no marshalling ", DOMParse(x)) | |||
| print() | |||
| print("Complex XML (references)") | |||
| print("SAX Parse, no marshalling ", SAXParse(x2)) | |||
| print("SOAP Parse, and marshalling ", SOAPParse(x2)) | |||
| print("DOM Parse, no marshalling ", DOMParse(x2)) | |||
| @@ -24,15 +24,15 @@ SERIAL=1123214 | |||
| MY_PORT=15600 | |||
| def resourceChanged (url): | |||
| print "\n##### NOTIFICATION MESSAGE: Resource %s has changed #####\n" % url | |||
| print("\n##### NOTIFICATION MESSAGE: Resource %s has changed #####\n" % url) | |||
| return booleanType(1) | |||
| def printstatus (cmd, stat): | |||
| print() | |||
| if stat.flError: | |||
| print "### %s failed: %s ###" % (cmd, stat.message) | |||
| print("### %s failed: %s ###" % (cmd, stat.message)) | |||
| else: | |||
| print "### %s successful: %s ###" % (cmd, stat.message) | |||
| print("### %s successful: %s ###" % (cmd, stat.message)) | |||
| return not stat.flError | |||
| server = SOAPProxy(encoding="US-ASCII", | |||
| @@ -51,11 +51,11 @@ printstatus("registerUser", reg) | |||
| # See what this server can do | |||
| reg = server.getServerCapabilities (email=EMAIL, password=PASSWORD) | |||
| if printstatus("getServerCapabilities", reg): | |||
| print "Legal file extensions: " + str(reg.legalFileExtensions) | |||
| print "Maximum file size: " + str(reg.maxFileSize) | |||
| print "Maximum bytes per user: " + str(reg.maxBytesPerUser) | |||
| print "Number of bytes in use by the indicated user: " + str(reg.ctBytesInUse) | |||
| print "URL of the folder containing your files: " + str(reg.yourUpstreamFolderUrl) | |||
| print("Legal file extensions: " + str(reg.legalFileExtensions)) | |||
| print("Maximum file size: " + str(reg.maxFileSize)) | |||
| print("Maximum bytes per user: " + str(reg.maxBytesPerUser)) | |||
| print("Number of bytes in use by the indicated user: " + str(reg.ctBytesInUse)) | |||
| print("URL of the folder containing your files: " + str(reg.yourUpstreamFolderUrl)) | |||
| # Store some files | |||
| reg = server.saveMultipleFiles (email=EMAIL, password=PASSWORD, | |||
| @@ -65,9 +65,9 @@ reg = server.saveMultipleFiles (email=EMAIL, password=PASSWORD, | |||
| '<html><title>bennett@actzero.com home page</title><body>' + | |||
| '<a href=index.html>Hello Earth Again</a></body></html>']) | |||
| if printstatus("saveMultipleFiles", reg): | |||
| print "Files stored:" | |||
| print("Files stored:") | |||
| for file in reg.urlList: | |||
| print " %s" % file | |||
| print(" %s" % file) | |||
| # Save this for call to test pleaseNotify | |||
| mylist = reg.urlList | |||
| @@ -80,12 +80,12 @@ if printstatus("getMyDirectory", reg): | |||
| i = 1 | |||
| while hasattr(reg.directory, "file%05d" % i): | |||
| d = getattr(reg.directory, "file%05d" % i) | |||
| print "Relative Path: %s" % d.relativePath | |||
| print "Size: %d" % d.size | |||
| print "Created: %s" % d.whenCreated | |||
| print "Last Uploaded: %s" % d.whenLastUploaded | |||
| print "URL: %s" % d.url | |||
| print("Relative Path: %s" % d.relativePath) | |||
| print("Size: %d" % d.size) | |||
| print("Created: %s" % d.whenCreated) | |||
| print("Last Uploaded: %s" % d.whenLastUploaded) | |||
| print("URL: %s" % d.url) | |||
| print() | |||
| i += 1 | |||
| # Set up notification | |||
| @@ -95,8 +95,8 @@ printstatus("notifyProcedure", reg) | |||
| pid = os.fork() | |||
| if pid == 0: | |||
| # I am a child process. Set up SOAP server to receive notification | |||
| print "## Starting notification server ##" | |||
| print() | |||
| print("## Starting notification server ##") | |||
| s = SOAPServer(('localhost', MY_PORT)) | |||
| s.registerFunction(resourceChanged) | |||
| @@ -106,7 +106,7 @@ else: | |||
| def handler(signum, frame): | |||
| # Kill child process | |||
| print "Killing child process %d" % pid | |||
| print("Killing child process %d" % pid) | |||
| os.kill(pid, signal.SIGINT) | |||
| signal.signal(signal.SIGINT, handler) | |||
| @@ -119,8 +119,8 @@ else: | |||
| fileTextList=['<html><title>bennett@actzero.com home page</title><body>' + | |||
| '<a href=again.html>Hello Bennett</a></body></html>']) | |||
| if printstatus("saveMultipleFiles", reg): | |||
| print "Files stored:" | |||
| print("Files stored:") | |||
| for file in reg.urlList: | |||
| print " %s" % file | |||
| print(" %s" % file) | |||
| os.waitpid(pid, 0) | |||
| @@ -27,18 +27,18 @@ def kill(): | |||
| def server1(): | |||
| """start a SOAP server on localhost:8000""" | |||
| print "Starting SOAP Server...", | |||
| print("Starting SOAP Server...", end=' ') | |||
| server = SOAPpy.Server.SOAPServer(addr=('127.0.0.1', 8000)) | |||
| server.registerFunction(echoDateTime) | |||
| server.registerFunction(echo) | |||
| server.registerFunction(kill) | |||
| print "Done." | |||
| print("Done.") | |||
| global quit | |||
| while not quit: | |||
| server.handle_request() | |||
| quit = 0 | |||
| print "Server shut down." | |||
| print("Server shut down.") | |||
| class ClientTestCase(unittest.TestCase): | |||
| @@ -55,24 +55,24 @@ class ClientTestCase(unittest.TestCase): | |||
| connected = False | |||
| server = None | |||
| while not connected and time.time() - start < self.startup_timeout: | |||
| print "Trying to connect to the SOAP server...", | |||
| print("Trying to connect to the SOAP server...", end=' ') | |||
| try: | |||
| server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
| server.echo('Hello World') | |||
| except socket.error, e: | |||
| print "Failure:", e | |||
| except socket.error as e: | |||
| print("Failure:", e) | |||
| time.sleep(0.5) | |||
| else: | |||
| connected = True | |||
| self.server = server | |||
| print "Success." | |||
| print("Success.") | |||
| if not connected: raise 'Server failed to start.' | |||
| def tearDown(self): | |||
| '''This is run once after each unit test.''' | |||
| print "Trying to shut down SOAP server..." | |||
| print("Trying to shut down SOAP server...") | |||
| if self.server is not None: | |||
| self.server.kill() | |||
| time.sleep(5) | |||
| @@ -84,14 +84,14 @@ class ClientTestCase(unittest.TestCase): | |||
| server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
| s = 'Hello World' | |||
| self.assertEquals(server.echo(s), s+s) | |||
| self.assertEqual(server.echo(s), s+s) | |||
| def testNamedEcho(self): | |||
| '''Test echo function.''' | |||
| server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
| s = 'Hello World' | |||
| self.assertEquals(server.echo(s=s), s+s) | |||
| self.assertEqual(server.echo(s=s), s+s) | |||
| def testEchoDateTime(self): | |||
| '''Test passing DateTime objects.''' | |||
| @@ -99,7 +99,7 @@ class ClientTestCase(unittest.TestCase): | |||
| server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000') | |||
| dt = SOAPpy.Types.dateTimeType(data=time.time()) | |||
| dt_return = server.echoDateTime(dt) | |||
| self.assertEquals(dt_return, dt) | |||
| self.assertEqual(dt_return, dt) | |||
| # def testNoLeak(self): | |||
| @@ -60,11 +60,11 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
| '''Parse XMethods TemperatureService wsdl from a string.''' | |||
| wsdl = SOAPpy.WSDL.Proxy(self.wsdlstr1, http_proxy=http_proxy) | |||
| self.assertEquals(len(wsdl.methods), 1) | |||
| method = wsdl.methods.values()[0] | |||
| self.assertEquals(method.methodName, 'getTemp') | |||
| self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEquals(method.location, | |||
| self.assertEqual(len(wsdl.methods), 1) | |||
| method = list(wsdl.methods.values())[0] | |||
| self.assertEqual(method.methodName, 'getTemp') | |||
| self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEqual(method.location, | |||
| 'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
| def testParseWsdlFile(self): | |||
| @@ -77,25 +77,25 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
| try: | |||
| f = file(fname) | |||
| except (IOError, OSError): | |||
| self.assert_(0, 'Cound not find wsdl file "%s"' % file) | |||
| self.assertTrue(0, 'Cound not find wsdl file "%s"' % file) | |||
| wsdl = SOAPpy.WSDL.Proxy(fname, http_proxy=http_proxy) | |||
| self.assertEquals(len(wsdl.methods), 1) | |||
| method = wsdl.methods.values()[0] | |||
| self.assertEquals(method.methodName, 'getTemp') | |||
| self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEquals(method.location, | |||
| self.assertEqual(len(wsdl.methods), 1) | |||
| method = list(wsdl.methods.values())[0] | |||
| self.assertEqual(method.methodName, 'getTemp') | |||
| self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEqual(method.location, | |||
| 'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
| def testParseWsdlUrl(self): | |||
| '''Parse XMethods TemperatureService wsdl from a url.''' | |||
| wsdl = SOAPpy.WSDL.Proxy('http://www.xmethods.net/sd/2001/TemperatureService.wsdl', http_proxy=http_proxy) | |||
| self.assertEquals(len(wsdl.methods), 1) | |||
| method = wsdl.methods.values()[0] | |||
| self.assertEquals(method.methodName, 'getTemp') | |||
| self.assertEquals(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEquals(method.location, | |||
| self.assertEqual(len(wsdl.methods), 1) | |||
| method = list(wsdl.methods.values())[0] | |||
| self.assertEqual(method.methodName, 'getTemp') | |||
| self.assertEqual(method.namespace, 'urn:xmethods-Temperature') | |||
| self.assertEqual(method.location, | |||
| 'http://services.xmethods.net:80/soap/servlet/rpcrouter') | |||
| def testGetTemp(self): | |||
| @@ -104,7 +104,7 @@ class IntegerArithmenticTestCase(unittest.TestCase): | |||
| zip = '01072' | |||
| proxy = SOAPpy.WSDL.Proxy(self.wsdlstr1, http_proxy=http_proxy) | |||
| temp = proxy.getTemp(zip) | |||
| print 'Temperature at', zip, 'is', temp | |||
| print('Temperature at', zip, 'is', temp) | |||
| if __name__ == '__main__': | |||
| @@ -16,6 +16,6 @@ for i in range(400): | |||
| gc.collect() | |||
| if len(gc.garbage): | |||
| print 'still leaking' | |||
| print('still leaking') | |||
| else: | |||
| print 'no leak' | |||
| print('no leak') | |||
| @@ -6,6 +6,6 @@ __docformat__ = 'restructuredtext en' | |||
| from SOAPpy import SOAPProxy | |||
| server = SOAPProxy("http://localhost:8080/") | |||
| print server.echo("Hello world") | |||
| print(server.echo("Hello world")) | |||
| # vim:set et sts=4 ts=4 tw=80: | |||
| @@ -21,5 +21,5 @@ server = SOAPProxy("http://services.xmethods.com:80/perl/soaplite.cgi", | |||
| http_proxy=proxy) | |||
| babel = server._ns('urn:xmethodsBabelFish#BabelFish') | |||
| print babel.BabelFish(translationmode = "en_fr", | |||
| sourcedata = "The quick brown fox did something or other") | |||
| print(babel.BabelFish(translationmode = "en_fr", | |||
| sourcedata = "The quick brown fox did something or other")) | |||
| @@ -22,4 +22,4 @@ MethodNamespaceURI = 'urn:xmethods-Temperature' | |||
| # Do it inline ala SOAP::LITE, also specify the actually ns | |||
| server = SOAPProxy(SoapEndpointURL, http_proxy=proxy) | |||
| print "inline", server._ns('ns1', MethodNamespaceURI).getTemp(zipcode='94063') | |||
| print("inline", server._ns('ns1', MethodNamespaceURI).getTemp(zipcode='94063')) | |||
| @@ -19,7 +19,7 @@ except: | |||
| server = SOAPProxy("http://www.SoapClient.com/xml/SQLDataSoap.WSDL", | |||
| http_proxy=proxy) | |||
| print "whois>>", server.ProcessSRL(SRLFile="WHOIS.SRI", | |||
| print("whois>>", server.ProcessSRL(SRLFile="WHOIS.SRI", | |||
| RequestName="whois", | |||
| key = "microsoft.com") | |||
| key = "microsoft.com")) | |||
| @@ -18,9 +18,9 @@ except: | |||
| proxy = None | |||
| print "##########################################" | |||
| print " SOAP services registered at xmethods.net" | |||
| print "##########################################" | |||
| print("##########################################") | |||
| print(" SOAP services registered at xmethods.net") | |||
| print("##########################################") | |||
| server = SOAPProxy("http://www.xmethods.net/interfaces/query", | |||
| namespace = 'urn:xmethods-delayed-quotes', | |||
| @@ -29,6 +29,6 @@ server = SOAPProxy("http://www.xmethods.net/interfaces/query", | |||
| names = server.getAllServiceNames() | |||
| for item in names: | |||
| print 'name:', item['name'] | |||
| print 'id :', item['id'] | |||
| print('name:', item['name']) | |||
| print('id :', item['id']) | |||
| print() | |||
| @@ -24,35 +24,35 @@ for line in lines: | |||
| try: table[row[0]].append([restofrow[0],restofrow[2:]]) | |||
| except KeyError: table[row[0]] = [[restofrow[0],restofrow[2:]]] | |||
| print "<html><body>" | |||
| print "<script>function popup(text) {" | |||
| print "text = '<html><head><title>Test Detail</title></head><body><p>' + text + '</p></body></html>';" | |||
| print "newWin=window.open('','win1','location=no,menubar=no,width=400,height=200');" | |||
| print "newWin.document.open();" | |||
| print "newWin.document.write(text);" | |||
| print "newWin.focus(); } </script>" | |||
| print "<br><table style='font-family: Arial; color: #cccccc'><tr><td colspan=2><font face=arial color=#cccccc><b>Summary</b></font></td></tr>" | |||
| print("<html><body>") | |||
| print("<script>function popup(text) {") | |||
| print("text = '<html><head><title>Test Detail</title></head><body><p>' + text + '</p></body></html>';") | |||
| print("newWin=window.open('','win1','location=no,menubar=no,width=400,height=200');") | |||
| print("newWin.document.open();") | |||
| print("newWin.document.write(text);") | |||
| print("newWin.focus(); } </script>") | |||
| print("<br><table style='font-family: Arial; color: #cccccc'><tr><td colspan=2><font face=arial color=#cccccc><b>Summary</b></font></td></tr>") | |||
| for x in tally: | |||
| z = x[:-1].split(":",1) | |||
| print "<tr><td><font face=arial color=#cccccc>",z[0],"</font></td><td><font face=arial color=#cccccc>",z[1],"</font></td></tr>" | |||
| print "</table><br>" | |||
| print("<tr><td><font face=arial color=#cccccc>",z[0],"</font></td><td><font face=arial color=#cccccc>",z[1],"</font></td></tr>") | |||
| print("</table><br>") | |||
| c = 0 | |||
| totalmethods = len(table[table.keys()[0]]) | |||
| totalmethods = len(table[list(table.keys())[0]]) | |||
| while c < totalmethods: | |||
| print "<br><table width='95%' style='font-family: Arial'>" | |||
| print "<tr><td width='27%' bgcolor='#cccccc'></td>" | |||
| print("<br><table width='95%' style='font-family: Arial'>") | |||
| print("<tr><td width='27%' bgcolor='#cccccc'></td>") | |||
| cols = [c, c + 1, c + 2] | |||
| if c != 16: | |||
| cols += [c + 3] | |||
| for i in cols: | |||
| try: header = table[table.keys()[0]][i][0] | |||
| try: header = table[list(table.keys())[0]][i][0] | |||
| except: break | |||
| print "<td width ='17%' align='center' bgcolor='#cccccc'><b>",header,"</b></td>" | |||
| print "</tr>" | |||
| l = table.keys() | |||
| print("<td width ='17%' align='center' bgcolor='#cccccc'><b>",header,"</b></td>") | |||
| print("</tr>") | |||
| l = list(table.keys()) | |||
| l.sort() | |||
| for key in l: | |||
| print "<tr><td bgcolor='#cccccc'>", key , "</td>" | |||
| print("<tr><td bgcolor='#cccccc'>", key , "</td>") | |||
| for i in cols: | |||
| try: status = table[key][i][1][0] | |||
| except: break | |||
| @@ -69,8 +69,8 @@ while c < totalmethods: | |||
| hreftitle = table[key][i][1][1].replace("'","") # remove apostrophes from title properties | |||
| popuphtml = '"' + cgi.escape(cgi.escape(table[key][i][1][1]).replace("'","'").replace('"',""")) + '"' | |||
| status = "<a title='" + hreftitle + "' href='javascript:popup(" + popuphtml + ")'>Failed</a>" | |||
| print "<td align='center' bgcolor=" , bgcolor , ">" , status , "</td>" | |||
| print "</tr>" | |||
| print "</table>" | |||
| print("<td align='center' bgcolor=" , bgcolor , ">" , status , "</td>") | |||
| print("</tr>") | |||
| print("</table>") | |||
| c = c + len(cols) | |||
| print "</body></html>" | |||
| print("</body></html>") | |||
| @@ -45,9 +45,9 @@ def usage (error = None): | |||
| sys.stdout = sys.stderr | |||
| if error != None: | |||
| print error | |||
| print(error) | |||
| print """usage: %s [options] [server ...] | |||
| print("""usage: %s [options] [server ...] | |||
| If a long option shows an argument is mandatory, it's mandatory for the | |||
| equivalent short option also. | |||
| @@ -75,7 +75,7 @@ def usage (error = None): | |||
| -t, --stacktrace print a stack trace on each unexpected failure | |||
| -T, --always-stacktrace | |||
| print a stack trace on any failure | |||
| """ % (sys.argv[0], DEFAULT_SERVERS_FILE), | |||
| """ % (sys.argv[0], DEFAULT_SERVERS_FILE), end=' ') | |||
| sys.exit (0) | |||
| @@ -83,19 +83,19 @@ def usage (error = None): | |||
| def methodUsage (): | |||
| sys.stdout = sys.stderr | |||
| print "Methods are specified by number. Multiple methods can be " \ | |||
| print("Methods are specified by number. Multiple methods can be " \ | |||
| "specified using a\ncomma-separated list of numbers or ranges. " \ | |||
| "For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n" | |||
| "For example 1,4-6,8 specifies\nmethods 1, 4, 5, 6, and 8.\n") | |||
| print "The available methods are:\n" | |||
| print("The available methods are:\n") | |||
| half = (len (DEFAULT_METHODS) + 1) / 2 | |||
| for i in range (half): | |||
| print "%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), | |||
| print("%4d. %-25s" % (i + 1, DEFAULT_METHODS[i]), end=' ') | |||
| if i + half < len (DEFAULT_METHODS): | |||
| print "%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), | |||
| print("%4d. %-25s" % (i + 1 + half, DEFAULT_METHODS[i + half]), end=' ') | |||
| print() | |||
| sys.exit (0) | |||
| @@ -132,9 +132,8 @@ def readServers (file): | |||
| value = cur[tag] | |||
| value += ' ' + line.strip () | |||
| elif line[0] == '_': | |||
| raise ValueError, \ | |||
| "%s, line %d: can't have a tag starting with `_'" % \ | |||
| (f.filename(), f.filelineno()) | |||
| raise ValueError("%s, line %d: can't have a tag starting with `_'" % \ | |||
| (f.filename(), f.filelineno())) | |||
| else: | |||
| tag, value = line.split (':', 1) | |||
| @@ -150,18 +149,16 @@ def readServers (file): | |||
| elif value.lower() in ('1', 'yes', 'false'): | |||
| value = 1 | |||
| else: | |||
| raise ValueError, \ | |||
| "%s, line %d: unknown typed value `%s'" % \ | |||
| (f.filename(), f.filelineno(), value) | |||
| raise ValueError("%s, line %d: unknown typed value `%s'" % \ | |||
| (f.filename(), f.filelineno(), value)) | |||
| elif tag == 'name': | |||
| if names.has_key(value): | |||
| if value in names: | |||
| old = names[value] | |||
| raise ValueError, \ | |||
| "%s, line %d: already saw a server named `%s' " \ | |||
| raise ValueError("%s, line %d: already saw a server named `%s' " \ | |||
| "(on line %d of %s)" % \ | |||
| (f.filename(), f.filelineno(), value, | |||
| old['_line'], old['_file']) | |||
| old['_line'], old['_file'])) | |||
| names[value] = cur | |||
| if tag == 'nonfunctional': | |||
| @@ -173,16 +170,14 @@ def readServers (file): | |||
| try: | |||
| del cur['nonfunctional'][value] | |||
| except: | |||
| raise ValueError, \ | |||
| "%s, line %d: `%s' not marked nonfunctional" % \ | |||
| (f.filename(), f.filelineno(), value) | |||
| raise ValueError("%s, line %d: `%s' not marked nonfunctional" % \ | |||
| (f.filename(), f.filelineno(), value)) | |||
| elif tag == 'like': | |||
| try: | |||
| new = copy.deepcopy(names[value]) | |||
| except: | |||
| raise ValueError, \ | |||
| "%s, line %d: don't know about a server named `%s'" % \ | |||
| (f.filename(), f.filelineno(), value) | |||
| raise ValueError("%s, line %d: don't know about a server named `%s'" % \ | |||
| (f.filename(), f.filelineno(), value)) | |||
| # This is so we don't lose the nonfunctional methods in new or | |||
| # in cur | |||
| @@ -213,7 +208,7 @@ def str2list (s): | |||
| else: | |||
| l[int (i)] = 1 | |||
| l = l.keys () | |||
| l = list(l.keys ()) | |||
| l.sort () | |||
| return l | |||
| @@ -235,7 +230,7 @@ def testActorShouldPass (server, action, harsh): | |||
| result = int (result) | |||
| if result != test: | |||
| raise Exception, "expected %s, got %s" % (test, result) | |||
| raise Exception("expected %s, got %s" % (test, result)) | |||
| def testActorShouldFail (server, action, harsh): | |||
| test = 42 | |||
| @@ -250,12 +245,12 @@ def testActorShouldFail (server, action, harsh): | |||
| try: | |||
| result = server.echoInteger (inputInteger = test) | |||
| except SOAP.faultType, e: | |||
| except SOAP.faultType as e: | |||
| if harsh and e.faultcode != 'SOAP-ENV:MustUnderstand': | |||
| raise AttributeError, "unexpected faultcode %s" % e.faultcode | |||
| raise AttributeError("unexpected faultcode %s" % e.faultcode) | |||
| return | |||
| raise Exception, "should fail, succeeded with %s" % result | |||
| raise Exception("should fail, succeeded with %s" % result) | |||
| def testEchoFloat (server, action, harsh): | |||
| server = server._sa (action % {'methodname': 'echoFloat'}) | |||
| @@ -267,7 +262,7 @@ def testEchoFloat (server, action, harsh): | |||
| result = float (result) | |||
| if not nearlyeq (result, test): | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoFloatArray (server, action, harsh): | |||
| test = [0.0, 1.0, -1.0, 3853.33333333] | |||
| @@ -279,8 +274,8 @@ def testEchoFloatArray (server, action, harsh): | |||
| result[i] = float (result[i]) | |||
| if not nearlyeq (result[i], test[i]): | |||
| raise Exception, "@ %d expected %s, got %s" % \ | |||
| (i, repr (test), repr (result)) | |||
| raise Exception("@ %d expected %s, got %s" % \ | |||
| (i, repr (test), repr (result))) | |||
| def testEchoFloatINF (server, action, harsh): | |||
| try: | |||
| @@ -294,7 +289,7 @@ def testEchoFloatINF (server, action, harsh): | |||
| result = float (result) | |||
| if result != test: | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoFloatNaN (server, action, harsh): | |||
| try: | |||
| @@ -308,7 +303,7 @@ def testEchoFloatNaN (server, action, harsh): | |||
| result = float (result) | |||
| if result != test: | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoFloatNegINF (server, action, harsh): | |||
| try: | |||
| @@ -323,7 +318,7 @@ def testEchoFloatNegINF (server, action, harsh): | |||
| result = float (result) | |||
| if result != test: | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoFloatNegZero (server, action, harsh): | |||
| test = float ('-0.0') | |||
| @@ -334,7 +329,7 @@ def testEchoFloatNegZero (server, action, harsh): | |||
| result = float (result) | |||
| if result != test: | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoInteger (server, action, harsh): | |||
| server = server._sa (action % {'methodname': 'echoInteger'}) | |||
| @@ -346,7 +341,7 @@ def testEchoInteger (server, action, harsh): | |||
| result = int (result) | |||
| if result != test: | |||
| raise Exception, "expected %.8f, got %.8f" % (test, result) | |||
| raise Exception("expected %.8f, got %.8f" % (test, result)) | |||
| def testEchoIntegerArray (server, action, harsh): | |||
| test = [0, 1, -1, 3853] | |||
| @@ -358,14 +353,14 @@ def testEchoIntegerArray (server, action, harsh): | |||
| result[i] = int (result[i]) | |||
| if result[i] != test[i]: | |||
| raise Exception, "@ %d expected %s, got %s" % \ | |||
| (i, repr (test), repr (result)) | |||
| raise Exception("@ %d expected %s, got %s" % \ | |||
| (i, repr (test), repr (result))) | |||
| relaxedStringTests = ['', 'Hello', '\'<&>"',] | |||
| relaxedStringTests = ['Hello', '\'<&>"',] | |||
| harshStringTests = ['', 'Hello', '\'<&>"', | |||
| u'\u0041', u'\u00a2', u'\u0141', u'\u2342', | |||
| u'\'<\u0041&>"', u'\'<\u00a2&>"', u'\'<\u0141&>"', u'\'<\u2342&>"',] | |||
| '\u0041', '\u00a2', '\u0141', '\u2342', | |||
| '\'<\u0041&>"', '\'<\u00a2&>"', '\'<\u0141&>"', '\'<\u2342&>"',] | |||
| def testEchoString (server, action, harsh): | |||
| if harsh: | |||
| @@ -378,8 +373,8 @@ def testEchoString (server, action, harsh): | |||
| result = server.echoString (inputString = test) | |||
| if result != test: | |||
| raise Exception, "expected %s, got %s" % \ | |||
| (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % \ | |||
| (repr (test), repr (result))) | |||
| def testEchoStringArray (server, action, harsh): | |||
| if harsh: | |||
| @@ -390,7 +385,7 @@ def testEchoStringArray (server, action, harsh): | |||
| result = server.echoStringArray (inputStringArray = test) | |||
| if result != test: | |||
| raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
| def testEchoStruct (server, action, harsh): | |||
| test = {'varFloat': 2.256, 'varInt': 474, 'varString': 'Utah'} | |||
| @@ -402,16 +397,16 @@ def testEchoStruct (server, action, harsh): | |||
| result.varInt = int (result.varInt) | |||
| if not nearlyeq (test['varFloat'], result.varFloat): | |||
| raise Exception, ".varFloat expected %s, got %s" % \ | |||
| (i, repr (test['varFloat']), repr (result.varFloat)) | |||
| raise Exception(".varFloat expected %s, got %s" % \ | |||
| (i, repr (test['varFloat']), repr (result.varFloat))) | |||
| for i in test.keys (): | |||
| for i in list(test.keys ()): | |||
| if i == 'varFloat': | |||
| continue | |||
| if test[i] != getattr (result, i): | |||
| raise Exception, ".%s expected %s, got %s" % \ | |||
| (i, repr (test[i]), repr (getattr (result, i))) | |||
| raise Exception(".%s expected %s, got %s" % \ | |||
| (i, repr (test[i]), repr (getattr (result, i)))) | |||
| def testEchoStructArray (server, action, harsh): | |||
| @@ -427,17 +422,16 @@ def testEchoStructArray (server, action, harsh): | |||
| result[s].varInt = int (result[s].varInt) | |||
| if not nearlyeq (test[s]['varFloat'], result[s].varFloat): | |||
| raise Exception, \ | |||
| "@ %d.varFloat expected %s, got %s" % \ | |||
| (s, repr (test[s]['varFloat']), repr (result[s].varFloat)) | |||
| raise Exception("@ %d.varFloat expected %s, got %s" % \ | |||
| (s, repr (test[s]['varFloat']), repr (result[s].varFloat))) | |||
| for i in test[s].keys (): | |||
| for i in list(test[s].keys ()): | |||
| if i == 'varFloat': | |||
| continue | |||
| if test[s][i] != getattr (result[s], i): | |||
| raise Exception, "@ %d.%s expected %s, got %s" % \ | |||
| (s, i, repr (test[s][i]), repr (getattr (result[s], i))) | |||
| raise Exception("@ %d.%s expected %s, got %s" % \ | |||
| (s, i, repr (test[s][i]), repr (getattr (result[s], i)))) | |||
| def testEchoVeryLargeFloat (server, action, harsh): | |||
| test = 2.2535e29 | |||
| @@ -448,7 +442,7 @@ def testEchoVeryLargeFloat (server, action, harsh): | |||
| result = float (result) | |||
| if not nearlyeq (result, test): | |||
| raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
| def testEchoVerySmallFloat (server, action, harsh): | |||
| test = 2.2535e29 | |||
| @@ -459,16 +453,16 @@ def testEchoVerySmallFloat (server, action, harsh): | |||
| result = float (result) | |||
| if not nearlyeq (result, test): | |||
| raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
| def testEchoVoid (server, action, harsh): | |||
| server = server._sa (action % {'methodname': 'echoVoid'}) | |||
| result = server.echoVoid () | |||
| for k in result.__dict__.keys (): | |||
| for k in list(result.__dict__.keys ()): | |||
| if k[0] != '_': | |||
| raise Exception, "expected an empty structType, got %s" % \ | |||
| repr (result.__dict__) | |||
| raise Exception("expected an empty structType, got %s" % \ | |||
| repr (result.__dict__)) | |||
| def testMustUnderstandEqualsOne (server, action, harsh): | |||
| test = 42 | |||
| @@ -481,12 +475,12 @@ def testMustUnderstandEqualsOne (server, action, harsh): | |||
| try: | |||
| result = server.echoInteger (inputInteger = test) | |||
| except SOAP.faultType, e: | |||
| except SOAP.faultType as e: | |||
| if harsh and e.faultcode != 'SOAP-ENV:MustUnderstand': | |||
| raise AttributeError, "unexpected faultcode %s" % e.faultcode | |||
| raise AttributeError("unexpected faultcode %s" % e.faultcode) | |||
| return | |||
| raise Exception, "should fail, succeeded with %s" % result | |||
| raise Exception("should fail, succeeded with %s" % result) | |||
| def testMustUnderstandEqualsZero (server, action, harsh): | |||
| test = 42 | |||
| @@ -503,7 +497,7 @@ def testMustUnderstandEqualsZero (server, action, harsh): | |||
| result = int (result) | |||
| if result != test: | |||
| raise Exception, "expected %s, got %s" % (test, result) | |||
| raise Exception("expected %s, got %s" % (test, result)) | |||
| def testEchoDate (server, action, harsh): | |||
| test = time.gmtime (time.time ()) | |||
| @@ -513,12 +507,12 @@ def testEchoDate (server, action, harsh): | |||
| else: | |||
| result = server.echoDate (inputDate = SOAP.dateTimeType (test)) | |||
| if not SOAP.Config.typed and type (result) in (type (''), type (u'')): | |||
| if not SOAP.Config.typed and type (result) in (type (''), type ('')): | |||
| p = SOAP.SOAPParser() | |||
| result = p.convertDateTime(result, 'timeInstant') | |||
| if result != test[:6]: | |||
| raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
| def testEchoBase64 (server, action, harsh): | |||
| test = '\x00\x10\x20\x30\x40\x50\x60\x70\x80\x90\xa0\xb0\xc0\xd0\xe0\xf0' | |||
| @@ -530,7 +524,7 @@ def testEchoBase64 (server, action, harsh): | |||
| result = base64.decodestring(result) | |||
| if result != test: | |||
| raise Exception, "expected %s, got %s" % (repr (test), repr (result)) | |||
| raise Exception("expected %s, got %s" % (repr (test), repr (result))) | |||
| def main (): | |||
| @@ -585,8 +579,7 @@ def main (): | |||
| elif opt in ('-T', '--always-stacktrace'): | |||
| printtrace = 2 | |||
| else: | |||
| raise AttributeError, \ | |||
| "Recognized but unimplemented option `%s'" % opt | |||
| raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
| except SystemExit: | |||
| raise | |||
| except: | |||
| @@ -598,7 +591,7 @@ def main (): | |||
| servers = readServers (servers) | |||
| if methodnums == None: | |||
| methodnums = range (1, len (DEFAULT_METHODS) + 1) | |||
| methodnums = list(range(1, len (DEFAULT_METHODS) + 1)) | |||
| limitre = re.compile ('|'.join (args), re.IGNORECASE) | |||
| @@ -628,7 +621,7 @@ def main (): | |||
| title = '%s: %s (#%d)' % (s['name'], name, num) | |||
| if SOAP.Config.debug: | |||
| print "%s:" % title | |||
| print("%s:" % title) | |||
| try: | |||
| fn = globals ()['test' + name[0].upper () + name[1:]] | |||
| @@ -636,17 +629,17 @@ def main (): | |||
| raise | |||
| except: | |||
| if 'n' in output: | |||
| print title, "test not yet implemented" | |||
| print(title, "test not yet implemented") | |||
| notimp += 1 | |||
| continue | |||
| try: | |||
| fn (server, s['soapaction'], harsh) | |||
| if s['nonfunctional'].has_key (name): | |||
| print title, \ | |||
| "succeeded despite being marked nonfunctional" | |||
| if name in s['nonfunctional']: | |||
| print(title, \ | |||
| "succeeded despite being marked nonfunctional") | |||
| if 's' in output: | |||
| print title, "succeeded" | |||
| print(title, "succeeded") | |||
| succeed += 1 | |||
| except KeyboardInterrupt: | |||
| raise | |||
| @@ -655,18 +648,18 @@ def main (): | |||
| if fault[-1] == '\n': | |||
| fault = fault[:-1] | |||
| if s['nonfunctional'].has_key (name): | |||
| if name in s['nonfunctional']: | |||
| if 'F' in output: | |||
| t = 'as expected' | |||
| if s['nonfunctional'][name] != '': | |||
| t += ', ' + s['nonfunctional'][name] | |||
| print title, "failed (%s) -" % t, fault | |||
| print(title, "failed (%s) -" % t, fault) | |||
| if printtrace > 1: | |||
| traceback.print_exc () | |||
| failok += 1 | |||
| else: | |||
| if 'f' in output: | |||
| print title, "failed -", fault | |||
| print(title, "failed -", fault) | |||
| if printtrace: | |||
| traceback.print_exc () | |||
| fail += 1 | |||
| @@ -675,20 +668,20 @@ def main (): | |||
| return -1 | |||
| if stats: | |||
| print " Tests started at:", time.ctime (started) | |||
| print(" Tests started at:", time.ctime (started)) | |||
| if stats > 0: | |||
| print " Total tests: %d" % total | |||
| print " Successes: %d (%3.2f%%)" % \ | |||
| (succeed, 100.0 * succeed / total) | |||
| print(" Total tests: %d" % total) | |||
| print(" Successes: %d (%3.2f%%)" % \ | |||
| (succeed, 100.0 * succeed / total)) | |||
| if stats > 0 or fail > 0: | |||
| print "Failed unexpectedly: %d (%3.2f%%)" % \ | |||
| (fail, 100.0 * fail / total) | |||
| print("Failed unexpectedly: %d (%3.2f%%)" % \ | |||
| (fail, 100.0 * fail / total)) | |||
| if stats > 0: | |||
| print " Failed as expected: %d (%3.2f%%)" % \ | |||
| (failok, 100.0 * failok / total) | |||
| print(" Failed as expected: %d (%3.2f%%)" % \ | |||
| (failok, 100.0 * failok / total)) | |||
| if stats > 0 or notimp > 0: | |||
| print " Not implemented: %d (%3.2f%%)" % \ | |||
| (notimp, 100.0 * notimp / total) | |||
| print(" Not implemented: %d (%3.2f%%)" % \ | |||
| (notimp, 100.0 * notimp / total)) | |||
| return fail + notimp | |||
| @@ -60,19 +60,19 @@ def usage (error = None): | |||
| sys.stdout = sys.stderr | |||
| if error != None: | |||
| print error | |||
| print(error) | |||
| print """usage: %s [options] | |||
| print("""usage: %s [options] | |||
| If a long option shows an argument is mandatory, it's mandatory for the | |||
| equivalent short option also. The default (if any) is shown in brackets. | |||
| -?, --help display this usage | |||
| -h, --host=HOST use HOST in the address to listen on [%s] | |||
| -p, --port=PORT listen on PORT [%d] | |||
| """ % (sys.argv[0], DEFAULT_HOST, DEFAULT_HTTP_PORT), | |||
| """ % (sys.argv[0], DEFAULT_HOST, DEFAULT_HTTP_PORT), end=' ') | |||
| if SOAP.Config.SSLserver: | |||
| print " -s, --ssl serve using SSL" | |||
| print(" -s, --ssl serve using SSL") | |||
| sys.exit (0) | |||
| @@ -101,8 +101,7 @@ def main (): | |||
| elif opt in ('-s', '--ssl'): | |||
| ssl = 1 | |||
| else: | |||
| raise AttributeError, \ | |||
| "Recognized but unimplemented option `%s'" % opt | |||
| raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
| except SystemExit: | |||
| raise | |||
| except: | |||
| @@ -62,16 +62,16 @@ def usage (error = None): | |||
| sys.stdout = sys.stderr | |||
| if error != None: | |||
| print error | |||
| print(error) | |||
| print """usage: %s [options] | |||
| print("""usage: %s [options] | |||
| If a long option shows an argument is mandatory, it's mandatory for the | |||
| equivalent short option also. The default (if any) is shown in brackets. | |||
| -?, --help display this usage | |||
| -h, --host=HOST use HOST in the address to listen on [%s] | |||
| -p, --port=PORT listen on PORT [%d] | |||
| """ % (sys.argv[0], DEFAULT_HOST, DEFAULT_PORT), | |||
| """ % (sys.argv[0], DEFAULT_HOST, DEFAULT_PORT), end=' ') | |||
| sys.exit (0) | |||
| @@ -91,8 +91,7 @@ def main (): | |||
| elif opt in ('-p', '--port'): | |||
| port = int (arg) | |||
| else: | |||
| raise AttributeError, \ | |||
| "Recognized but unimplemented option `%s'" % opt | |||
| raise AttributeError("Recognized but unimplemented option `%s'" % opt) | |||
| except SystemExit: | |||
| raise | |||
| except: | |||
| @@ -15,4 +15,4 @@ else: | |||
| server = SOAP.SOAPProxy("http://admin:pw3340@localhost:8080/",encoding=None) | |||
| x = server.sopa() | |||
| print x | |||
| print(x) | |||