1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# Copyright 2009 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Generic XML-RPC helpers."""
__metaclass__ = type
__all__ = [
'return_fault',
]
from xmlrpclib import Fault
from twisted.python.util import mergeFunctionMetadata
def return_fault(function):
"""Catch any Faults raised by 'function' and return them instead."""
def decorated(*args, **kwargs):
try:
return function(*args, **kwargs)
except Fault, fault:
return fault
return mergeFunctionMetadata(function, decorated)
|