diff --git a/mwclient/errors.py b/mwclient/errors.py index b7fdd186..a44a5ef8 100644 --- a/mwclient/errors.py +++ b/mwclient/errors.py @@ -102,3 +102,7 @@ def __init__(self, response_text=None): def __str__(self): return self.message + + +class InvalidPageTitle(MwClientError): + pass diff --git a/mwclient/page.py b/mwclient/page.py index 75b60018..04c36c97 100644 --- a/mwclient/page.py +++ b/mwclient/page.py @@ -36,6 +36,9 @@ def __init__(self, site, name, info=None, extra_properties=None): info = six.next(six.itervalues(info['query']['pages'])) self._info = info + if 'invalid' in info: + raise mwclient.errors.InvalidPageTitle(info.get('invalidreason')) + self.namespace = info.get('ns', 0) self.name = info.get('title', u'') if self.namespace: @@ -45,7 +48,7 @@ def __init__(self, site, name, info=None, extra_properties=None): self.touched = parse_timestamp(info.get('touched')) self.revision = info.get('lastrevid', 0) - self.exists = 'missing' not in info and 'invalid' not in info + self.exists = 'missing' not in info self.length = info.get('length') self.protection = { i['type']: (i['level'], i['expiry']) diff --git a/test/test_page.py b/test/test_page.py index fbf74f11..0e09fdff 100644 --- a/test/test_page.py +++ b/test/test_page.py @@ -10,7 +10,7 @@ import mwclient from mwclient.page import Page from mwclient.client import Site -from mwclient.errors import APIError, AssertUserFailedError, ProtectedPageError +from mwclient.errors import APIError, AssertUserFailedError, ProtectedPageError, InvalidPageTitle try: import json @@ -82,9 +82,8 @@ def test_invalid_title(self, mock_site): } } } - page = Page(mock_site, title) - - assert page.exists is False + with pytest.raises(InvalidPageTitle): + page = Page(mock_site, title) @mock.patch('mwclient.client.Site') def test_pageprops(self, mock_site):