Mercurial > cpython-lru_cache-weakref
diff Lib/SimpleXMLRPCServer.py @ 20174:8f79fa537bd2 legacy-trunk
_dispatch(): Do no re-define the resolve_dotted_atttribute() function
every time this gets called; move it out as a global helper function.
Simplify the call to the _dispatch() method of the registered instance.
| author | Fred Drake <fdrake@acm.org> |
|---|---|
| date | Sat, 29 Sep 2001 04:54:33 +0000 |
| parents | 896f2d1e2f46 |
| children | 0be17259aac8 7c34e5bf2e22 |
line wrap: on
line diff
--- a/Lib/SimpleXMLRPCServer.py Sat Sep 29 01:08:19 2001 +0000 +++ b/Lib/SimpleXMLRPCServer.py Sat Sep 29 04:54:33 2001 +0000 @@ -147,22 +147,6 @@ not be called by SimpleXMLRPCServer. """ - def resolve_dotted_attribute(obj, attr): - """resolve_dotted_attribute(math, 'cos.__doc__') => math.cos.__doc__ - - Resolves a dotted attribute name to an object. Raises - an AttributeError if any attribute in the chain starts - with a '_'. - """ - for i in attr.split('.'): - if i.startswith('_'): - raise AttributeError( - 'attempt to access private attribute "%s"' % i - ) - else: - obj = getattr(obj,i) - return obj - func = None try: # check to see if a matching function has been registered @@ -171,14 +155,11 @@ if self.server.instance is not None: # check for a _dispatch method if hasattr(self.server.instance, '_dispatch'): - return apply( - getattr(self.server.instance,'_dispatch'), - (method, params) - ) + return self.server.instance._dispatch(method, params) else: # call instance method directly try: - func = resolve_dotted_attribute( + func = _resolve_dotted_attribute( self.server.instance, method ) @@ -196,6 +177,21 @@ if self.server.logRequests: BaseHTTPServer.BaseHTTPRequestHandler.log_request(self, code, size) + +def _resolve_dotted_attribute(obj, attr): + """Resolves a dotted attribute name to an object. Raises + an AttributeError if any attribute in the chain starts with a '_'. + """ + for i in attr.split('.'): + if i.startswith('_'): + raise AttributeError( + 'attempt to access private attribute "%s"' % i + ) + else: + obj = getattr(obj,i) + return obj + + class SimpleXMLRPCServer(SocketServer.TCPServer): """Simple XML-RPC server.
