class MwClientError(RuntimeError):
pass
class MediaWikiVersionError(MwClientError):
pass
class APIDisabledError(MwClientError):
pass
class MaximumRetriesExceeded(MwClientError):
pass
class APIError(MwClientError):
def __init__(self, code, info, kwargs):
self.code = code
self.info = info
super(APIError, self).__init__(code, info, kwargs)
[docs]class InsufficientPermission(MwClientError):
pass
class UserBlocked(InsufficientPermission):
pass
class EditError(MwClientError):
pass
class ProtectedPageError(EditError, InsufficientPermission):
def __init__(self, page, code=None, info=None):
self.page = page
self.code = code
self.info = info
def __str__(self):
if self.info is not None:
return self.info
return 'You do not have the "edit" right.'
class FileExists(EditError):
pass
class LoginError(MwClientError):
pass
class OAuthAuthorizationError(LoginError):
def __init__(self, code, info):
self.code = code
self.info = info
def __str__(self):
return self.info
class AssertUserFailedError(LoginError):
def __init__(self):
self.message = 'By default, mwclient protects you from ' + \
'accidentally editing without being logged in. If you ' + \
'actually want to edit without logging in, you can set ' + \
'force_login on the Site object to False.'
LoginError.__init__(self)
def __str__(self):
return self.message
class EmailError(MwClientError):
pass
class NoSpecifiedEmail(EmailError):
pass
class NoWriteApi(MwClientError):
pass
class InvalidResponse(MwClientError):
def __init__(self, response_text=None):
self.message = 'Did not get a valid JSON response from the server. Check that ' + \
'you used the correct hostname. If you did, the server might ' + \
'be wrongly configured or experiencing temporary problems.'
self.response_text = response_text
super(InvalidResponse, self).__init__(self.message, response_text)
def __str__(self):
return self.message