jenkins-bot merged this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
Fix diff_checker related errors in Python files of the root directory

Rewrite generate_family_file.FamilyFileGenerator.writefile to use
family_template in order to be more readable.

Change-Id: Ifd7cc067d2b176d369512de4ada1da95ccab202f
---
M ez_setup.py
M generate_family_file.py
M generate_user_files.py
M tox.ini
4 files changed, 96 insertions(+), 87 deletions(-)

diff --git a/ez_setup.py b/ez_setup.py
index a11e42f..b7d33e9 100644
--- a/ez_setup.py
+++ b/ez_setup.py
@@ -173,7 +173,7 @@

try:
import pkg_resources
- pkg_resources.require("setuptools>=" + version)
+ pkg_resources.require('setuptools>=' + version)
# a suitable version is already installed
return
except ImportError:
@@ -249,8 +249,8 @@
"""
target = os.path.abspath(target)
ps_cmd = (
- "[System.Net.WebRequest]::DefaultWebProxy.Credentials = "
- "[System.Net.CredentialCache]::DefaultCredentials; "
+ '[System.Net.WebRequest]::DefaultWebProxy.Credentials = '
+ '[System.Net.CredentialCache]::DefaultCredentials; '
'(new-object System.Net.WebClient).DownloadFile("%(url)s", "%(target)s")'
% locals()
)
@@ -318,7 +318,7 @@
src.close()

# Write all the data in one block to avoid creating a partial file.
- with open(target, "wb") as dst:
+ with open(target, 'wb') as dst:
dst.write(data)
download_file_insecure.viable = lambda: True

@@ -352,11 +352,11 @@
"""
# making sure we use the absolute path
to_dir = os.path.abspath(to_dir)
- zip_name = "setuptools-%s.zip" % version
+ zip_name = 'setuptools-%s.zip' % version
url = download_base + zip_name
saveto = os.path.join(to_dir, zip_name)
if not os.path.exists(saveto): # Avoid repeated downloads
- log.warn("Downloading %s", url)
+ log.warn('Downloading %s', url)
downloader = downloader_factory()
downloader(url, saveto)
return os.path.realpath(saveto)
@@ -378,7 +378,7 @@
'--user', dest='user_install', action='store_true', default=False,
help='install in user site package')
parser.add_option(
- '--download-base', dest='download_base', metavar="URL",
+ '--download-base', dest='download_base', metavar='URL',
default=DEFAULT_URL,
help='alternative URL from where to download the setuptools package')
parser.add_option(
diff --git a/generate_family_file.py b/generate_family_file.py
index 0a390c7..63eba9e 100755
--- a/generate_family_file.py
+++ b/generate_family_file.py
@@ -31,9 +31,9 @@
def __init__(self, url=None, name=None, dointerwiki=None):
"""Initializer."""
if url is None:
- url = raw_input("Please insert URL to wiki: ")
+ url = raw_input('Please insert URL to wiki: ')
if name is None:
- name = raw_input("Please insert a short name (eg: freeciv): ")
+ name = raw_input('Please insert a short name (eg: freeciv): ')
self.dointerwiki = dointerwiki
self.base_url = url
self.name = name
@@ -43,16 +43,14 @@

def run(self):
"""Main method, generate family file."""
- print("Generating family file from %s" % self.base_url)
+ print('Generating family file from ' + self.base_url)

w = Wiki(self.base_url)
self.wikis[w.lang] = w
- print()
- print("==================================")
- print("api url: %s" % w.api)
- print("MediaWiki version: %s" % w.version)
- print("==================================")
- print()
+ print('\n=================================='
+ '\napi url: {w.api}'
+ '\nMediaWiki version: {w.version}'
+ '\n==================================\n'.format(w=w))

self.getlangs(w)
self.getapis()
@@ -60,76 +58,103 @@

def getlangs(self, w):
"""Determine language of a site."""
- print("Determining other languages...", end="")
+ print('Determining other languages...', end='')
try:
self.langs = w.langs
print(' '.join(sorted(wiki['prefix'] for wiki in self.langs)))
except Exception as e:
self.langs = []
- print(e, "; continuing...")
+ print(e, '; continuing...')

if len([lang for lang in self.langs if lang['url'] == w.iwpath]) == 0:
if w.private_wiki:
w.lang = self.name
- self.langs.append({u'language': w.lang,
- u'local': u'',
- u'prefix': w.lang,
- u'url': w.iwpath})
+ self.langs.append({'language': w.lang,
+ 'local': '',
+ 'prefix': w.lang,
+ 'url': w.iwpath})

if len(self.langs) > 1:
if self.dointerwiki is None:
makeiw = raw_input(
- "\nThere are %i languages available."
+ '\nThere are %i languages available.'
'\nDo you want to generate interwiki links? '
- "This might take a long time. ([y]es/[N]o/[e]dit)"
+ 'This might take a long time. ([y]es/[N]o/[e]dit)'
% len(self.langs)).lower()
else:
makeiw = self.dointerwiki

- if makeiw == "y":
+ if makeiw == 'y':
pass
- elif makeiw == "e":
+ elif makeiw == 'e':
for wiki in self.langs:
print(wiki['prefix'], wiki['url'])
- do_langs = raw_input("Which languages do you want: ")
+ do_langs = raw_input('Which languages do you want: ')
self.langs = [wiki for wiki in self.langs
if wiki['prefix'] in do_langs
or wiki['url'] == w.iwpath]
else:
self.langs = [wiki for wiki in self.langs
- if wiki[u'url'] == w.iwpath]
+ if wiki['url'] == w.iwpath]

