bpo-7769: enable xmlrpc.server.SimpleXMLRPCDispatcher.register_function used as decorator (GH-231)
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 @@
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 @@
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.