diff options
author | Hye-Shik Chang <hyeshik@gmail.com> | 2007-08-19 10:49:11 (GMT) |
---|---|---|
committer | Hye-Shik Chang <hyeshik@gmail.com> | 2007-08-19 10:49:11 (GMT) |
commit | 9604286ee129357d59522a2a1e95b4e0668c85cd (patch) | |
tree | c5eca0a84c5297e80039c5390904c2b3b7a675ab /Lib/SimpleXMLRPCServer.py | |
parent | faa54a392951468090f0095ffa927b16fcb20ca4 (diff) | |
download | cpython-9604286ee129357d59522a2a1e95b4e0668c85cd.zip cpython-9604286ee129357d59522a2a1e95b4e0668c85cd.tar.gz cpython-9604286ee129357d59522a2a1e95b4e0668c85cd.tar.bz2 |
Fix xmlrpc unittest. While it now passes on Linux, it still fails
on FreeBSD due to the difference of socket blocking mode inheritance.
Diffstat (limited to 'Lib/SimpleXMLRPCServer.py')
-rw-r--r-- | Lib/SimpleXMLRPCServer.py | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py index 7056d58..458d427 100644 --- a/Lib/SimpleXMLRPCServer.py +++ b/Lib/SimpleXMLRPCServer.py @@ -141,19 +141,6 @@ def list_public_methods(obj): if not member.startswith('_') and hasattr(getattr(obj, member), '__call__')] -def remove_duplicates(lst): - """remove_duplicates([2,2,2,1,3,3]) => [3,1,2] - - Returns a copy of a list without duplicates. Every list - item must be hashable and the order of the items in the - resulting list is not defined. - """ - u = {} - for x in lst: - u[x] = 1 - - return u.keys() - class SimpleXMLRPCDispatcher: """Mix-in class that dispatches XML-RPC requests. @@ -276,23 +263,18 @@ class SimpleXMLRPCDispatcher: Returns a list of the methods supported by the server.""" - methods = self.funcs.keys() + methods = set(self.funcs.keys()) if self.instance is not None: # Instance can implement _listMethod to return a list of # methods if hasattr(self.instance, '_listMethods'): - methods = remove_duplicates( - methods + self.instance._listMethods() - ) + methods |= set(self.instance._listMethods()) # if the instance has a _dispatch method then we # don't have enough information to provide a list # of methods elif not hasattr(self.instance, '_dispatch'): - methods = remove_duplicates( - methods + list_public_methods(self.instance) - ) - methods.sort() - return methods + methods |= set(list_public_methods(self.instance)) + return sorted(methods) def system_methodSignature(self, method_name): """system.methodSignature('add') => [double, int, int] @@ -459,7 +441,7 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): chunk_size = min(size_remaining, max_chunk_size) L.append(self.rfile.read(chunk_size)) size_remaining -= len(L[-1]) - data = ''.join(L) + data = b''.join(L) # In previous versions of SimpleXMLRPCServer, _dispatch # could be overridden in this class, instead of in |