From 5f1ac33f0060d34017d91941939a4b3b76f5c780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= <danmichaelo@gmail.com> Date: Sun, 16 Jun 2013 22:50:46 +0200 Subject: [PATCH] PEP8: Fix E251 unexpected spaces around keyword / parameter equals --- mwclient/client.py | 182 ++++++++++++++++++------------------ mwclient/compatibility.py | 8 +- mwclient/ex.py | 24 ++--- mwclient/http.py | 28 +++--- mwclient/listing.py | 36 +++---- mwclient/page.py | 130 +++++++++++++------------- mwclient/page_nowriteapi.py | 6 +- mwclient/upload.py | 2 +- 8 files changed, 208 insertions(+), 208 deletions(-) diff --git a/mwclient/client.py b/mwclient/client.py index 33d2965..7df3f70 100644 --- a/mwclient/client.py +++ b/mwclient/client.py @@ -38,9 +38,9 @@ class WaitToken(object): class Site(object): api_limit = 500 - def __init__(self, host, path = '/w/', ext = '.php', pool = None, retry_timeout = 30, - max_retries = 25, wait_callback = lambda *x: None, clients_useragent = None, - max_lag = 3, compress = True, force_login = True, do_init = True): + def __init__(self, host, path='/w/', ext='.php', pool=None, retry_timeout=30, + max_retries=25, wait_callback=lambda *x: None, clients_useragent=None, + max_lag=3, compress=True, force_login=True, do_init=True): # Setup member variables self.host = host self.path = path @@ -76,8 +76,8 @@ class Site(object): # Page generators self.pages = listing.PageList(self) - self.categories = listing.PageList(self, namespace = 14) - self.images = listing.PageList(self, namespace = 6) + self.categories = listing.PageList(self, namespace=14) + self.images = listing.PageList(self, namespace=6) # Compat page generators self.Pages = self.pages @@ -97,8 +97,8 @@ class Site(object): def site_init(self): - meta = self.api('query', meta = 'siteinfo|userinfo', - siprop = 'general|namespaces', uiprop = 'groups|rights') + meta = self.api('query', meta='siteinfo|userinfo', + siprop='general|namespaces', uiprop='groups|rights') # Extract site info self.site = meta['query']['general'] @@ -128,7 +128,7 @@ class Site(object): self.require(1, 11) # User info - userinfo = compatibility.userinfo(meta, self.require(1, 12, raise_error = False)) + userinfo = compatibility.userinfo(meta, self.require(1, 12, raise_error=False)) self.username = userinfo['name'] self.groups = userinfo.get('groups', []) self.rights = userinfo.get('rights', []) @@ -160,17 +160,17 @@ class Site(object): while True: info = self.raw_api(action, **kwargs) if not info: info = {} - res = self.handle_api_result(info, token = token) + res = self.handle_api_result(info, token=token) if res: return info - def handle_api_result(self, info, kwargs = None, token = None): + def handle_api_result(self, info, kwargs=None, token=None): if token is None: token = self.wait_token() try: - userinfo = compatibility.userinfo(info, self.require(1, 12, raise_error = None)) + userinfo = compatibility.userinfo(info, self.require(1, 12, raise_error=None)) except KeyError: userinfo = () if 'blockedby' in userinfo: @@ -216,11 +216,11 @@ class Site(object): while True: try: stream = self.connection.post(self.host, - url, data = data, headers = headers) + url, data=data, headers=headers) if stream.getheader('Content-Encoding') == 'gzip': # BAD. seekable_stream = StringIO(stream.read()) - stream = gzip.GzipFile(fileobj = seekable_stream) + stream = gzip.GzipFile(fileobj=seekable_stream) return stream except errors.HTTPStatusError, e: @@ -257,12 +257,12 @@ class Site(object): data = self._query_string(*args, **kwargs) return self.raw_call('index', data).read().decode('utf-8', 'ignore') - def wait_token(self, args = None): + def wait_token(self, args=None): token = WaitToken() self.wait_tokens[token] = (0, args) return token - def wait(self, token, min_wait = 0): + def wait(self, token, min_wait=0): retry, args = self.wait_tokens[token] self.wait_tokens[token] = (retry + 1, args) if retry > self.max_retries and self.max_retries != -1: @@ -274,7 +274,7 @@ class Site(object): time.sleep(timeout) return self.wait_tokens[token] - def require(self, major, minor, revision = None, raise_error = True): + def require(self, major, minor, revision=None, raise_error=True): if self.version is None: if raise_error is None: return raise RuntimeError('Site %s has not yet been initialized' % repr(self)) @@ -292,7 +292,7 @@ class Site(object): # Actions - def email(self, user, text, subject, cc = False): + def email(self, user, text, subject, cc=False): """Sends email to a specified user on the wiki.""" #TODO: Use api! postdata = {} @@ -311,7 +311,7 @@ class Site(object): raise errors.EmailError, data - def login(self, username = None, password = None, cookies = None, domain = None): + def login(self, username=None, password=None, cookies=None, domain=None): """Login to the wiki.""" if self.initialized: self.require(1, 10) @@ -342,8 +342,8 @@ class Site(object): raise errors.LoginError(self, login['login']) if self.initialized: - info = self.api('query', meta = 'userinfo', uiprop = 'groups|rights') - userinfo = compatibility.userinfo(info, self.require(1, 12, raise_error = False)) + info = self.api('query', meta='userinfo', uiprop='groups|rights') + userinfo = compatibility.userinfo(info, self.require(1, 12, raise_error=False)) self.username = userinfo['name'] self.groups = userinfo.get('groups', []) self.rights = userinfo.get('rights', []) @@ -352,13 +352,13 @@ class Site(object): self.site_init() - def upload(self, file = None, filename = None, description = '', ignore = False, file_size = None, - url = None, session_key = None, comment = None): + def upload(self, file=None, filename=None, description='', ignore=False, file_size=None, + url=None, session_key=None, comment=None): """Upload a file to the wiki.""" if self.version[:2] < (1, 16): - return compatibility.old_upload(self, file = file, filename = filename, - description = description, ignore = ignore, - file_size = file_size) + return compatibility.old_upload(self, file=file, filename=filename, + description=description, ignore=ignore, + file_size=file_size) image = self.Images[filename] if not image.can('upload'): @@ -405,7 +405,7 @@ class Site(object): info = json.loads(data) if not info: info = {} - if self.handle_api_result(info, kwargs = predata): + if self.handle_api_result(info, kwargs=predata): return info.get('upload', {}) except errors.HTTPStatusError, e: if e[0] == 503 and e[1].getheader('X-Database-Lag'): @@ -418,7 +418,7 @@ class Site(object): self.wait(wait_token) file.seek(0, 0) - def parse(self, text = None, title = None, page = None): + def parse(self, text=None, title=None, page=None): kwargs = {} if text is not None: kwargs['text'] = text if title is not None: kwargs['title'] = title @@ -432,50 +432,50 @@ class Site(object): # def import: requires 1.15 # Lists - def allpages(self, start = None, prefix = None, namespace = '0', filterredir = 'all', - minsize = None, maxsize = None, prtype = None, prlevel = None, - limit = None, dir = 'ascending', filterlanglinks = 'all', generator = True): + def allpages(self, start=None, prefix=None, namespace='0', filterredir='all', + minsize=None, maxsize=None, prtype=None, prlevel=None, + limit=None, dir='ascending', filterlanglinks='all', generator=True): """Retrieve all pages on the wiki as a generator.""" self.require(1, 9) pfx = listing.List.get_prefix('ap', generator) - kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix = prefix, - minsize = minsize, maxsize = maxsize, prtype = prtype, prlevel = prlevel, - namespace = namespace, filterredir = filterredir, dir = dir, - filterlanglinks = filterlanglinks)) - return listing.List.get_list(generator)(self, 'allpages', 'ap', limit = limit, return_values = 'title', **kwargs) + kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix=prefix, + minsize=minsize, maxsize=maxsize, prtype=prtype, prlevel=prlevel, + namespace=namespace, filterredir=filterredir, dir=dir, + filterlanglinks=filterlanglinks)) + return listing.List.get_list(generator)(self, 'allpages', 'ap', limit=limit, return_values='title', **kwargs) # def allimages(self): requires 1.12 # TODO! - def alllinks(self, start = None, prefix = None, unique = False, prop = 'title', - namespace = '0', limit = None, generator = True): + def alllinks(self, start=None, prefix=None, unique=False, prop='title', + namespace='0', limit=None, generator=True): """Retrieve a list of all links on the wiki as a generator.""" self.require(1, 11) pfx = listing.List.get_prefix('al', generator) - kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix = prefix, - prop = prop, namespace = namespace)) + kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix=prefix, + prop=prop, namespace=namespace)) if unique: kwargs[pfx + 'unique'] = '1' - return listing.List.get_list(generator)(self, 'alllinks', 'al', limit = limit, return_values = 'title', **kwargs) + return listing.List.get_list(generator)(self, 'alllinks', 'al', limit=limit, return_values='title', **kwargs) - def allcategories(self, start = None, prefix = None, dir = 'ascending', limit = None, generator = True): + def allcategories(self, start=None, prefix=None, dir='ascending', limit=None, generator=True): """Retrieve all categories on the wiki as a generator.""" self.require(1, 12) pfx = listing.List.get_prefix('ac', generator) - kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix = prefix, dir = dir)) - return listing.List.get_list(generator)(self, 'allcategories', 'ac', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs(pfx, ('from', start), prefix=prefix, dir=dir)) + return listing.List.get_list(generator)(self, 'allcategories', 'ac', limit=limit, **kwargs) - def allusers(self, start = None, prefix = None, group = None, prop = None, limit = None): + def allusers(self, start=None, prefix=None, group=None, prop=None, limit=None): """Retrieve all users on the wiki as a generator.""" self.require(1, 11) - kwargs = dict(listing.List.generate_kwargs('au', ('from', start), prefix = prefix, - group = group, prop = prop)) - return listing.List(self, 'allusers', 'au', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('au', ('from', start), prefix=prefix, + group=group, prop=prop)) + return listing.List(self, 'allusers', 'au', limit=limit, **kwargs) - def blocks(self, start = None, end = None, dir = 'older', ids = None, users = None, limit = None, - prop = 'id|user|by|timestamp|expiry|reason|flags'): + def blocks(self, start=None, end=None, dir='older', ids=None, users=None, limit=None, + prop='id|user|by|timestamp|expiry|reason|flags'): """Retrieve blocks as a generator. Each block is a dictionary containing: @@ -492,20 +492,20 @@ class Site(object): self.require(1, 12) # TODO: Fix. Fix what? - kwargs = dict(listing.List.generate_kwargs('bk', start = start, end = end, dir = dir, - users = users, prop = prop)) - return listing.List(self, 'blocks', 'bk', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('bk', start=start, end=end, dir=dir, + users=users, prop=prop)) + return listing.List(self, 'blocks', 'bk', limit=limit, **kwargs) - def deletedrevisions(self, start = None, end = None, dir = 'older', namespace = None, - limit = None, prop = 'user|comment'): + def deletedrevisions(self, start=None, end=None, dir='older', namespace=None, + limit=None, prop='user|comment'): # TODO: Fix self.require(1, 12) - kwargs = dict(listing.List.generate_kwargs('dr', start = start, end = end, dir = dir, - namespace = namespace, prop = prop)) - return listing.List(self, 'deletedrevs', 'dr', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('dr', start=start, end=end, dir=dir, + namespace=namespace, prop=prop)) + return listing.List(self, 'deletedrevs', 'dr', limit=limit, **kwargs) - def exturlusage(self, query, prop = None, protocol = 'http', namespace = None, limit = None): + def exturlusage(self, query, prop=None, protocol='http', namespace=None, limit=None): """Retrieves list of pages that link to a particular domain or URL as a generator. This API call mirrors the Special:LinkSearch function on-wiki. @@ -525,20 +525,20 @@ class Site(object): """ self.require(1, 11) - kwargs = dict(listing.List.generate_kwargs('eu', query = query, prop = prop, - protocol = protocol, namespace = namespace)) - return listing.List(self, 'exturlusage', 'eu', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('eu', query=query, prop=prop, + protocol=protocol, namespace=namespace)) + return listing.List(self, 'exturlusage', 'eu', limit=limit, **kwargs) - def logevents(self, type = None, prop = None, start = None, end = None, - dir = 'older', user = None, title = None, limit = None, action = None): + def logevents(self, type=None, prop=None, start=None, end=None, + dir='older', user=None, title=None, limit=None, action=None): self.require(1, 10) - kwargs = dict(listing.List.generate_kwargs('le', prop = prop, type = type, start = start, - end = end, dir = dir, user = user, title = title, action = action)) - return listing.List(self, 'logevents', 'le', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('le', prop=prop, type=type, start=start, + end=end, dir=dir, user=user, title=title, action=action)) + return listing.List(self, 'logevents', 'le', limit=limit, **kwargs) # def protectedtitles requires 1.15 - def random(self, namespace, limit = 20): + def random(self, namespace, limit=20): """Retrieves a generator of random page from a particular namespace. limit specifies the number of random articles retrieved. @@ -549,47 +549,47 @@ class Site(object): """ self.require(1, 12) - kwargs = dict(listing.List.generate_kwargs('rn', namespace = namespace)) - return listing.List(self, 'random', 'rn', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('rn', namespace=namespace)) + return listing.List(self, 'random', 'rn', limit=limit, **kwargs) - def recentchanges(self, start = None, end = None, dir = 'older', namespace = None, - prop = None, show = None, limit = None, type = None): + def recentchanges(self, start=None, end=None, dir='older', namespace=None, + prop=None, show=None, limit=None, type=None): self.require(1, 9) - kwargs = dict(listing.List.generate_kwargs('rc', start = start, end = end, dir = dir, - namespace = namespace, prop = prop, show = show, type = type)) - return listing.List(self, 'recentchanges', 'rc', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('rc', start=start, end=end, dir=dir, + namespace=namespace, prop=prop, show=show, type=type)) + return listing.List(self, 'recentchanges', 'rc', limit=limit, **kwargs) - def search(self, search, namespace = '0', what = 'title', redirects = False, limit = None): + def search(self, search, namespace='0', what='title', redirects=False, limit=None): self.require(1, 11) - kwargs = dict(listing.List.generate_kwargs('sr', search = search, namespace = namespace, what = what)) + kwargs = dict(listing.List.generate_kwargs('sr', search=search, namespace=namespace, what=what)) if redirects: kwargs['srredirects'] = '1' - return listing.List(self, 'search', 'sr', limit = limit, **kwargs) + return listing.List(self, 'search', 'sr', limit=limit, **kwargs) - def usercontributions(self, user, start = None, end = None, dir = 'older', namespace = None, - prop = None, show = None, limit = None): + def usercontributions(self, user, start=None, end=None, dir='older', namespace=None, + prop=None, show=None, limit=None): self.require(1, 9) - kwargs = dict(listing.List.generate_kwargs('uc', user = user, start = start, end = end, - dir = dir, namespace = namespace, prop = prop, show = show)) - return listing.List(self, 'usercontribs', 'uc', limit = limit, **kwargs) + kwargs = dict(listing.List.generate_kwargs('uc', user=user, start=start, end=end, + dir=dir, namespace=namespace, prop=prop, show=show)) + return listing.List(self, 'usercontribs', 'uc', limit=limit, **kwargs) - def users(self, users, prop = 'blockinfo|groups|editcount'): + def users(self, users, prop='blockinfo|groups|editcount'): self.require(1, 12) - return listing.List(self, 'users', 'us', ususers = '|'.join(users), usprop = prop) + return listing.List(self, 'users', 'us', ususers='|'.join(users), usprop=prop) - def watchlist(self, allrev = False, start = None, end = None, namespace = None, dir = 'older', - prop = None, show = None, limit = None): + def watchlist(self, allrev=False, start=None, end=None, namespace=None, dir='older', + prop=None, show=None, limit=None): self.require(1, 9) - kwargs = dict(listing.List.generate_kwargs('wl', start = start, end = end, - namespace = namespace, dir = dir, prop = prop, show = show)) + kwargs = dict(listing.List.generate_kwargs('wl', start=start, end=end, + namespace=namespace, dir=dir, prop=prop, show=show)) if allrev: kwargs['wlallrev'] = '1' - return listing.List(self, 'watchlist', 'wl', limit = limit, **kwargs) + return listing.List(self, 'watchlist', 'wl', limit=limit, **kwargs) - def expandtemplates(self, text, title = None, generatexml = False): + def expandtemplates(self, text, title=None, generatexml=False): """Takes wikitext (text) and expands templates.""" self.require(1, 11) @@ -597,7 +597,7 @@ class Site(object): if title is None: kwargs['title'] = title if generatexml: kwargs['generatexml'] = '1' - result = self.api('expandtemplates', text = text, **kwargs) + result = self.api('expandtemplates', text=text, **kwargs) if generatexml: return result['expandtemplates']['*'], result['parsetree']['*'] diff --git a/mwclient/compatibility.py b/mwclient/compatibility.py index d469ace..65b5b3e 100644 --- a/mwclient/compatibility.py +++ b/mwclient/compatibility.py @@ -6,7 +6,7 @@ def title(prefix, new_format): else: return 'titles' -def userinfo(data, new_format = None): +def userinfo(data, new_format=None): if new_format is None: # Unknown version; trying to guess if 'userinfo' in data: @@ -28,7 +28,7 @@ def iiprop(version): else: return 'timestamp|user|comment|url|size|sha1' -def cmtitle(page, new_format, prefix = ''): +def cmtitle(page, new_format, prefix=''): if new_format: return prefix + 'title', page.name else: @@ -41,7 +41,7 @@ def protectright(version): return 'protect' from cStringIO import StringIO -def old_upload(self, file, filename, description, license = '', ignore = False, file_size = None): +def old_upload(self, file, filename, description, license='', ignore=False, file_size=None): image = self.Images[filename] if not image.can('upload'): raise errors.InsufficientPermission(filename) @@ -74,7 +74,7 @@ def old_upload(self, file, filename, description, license = '', ignore = False, try: self.connection.post(self.host, self.path + 'index.php?title=Special:Upload&maxlag=' - + self.max_lag, data = postdata).read() + + self.max_lag, data=postdata).read() except errors.HTTPStatusError, e: if e[0] == 503 and e[1].getheader('X-Database-Lag'): self.wait(wait_token, int(e[1].getheader('Retry-After'))) diff --git a/mwclient/ex.py b/mwclient/ex.py index 879c28a..730fd05 100644 --- a/mwclient/ex.py +++ b/mwclient/ex.py @@ -31,18 +31,18 @@ class SiteList(object): class ConfiguredSite(client.Site): def __init__(self, *config_files, **kwargs): - self.config = read_config(config_files, sites = SiteList()) + self.config = read_config(config_files, sites=SiteList()) if 'name' in kwargs: self.config.update(self.config['sites'][kwargs['name']]) do_login = 'username' in self.config and 'password' in self.config - client.Site.__init__(self, host = self.config['host'], - path = self.config['path'], ext = self.config.get('ext', '.php'), - do_init = not do_login, - retry_timeout = self.config.get('retry_timeout', 30), - max_retries = self.config.get('max_retries', -1)) + client.Site.__init__(self, host=self.config['host'], + path=self.config['path'], ext=self.config.get('ext', '.php'), + do_init=not do_login, + retry_timeout =self.config.get('retry_timeout', 30), + max_retries=self.config.get('max_retries', -1)) if do_login: @@ -51,7 +51,7 @@ class ConfiguredSite(client.Site): class ConfiguredPool(list): def __init__(self, *config_files): - self.config = read_config(config_files, sites = SiteList()) + self.config = read_config(config_files, sites=SiteList()) self.pool = http.HTTPPool() config = dict([(k, v) for k, v in self.config.iteritems() @@ -64,11 +64,11 @@ class ConfiguredPool(list): do_login = 'username' in site and 'password' in site - self.append(client.Site(host = site['host'], - path = site['path'], ext = site.get('ext', '.php'), - pool = self.pool, do_init = not do_login, - retry_timeout = site.get('retry_timeout', 30), - max_retries = site.get('max_retries', -1))) + self.append(client.Site(host=site['host'], + path=site['path'], ext=site.get('ext', '.php'), + pool=self.pool, do_init=not do_login, + retry_timeout=site.get('retry_timeout', 30), + max_retries=site.get('max_retries', -1))) if do_login: self[-1].login(site['username'], site['password']) self[-1].config = site diff --git a/mwclient/http.py b/mwclient/http.py index d6b1ed6..daafa70 100644 --- a/mwclient/http.py +++ b/mwclient/http.py @@ -43,7 +43,7 @@ class HTTPPersistentConnection(object): scheme_name = 'http' useragent = None - def __init__(self, host, pool = None, clients_useragent = None): + def __init__(self, host, pool=None, clients_useragent=None): self._conn = self.http_class(host) self._conn.connect() self.last_request = time.time() @@ -57,7 +57,7 @@ class HTTPPersistentConnection(object): self.useragent = clients_useragent + 'MwClient/' + __ver__ def request(self, method, host, path, headers, data, - raise_on_not_ok = True, auto_redirect = True): + raise_on_not_ok=True, auto_redirect=True): # Strip scheme if type(host) is tuple: @@ -85,7 +85,7 @@ class HTTPPersistentConnection(object): if _headers: headers.update(_headers) try: - self._conn.request(method, path, headers = headers) + self._conn.request(method, path, headers=headers) if issubclass(data.__class__, upload.Upload): for s in data: self._conn.send(s) @@ -149,14 +149,14 @@ class HTTPPersistentConnection(object): return res - def get(self, host, path, headers = None): + def get(self, host, path, headers=None): return self.request('GET', host, path, headers, None) - def post(self, host, path, headers = None, data = None): + def post(self, host, path, headers=None, data=None): return self.request('POST', host, path, headers, data) - def head(self, host, path, headers = None, auto_redirect = False): + def head(self, host, path, headers=None, auto_redirect=False): res = self.request('HEAD', host, path, headers, - data = None, raise_on_not_ok = False, - auto_redirect = auto_redirect) + data=None, raise_on_not_ok=False, + auto_redirect=auto_redirect) res.read() return res.status, res.getheaders() @@ -167,7 +167,7 @@ class HTTPPersistentConnection(object): class HTTPConnection(HTTPPersistentConnection): def request(self, method, host, path, headers, data, - raise_on_not_ok = True, auto_redirect = True): + raise_on_not_ok=True, auto_redirect=True): if not headers: headers = {} headers['Connection'] = 'Close' res = HTTPPersistentConnection.request(self, method, host, path, headers, data, @@ -180,12 +180,12 @@ class HTTPSPersistentConnection(HTTPPersistentConnection): class HTTPPool(list): - def __init__(self, clients_useragent = None): + def __init__(self, clients_useragent=None): list.__init__(self) self.cookies = {} self.clients_useragent = clients_useragent - def find_connection(self, host, scheme = 'http'): + def find_connection(self, host, scheme='http'): if type(host) is tuple: scheme, host = host @@ -214,13 +214,13 @@ class HTTPPool(list): conn = cls(host, self, self.clients_useragent) self.append(([(scheme, host)], conn)) return conn - def get(self, host, path, headers = None): + def get(self, host, path, headers=None): return self.find_connection(host).get(host, path, headers) - def post(self, host, path, headers = None, data = None): + def post(self, host, path, headers=None, data=None): return self.find_connection(host).post(host, path, headers, data) - def head(self, host, path, headers = None, auto_redirect = False): + def head(self, host, path, headers=None, auto_redirect=False): return self.find_connection(host).head(host, path, headers, auto_redirect) def request(self, method, host, path, headers, data, diff --git a/mwclient/listing.py b/mwclient/listing.py index c3f3f0f..4ae49c4 100644 --- a/mwclient/listing.py +++ b/mwclient/listing.py @@ -2,7 +2,7 @@ import client, page import compatibility class List(object): - def __init__(self, site, list_name, prefix, limit = None, return_values = None, max_items = None, *args, **kwargs): + def __init__(self, site, list_name, prefix, limit=None, return_values=None, max_items=None, *args, **kwargs): # NOTE: Fix limit self.site = site self.list_name = list_name @@ -27,7 +27,7 @@ class List(object): def __iter__(self): return self - def next(self, full = False): + def next(self, full=False): if self.max_items is not None: if self.count >= self.max_items: raise StopIteration @@ -48,7 +48,7 @@ class List(object): except StopIteration: if self.last: raise StopIteration self.load_chunk() - return List.next(self, full = full) + return List.next(self, full=full) def load_chunk(self): data = self.site.api('query', (self.generator, self.list_name), *[(str(k), v) for k, v in self.args.iteritems()]) @@ -82,14 +82,14 @@ class List(object): yield _prefix + key, value @staticmethod - def get_prefix(prefix, generator = False): + def get_prefix(prefix, generator=False): if generator: return 'g' + prefix else: return prefix @staticmethod - def get_list(generator = False): + def get_list(generator=False): if generator: return GeneratorList else: @@ -112,7 +112,7 @@ class GeneratorList(List): self.page_class = page.Page def next(self): - info = List.next(self, full = True) + info = List.next(self, full=True) if info['ns'] == 14: return Category(self.site, u'', info) if info['ns'] == 6: @@ -127,27 +127,27 @@ class GeneratorList(List): class Category(page.Page, GeneratorList): - def __init__(self, site, name, info = None, namespace = None): + def __init__(self, site, name, info=None, namespace=None): page.Page.__init__(self, site, name, info) kwargs = {} kwargs.update((compatibility.cmtitle(self, self.site.require( - 1, 12, raise_error = False), prefix = 'gcm'), )) + 1, 12, raise_error=False), prefix='gcm'), )) if namespace: kwargs['gcmnamespace'] = namespace GeneratorList.__init__(self, site, 'categorymembers', 'cm', **kwargs) def __repr__(self): return "<Category object '%s' for %s>" % (self.name.encode('utf-8'), self.site) - def members(self, prop = 'ids|title', namespace = None, sort = 'sortkey', - dir = 'asc', start = None, end = None, generator = True): + def members(self, prop='ids|title', namespace=None, sort='sortkey', + dir='asc', start=None, end=None, generator=True): prefix = self.get_prefix('cm', generator) - kwargs = dict(self.generate_kwargs(prefix, prop = prop, namespace = namespace, - sort = sort, dir = dir, start = start, end = end, *(compatibility.cmtitle( - self, self.site.require(1, 12, raise_error = False)), ))) + kwargs = dict(self.generate_kwargs(prefix, prop=prop, namespace=namespace, + sort=sort, dir=dir, start=start, end=end, *(compatibility.cmtitle( + self, self.site.require(1, 12, raise_error=False)), ))) return self.get_list(generator)(self.site, 'categorymembers', 'cm', **kwargs) class PageList(GeneratorList): - def __init__(self, site, prefix = None, start = None, namespace = 0, redirects = 'all'): + def __init__(self, site, prefix=None, start=None, namespace=0, redirects='all'): self.namespace = namespace kwargs = {} @@ -155,12 +155,12 @@ class PageList(GeneratorList): if start: kwargs['apfrom'] = start GeneratorList.__init__(self, site, 'allpages', 'ap', - apnamespace = str(namespace), apfilterredir = redirects, **kwargs) + apnamespace=str(namespace), apfilterredir=redirects, **kwargs) def __getitem__(self, name): return self.get(name, None) - def get(self, name, info = ()): + def get(self, name, info=()): if self.namespace == 14: return Category(self.site, self.site.namespaces[14] + ':' + name, info) elif self.namespace == 6: @@ -191,7 +191,7 @@ class PageList(GeneratorList): class PageProperty(List): def __init__(self, page, prop, prefix, *args, **kwargs): - List.__init__(self, page.site, prop, prefix, titles = page.name, *args, **kwargs) + List.__init__(self, page.site, prop, prefix, titles=page.name, *args, **kwargs) self.page = page self.generator = 'prop' @@ -205,7 +205,7 @@ class PageProperty(List): class PagePropertyGenerator(GeneratorList): def __init__(self, page, prop, prefix, *args, **kwargs): - GeneratorList.__init__(self, page.site, prop, prefix, titles = page.name, *args, **kwargs) + GeneratorList.__init__(self, page.site, prop, prefix, titles=page.name, *args, **kwargs) self.page = page class RevisionsIterator(PageProperty): diff --git a/mwclient/page.py b/mwclient/page.py index 0c6ba34..fee2542 100644 --- a/mwclient/page.py +++ b/mwclient/page.py @@ -5,7 +5,7 @@ from page_nowriteapi import OldPage import urllib, urlparse, time class Page(object): - def __init__(self, site, name, info = None, extra_properties = {}): + def __init__(self, site, name, info=None, extra_properties={}): if type(name) is type(self): return self.__dict__.update(name.__dict__) self.site = site @@ -22,11 +22,11 @@ class Page(object): extra_props = () if type(name) is int: - info = self.site.api('query', prop = prop, pageids = name, - inprop = 'protection', *extra_props) + info = self.site.api('query', prop=prop, pageids=name, + inprop='protection', *extra_props) else: - info = self.site.api('query', prop = prop, titles = name, - inprop = 'protection', *extra_props) + info = self.site.api('query', prop=prop, titles=name, + inprop='protection', *extra_props) info = info['query']['pages'].itervalues().next() self._info = info @@ -49,7 +49,7 @@ class Page(object): def redirects_to(self): """ Returns the redirect target page, or None if the page is not a redirect page.""" - info = self.site.api('query', prop = 'pageprops', titles = self.name, redirects = '')['query'] + info = self.site.api('query', prop='pageprops', titles=self.name, redirects='')['query'] if 'redirects' in info: for page in info['redirects']: if page['from'] == self.name: @@ -95,14 +95,14 @@ class Page(object): return level in self.site.rights - def get_token(self, type, force = False): + def get_token(self, type, force=False): self.site.require(1, 11) if type not in self.site.tokens: self.site.tokens[type] = '0' if self.site.tokens.get(type, '0') == '0' or force: - info = self.site.api('query', titles = self.name, - prop = 'info', intoken = type) + info = self.site.api('query', titles=self.name, + prop='info', intoken=type) for i in info['query']['pages'].itervalues(): if i['title'] == self.name: self.site.tokens[type] = i['%stoken' % type] @@ -111,13 +111,13 @@ class Page(object): def get_expanded(self): self.site.require(1, 12) - revs = self.revisions(prop = 'content', limit = 1, expandtemplates = True) + revs = self.revisions(prop='content', limit=1, expandtemplates=True) try: return revs.next()['*'] except StopIteration: return u'' - def edit(self, section = None, readonly = False): + def edit(self, section=None, readonly=False): """Returns wikitext for a specified section or for the whole page. Retrieves the latest edit. @@ -128,7 +128,7 @@ class Page(object): if not self.exists: return u'' - revs = self.revisions(prop = 'content|timestamp', limit = 1, section = section) + revs = self.revisions(prop='content|timestamp', limit=1, section=section) try: rev = revs.next() self.text = rev['*'] @@ -141,7 +141,7 @@ class Page(object): self.edit_time = time.gmtime() return self.text - def save(self, text = u'', summary = u'', minor = False, bot = True, section = None, **kwargs): + def save(self, text=u'', summary=u'', minor=False, bot=True, section=None, **kwargs): """Save text of page.""" if not self.site.logged_in and self.site.force_login: # Should we really check for this? @@ -155,7 +155,7 @@ class Page(object): if not section: section = self.section if not self.site.writeapi: - return OldPage.save(self, text = text, summary = summary, minor = False) + return OldPage.save(self, text=text, summary=summary, minor=False) data = {} if minor: data['minor'] = '1' @@ -168,8 +168,8 @@ class Page(object): data.update(kwargs) def do_edit(): - result = self.site.api('edit', title = self.name, text = text, - summary = summary, token = self.get_token('edit'), + result = self.site.api('edit', title=self.name, text=text, + summary=summary, token=self.get_token('edit'), **data) if result['edit'].get('result').lower() == 'failure': raise errors.EditError(self, result['edit']) @@ -179,7 +179,7 @@ class Page(object): except errors.APIError, e: if e.code == 'badtoken': # Retry, but only once to avoid an infinite loop - self.get_token('edit', force = True) + self.get_token('edit', force=True) try: result = do_edit() except errors.APIError, e: @@ -203,13 +203,13 @@ class Page(object): def get_expanded(self): self.site.require(1, 12) - revs = self.revisions(prop = 'content', limit = 1, expandtemplates = True) + revs = self.revisions(prop='content', limit=1, expandtemplates=True) try: return revs.next()['*'] except StopIteration: return u'' - def move(self, new_title, reason = '', move_talk = True, no_redirect = False): + def move(self, new_title, reason='', move_talk=True, no_redirect=False): """Move (rename) page to new_title. If user account is an administrator, specify no_direct as True to not @@ -222,18 +222,18 @@ class Page(object): if not self.can('move'): raise errors.InsufficientPermission(self) if not self.site.writeapi: - return OldPage.move(self, new_title = new_title, - reason = reason, move_talk = move_talk) + return OldPage.move(self, new_title=new_title, + reason=reason, move_talk=move_talk) data = {} if move_talk: data['movetalk'] = '1' if no_redirect: data['noredirect'] = '1' - result = self.site.api('move', ('from', self.name), to = new_title, - token = self.get_token('move'), reason = reason, **data) + result = self.site.api('move', ('from', self.name), to=new_title, + token=self.get_token('move'), reason=reason, **data) return result['move'] - def delete(self, reason = '', watch = False, unwatch = False, oldimage = False): + def delete(self, reason='', watch=False, unwatch=False, oldimage=False): """Delete page. If user does not have permission to delete page, an InsufficientPermission @@ -243,15 +243,15 @@ class Page(object): if not self.can('delete'): raise errors.InsufficientPermission(self) if not self.site.writeapi: - return OldPage.delete(self, reason = reason) + return OldPage.delete(self, reason=reason) data = {} if watch: data['watch'] = '1' if unwatch: data['unwatch'] = '1' if oldimage: data['oldimage'] = oldimage - result = self.site.api('delete', title = self.name, - token = self.get_token('delete'), - reason = reason, **data) + result = self.site.api('delete', title=self.name, + token=self.get_token('delete'), + reason=reason, **data) return result['delete'] def purge(self): @@ -259,114 +259,114 @@ class Page(object): dynamic content. """ - self.site.raw_index('purge', title = self.name) + self.site.raw_index('purge', title=self.name) # def watch: requires 1.14 # Properties - def backlinks(self, namespace = None, filterredir = 'all', redirect = False, limit = None, generator = True): + def backlinks(self, namespace=None, filterredir='all', redirect=False, limit=None, generator=True): self.site.require(1, 9) # Fix title for < 1.11 !! prefix = listing.List.get_prefix('bl', generator) kwargs = dict(listing.List.generate_kwargs(prefix, - namespace = namespace, filterredir = filterredir)) + namespace=namespace, filterredir=filterredir)) if redirect: kwargs['%sredirect' % prefix] = '1' - kwargs[compatibility.title(prefix, self.site.require(1, 11, raise_error = False))] = self.name + kwargs[compatibility.title(prefix, self.site.require(1, 11, raise_error=False))] = self.name - return listing.List.get_list(generator)(self.site, 'backlinks', 'bl', limit = limit, return_values = 'title', **kwargs) + return listing.List.get_list(generator)(self.site, 'backlinks', 'bl', limit=limit, return_values='title', **kwargs) - def categories(self, generator = True): + def categories(self, generator=True): self.site.require(1, 11) if generator: return listing.PagePropertyGenerator(self, 'categories', 'cl') else: # TODO: return sortkey if wanted - return listing.PageProperty(self, 'categories', 'cl', return_values = 'title') + return listing.PageProperty(self, 'categories', 'cl', return_values='title') - def embeddedin(self, namespace = None, filterredir = 'all', redirect = False, limit = None, generator = True): + def embeddedin(self, namespace=None, filterredir='all', redirect=False, limit=None, generator=True): self.site.require(1, 9) # Fix title for < 1.11 !! prefix = listing.List.get_prefix('ei', generator) kwargs = dict(listing.List.generate_kwargs(prefix, - namespace = namespace, filterredir = filterredir)) + namespace=namespace, filterredir=filterredir)) if redirect: kwargs['%sredirect' % prefix] = '1' - kwargs[compatibility.title(prefix, self.site.require(1, 11, raise_error = False))] = self.name + kwargs[compatibility.title(prefix, self.site.require(1, 11, raise_error=False))] = self.name - return listing.List.get_list(generator)(self.site, 'embeddedin', 'ei', limit = limit, return_values = 'title', **kwargs) + return listing.List.get_list(generator)(self.site, 'embeddedin', 'ei', limit=limit, return_values='title', **kwargs) def extlinks(self): self.site.require(1, 11) - return listing.PageProperty(self, 'extlinks', 'el', return_values = '*') + return listing.PageProperty(self, 'extlinks', 'el', return_values='*') - def images(self, generator = True): + def images(self, generator=True): self.site.require(1, 9) if generator: return listing.PagePropertyGenerator(self, 'images', '') else: - return listing.PageProperty(self, 'images', '', return_values = 'title') + return listing.PageProperty(self, 'images', '', return_values='title') def langlinks(self, **kwargs): self.site.require(1, 9) - return listing.PageProperty(self, 'langlinks', 'll', return_values = ('lang', '*'), **kwargs) + return listing.PageProperty(self, 'langlinks', 'll', return_values=('lang', '*'), **kwargs) - def links(self, namespace = None, generator = True, redirects = False): + def links(self, namespace=None, generator=True, redirects=False): self.site.require(1, 9) - kwargs = dict(listing.List.generate_kwargs('pl', namespace = namespace)) + kwargs = dict(listing.List.generate_kwargs('pl', namespace=namespace)) if redirects: kwargs['redirects'] = '1' if generator: return listing.PagePropertyGenerator(self, 'links', 'pl', **kwargs) else: - return listing.PageProperty(self, 'links', 'pl', return_values = 'title', **kwargs) + return 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): + 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): self.site.require(1, 8) - kwargs = dict(listing.List.generate_kwargs('rv', startid = startid, endid = endid, - start = start, end = end, user = user, excludeuser = excludeuser)) + kwargs = dict(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: kwargs['rvexpandtemplates'] = '1' if section: kwargs['rvsection'] = section - return listing.RevisionsIterator(self, 'revisions', 'rv', limit = limit, **kwargs) + return listing.RevisionsIterator(self, 'revisions', 'rv', limit=limit, **kwargs) - def templates(self, namespace = None, generator = True): + def templates(self, namespace=None, generator=True): self.site.require(1, 8) - kwargs = dict(listing.List.generate_kwargs('tl', namespace = namespace)) + kwargs = dict(listing.List.generate_kwargs('tl', namespace=namespace)) if generator: return listing.PagePropertyGenerator(self, 'templates', 'tl') else: - return listing.PageProperty(self, 'templates', 'tl', return_values = 'title') + return listing.PageProperty(self, 'templates', 'tl', return_values='title') class Image(Page): - def __init__(self, site, name, info = None): + def __init__(self, site, name, info=None): site.require(1, 11) Page.__init__(self, site, name, info, - extra_properties = {'imageinfo': (('iiprop', + extra_properties={'imageinfo': (('iiprop', compatibility.iiprop(site.version)), )}) self.imagerepository = self._info.get('imagerepository', '') self.imageinfo = self._info.get('imageinfo', ({}, ))[0] def imagehistory(self): return listing.PageProperty(self, 'imageinfo', 'ii', - iiprop = compatibility.iiprop(self.site.version)) + iiprop=compatibility.iiprop(self.site.version)) - def imageusage(self, namespace = None, filterredir = 'all', redirect = False, - limit = None, generator = True): + def imageusage(self, namespace=None, filterredir='all', redirect=False, + limit=None, generator=True): self.site.require(1, 11) # TODO: Fix for versions < 1.11 prefix = listing.List.get_prefix('iu', generator) - kwargs = dict(listing.List.generate_kwargs(prefix, title = self.name, - namespace = namespace, filterredir = filterredir)) + kwargs = dict(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) + limit=limit, return_values='title', **kwargs) - def duplicatefiles(self, limit = None): + def duplicatefiles(self, limit=None): self.require(1, 14) return listing.PageProperty(self, 'duplicatefiles', 'df', - dflimit = limit) + dflimit=limit) def download(self): url = self.imageinfo['url'] diff --git a/mwclient/page_nowriteapi.py b/mwclient/page_nowriteapi.py index 4ae08eb..81e97ef 100644 --- a/mwclient/page_nowriteapi.py +++ b/mwclient/page_nowriteapi.py @@ -6,7 +6,7 @@ import errors class OldPage(object): @staticmethod - def save(self, text = u'', summary = u'', minor = False): + def save(self, text=u'', summary=u'', minor=False): data = {} data['wpTextbox1'] = text data['wpSummary'] = summary @@ -37,7 +37,7 @@ class OldPage(object): raise errors.EditError(page.title, data) @staticmethod - def move(self, new_title, reason = '', move_talk = True): + def move(self, new_title, reason='', move_talk=True): postdata = {'wpNewTitle': new_title, 'wpOldTitle': self.name, 'wpReason': reason, @@ -56,7 +56,7 @@ class OldPage(object): raise errors.EditError(page.title, postdata) @staticmethod - def delete(self, reason = ''): + def delete(self, reason=''): postdata = {'wpReason': reason, 'wpConfirmB': 'Delete', 'mw-filedelete-submit': 'Delete', diff --git a/mwclient/upload.py b/mwclient/upload.py index 1edaeff..a84d7e3 100644 --- a/mwclient/upload.py +++ b/mwclient/upload.py @@ -36,7 +36,7 @@ class UploadRawData(Upload): """ This upload class is simply a wrapper around StringIO """ - def __init__(self, data, content_type = 'application/x-www-form-urlencoded'): + def __init__(self, data, content_type='application/x-www-form-urlencoded'): self.fstr = StringIO(data) Upload.__init__(self, len(data), content_type) def read(self, length = -1): -- GitLab