jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/463441 )

Change subject: Fix diff_checker related errors in Python files of the root 
directory
......................................................................

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(-)

Approvals:
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



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 https://gerrit.wikimedia.org/r/463441
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/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 <[email protected]>
Gerrit-Reviewer: Dalba <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot (75)
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to