jenkins-bot submitted this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
[IMPR] Provide ConfigParserBot for several scripts

Bug: T223778
Change-Id: I218439e25468957f9aecc389a23cf49f727efcaa
---
M scripts/blockpageschecker.py
M scripts/category_redirect.py
M scripts/change_pagelang.py
M scripts/commonscat.py
M scripts/coordinate_import.py
M scripts/djvutext.py
M scripts/download_dump.py
M scripts/harvest_template.py
M scripts/interwikidata.py
M scripts/nowcommons.py
M scripts/protect.py
M scripts/reflinks.py
M scripts/unusedfiles.py
13 files changed, 192 insertions(+), 61 deletions(-)

diff --git a/scripts/blockpageschecker.py b/scripts/blockpageschecker.py
index b5186c3..b48f6a2 100755
--- a/scripts/blockpageschecker.py
+++ b/scripts/blockpageschecker.py
@@ -175,7 +175,11 @@

class CheckerBot(ConfigParserBot, ExistingPageBot, SingleSiteBot):

- """Bot to remove stale protection templates from unprotected pages."""
+ """Bot to remove stale protection templates from unprotected pages.
+
+ .. versionchanged:: 7.0
+ CheckerBot is a ConfigParserBot
+ """

update_options = {
'show': False,
diff --git a/scripts/category_redirect.py b/scripts/category_redirect.py
index 96fb733..2897a53 100755
--- a/scripts/category_redirect.py
+++ b/scripts/category_redirect.py
@@ -11,6 +11,9 @@

The following parameters are supported:

+-always If used, the bot won't ask if it should add the specified
+ text
+
-delay:# Set an amount of days. If the category is edited more recenty
than given days, ignore it. Default is 7.

@@ -22,6 +25,9 @@

python pwb.py category_redirect [options]

+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""
#
# (C) Pywikibot team, 2008-2021
@@ -36,7 +42,7 @@

import pywikibot
from pywikibot import config, i18n, pagegenerators
-from pywikibot.bot import SingleSiteBot
+from pywikibot.bot import ConfigParserBot, SingleSiteBot
from pywikibot.exceptions import (
CircularRedirectError,
Error,
@@ -45,9 +51,13 @@
)


-class CategoryRedirectBot(SingleSiteBot):
+class CategoryRedirectBot(ConfigParserBot, SingleSiteBot):

- """Page category update bot."""
+ """Page category update bot.
+
+ .. versionchanged:: 7.0
+ CategoryRedirectBot is a ConfigParserBot
+ """

update_options = {
'tiny': False, # use Non-empty category redirects only
diff --git a/scripts/change_pagelang.py b/scripts/change_pagelang.py
index a3c7a38..5a3c6e6 100755
--- a/scripts/change_pagelang.py
+++ b/scripts/change_pagelang.py
@@ -15,6 +15,10 @@

-never If a language is already set for a page, never change it to
the one set in -setlang (keep the current language).
+
+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""
#
# (C) Pywikibot team, 2018-2021
@@ -23,7 +27,7 @@
#
import pywikibot
from pywikibot import pagegenerators
-from pywikibot.bot import SingleSiteBot
+from pywikibot.bot import ConfigParserBot, SingleSiteBot
from pywikibot.tools.formatter import color_format


@@ -32,9 +36,13 @@
}


-class ChangeLangBot(SingleSiteBot):
+class ChangeLangBot(ConfigParserBot, SingleSiteBot):

- """Change page language bot."""
+ """Change page language bot.
+
+ .. versionchanged:: 7.0
+ ChangeLangBot is a ConfigParserBot
+ """

update_options = {
'never': False,
diff --git a/scripts/commonscat.py b/scripts/commonscat.py
index 4cef4a3..8737162 100755
--- a/scripts/commonscat.py
+++ b/scripts/commonscat.py
@@ -9,15 +9,19 @@

The following parameters are supported:

+-checkcurrent Work on all category pages that use the primary commonscat
+ template.
+
+This script is a :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`.
+The following options can be set within a settings file which is scripts.ini
+by default::
+
-always Don't prompt you for each replacement. Warning message
has not to be confirmed. ATTENTION: Use this with care!

-summary:XYZ Set the action summary message for the edit to XYZ,
otherwise it uses messages from add_text.py as default.

--checkcurrent Work on all category pages that use the primary commonscat
- template.
-
This bot uses pagegenerators to get a list of pages. The following options are
supported:

@@ -43,7 +47,7 @@
import pywikibot

from pywikibot import i18n, pagegenerators
-from pywikibot.bot import ExistingPageBot, NoRedirectPageBot
+from pywikibot.bot import ConfigParserBot, ExistingPageBot, NoRedirectPageBot
from pywikibot.exceptions import InvalidTitleError
from pywikibot.textlib import add_text

@@ -222,11 +226,15 @@
}


-class CommonscatBot(ExistingPageBot, NoRedirectPageBot):
+class CommonscatBot(ConfigParserBot, ExistingPageBot, NoRedirectPageBot):

- """Commons categorisation bot."""
+ """Commons categorisation bot.

- update_options = {'summary': None}
+ .. versionchanged:: 7.0
+ CommonscatBot is a ConfigParserBot
+ """
+
+ update_options = {'summary': ''}

def skip_page(self, page):
"""Skip category redirects or disambigs."""
diff --git a/scripts/coordinate_import.py b/scripts/coordinate_import.py
index a2f9848..49cb745 100755
--- a/scripts/coordinate_import.py
+++ b/scripts/coordinate_import.py
@@ -31,8 +31,15 @@

The following command line parameters are supported:

+-always If used, the bot won't ask if it should add the specified
+ text
+
-create Create items for pages without one.

+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
+
&params;
"""
#
@@ -43,16 +50,22 @@
from typing import Optional

import pywikibot
-from pywikibot import WikidataBot, pagegenerators
+
+from pywikibot import pagegenerators
+from pywikibot.bot import ConfigParserBot, WikidataBot
from pywikibot.exceptions import CoordinateGlobeUnknownError


docuReplacements = {'&params;': pagegenerators.parameterHelp} # noqa: N816


-class CoordImportRobot(WikidataBot):
+class CoordImportRobot(ConfigParserBot, WikidataBot):

- """A bot to import coordinates to Wikidata."""
+ """A bot to import coordinates to Wikidata.
+
+ .. versionchanged:: 7.0
+ CoordImportRobot is a ConfigParserBot
+ """

use_from_page = None

diff --git a/scripts/djvutext.py b/scripts/djvutext.py
index ac86ec2..5fcf2f1 100755
--- a/scripts/djvutext.py
+++ b/scripts/djvutext.py
@@ -19,6 +19,11 @@
A- -> pages A until number of images
A -> just page A
-B -> pages 1 until B
+
+This script is a :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`.
+The following options can be set within a settings file which is scripts.ini
+by default:
+
-summary: custom edit summary.
Use quotes if edit summary contains spaces.
-force overwrites existing text
@@ -48,6 +53,9 @@
A bot that uploads text-layer from djvu files to Page:namespace.

Works only on sites with Proofread Page extension installed.
+
+ .. versionchanged:: 7.0
+ CheckerBot is a ConfigParserBot
"""

update_options = {
diff --git a/scripts/download_dump.py b/scripts/download_dump.py
index 26366c2..6d19b34 100755
--- a/scripts/download_dump.py
+++ b/scripts/download_dump.py
@@ -11,6 +11,9 @@
-dumpdate:# The dumpdate date of the dump (default to `latest`)
formatted as YYYYMMDD.

+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""
#
# (C) Pywikibot team, 2017-2021
@@ -23,13 +26,17 @@
from os import remove, replace, symlink, urandom

import pywikibot
-from pywikibot import Bot
+from pywikibot.bot import Bot, ConfigParserBot
from pywikibot.comms.http import fetch


-class DownloadDumpBot(Bot):
+class DownloadDumpBot(Bot, ConfigParserBot):

- """Download dump bot."""
+ """Download dump bot.
+
+ .. versionchanged:: 7.0
+ DownloadDumpBot is a ConfigParserBot
+ """

available_options = {
'wikiname': '',
diff --git a/scripts/harvest_template.py b/scripts/harvest_template.py
index 68df846..c740470 100755
--- a/scripts/harvest_template.py
+++ b/scripts/harvest_template.py
@@ -22,6 +22,9 @@

You can also use additional parameters:

+-always If used, the bot won't ask if it should add the specified
+ text
+
-create Create missing items before importing.

The following command line parameters can be used to change the bot's behavior.
@@ -85,6 +88,10 @@
python pwb.py harvest_template -lang:en -family:wikipedia -namespace:0 \
-template:"Infobox musical artist" current_members P527 -exists:p \
-multi
+
+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""
#
# (C) Pywikibot team, 2013-2021
@@ -99,7 +106,7 @@
from pywikibot import pagegenerators as pg
from pywikibot import textlib
from pywikibot.backports import List
-from pywikibot.bot import OptionHandler, WikidataBot
+from pywikibot.bot import ConfigParserBot, OptionHandler, WikidataBot
from pywikibot.exceptions import InvalidTitleError, NoPageError


@@ -132,9 +139,13 @@
}


-class HarvestRobot(WikidataBot):
+class HarvestRobot(ConfigParserBot, WikidataBot):

- """A bot to add Wikidata claims."""
+ """A bot to add Wikidata claims.
+
+ .. versionchanged:: 7.0
+ HarvestRobot is a ConfigParserBot
+ """

update_options = {
'always': True,
diff --git a/scripts/interwikidata.py b/scripts/interwikidata.py
index 48235de..2b6fc90 100755
--- a/scripts/interwikidata.py
+++ b/scripts/interwikidata.py
@@ -13,6 +13,9 @@

Furthermore, the following command line parameters are supported:

+-always If used, the bot won't ask if it should add the specified
+ text
+
-clean Clean pages.

-create Create items.
@@ -20,6 +23,10 @@
-merge Merge items.

-summary: Use your own edit summary for cleaning the page.
+
+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""

# (C) Pywikibot team, 2015-2021
@@ -34,7 +41,12 @@
import pywikibot.textlib
from pywikibot import output, pagegenerators, warning
from pywikibot.backports import Set
-from pywikibot.bot import ExistingPageBot, SingleSiteBot, suggest_help
+from pywikibot.bot import (
+ ConfigParserBot,
+ ExistingPageBot,
+ SingleSiteBot,
+ suggest_help,
+)
from pywikibot.exceptions import APIError, NoPageError


@@ -49,9 +61,13 @@
# should cause the bot to skip the page, see T134497


-class IWBot(ExistingPageBot, SingleSiteBot):
+class IWBot(ConfigParserBot, ExistingPageBot, SingleSiteBot):

- """The bot for interwiki."""
+ """The bot for interwiki.
+
+ .. versionchanged:: 7.0
+ IWBot is a ConfigParserBot
+ """

update_options = {
'clean': False,
diff --git a/scripts/nowcommons.py b/scripts/nowcommons.py
index 6c90ded..6bb1c41 100755
--- a/scripts/nowcommons.py
+++ b/scripts/nowcommons.py
@@ -38,12 +38,9 @@

python pwb.py nowcommons -replaceonly -replaceloose -replacealways -replace

-Todo
-----
-Please fix these if you are capable and motivated:
-
-- if a file marked nowcommons is not present on Wikimedia Commons, the bot
- will exit.
+.. note:: This script is a
+ :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`. All options
+ can be set within a settings file which is scripts.ini by default.
"""
#
# (C) Pywikibot team, 2006-2021
@@ -54,7 +51,8 @@
from itertools import chain

import pywikibot
-from pywikibot import Bot, i18n
+from pywikibot import i18n
+from pywikibot.bot import Bot, ConfigParserBot
from pywikibot import pagegenerators as pg
from pywikibot.exceptions import IsRedirectPageError, NoPageError
from pywikibot.tools import filter_unique
@@ -175,9 +173,13 @@
]


-class NowCommonsDeleteBot(Bot):
+class NowCommonsDeleteBot(Bot, ConfigParserBot):

- """Bot to delete migrated files."""
+ """Bot to delete migrated files.
+
+ .. versionchanged:: 7.0
+ NowCommonsDeleteBot is a ConfigParserBot
+ """

update_options = {
'replace': False,
diff --git a/scripts/protect.py b/scripts/protect.py
index 20a378e..ce119f6 100755
--- a/scripts/protect.py
+++ b/scripts/protect.py
@@ -9,17 +9,6 @@

Furthermore, the following command line parameters are supported:

--always Don't prompt to protect pages, just do it.
-
--summary: Supply a custom edit summary. Tries to generate summary from
- the page selector. If no summary is supplied or couldn't
- determine one from the selector it'll ask for one.
-
--expiry: Supply a custom protection expiry, which defaults to
- indefinite. Any string understandable by MediaWiki, including
- relative and absolute, is acceptable. See:
- https://www.mediawiki.org/wiki/API:Protect#Parameters
-
-unprotect Acts like "default:all"

-default: Sets the default protection level (default 'sysop'). If no
@@ -35,6 +24,21 @@
parameters -unprotect or -default are used, only the last occurrence
is applied.

+This script is a :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`.
+The following options can be set within a settings file which is scripts.ini
+by default::
+
+-always Don't prompt to protect pages, just do it.
+
+-summary: Supply a custom edit summary. Tries to generate summary from
+ the page selector. If no summary is supplied or couldn't
+ determine one from the selector it'll ask for one.
+
+-expiry: Supply a custom protection expiry, which defaults to
+ indefinite. Any string understandable by MediaWiki, including
+ relative and absolute, is acceptable. See:
+ https://www.mediawiki.org/wiki/API:Protect#Parameters
+
Usage:

python pwb.py protect <OPTIONS>
@@ -59,7 +63,7 @@
#
import pywikibot
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import CurrentPageBot, SingleSiteBot
+from pywikibot.bot import ConfigParserBot, CurrentPageBot, SingleSiteBot


# This is required for the text that is shown when you run this script
@@ -67,9 +71,13 @@
docuReplacements = {'&params;': pagegenerators.parameterHelp} # noqa: N816


-class ProtectionRobot(SingleSiteBot, CurrentPageBot):
+class ProtectionRobot(SingleSiteBot, ConfigParserBot, CurrentPageBot):

- """This bot allows protection of pages en masse."""
+ """This bot allows protection of pages en masse.
+
+ .. versionchanged:: 7.0
+ CheckerBot is a ConfigParserBot
+ """

update_options = {
'summary': '',
diff --git a/scripts/reflinks.py b/scripts/reflinks.py
index 825eb69..da9a975 100755
--- a/scripts/reflinks.py
+++ b/scripts/reflinks.py
@@ -18,13 +18,20 @@

The following parameters are supported:

--limit:n Stops after n edits
-
-xml:dump.xml Should be used instead of a simple page fetching method
from pagegenerators.py for performance and load issues

-xmlstart Page to start with when using an XML dump

+This script is a :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`.
+The following options can be set within a settings file which is scripts.ini
+by default::
+
+-always Doesn't ask every time whether the bot should make the change.
+ Do it always.
+
+-limit:n Stops after n edits
+
-ignorepdf Do not handle PDF files (handy if you use Windows and
can't get pdfinfo)

@@ -57,7 +64,12 @@
import pywikibot
from pywikibot import comms, config, i18n, pagegenerators, textlib
from pywikibot.backports import removeprefix
-from pywikibot.bot import ExistingPageBot, NoRedirectPageBot, SingleSiteBot
+from pywikibot.bot import (
+ ConfigParserBot,
+ ExistingPageBot,
+ NoRedirectPageBot,
+ SingleSiteBot,
+)
from pywikibot.exceptions import (
FatalServerError,
Server414Error,
@@ -412,9 +424,16 @@
return text


-class ReferencesRobot(SingleSiteBot, ExistingPageBot, NoRedirectPageBot):
+class ReferencesRobot(SingleSiteBot,
+ ConfigParserBot,
+ ExistingPageBot,
+ NoRedirectPageBot):

- """References bot."""
+ """References bot.
+
+ .. versionchanged:: 7.0
+ ReferencesRobot is a ConfigParserBot
+ """

update_options = {
'ignorepdf': False,
diff --git a/scripts/unusedfiles.py b/scripts/unusedfiles.py
index 5d05f5c..947ba18 100755
--- a/scripts/unusedfiles.py
+++ b/scripts/unusedfiles.py
@@ -4,13 +4,18 @@

Parameters:

--always Don't be asked every time.
--nouserwarning Do not warn uploader about orphaned file.
--filetemplate: Use a custom template on unused file pages.
--usertemplate: Use a custom template to warn the uploader.
-limit Specify number of pages to work on with "-limit:n" where
n is the maximum number of articles to work on.
If not used, all pages are used.
+-always Don't be asked every time.
+
+This script is a :py:obj:`ConfigParserBot <pywikibot.bot.ConfigParserBot>`.
+The following options can be set within a settings file which is scripts.ini
+by default::
+
+-nouserwarning Do not warn uploader about orphaned file.
+-filetemplate: Use a custom template on unused file pages.
+-usertemplate: Use a custom template to warn the uploader.
"""
#
# (C) Pywikibot team, 2007-2021
@@ -21,7 +26,12 @@

import pywikibot
from pywikibot import i18n, pagegenerators
-from pywikibot.bot import AutomaticTWSummaryBot, ExistingPageBot, SingleSiteBot
+from pywikibot.bot import (
+ AutomaticTWSummaryBot,
+ ConfigParserBot,
+ ExistingPageBot,
+ SingleSiteBot,
+)
from pywikibot.exceptions import Error, NoPageError, TranslationError
from pywikibot.flow import Board

@@ -41,9 +51,16 @@
}


-class UnusedFilesBot(SingleSiteBot, AutomaticTWSummaryBot, ExistingPageBot):
+class UnusedFilesBot(SingleSiteBot,
+ AutomaticTWSummaryBot,
+ ConfigParserBot,
+ ExistingPageBot):

- """Unused files bot."""
+ """Unused files bot.
+
+ .. versionchanged:: 7.0
+ UnusedFilesBot is a ConfigParserBot
+ """

summary_key = 'unusedfiles-comment'
update_options = {

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

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I218439e25468957f9aecc389a23cf49f727efcaa
Gerrit-Change-Number: 731267
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki@aol.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged