summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-09-29 04:54:33 (GMT)
committerFred Drake <fdrake@acm.org>2001-09-29 04:54:33 (GMT)
commit787fd8cdeb72bea74a79e5acf61debfd11683502 (patch)
tree942d417061bb829b7a09ae8eaac7f0e64585bbfe /Lib
parent599db7de6382179155c54dcf675b7af160df395f (diff)
downloadcpython-787fd8cdeb72bea74a79e5acf61debfd11683502.zip
cpython-787fd8cdeb72bea74a79e5acf61debfd11683502.tar.gz
cpython-787fd8cdeb72bea74a79e5acf61debfd11683502.tar.bz2
_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.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/SimpleXMLRPCServer.py38
1 files changed, 17 insertions, 21 deletions
diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py
index 89900bd..0a91683 100644
--- a/Lib/SimpleXMLRPCServer.py
+++ b/Lib/SimpleXMLRPCServer.py
@@ -147,22 +147,6 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
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 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
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 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
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.