Source code for mwapi.errors

"""
Errors
======

.. autoclass:: APIError

.. autoclass:: LoginError

.. autoclass:: RequestError

.. autoclass:: ConnectionError

.. autoclass:: HTTPError

.. autoclass:: TooManyRedirectsError

.. autoclass:: TimeoutError
"""
import requests.exceptions


[docs]class APIError(RuntimeError): """ Thrown when the MediaWiki API returns an error. """ def __init__(self, code, info, content): super().__init__((code, info, content)) self.code = code self.info = info self.content = content super().__init__("{0}: {1} -- {2}".format(code, info, content)) @classmethod def from_doc(cls, doc): return cls( doc.get('code'), doc.get('info'), doc.get('*') )
[docs]class LoginError(RuntimeError): """ Thrown when an error occurs during login. """ @classmethod def from_doc(cls, doc): return cls(doc.get('status') + " -- " + doc.get('message'))
class ClientInteractionRequest(RuntimeError): """ Thrown when user input is needed to log in. """ def __init__(self, login_token, message, requests): super().__init__((login_token, message, requests)) self.login_token = login_token self.message = message self.requests = requests @classmethod def from_doc(cls, login_token, doc): return cls(login_token, doc.get('message'), doc.get('requests', []))
[docs]class RequestError(requests.exceptions.RequestException): """ A generic error thrown by :mod:`requests`. """ pass
[docs]class ConnectionError(requests.exceptions.ConnectionError): """ Handles a :class:`requests.exceptions.ConnectionError` """ pass
[docs]class HTTPError(requests.exceptions.HTTPError): """ Handles a :class:`requests.exceptions.HTTPError` """ pass
[docs]class TooManyRedirectsError(requests.exceptions.TooManyRedirects): """ Handles a :class:`requests.exceptions.TooManyRedirects` """ pass
[docs]class TimeoutError(requests.exceptions.Timeout): """ Handles a :class:`requests.exceptions.TimeoutError` """ pass