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