jenkins-bot has submitted this change and it was merged.

Change subject: Bot.site property fails when set to None
......................................................................


Bot.site property fails when set to None

- Allow None value to be given to Bot.site property setter.
- Fix ReplaceBot.__init__ to not set it to None.
- Provide an explicit site when running ReplaceBot from replace.main.

Any other caller of ReplaceBot will now receive a warning from
Bot.site getter if they have not specified a site for the
bot to use.

Bug: 73494
Change-Id: Ib98334d820ec2e8ea14d17cb1346ac287ba19a59
---
M pywikibot/bot.py
M scripts/replace.py
2 files changed, 22 insertions(+), 13 deletions(-)

Approvals:
  XZise: Looks good to me, approved
  Martineznovo: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/pywikibot/bot.py b/pywikibot/bot.py
index 1b5bfec..9fb6254 100644
--- a/pywikibot/bot.py
+++ b/pywikibot/bot.py
@@ -1070,6 +1070,10 @@
         When Bot.run() is managing the generator and site property, this is
         set each time a page is on a site different from the previous page.
         """
+        if not site:
+            self._site = None
+            return
+
         if site not in self._sites:
             log(u'LOADING SITE %s VERSION: %s'
                 % (site, unicode(site.version())))
diff --git a/scripts/replace.py b/scripts/replace.py
index 4a79ddc..cd9fcfb 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -164,7 +164,7 @@
                          constructor below.
     """
 
-    def __init__(self, xmlFilename, xmlStart, replacements, exceptions):
+    def __init__(self, xmlFilename, xmlStart, replacements, exceptions, site):
         """Constructor."""
         self.xmlFilename = xmlFilename
         self.replacements = replacements
@@ -178,7 +178,10 @@
         if "inside" in self.exceptions:
             self.excsInside += self.exceptions['inside']
         from pywikibot import xmlreader
-        self.site = pywikibot.Site()
+        if site:
+            self.site = site
+        else:
+            self.site = pywikibot.Site()
         dump = xmlreader.XmlDump(self.xmlFilename)
         self.parser = dump.parse()
 
@@ -287,9 +290,8 @@
         self.acceptall = acceptall
         self.allowoverlap = allowoverlap
         self.recursive = recursive
-        self.site = site
-        if self.site is None:
-            self.site = pywikibot.Site()
+        if site:
+            self.site = site
         if addedCat:
             cat_ns = site.category_namespaces()[0]
             self.addedCat = pywikibot.Page(self.site,
@@ -576,6 +578,8 @@
         else:
             commandline_replacements.append(arg)
 
+    site = pywikibot.Site()
+
     if (len(commandline_replacements) % 2):
         raise pywikibot.Error('require even number of replacements.')
     elif (len(commandline_replacements) == 2 and fix is None):
@@ -583,7 +587,7 @@
                              commandline_replacements[1]))
         if not summary_commandline:
             edit_summary = i18n.twtranslate(
-                pywikibot.Site(), 'replace-replacing',
+                site, 'replace-replacing',
                 {'description': ' (-%s +%s)' % (commandline_replacements[0],
                                                 commandline_replacements[1])}
             )
@@ -598,7 +602,7 @@
                          for i in range(0, len(commandline_replacements), 2)]
                 replacementsDescription = '(%s)' % ', '.join(
                     [('-' + pair[0] + ' +' + pair[1]) for pair in pairs])
-                edit_summary = i18n.twtranslate(pywikibot.Site(),
+                edit_summary = i18n.twtranslate(site,
                                                 'replace-replacing',
                                                 {'description':
                                                  replacementsDescription})
@@ -621,7 +625,7 @@
             change += ' & -' + old + ' +' + new
             replacements.append((old, new))
         if not summary_commandline:
-            default_summary_message = i18n.twtranslate(pywikibot.Site(),
+            default_summary_message = i18n.twtranslate(site,
                                                        'replace-replacing',
                                                        {'description': change})
             pywikibot.output(u'The summary message will default to: %s'
@@ -645,10 +649,10 @@
             regex = fix['regex']
         if "msg" in fix:
             if isinstance(fix['msg'], basestring):
-                edit_summary = i18n.twtranslate(pywikibot.Site(),
+                edit_summary = i18n.twtranslate(site,
                                                 str(fix['msg']))
             else:
-                edit_summary = i18n.translate(pywikibot.Site(),
+                edit_summary = i18n.translate(site,
                                               fix['msg'], fallback=True)
         if "exceptions" in fix:
             exceptions = fix['exceptions']
@@ -688,7 +692,7 @@
         except NameError:
             xmlStart = None
         gen = XmlDumpReplacePageGenerator(xmlFilename, xmlStart,
-                                          replacements, exceptions)
+                                          replacements, exceptions, site)
     elif useSql:
         whereClause = 'WHERE (%s)' % ' OR '.join(
             ["old_text RLIKE '%s'" % prepareRegexForMySQL(old_regexp.pattern)
@@ -717,8 +721,9 @@
 
     preloadingGen = pagegenerators.PreloadingGenerator(gen)
     bot = ReplaceRobot(preloadingGen, replacements, exceptions, acceptall,
-                       allowoverlap, recursive, add_cat, sleep, edit_summary)
-    pywikibot.Site().login()
+                       allowoverlap, recursive, add_cat, sleep, edit_summary,
+                       site)
+    site.login()
     bot.run()
 
     # Explicitly call pywikibot.stopme().

-- 
To view, visit https://gerrit.wikimedia.org/r/173675
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib98334d820ec2e8ea14d17cb1346ac287ba19a59
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Martineznovo <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: XZise <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to