diff options
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/test/test_xmlrpc.py | 13 | ||||
| -rw-r--r-- | Lib/xmlrpc/server.py | 8 |
2 files changed, 14 insertions, 7 deletions
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index df9c79e..ef8ad21 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -505,10 +505,6 @@ def http_server(evt, numrequests, requestHandler=None, encoding=None): def getData(): return '42' - def my_function(): - '''This is my function''' - return True - class MyXMLRPCServer(xmlrpc.server.SimpleXMLRPCServer): def get_request(self): # Ensure the socket is always non-blocking. On Linux, socket @@ -535,9 +531,14 @@ def http_server(evt, numrequests, requestHandler=None, encoding=None): serv.register_introspection_functions() serv.register_multicall_functions() serv.register_function(pow) - serv.register_function(lambda x,y: x+y, 'add') serv.register_function(lambda x: x, 'têšt') - serv.register_function(my_function) + @serv.register_function + def my_function(): + '''This is my function''' + return True + @serv.register_function(name='add') + def _(x, y): + return x + y testInstance = TestInstanceClass() serv.register_instance(testInstance, allow_dotted_names=True) evt.set() diff --git a/Lib/xmlrpc/server.py b/Lib/xmlrpc/server.py index 849bfdd..a6275a1 100644 --- a/Lib/xmlrpc/server.py +++ b/Lib/xmlrpc/server.py @@ -106,6 +106,7 @@ server.handle_request() from xmlrpc.client import Fault, dumps, loads, gzip_encode, gzip_decode from http.server import BaseHTTPRequestHandler +from functools import partial import http.server import socketserver import sys @@ -204,17 +205,22 @@ class SimpleXMLRPCDispatcher: self.instance = instance self.allow_dotted_names = allow_dotted_names - def register_function(self, function, name=None): + def register_function(self, function=None, name=None): """Registers a function to respond to XML-RPC requests. The optional name argument can be used to set a Unicode name for the function. """ + # decorator factory + if function is None: + return partial(self.register_function, name=name) if name is None: name = function.__name__ self.funcs[name] = function + return function + def register_introspection_functions(self): """Registers the XML-RPC introspection methods in the system namespace. |
