From e28aa2f89449b432cb20b78f13cc9033a7edb0db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= <danmichaelo@gmail.com> Date: Sat, 18 Jul 2015 02:05:02 +0200 Subject: [PATCH] [#52] Absolute imports --- mwclient/__init__.py | 5 +-- mwclient/client.py | 5 +-- mwclient/listing.py | 22 +++++----- mwclient/page.py | 100 +++++++++++++++++++++---------------------- 4 files changed, 63 insertions(+), 69 deletions(-) diff --git a/mwclient/__init__.py b/mwclient/__init__.py index 625b585..b11b25d 100644 --- a/mwclient/__init__.py +++ b/mwclient/__init__.py @@ -23,9 +23,8 @@ OTHER DEALINGS IN THE SOFTWARE. """ -from errors import * -from client import Site, __ver__ -import ex +from mwclient.errors import * +from mwclient.client import Site, __ver__ import logging import warnings diff --git a/mwclient/client.py b/mwclient/client.py index 8e11b60..9a22248 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -21,9 +21,8 @@ except ImportError: import requests from requests.auth import HTTPBasicAuth, AuthBase -import errors -import listing -import page +import mwclient.errors as errors +import mwclient.listing as listing try: import gzip diff --git a/mwclient/listing.py b/mwclient/listing.py index 7008ad4..51100f2 100644 --- a/mwclient/listing.py +++ b/mwclient/listing.py @@ -1,8 +1,8 @@ -import page import six import six.moves from six import text_type from mwclient.util import parse_timestamp +import mwclient.page class List(object): @@ -136,15 +136,15 @@ class GeneratorList(List): self.result_member = 'pages' - self.page_class = page.Page + self.page_class = mwclient.page.Page def next(self): info = List.next(self, full=True) if info['ns'] == 14: return Category(self.site, u'', info) if info['ns'] == 6: - return page.Image(self.site, u'', info) - return page.Page(self.site, u'', info) + return mwclient.page.Image(self.site, u'', info) + return mwclient.page.Page(self.site, u'', info) def load_chunk(self): # Put this here so that the constructor does not fail @@ -153,10 +153,10 @@ class GeneratorList(List): return List.load_chunk(self) -class Category(page.Page, GeneratorList): +class Category(mwclient.page.Page, GeneratorList): def __init__(self, site, name, info=None, namespace=None): - page.Page.__init__(self, site, name, info) + mwclient.page.Page.__init__(self, site, name, info) kwargs = {} kwargs['gcmtitle'] = self.name if namespace: @@ -195,9 +195,9 @@ class PageList(GeneratorList): if self.namespace == 14: return Category(self.site, self.site.namespaces[14] + ':' + name, info) elif self.namespace == 6: - return page.Image(self.site, self.site.namespaces[6] + ':' + name, info) + return mwclient.page.Image(self.site, self.site.namespaces[6] + ':' + name, info) elif self.namespace != 0: - return page.Page(self.site, self.site.namespaces[self.namespace] + ':' + name, info) + return mwclient.page.Page(self.site, self.site.namespaces[self.namespace] + ':' + name, info) else: # Guessing page class if type(name) is not int: @@ -205,11 +205,11 @@ class PageList(GeneratorList): if namespace == 14: return Category(self.site, name, info) elif namespace == 6: - return page.Image(self.site, name, info) - return page.Page(self.site, name, info) + return mwclient.page.Image(self.site, name, info) + return mwclient.page.Page(self.site, name, info) def guess_namespace(self, name): - normal_name = page.Page.normalize_title(name) + normal_name = mwclient.page.Page.normalize_title(name) for ns in self.site.namespaces: if ns == 0: continue diff --git a/mwclient/page.py b/mwclient/page.py index 554536c..1ee0a0b 100644 --- a/mwclient/page.py +++ b/mwclient/page.py @@ -1,11 +1,11 @@ -import errors -import listing import six from six.moves import urllib from six import text_type import time import warnings from mwclient.util import parse_timestamp +import mwclient.listing +import mwclient.errors class Page(object): @@ -131,7 +131,7 @@ class Page(object): """ if not self.can('read'): - raise errors.InsufficientPermission(self) + raise mwclient.errors.InsufficientPermission(self) if not self.exists: return u'' if section is not None: @@ -157,13 +157,14 @@ class Page(object): """ if not self.site.logged_in and self.site.force_login: # Should we really check for this? - raise errors.LoginError(self.site, '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.') + raise mwclient.errors.LoginError(self.site, '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.') if self.site.blocked: - raise errors.UserBlocked(self.site.blocked) + raise mwclient.errors.UserBlocked(self.site.blocked) if not self.can('edit'): - raise errors.ProtectedPageError(self) + raise mwclient.errors.ProtectedPageError(self) if self.section is not None and section is None: warnings.warn('From mwclient version 0.8.0, the `save()` method will no longer ' + @@ -174,7 +175,7 @@ class Page(object): section = self.section if not self.site.writeapi: - raise errors.NoWriteApi(self) + raise mwclient.errors.NoWriteApi(self) data = {} if minor: @@ -197,17 +198,17 @@ class Page(object): summary=summary, token=self.get_token('edit'), **data) if result['edit'].get('result').lower() == 'failure': - raise errors.EditError(self, result['edit']) + raise mwclient.errors.EditError(self, result['edit']) return result try: result = do_edit() - except errors.APIError as e: + except mwclient.errors.APIError as e: if e.code == 'badtoken': # Retry, but only once to avoid an infinite loop self.get_token('edit', force=True) try: result = do_edit() - except errors.APIError as e: + except mwclient.errors.APIError as e: self.handle_edit_error(e, summary) else: self.handle_edit_error(e, summary) @@ -219,10 +220,10 @@ class Page(object): def handle_edit_error(self, e, summary): if e.code == 'editconflict': - raise errors.EditError(self, summary, e.info) + raise mwclient.errors.EditError(self, summary, e.info) elif e.code in ('protectedtitle', 'cantcreate', 'cantcreate-anon', 'noimageredirect-anon', 'noimageredirect', 'noedit-anon', 'noedit'): - raise errors.ProtectedPageError(self, e.code, e.info) + raise mwclient.errors.ProtectedPageError(self, e.code, e.info) else: raise @@ -237,10 +238,10 @@ class Page(object): """ if not self.can('move'): - raise errors.InsufficientPermission(self) + raise mwclient.errors.InsufficientPermission(self) if not self.site.writeapi: - raise errors.NoWriteApi(self) + raise mwclient.errors.NoWriteApi(self) data = {} if move_talk: @@ -259,10 +260,10 @@ class Page(object): """ if not self.can('delete'): - raise errors.InsufficientPermission(self) + raise mwclient.errors.InsufficientPermission(self) if not self.site.writeapi: - raise errors.NoWriteApi(self) + raise mwclient.errors.NoWriteApi(self) data = {} if watch: @@ -287,63 +288,61 @@ class Page(object): # Properties def backlinks(self, namespace=None, filterredir='all', redirect=False, limit=None, generator=True): - prefix = listing.List.get_prefix('bl', generator) - kwargs = dict(listing.List.generate_kwargs(prefix, - namespace=namespace, filterredir=filterredir)) + prefix = mwclient.listing.List.get_prefix('bl', generator) + kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, namespace=namespace, filterredir=filterredir)) if redirect: kwargs['%sredirect' % prefix] = '1' kwargs[prefix + 'title'] = self.name - return listing.List.get_list(generator)(self.site, 'backlinks', 'bl', limit=limit, return_values='title', **kwargs) + return mwclient.listing.List.get_list(generator)(self.site, 'backlinks', 'bl', limit=limit, return_values='title', **kwargs) def categories(self, generator=True): if generator: - return listing.PagePropertyGenerator(self, 'categories', 'cl') + return mwclient.listing.PagePropertyGenerator(self, 'categories', 'cl') else: # TODO: return sortkey if wanted - return listing.PageProperty(self, 'categories', 'cl', return_values='title') + return mwclient.listing.PageProperty(self, 'categories', 'cl', return_values='title') def embeddedin(self, namespace=None, filterredir='all', redirect=False, limit=None, generator=True): - prefix = listing.List.get_prefix('ei', generator) - kwargs = dict(listing.List.generate_kwargs(prefix, - namespace=namespace, filterredir=filterredir)) + prefix = mwclient.listing.List.get_prefix('ei', generator) + kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, namespace=namespace, filterredir=filterredir)) if redirect: kwargs['%sredirect' % prefix] = '1' kwargs[prefix + 'title'] = self.name - return listing.List.get_list(generator)(self.site, 'embeddedin', 'ei', limit=limit, return_values='title', **kwargs) + return mwclient.listing.List.get_list(generator)(self.site, 'embeddedin', 'ei', limit=limit, return_values='title', **kwargs) def extlinks(self): - return listing.PageProperty(self, 'extlinks', 'el', return_values='*') + return mwclient.listing.PageProperty(self, 'extlinks', 'el', return_values='*') def images(self, generator=True): if generator: - return listing.PagePropertyGenerator(self, 'images', '') + return mwclient.listing.PagePropertyGenerator(self, 'images', '') else: - return listing.PageProperty(self, 'images', '', return_values='title') + return mwclient.listing.PageProperty(self, 'images', '', return_values='title') def iwlinks(self): - return listing.PageProperty(self, 'iwlinks', 'iw', return_values=('prefix', '*')) + return mwclient.listing.PageProperty(self, 'iwlinks', 'iw', return_values=('prefix', '*')) def langlinks(self, **kwargs): - return listing.PageProperty(self, 'langlinks', 'll', return_values=('lang', '*'), **kwargs) + return mwclient.listing.PageProperty(self, 'langlinks', 'll', return_values=('lang', '*'), **kwargs) def links(self, namespace=None, generator=True, redirects=False): - prefix = listing.List.get_prefix('pl', generator) - kwargs = dict(listing.List.generate_kwargs(prefix, namespace=namespace)) + prefix = mwclient.listing.List.get_prefix('pl', generator) + kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, namespace=namespace)) if redirects: kwargs['redirects'] = '1' if generator: - return listing.PagePropertyGenerator(self, 'links', 'pl', **kwargs) + return mwclient.listing.PagePropertyGenerator(self, 'links', 'pl', **kwargs) else: - return listing.PageProperty(self, 'links', 'pl', return_values='title', **kwargs) + return mwclient.listing.PageProperty(self, 'links', 'pl', return_values='title', **kwargs) def revisions(self, startid=None, endid=None, start=None, end=None, dir='older', user=None, excludeuser=None, limit=50, prop='ids|timestamp|flags|comment|user', expandtemplates=False, section=None): - kwargs = dict(listing.List.generate_kwargs('rv', startid=startid, endid=endid, - start=start, end=end, user=user, excludeuser=excludeuser)) + kwargs = dict(mwclient.listing.List.generate_kwargs('rv', startid=startid, endid=endid, start=start, + end=end, user=user, excludeuser=excludeuser)) kwargs['rvdir'] = dir kwargs['rvprop'] = prop if expandtemplates: @@ -351,14 +350,14 @@ class Page(object): if section is not None: kwargs['rvsection'] = section - return listing.RevisionsIterator(self, 'revisions', 'rv', limit=limit, **kwargs) + return mwclient.listing.RevisionsIterator(self, 'revisions', 'rv', limit=limit, **kwargs) def templates(self, namespace=None, generator=True): - kwargs = dict(listing.List.generate_kwargs('tl', namespace=namespace)) + kwargs = dict(mwclient.listing.List.generate_kwargs('tl', namespace=namespace)) if generator: - return listing.PagePropertyGenerator(self, 'templates', 'tl') + return mwclient.listing.PagePropertyGenerator(self, 'templates', 'tl') else: - return listing.PageProperty(self, 'templates', 'tl', return_values='title') + return mwclient.listing.PageProperty(self, 'templates', 'tl', return_values='title') class Image(Page): @@ -372,22 +371,19 @@ class Image(Page): self.imageinfo = self._info.get('imageinfo', ({}, ))[0] def imagehistory(self): - return listing.PageProperty(self, 'imageinfo', 'ii', - iiprop='timestamp|user|comment|url|size|sha1|metadata|archivename') + return mwclient.listing.PageProperty(self, 'imageinfo', 'ii', + iiprop='timestamp|user|comment|url|size|sha1|metadata|archivename') def imageusage(self, namespace=None, filterredir='all', redirect=False, limit=None, generator=True): - prefix = listing.List.get_prefix('iu', generator) - kwargs = dict(listing.List.generate_kwargs(prefix, title=self.name, - namespace=namespace, filterredir=filterredir)) + prefix = mwclient.listing.List.get_prefix('iu', generator) + kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, title=self.name, namespace=namespace, filterredir=filterredir)) if redirect: kwargs['%sredirect' % prefix] = '1' - return listing.List.get_list(generator)(self.site, 'imageusage', 'iu', - limit=limit, return_values='title', **kwargs) + return mwclient.listing.List.get_list(generator)(self.site, 'imageusage', 'iu', limit=limit, return_values='title', **kwargs) def duplicatefiles(self, limit=None): - return listing.PageProperty(self, 'duplicatefiles', 'df', - dflimit=limit) + return mwclient.listing.PageProperty(self, 'duplicatefiles', 'df', dflimit=limit) def download(self): url = self.imageinfo['url'] -- GitLab