diff --git a/mwclient/client.py b/mwclient/client.py index 82d97c72971c25f51c2a567735e3faeeb433fc0e..55278b5cf122d02acf061e8930268e4b5f5d533c 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -148,7 +148,7 @@ class Site(object): self.wait(token) continue raise errors.APIError(info['error']['code'], - info['error']['info']) + info['error']['info'], kwargs) return info @staticmethod @@ -461,3 +461,17 @@ class Site(object): if allrev: kwargs['wlallrev'] = '1' return listing.List(self, 'watchlist', 'wl', limit = limit, **kwargs) + def expandtemplates(self, text, title = None, generatexml = False): + self.require(1, 11) + + kwargs = {} + if title is None: kwargs['title'] = title + if generatexml: kwargs['generatexml'] = '1' + + result = self.api('expandtemplates', text = text, **kwargs) + + if generatexml: + return result['expandtemplates']['*'], result['parsetree']['*'] + else: + return result['expandtemplates']['*'] + diff --git a/mwclient/errors.py b/mwclient/errors.py index d996eb227295f25a05201e303c0d57f427c8ec60..297e6b9aa6ad1d005cc4a5dfd8717fd7adc22798 100644 --- a/mwclient/errors.py +++ b/mwclient/errors.py @@ -14,10 +14,10 @@ class MaximumRetriesExceeded(MwClientError): pass class APIError(MwClientError): - def __init__(self, code, info): + def __init__(self, code, info, kwargs): self.code = code self.info = info - MwClientError.__init__(self, code, info) + MwClientError.__init__(self, code, info, kwargs) class InsufficientPermission(MwClientError): pass