def getapis(self):
"""Load other language pages."""
- print("Loading wikis... ")
+ print('Loading wikis... ')
for lang in self.langs:
- print(" * %s... " % (lang[u'prefix']), end="")
+ print(' * %s... ' % (lang['prefix']), end='')
if lang['prefix'] not in self.wikis:
try:
self.wikis[lang['prefix']] = Wiki(lang['url'])
- print("downloaded")
+ print('downloaded')
except Exception as e:
print(e)
else:
- print("in cache")
+ print('in cache')

def writefile(self):
"""Write the family file."""
fn = os.path.join(os.path.dirname(os.path.realpath(__file__)),
'pywikibot', 'families',
'{}_family.py'.format(self.name))
- print("Writing %s... " % fn)
+ print('Writing %s... ' % fn)
try:
open(fn)
- if raw_input("%s already exists. Overwrite? (y/n)"
+ if raw_input('%s already exists. Overwrite? (y/n)'
% fn).lower() == 'n':
- print("Terminating.")
+ print('Terminating.')
sys.exit(1)
except IOError: # file not found
pass
- f = codecs.open(fn, 'w', 'utf-8')

- f.write("""
+ code_hostname_pairs = '\n '.join(
+ "'{code}': '{hostname}',".format(
+ code=k, hostname=urlparse(w.server).netloc
+ ) for k, w in self.wikis.items())
+
+ code_path_pairs = '\n '.join(
+ "'{code}': '{path}',".format(code=k, path=w.scriptpath)
+ for k, w in self.wikis.items())
+
+ code_version_pairs = '\n '.join(
+ "'{code}': None,".format(code=k) if w.version is None else
+ "'{code}': '{version}',".format(code=k, version=w.version)
+ for k, w in self.wikis.items())
+
+ code_protocol_pairs = '\n '.join(
+ "'{code}': '{protocol}',".format(
+ code=k, protocol=urlparse(w.server).scheme
+ ) for k, w in self.wikis.items())
+
+ with codecs.open(fn, 'w', 'utf-8') as fh:
+ fh.write(family_template % {
+ 'url': self.base_url, 'name': self.name,
+ 'code_hostname_pairs': code_hostname_pairs,
+ 'code_path_pairs': code_path_pairs,
+ 'code_version_pairs': code_version_pairs,
+ 'code_protocol_pairs': code_protocol_pairs})
+
+
+family_template = """\
# -*- coding: utf-8 -*-
\"\"\"
This family file was auto-generated by generate_family_file.py script.
@@ -150,40 +175,25 @@

name = '%(name)s'
langs = {
-""".lstrip() % {'url': self.base_url, 'name': self.name})
+ %(code_hostname_pairs)s
+ }

- for k, w in self.wikis.items():
- f.write(" '%(lang)s': '%(hostname)s',\n"
- % {'lang': k, 'hostname': urlparse(w.server).netloc})
+ def scriptpath(self, code):
+ return {
+ %(code_path_pairs)s
+ }[code]

- f.write(' }\n\n')
- f.write(" def scriptpath(self, code):\n")
- f.write(" return {\n")
+ @deprecated('APISite.version()')
+ def version(self, code):
+ return {
+ %(code_version_pairs)s
+ }[code]

- for k, w in self.wikis.items():
- f.write(" '%(lang)s': '%(path)s',\n"
- % {'lang': k, 'path': w.scriptpath})
- f.write(" }[code]\n")
- f.write("\n")
-
- f.write(" @deprecated('APISite.version()')\n")
- f.write(" def version(self, code):\n")
- f.write(" return {\n")
- for k, w in self.wikis.items():
- if w.version is None:
- f.write(" '%(lang)s': None,\n" % {'lang': k})
- else:
- f.write(" '%(lang)s': u'%(ver)s',\n"
- % {'lang': k, 'ver': w.version})
- f.write(" }[code]\n")
-
- f.write("\n")
- f.write(" def protocol(self, code):\n")
- f.write(" return {\n")
- for k, w in self.wikis.items():
- f.write(" '%(lang)s': u'%(protocol)s',\n"
- % {'lang': k, 'protocol': urlparse(w.server).scheme})
- f.write(" }[code]\n")
+ def protocol(self, code):
+ return {
+ %(code_protocol_pairs)s
+ }[code]
+"""


def _import_with_no_user_config(*import_args):
@@ -200,7 +210,7 @@
return result


-if __name__ == "__main__":
+if __name__ == '__main__':
# Disable user-config checks so the family can be created first,
# and then used when generating the user-config
Wiki = _import_with_no_user_config(
diff --git a/generate_user_files.py b/generate_user_files.py
index 7f642a31..1a40c99 100755
--- a/generate_user_files.py
+++ b/generate_user_files.py
@@ -41,7 +41,7 @@
pywikibot_dir = sys.path[0]

if console_encoding is None or sys.platform == 'cygwin':
- console_encoding = "iso-8859-1"
+ console_encoding = 'iso-8859-1'

USER_BASENAME = 'user-config.py'
PASS_BASENAME = 'user-password.py'
@@ -50,24 +50,24 @@
def change_base_dir():
"""Create a new user directory."""
while True:
- new_base = pywikibot.input("New user directory? ")
+ new_base = pywikibot.input('New user directory? ')
new_base = os.path.abspath(new_base)
if os.path.exists(new_base):
if os.path.isfile(new_base):
- pywikibot.error("there is an existing file with that name.")
+ pywikibot.error('there is an existing file with that name.')
continue
# make sure user can read and write this directory
if not os.access(new_base, os.R_OK | os.W_OK):
- pywikibot.error("directory access restricted")
+ pywikibot.error('directory access restricted')
continue
- pywikibot.output("Using existing directory")
+ pywikibot.output('Using existing directory')
else:
try:
os.mkdir(new_base, pywikibot.config2.private_files_permission)
except Exception as e:
pywikibot.error('directory creation failed: {0}'.format(e))
continue
- pywikibot.output("Created new directory.")
+ pywikibot.output('Created new directory.')
break

if new_base == pywikibot.config2.get_base_dir(new_base):
@@ -83,7 +83,7 @@
pywikibot.output(msg)
if pywikibot.input_yn('Is this OK?', default=False, automatic_quit=False):
return new_base
- pywikibot.output("Aborting changes.")
+ pywikibot.output('Aborting changes.')
return False


@@ -115,14 +115,14 @@
if default_family not in known_families:
default_family = None
fam = pywikibot.bot.input_list_choice(
- u"Select family of sites we are working on, "
- u"just enter the number or name",
+ 'Select family of sites we are working on, '
+ 'just enter the number or name',
known_families,
force=force,
default=default_family)
fam = pywikibot.family.Family.load(fam)
- if hasattr(fam, "langs"):
- if hasattr(fam, "languages_by_size"):
+ if hasattr(fam, 'langs'):
+ if hasattr(fam, 'languages_by_size'):
by_size = [code for code in fam.languages_by_size
if code in fam.langs.keys()]
else:
@@ -140,8 +140,8 @@
pywikibot.output('The only known language: {0}'.format(known_langs[0]))
default_lang = known_langs[0]
else:
- pywikibot.output("This is the list of known languages:")
- pywikibot.output(u", ".join(known_langs))
+ pywikibot.output('This is the list of known languages:')
+ pywikibot.output(', '.join(known_langs))
if default_lang not in known_langs:
if default_lang != 'en' and 'en' in known_langs:
default_lang = 'en'
@@ -356,7 +356,7 @@

try:
# Finally save user-config.py
- with codecs.open(_fnc, "w", "utf-8") as f:
+ with codecs.open(_fnc, 'w', 'utf-8') as f:
f.write(config_content.format(
main_family=main_family,
main_code=main_code,
@@ -365,7 +365,7 @@
botpasswords='password_file = ' + ('"{}"'.format(PASS_BASENAME)
if botpasswords
else 'None')))
- pywikibot.output(u"'%s' written." % _fnc)
+ pywikibot.output("'%s' written." % _fnc)
except BaseException:
if os.path.exists(_fnc):
os.remove(_fnc)
@@ -444,7 +444,7 @@
pywikibot.output('You can abort at any time by pressing ctrl-c')
if config.mylang is not None:
force = True
- pywikibot.output(u'Automatically generating user-config.py')
+ pywikibot.output('Automatically generating user-config.py')
else:
force = False
# Force default site of en.wikipedia
diff --git a/tox.ini b/tox.ini
index 996fea9..2ab13a8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -143,8 +143,7 @@
require-code = true
classmethod-decorators = classmethod,classproperty
per-file-ignores =
- generate_family_file.py : T001, Q000
- generate_user_files.py : Q000
+ generate_family_file.py : T001
pwb.py : T001
# pydocstyle cannot handle multiple __all__ variables
pywikibot/__init__.py : D999, N806, N802

To view, visit change 463441. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ifd7cc067d2b176d369512de4ada1da95ccab202f
Gerrit-Change-Number: 463441
Gerrit-PatchSet: 4
Gerrit-Owner: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot (75)